工程图里的边框,标题栏,草图(略图)符号都有对应草图定义,其中可以添加文本,也就是通常说的字串。文本分为几类。我们先来做个小例子。创建一个略图符号,
其中添加三种文本
- 普通文本。也叫做静态字串。即在草图里写的是什么,最终显示的就是什么。
-第二种叫做特性字串,例如选择【类型】中的【特性-工程图】,则在【特性】下拉框中看到所有特性列表,选择某个特性【作者】,再点击右面的X按钮,则一个灰色底带尖括号的文本出现了。
-第三种叫做提示字串。选择【类型】中的【提示条目】即可。
创建后,在略图草图中可以看到文本的显示情况。
保存该略图草图,插入一个略图。
Inventor首先让你选择插入点。点击后,会弹出对话框【提示字串输入框】。在这里要求你输入刚才定义的提示字串的最终值。
确定后,最终的略图是:
可见文本有两个状态:定义时和最终使用时。
- 静态文本,定义时和最终使用时是一样的字串内容
- 特性文本,最终使用时是对应特性的值
-提示字串,在最终使用前需要用户输入
从API角度,TextBox对象的Text属性是在屏幕上看到的字串内容,FormattedText反映了文本的性质。FormattedText是一个XML定义的字串。先看看定义状态下是什么情况。激活刚才略图定义草图,手动拾取那三个文本,运行以下代码:
Sub printInSketch_definition()
‘先激活略图定义草图,拾取其中的文本对象
Dim oDoc As Document
Set oDoc = ThisApplication.ActiveDocument
Dim oTextBox As TextBox
For Each oTextBox In oDoc.SelectSet
Debug.Print oTextBox.Text
Debug.Print oTextBox.FormattedText
Next
End Sub
打印结果是:
静态文本
<StyleOverride FontSize='0,6096'>静态文本</StyleOverride>
<作者>
<StyleOverride FontSize='0,6096'>
<Property Document='drawing'
PropertySet='Inventor Summary Information'
Property='Author'
FormatID='{F29F85E0-4FF9-1068-AB91-08002B27B3D9}'
PropertyID='4'>
作者
</Property>
</StyleOverride>
<提示字串>
<Prompt ReadOnlyUniqueID='1'><提示字串></Prompt>
可以看到,静态文本的FormattedText主要设置了文本的字体大小。特性字串,则有<Property>的标签,其中规定了特性的所在特性集,名称等信息。这样当最终使用时,显示的字串是对应的特性值。而提示字串,有<Prompt>标签,表示将需要用户输入最终值。
那么通过API如何得知最终显示的值呢?可以使用getResultText方法,无论标题栏,边框或略图对象都提供了该方法。传入草图定义中的文本对象,则返回最终显示值。
例如,基于刚才我们创建的略图对象,运行亦以下代码。
Sub getResultText()
Dim oDoc As Document
Set oDoc = ThisApplication.ActiveDocument
' 拾取略图对象
Dim oSymbol As SketchedSymbol
Set oSymbol = oDoc.SelectSet(1)
'获取略图对应草图
Dim oSketch As DrawingSketch
Set oSketch = oSymbol.Definition.Sketch
'遍历其中的文本对象
Dim oTextBox As TextBox
For Each oTextBox In oSketch.TextBoxes
Debug.Print "定义值: " & oTextBox.Text
Debug.Print "最终值: " & oSymbol.getResultText(oTextBox)
Next
End Sub
打印结果是:
定义值: 静态文本
最终值: 静态文本
定义值: <作者>
最终值: liangx
定义值: <提示字串>
最终值: 提示字串最终值