【问题标题】:CATIA v5. Macro for extracting value of 3Dpart's parameter into a text box on the drawingCATIA v5。用于将 3Dpart 参数的值提取到绘图上的文本框中的宏
【发布时间】:2017-11-21 18:32:26
【问题描述】:

一天多来我一直在尝试做标题描述的事情,但我似乎无法弄清楚。

情况:

我有一个 3D 零件,其中包含多个用户制作的参数作为字符串。 我创建了一个带有前视图、俯视图和等轴测视图的新图纸。 我希望创建一个宏来读取我的 3D 零件参数的字符串值并将它们写入绘图的特定位置。

到目前为止的工作:

我可以在我的绘图中添加一个宏调用文本,但我不知道如何在 VB 环境中从我的 3D 部件中的用户自定义参数中提取字符串值。 我试过用

myValue = material.Value

“材料”是我的 3D 零件的参数,但我无法获得回报。我不知道要声明什么以及如何正确引用参数。

此外,我可以通过这样的宏在我的绘图上写纯文本:

Set myText = MyDrawingViews.ActiveView.Texts.Add("description", 22, 38)

我在预期位置的绘图上收到一条文本,上面写着“描述”,但我不知道如何用变量驱动文本。 当我尝试时:

dim myValue as string
myValue = "description"
Set myText = MyDrawingViews.ActiveView.Texts.Add(myValue, 22, 38)

我没有得到回报。

我一直在尝试,但我似乎无处可去,任何帮助将不胜感激。

【问题讨论】:

    标签: vba catia


    【解决方案1】:

    您需要在文本中从PartProduct 中获取对Parameter 的引用。此外,您应该使用DrawingText 对象的InsertVariable 方法来链接参数。当零件中的参数发生变化时,可以在图纸中进行更新。

    这是一个简单的 Sub 可以完成你想要的(你可以修改它来完成你更具体的想要的):

    Sub AddTextWithLinkedParameter(dViewToContainTheText As DrawingView, xPos, yPos, Optional param As Parameter)
    
        Dim dtext As DrawingText
        Set dtext = dViewToContainTheText.Texts.Add("", xPos, yPos)
    
        If Not param Is Nothing Then
            dtext.InsertVariable 0, 0, param
        End If
    
    End Sub
    

    这里有一些示例代码来测试它:

    Sub testParameterText()
        Debug.Assert False
        '
        'Manually Activate the Part Document
        'that contains a string parameter called "Property
        '
        Dim myParam As Parameter
        Dim partDoc As PartDocument
        Set partDoc = CATIA.ActiveDocument
        Set myParam = partDoc.Part.Parameters.Item("Property")
    
        Debug.Assert False
        'manually switch to a drawing document
    
        Dim dDoc As DrawingDocument
        Set dDoc = CATIA.ActiveDocument
    
        Dim dSheet As DrawingSheet
        Set dSheet = dDoc.Sheets.ActiveSheet
    
        Dim dView As DrawingView
        Set dView = dSheet.Views.Item("Main View")
    
        AddTextWithLinkedParameter dView, 20, 20, myParam
    
    End Sub
    

    【讨论】:

    • 非常感谢!我有一个后续问题,但这个评论框不允许那么多字符。我是 stackoverflow 的新手,我需要提出一个新问题还是有办法继续这个帖子?
    • @LaurensRuben 如果它回答了你的问题,你也应该把它标记为答案,是的,如果它是一个不同的问题,你可以为此创建一个新线程。
    • @LaurensRuben 让我们完成这个问题并提出另一个问题。请在这些 cmets 中添加指向它的链接。
    • 链接到我的下一个问题:stackoverflow.com/questions/47410051/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-30
    • 1970-01-01
    • 2022-09-29
    • 2018-05-14
    • 1970-01-01
    相关资源
    最近更新 更多