您的位置:网站首页 > CAD教程 > CAD教程文章

Autocad VBA初级教程 (第七课 写文字)

时间:2010-11-18 19:48:35 来源:未知

客观地说,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:windowsfontssimfang.ttf" '设置字体文件为仿宋体
mytxt.Height = 100 '字高
mytxt.Width = 0.8 '宽高比
mytxt.ObliqueAngle = ThisDrawing.Utility.AngleToReal(3, 0) '倾斜角度(需转为弧度)


ThisDrawing.ActiveTextStyle = mytxt '将当前文字样式设置为mytxt
Set 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

在论坛中有一个经常被同好提及的问题:如何使用文字叠加。举例说明:123S+0.12^-0.34
S是格式字符,^是分隔符,前面的数字在上,后面的数字在下。

C是颜色格式字符,C后面跟一个数字表示颜色

A是对齐方式,A0,A1,A2分别表示底部对齐、中间对齐和顶部对齐