1

我目前正在使用 CATIA V5,我想使用宏 (VBA),但我遇到了一些问题!

我的问题是:如何更改剪切视图的文本?(见图片)

在此处输入图像描述

我尝试使用:myView.Texts.item(1) 来访问这个“文本”,但我认为 CATIA 不认为它是文本......

我想在没有用户干预的情况下更改此文本(无需选择),我可以这样做吗?

4

3 回答 3

1

切割视图的文本由视图名称定义,要更改它,您应该更改视图名称,如下所述:

Sub CATMain()

    Dim oDraw As DrawingDocument
    Set oDraw = CATIA.ActiveDocument

    Dim oSectionView As DrawingView
    Set oSectionView = oDraw.Sheets.ActiveSheet.Views.ActiveView

    oSectionView.SetViewName "Prefix ", "B", " Suffix"

End Sub
于 2015-01-09T16:50:02.300 回答
1

起草工作台中的 IME、VBA 脚本起初相当棘手……“MyTexts”是 DrawingText 对象的集合。

MyDrawingText.Text = "MyNewTextValue"

您将遇到的主要麻烦是获取要修改的特定文本对象的句柄。我发现解决此问题的最佳方法是扫描 DrawingView 中的整个 DrawingTexts 集合,并应用唯一名称,DrawingText.Name="UniqueObjectName"或者您从脚本创建绘图文本,您可以更轻松地获取要放置的 DrawingText 对象的句柄你想要的任何价值。创建唯一名称使您的绘图更加健壮以适应未来的脚本

MyView.Texts.Count如果最后创建的 DrawingText 对象,也可用于获取项目编号。

如果您需要,我很乐意进一步解释。祝你好运!

更新/编辑: 如上所述,使用绘图工作台编写脚本并不总是直截了当。事实证明,标注文本并不完全存在于DrawingTextsa 的集合中DrawingView,但它们确实存在于绘图视图中的某个位置......在这种情况下,您正在尝试编辑剖面视图的“ID”......属性也不通过 VBA 公开。

有一个技巧/解决方法是在父视图中搜索绘图文本,然后使用您需要提出的一些逻辑,扫描Selection您想要更改的文本。然后,您应该在使用时重命名,这样更容易返回并再次找到它们。

这是一个从前视图的对象分辨率开始的示例(剖面视图的父视图)

Sub ChangeCallout()

'---- Begin resolution script for object : Front View

Dim drawingDocument1 As DrawingDocument
Set drawingDocument1 = CATIA.ActiveDocument

Dim drawingSheets1 As DrawingSheets
Set drawingSheets1 = drawingDocument1.Sheets

Dim drawingSheet1 As DrawingSheet
Set drawingSheet1 = drawingSheets1.Item("Sheet.1")

Dim drawingViews1 As DrawingViews
Set drawingViews1 = drawingSheet1.Views

Dim drawingView1 As DrawingView
Set drawingView1 = drawingViews1.Item("Front view") 'this is the parent view of the section view

'---- End resolution script

Dim sel As Selection
Set sel = drawingDocument1.Selection
Dim CalloutText As drawingText

sel.Clear 'clear the selection / good practice
sel.Add drawingView1 'add the parent view to the selection
sel.Search "Drafting.Text,sel" 'this will search the current selection for all drawing texts and add them to the selection

Dim thing As Variant
Dim i As Integer
For i = 1 To sel.Count
    Set thing = sel.Item2(i)
    Set CalloutText = thing.Value
    'do some things/logic here to determine if this is a callout with some Ifs or Case statements
    'CalloutText.Name = "Useful Unique Name"
    'CalloutText.Text = "New Callout Label" 'whatever you want to rename it to
Next

End Sub
于 2014-04-08T14:50:36.033 回答
0

要扫描标注文本,您可以使用以下行。这将选择仅属于标注的文本,而不是扫描所有文本。

Sub CATMain()

Dim drawingDocument1 As Document
Set drawingDocument1 = CATIA.ActiveDocument

Dim selection1 As Selection
Set selection1 = drawingDocument1.Selection

selection1.Search "CATDrwSearch.DrwCallout,all"
selection1.Search "Drafting.Text,sel"

Dim i As Integer

For i = 1 To selection1.Count

MsgBox selection1.Item(i).Value.text

Next

End Sub
于 2018-06-18T04:30:25.543 回答