我当前正在尝试对CATIA宏进行编程,以搜索2D CATIA图纸上的特定文本:“ DD / MM / YYY”,并将相同的文本替换为用户输入的文本。 (基本上是更新文本框)
我目前是VBA脚本语言的新手,从零开始或没有经验。我对此进行了广泛的研究,但没有找到任何代码可以解决我要解决的问题。
文本框内容将由用户替换
答案 0 :(得分:0)
我非常确定您的日期文本字符串在标题栏中具有特定名称,因此请搜索该特定文本字符串名称并分配另一个值。
如果您有很多图纸要执行此任务,则可以以批处理方式完成,在文件夹中一张一张地打开图纸,替换日期,保存图纸,关闭文档...设计师没有任何输入,仅在新宏中分配新的日期值。
答案 1 :(得分:0)
此简短代码段将搜索所有Text实体,并尝试用固定的字符串替换:
Sub Catmain()
Dim oDoc As Document
Dim oView as DrawingView
Dim oText As DrawingTexts
Dim txt_to_src As String
Dim txt_to_place As String
Dim n As Integer
n = 0
Set oDoc = CATIA.ActiveDocument
Set oSheets = oDoc.Sheets
Set oViews = oSheets.ActiveSheet.Views
Set oView = oViews.ActiveView
Set oTexts = oView.Texts
txt_to_src = "STACK OVERFLOW."
txt_to_place = "REPLACED"
For Each srcText In oTexts
If srcText.Text = txt_to_src Then
srcText.Text = txt_to_place
n = n + 1
End If
Next
MsgBox n & " text frames have been replaced"
End Sub
这仅在打开的文档的活动工作表的活动视图中搜索所有文本。 考虑使用更具体的检查条件,例如Instr(检查一个字符串是否包含在另一个字符串中),使用的相等性只是一个代表性的检查。 您可能需要循环工作表的所有视图(即oViews集合的所有项目)和文档的所有工作表(即oSheets集合的所有项目)。然后根据需要扩展以循环所有打开的DrawingDocuments。
请记住,带有标题栏的空文档已经具有2个视图(背景和主视图),因此,如果您的图形只有1个“正视图”,则脚本必须在3个视图之间循环。