明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 797|回复: 9

填写的中文字成“?”号,怎么解决?

[复制链接]
发表于 2018-8-1 09:45 | 显示全部楼层 |阅读模式
本帖最后由 qwh923820 于 2018-8-1 09:51 编辑

编写的VBA程序,在CAD宏里面运行很正常,现在想用vb6做个界面,就用VB6改了一下,代码基本没怎么变,但是输出的中文字全变成了“??”,英文或数字不受影响,是什么导致的??自己逐步运行找原因,逐步运行时候本地窗口里面的文字也是对的,但是输出就是“?”。
acadDoc.ModelSpace.AddText 这样输出了问题
x.TextPrefix = "偏" 这样输出没问题
acadDoc 定义的是object,拾取的对象是cad文件
Set acadDoc = acadApp.Documents(n - 1)

x 定义的是object
Set x = acadDoc.ModelSpace.AddDimAligned


求问大神,哪里出来问题?该怎么改?

发表于 2018-8-2 11:03 | 显示全部楼层
cad用单线字体好一点,字多也速度快
'创建新的字体样式
Public Sub NewTextStyle2()   '创建新的字体样式,gbenor.SHX gbcbig.SHX 字体
    On Error GoTo err1
    Dim lkxtextstyle As AcadTextStyle
    Set lkxtextstyle = ThisDrawing.TextStyles.Add("ZZY_2")
    With lkxtextstyle
        .fontFile = "gbenor.SHX"
        .BigFontFile = "gbcbig.SHX"
        .Width = 0.85
    End With
    Exit Sub
err1:
    Err.Clear
    Resume Next
End Sub
回复 支持 1 反对 0

使用道具 举报

发表于 2018-8-1 12:01 | 显示全部楼层
是不是“文字样式”没设置中文
 楼主| 发表于 2018-8-1 13:57 | 显示全部楼层
zzyong00 发表于 2018-8-1 12:01
是不是“文字样式”没设置中文

是的,该怎么设置啊??
发表于 2018-8-1 14:32 | 显示全部楼层
qwh923820 发表于 2018-8-1 13:57
是的,该怎么设置啊??

设置支持中文的字体啊
 楼主| 发表于 2018-8-1 15:06 | 显示全部楼层
zzyong00 发表于 2018-8-1 12:01
是不是“文字样式”没设置中文

都不行,
  1. lujin = acadDoc.ActiveTextStyle.fontFile
  2. lujin = SplitLast(lujin, "")
  3. acadDoc.ActiveTextStyle = lujin & "gbcbig.shx"


  4. 'Set ys = acadDoc.ActiveDimStyle
  5. 'Set newText = acadDoc.TextStyles
  6. 'Stop
  7. 'newText.Item(1).Name = "宋体"


  8. Public Function SplitLast(ByVal S, ByVal cr)
  9. '去掉符号后面的字符串
  10. Dim i&, j&
  11. i = Len(S)
  12. For j = i To 1 Step -1
  13.     If cr = Mid(S, j, 1) Then
  14.         SplitLast = Mid(S, 1, j)
  15.         Exit Function
  16.     End If
  17. Next j
  18. End Function

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2018-8-1 15:10 | 显示全部楼层
mikewolf2k 发表于 2018-8-1 14:32
设置支持中文的字体啊

求代码!!,我试了几种方法都不行。
手动设置我是知道的。如果CAD没打开的情况下运行程序是没有问题,但是假如有CAD文件打开着,我不关闭原来的CAD,重新新建CAD文件开始画图,文字样式就是这样的,而且我不知道该怎么改??
发表于 2018-8-1 16:17 | 显示全部楼层
修改这个textstyle。
模板文件里面的当前textstyle就是这样。要是不想代码改,就去改模板的当前textstyle,换成支持中文的。
 楼主| 发表于 2018-8-1 16:50 | 显示全部楼层
mikewolf2k 发表于 2018-8-1 16:17
修改这个textstyle。
模板文件里面的当前textstyle就是这样。要是不想代码改,就去改模板的当前textstyle ...

已解决,发部分源码在这里,希望给不会的一点参考

  1. Public Sub LoadAcadAPP()
  2. Dim n&, newText As Object
  3. Dim ys As Object
  4. Dim typeFace$,lujin$,SavetypeFace$
  5. Dim Bold As Boolean
  6. Dim Italic As Boolean
  7. Dim charSet As Long
  8. Dim PitchandFamily As Long

  9. On Error Resume Next
  10. Set acadApp = GetObject(, "AutoCAD.Application")
  11. If Err Then
  12.     Err.Clear
  13.     Set acadApp = CreateObject("AutoCAD.Application")
  14.     If Err Then End
  15. Else
  16.     Set acadDoc = acadApp.Documents.Add
  17. End If
  18. acadApp.Visible = True
  19. acadApp.WindowState = acMax
  20. n = acadApp.Documents.Count
  21. Set acadDoc = acadApp.Documents(n - 1)

  22. '以下为第一种方法
  23. lujin = acadDoc.ActiveTextStyle.fontFile
  24. lujin = SplitLast(lujin, "")
  25. lujin = Replace(lujin, "", "/")
  26. If acadDoc.ActiveTextStyle.BigFontFile = "" Then
  27.     acadDoc.ActiveTextStyle.BigFontFile = lujin & "gbcbig.shx"
  28. End If

  29. '以下为第二种方法
  30. acadDoc.ActiveTextStyle.GetFont typeFace, Bold, Italic, charSet, PitchandFamily
  31. If typeFace <> "宋体" Then typeFace = "宋体"
  32. acadDoc.ActiveTextStyle.SetFont typeFace, Bold, Italic, charSet, PitchandFamily
  33. acadDoc.Regen acActiveViewport

  34. End Sub
  35. Public Function SplitLast(ByVal S, ByVal cr)
  36. '去掉符号后面的字符串
  37. Dim i&, j&
  38. i = Len(S)
  39. For j = i To 1 Step -1
  40.     If cr = Mid(S, j, 1) Then
  41.         SplitLast = Mid(S, 1, j)
  42.         Exit Function
  43.     End If
  44. Next j
  45. End Function


评分

参与人数 1金钱 +10 收起 理由
mikewolf2k + 10 赞一个!

查看全部评分

发表于 2018-8-1 16:55 | 显示全部楼层
qwh923820 发表于 2018-8-1 16:50
已解决,发部分源码在这里,希望给不会的一点参考

这个其实是一种方法,都是改text style。
另外不建议改activetextstyle,这样连改了哪个都不知道。建议修改自己要的textstyle, 把文字的style改成那个textstyle,不要去改当前激活的,以免影响其他。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-20 06:13 , Processed in 7.393959 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表