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
相关产品推荐
相关产品推荐

