首页 > 解决方案 > 如何编写一个 CATIA 宏,该宏在图纸中搜索一组文本并替换它们

问题描述

我目前正在尝试编写一个 CATIA 宏来搜索 2D CATIA 图纸上的特定文本:“DD/MM/YYY”,并用用户输入的文本替换相同的文本。(基本上是更新文本框)

我目前是 VBA 脚本语言的新手,并且在这方面的经验为零甚至没有。我对此进行了广泛的研究,但没有发现任何代码接近于实现我要解决的问题。

由用户替换的文本框内容

单击此链接查看问题:Textbox contents to be replace by user

我想让 CATIA 宏做什么 单击此链接查看我希望 CATIA 宏执行的操作

标签: vbacatia

解决方案


这个简短的片段将搜索所有文本实体并尝试用固定字符串替换:

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 集合的所有项目)。如果需要,然后扩展以循环所有打开的绘图文档。

请记住,带有标题栏的空文档已经有 2 个视图(背景和主视图),因此如果您的绘图只有 1 个前视图,则脚本必须循环显示 3 个视图。


推荐阅读