You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CATIA V5中Bodies转Parts宏从VBA转C#的属性适配问题

问题描述

我正在尝试将CATIA中Part文件里的Bodies转换为Product文件中的独立Part,找到了可用的VBA脚本,但需要将其翻译为C#。VBA原代码如下:

Sub GreateProductsFromBodies_SelectAllBodies() 
   
    On Error Resume Next
    Set CATIA = GetObject(, "CATIA.Application")
    
    'Declare variables
    Dim oPartDoc As PartDocument
    Dim oPart As Part
    Dim oProductDoc As ProductDocument
    Dim oProduct As Product
    
    'Create a new ProductDoc and rename it's PartNumber equals to Partdoc's PartNumber
    Set oPartDoc = CATIA.ActiveDocument
    Set oProductDoc = CATIA.Documents.Add("Product")
    oProductDoc.Product.PartNumber = oPartDoc.Product.PartNumber
    
    'Arrange windows use "Title Vertically" ,then active window contain Partdoc
    CATIA.Windows.Arrange catArrangeTiledVertical
    CATIA.Windows.Item(1).Activate
    
    'Check the Body's name use "For ... Next"loop . If Body's name duplicate,then rename.
    Dim j As Integer, k As Integer
    For j = 1 To oPartDoc.Part.Bodies.Count
        For k = 1 To oPartDoc.Part.Bodies.Count
            If oPartDoc.Part.Bodies.Item(j).name = oPartDoc.Part.Bodies.Item(k).name And j <> k Then
                oPartDoc.Part.Bodies.Item(j).name = oPartDoc.Part.Bodies.Item(k).name & "_Rename_" & j
            End If
        Next
    Next
    
    'Copy Bodies from PartDocument
    Dim i As Integer, ProductPN As String, FinalProductPN As String
    For i = 1 To oPartDoc.Part.Bodies.Count
        With oPartDoc.Selection
            .Clear
            .Add oPartDoc.Part.Bodies.Item(i)
            .Copy
            .Clear
        End With
        
         'Modify the Product's PartNumber,replace "\" and "."to "_" ,then delete Space
        ProductPN = oPartDoc.Part.Bodies.Item(i).name
        If Right(ProductPN, 1) = "\" Then
            ProductPN = Left(ProductPN, Len(ProductPN) - 1)
        End If
        FinalProductPN = Replace(Replace(Replace(ProductPN, "\"", "_"), ".", "_"), " ", "") 'Replace "\" and "."to "_",Delete Space
        
          'Paste Body in Product's Part as Result
        Set oProduct = oProductDoc.Product.Products.AddNewComponent("Part", FinalProductPN) 'Add Part
        With oProductDoc.Selection
            .Clear
            .Add oProductDoc.Product.Products.Item(i).ReferenceProduct.Parent.Part
            .PasteSpecial "CATPrtResultWithOutLink"
            .Clear
        End With
        oProductDoc.Product.Products.Item(i).ReferenceProduct.Parent.Part.Update
    Next
    
    'Use Msgbox to echo the complete flag
    MsgBox "All the select Bodies had been created as a PartDocument successfully !" & Chr(13) & _
    ">>> The Partdocument's Bodies's count : " & oPartDoc.Part.Bodies.Count & Chr(13) & _
    ">>> The ProductDocument's PartDocument's count : " & oProductDoc.Product.Products.Count, _
    vbOKOnly + vbInformation, "@LSY >>> CATIAVBAMacro of Part to Product >>> Run Result"      
End Sub

转换过程中,唯独无法处理这行VBA代码:

oProductDoc.Selection.Add oProductDoc.Product.Products.Item(i).ReferenceProduct.Parent.Part

在C#中找不到对应的Part属性,我目前写的C#代码如下:

oProductDoc.Selection.Add(oProductDoc.Product.Products.Item(i).ReferenceProduct.Parent.??????);

恳请提供解决方法!


内容的提问来源于stack exchange,提问作者madalandria

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 04:40:23