如何对CATIA宏进行编程,该宏在工程图中搜索一组文本并将其替换

时间:2019-06-08 19:30:57

标签: vba catia

我当前正在尝试对CATIA宏进行编程,以搜索2D CATIA图纸上的特定文本:“ DD / MM / YYY”,并将相同的文本替换为用户输入的文本。 (基本上是更新文本框)

我目前是VBA脚本语言的新手,从零开始或没有经验。我对此进行了广泛的研究,但没有找到任何代码可以解决我要解决的问题。

文本框内容将由用户替换

Click this link to see problem: Textbox contents to be replaced by user

我想要CATIA宏做什么 Click this link to see what I wanted the CATIA macro to do

2 个答案:

答案 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个视图之间循环。