乐筑天下

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

如何写出堆叠文字

[复制链接]

12

主题

31

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
79
发表于 2003-9-3 18:54:00 | 显示全部楼层 |阅读模式
如何写出堆叠文字,比如三分之一用分数表示。
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2003-9-3 18:58:00 | 显示全部楼层
在MTEXT编辑器里
写1/3,然后按那个b分之a的按钮
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2003-9-4 11:37:00 | 显示全部楼层
编程还要用堆叠吗?
文字大小、位置、除号等东西随便实现,直接根据要求出字就可以了
回复

使用道具 举报

76

主题

595

帖子

10

银币

中流砥柱

Rank: 25

铜币
899
发表于 2003-9-4 11:40:00 | 显示全部楼层
明总能不能让版主们把贴子整理一下,比如弄个热点问题的专栏,象这样类似的问题太多了,不回答吧,大家又有意见,回答吧,也是重复。
回复

使用道具 举报

12

主题

31

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
79
发表于 2003-9-4 14:17:00 | 显示全部楼层

在一个字符串的中间,需要有一个分数(你别对我说没有必要),由于可能存在的字体变化,分数的位置也要变化,您的意思是不是说我先计算一下位置,然后沿字符串书写方向垂直写一串数,然后再接着写后半段字符串?我认为还是直接写堆叠文字简单(还有角标),如果可以的话,就像mtext中的a/b
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2003-9-4 17:48:00 | 显示全部楼层
编程的魅力就在于写程序的时候不怕麻烦,使用时却非常方便。
如果你连计算一下位置都觉得麻烦,还编什么程?
我想autocad的这个堆叠功能在实现上应该比我们想象的要复杂
回复

使用道具 举报

12

主题

31

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
79
发表于 2003-9-4 18:41:00 | 显示全部楼层
可以简单,就有必要不用复杂。
计算好的位置不同的字符堆在一起,一旦改变字体设置或文件拷贝给别人使用,而对方的字型文件不同,就会变成乱七八糟。你辛辛苦苦算好的位置不过如此。
autocad提供了关于文字的控制字符,比如%%d(度),%%u(上划线)等;等我琢磨清楚了,告诉大家。一个完整的文字对象总比一大堆字符堆在一起要好,也不怕你改变字体后位置变动。我想能实现(若一旦失败,我也不找别的理由,比如说没有必要)。不过若真的不能实现,我也就只有退而求其次,玩会儿数字游戏。估计还得编编组啥的,或采取别的一些办法,控制一下位置。办法虽然苯,也只能如此了,谁让autocad不懂事呢!
计算位置,真不是难事,画图就必须从位置开始。
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2003-9-4 18:52:00 | 显示全部楼层
说得不错,我没考虑修改的问题。
给你点提示,先做一个堆叠的东西,然后用entget查看其组码1,按照它的格式输入你的内容,用entmake创建文字。我稍微试了一下,好象可以的。
我测试如下:
(1 . "\\A1;{\\H0.7x;\\Sa/b;}")
其中\\S后面的内容就是在文本编辑框中堆叠需要选中的文字,修改它即可。
回复

使用道具 举报

12

主题

31

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
79
发表于 2003-9-5 08:39:00 | 显示全部楼层
用vba进行了一些简单的字符串设置,可以实现上划线、下划线、文字堆叠(分数或公差)。我把它放在此,感兴趣可以试一下。好处是各种格式字符组成一个mtext对象,决不用考虑字型变化和后期编辑的问题。
可以简单,就有必要不用复杂。
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:tvsmnegqlvj.dvb 
下载次数:0  文件大小:20 KB  售价:2银币 [记录]
下载权限: 不限 以上或 Vip会员   [开通Vip]   [签到领银币]  [免费赚银币]

源码如下:
Sub main()
Dim pt As Variant
Dim txtw As Double
Dim txtStr As String
Dim MtxtObj As AcadMText
Dim AMid As String
pt = Point3d(0, 10)
txtw = 100
AMid = "\A1;"
txtStr = AMid & "aaaa" & UStr(LStr("bbbb")) & UStr("uuuuu") & SStr("2", "3", 0.7, True) & LStr("llllll") & "200" & SStr("+0.010", "-0.020", 0.7) & "cccc" '
Set MtxtObj = ThisDrawing.ModelSpace.AddMText(pt, txtw, txtStr)
End Sub
'三维点
Function Point3d(ByVal x As Double, ByVal y As Double, Optional z = 0) As Variant
Dim pt3d(0 To 2) As Double
pt3d(0) = x
pt3d(1) = y
pt3d(2) = z
Point3d = pt3d
End Function
'顶线
Function UStr(ByVal s As String) As String
UStr = "\O" & s & "\o"
End Function
'底线
Function LStr(ByVal s As String) As String
LStr = "\L" & s & "\l"
End Function
'堆叠,h为高度系数;当l为true时,以分数显示
Function SStr(ByVal s1 As String, ByVal s2 As String, ByVal h As Double, Optional l As Boolean) As String
If l = True Then
    SStr = "\S" & s1 & "/" & s2 & ";"
Else
    SStr = "\S" & s1 & "^" & s2 & ";"
End If
If h > 0 And h  1 Then
    SStr = "{\H" & h & "x;" & SStr & "}"
End If
End Function
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-5 02:54 , Processed in 0.851934 second(s), 75 queries .

© 2020-2025 乐筑天下

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