乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 183|回复: 9

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

[复制链接]

11

主题

38

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
82
发表于 2018-8-1 09:45:00 | 显示全部楼层 |阅读模式
编写的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
求问大神,哪里出来问题?该怎么改?
回复

使用道具 举报

23

主题

561

帖子

13

银币

中流砥柱

Rank: 25

铜币
653
发表于 2018-8-2 11:03:00 | 显示全部楼层
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
回复

使用道具 举报

23

主题

561

帖子

13

银币

中流砥柱

Rank: 25

铜币
653
发表于 2018-8-1 12:01:00 | 显示全部楼层
是不是“文字样式”没设置中文
回复

使用道具 举报

11

主题

38

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
82
发表于 2018-8-1 13:57:00 | 显示全部楼层

是的,该怎么设置啊??
回复

使用道具 举报

85

主题

1175

帖子

11

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1518
发表于 2018-8-1 14:32:00 | 显示全部楼层

设置支持中文的字体啊
回复

使用道具 举报

11

主题

38

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
82
发表于 2018-8-1 15:06:00 | 显示全部楼层

都不行,
  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

txuqaxoblhr.jpg

txuqaxoblhr.jpg


回复

使用道具 举报

11

主题

38

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
82
发表于 2018-8-1 15:10:00 | 显示全部楼层

求代码!!,我试了几种方法都不行。
手动设置我是知道的。如果CAD没打开的情况下运行程序是没有问题,但是假如有CAD文件打开着,我不关闭原来的CAD,重新新建CAD文件开始画图,文字样式就是这样的,而且我不知道该怎么改??
回复

使用道具 举报

85

主题

1175

帖子

11

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1518
发表于 2018-8-1 16:17:00 | 显示全部楼层
修改这个textstyle。
模板文件里面的当前textstyle就是这样。要是不想代码改,就去改模板的当前textstyle,换成支持中文的。
回复

使用道具 举报

11

主题

38

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
82
发表于 2018-8-1 16:50:00 | 显示全部楼层

已解决,发部分源码在这里,希望给不会的一点参考
  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
回复

使用道具 举报

85

主题

1175

帖子

11

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1518
发表于 2018-8-1 16:55:00 | 显示全部楼层

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

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-13 03:08 , Processed in 0.392313 second(s), 75 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表