在论坛上遇到一个问题,想把图纸1(Sheet)标题栏的提示字串的结果文本拷贝到另外一个图纸。
首先需要知道,API中,标题栏对象是TitleBlock,其后有对应的TitleBlockDefinition。 TitleBlockDefinition里定义了各种文本,其中一种是提示字串。当用户插入标题栏时,提示字串会出现,要求用户输入最终的文本。TitleBlock.GetResultText 能够获得最终文本。相应的,TitleBlock.SetPromptResultText能设置最终文本。
这样,实现前面提到的需求就不难了。以下代码,假定一个工程图有两张图纸,图纸1和2用的是一样的TitleBlockDefinition,假定定义中有个提示字串叫做“MY_PROMPT”。代码将会把图纸1的结果文本拷贝给图纸2.
' assume sheet1 and sheet use the same title block definition
Dim oDoc
oDoc = ThisApplication.ActiveDocument
'get first sheet
Dim oSheet1
oSheet1 = oDoc.Sheets(1)
'get titleblock of sheet1
Dim oTB1
oTB1 = oSheet1.TitleBlock
' search the textbox in definition
Dim oPromptText
Dim oEachText
Dim I
For I = 1 To oTB1.Definition.Sketch.TextBoxes.Count
oEachText = oTB1.Definition.Sketch.TextBoxes(I)
If (oEachText.Text = "MY_PROMPT") Then
' found the prompt text we want to copy
oPromptText = oEachText
Exit For
End If
Next I
'get the result string of the prompt text
Dim oPromptEntry
oPromptEntry = oTB1.GetResultText(oPromptText)
'get sheet2
Dim oSheet2 As Sheet
oSheet2 = oDoc.Sheets(2)
'get titleblock of sheet2
Dim oTB2 As TitleBlock
oTB2 = oSheet2.TitleBlock
' copy the result string of the prompt text to the prompt text in sheet2
oTB2.SetPromptResultText(oEachText, oPromptEntry)