客观地说,ACAD写字功能不够历害,而用VBA可以使写字效率更高。比较正规的做法是把定义文字样式,用样式来控制文字的特性。我们还是用实例来学习,先看下面一段代码,它的作用是先创建一个文字样式,然后用这个文字样式写一段多行文本。 Sub txt() Dim mytxt As AcadTextStyle '定义mytxt变量为文本样式Dim p(0 To 2) As Double '定义坐标变量p(0) = 100: p(1) = 100: p(2) = 0 '坐标赋值Set mytxt = ThisDrawing.TextStyles.Add("mytxt") '添加mytxt样式 mytxt.fontFile = "c:\windows\fonts\simfang.ttf" '设置字体文件为仿宋体mytxt.Height = 100 '字高mytxt.Width = 0.8 '宽高比mytxt.ObliqueAngle = ThisDrawing.Utility.AngleToReal(3, 0) '倾斜角度(需转为弧度) ThisDrawing.ActiveTextStyle = mytxt '将当前文字样式设置为mytxtSet txtobj = ThisDrawing.ModelSpace.AddMText(p, 1400, "{做到老,学到老}\P" & "此心自光明正大,过人远矣") txtobj.LineSpacingFactor = 2 '指定行间距txtobj.AttachmentPoint = 3 '右对齐(1为左对齐,2为居中) End Sub 我们看这条语句Set mytxt = ThisDrawing.TextStyles.Add("mytxt") 添加文本样式并赋值给mytxt变量,只需要一个参数:文本样式名 fontfile、height、width、ObliqueAngle是文本样式最常用的属性 Call ThisDrawing.ModelSpace.AddMText(p, 1400, "{做到老,学到老}\P" & "此心自光明正大,过人远矣")这条语句是写文本,需要三个参数。第一个参数p是坐标,1400是宽度,最后一个参数是文本内容,其中\p是一个回车符 扩大字符间距用\T数字,例:\T3abc,使文字abc的间距扩大3 部,n取值范围是0.75-3 在论坛中有一个经常被同好提及的问题:如何使用文字叠加。举例说明:123\S+0.12^-0.34\S是格式字符,^是分隔符,前面的数字在上,后面的数字在下。 \C是颜色格式字符,C后面跟一个数字表示颜色 \A是对齐方式,\A0,\A1,\A2分别表示底部对齐、中间对齐和顶部对齐

评论