检查是否选择了部件或产品

Check Part or Product was selected

提问人:Nikita Pelevin 提问时间:4/22/2020 更新时间:4/24/2020 访问量:423

问:

我有一个像这样的程序集:

根产品:

  • 带零件的子产品
  • 第 1 部分
  • N部分

我正在编写代码来检查用户选择的项目类型,并使用我自己的参数向所选产品添加新部件。 而且我在检查用户选择的内容时遇到了问题。 如果使用以下代码:

InputType(0) = "Product"
Set ItemSelection = ActDoc.Selection
ItemSelection.Clear 
SelStatus = ItemSelection.SelectElement2(InputType, "Choose Product", True)
If SelStatus = "Cancel" Then
    Exit Sub
End If
If ItemSelection.Item(1).Type = "Product" Then
    ' add new Part

    ElseIf ItemSelection.Item(1).Type = "Part" Then
        MsgBox "It's Part. Script closed."
        Exit Sub
End If

但问题是,在CATIA树中,“零件”和“产品”具有相同的类型 - 产品。

喜欢这个

可能存在另一种方法如何检查用户选择的数据类型? 谢谢。

VBScript CATIA

评论


答:

0赞 C R Johnson 4/24/2020 #1
Dim bIsProd as Boolean
Dim oSelectedProd as Product
Set oSelectedProd = ItemSelection.Item(1).Value
bIsProd = typename(oSelectedProd.ReferenceProduct.Parent) = "ProductDocument"

如果对程序集使用“可视化模式”,则情况会稍微复杂一些:在这种情况下,属性 ReferenceProduct 将失败。但是,如果程序集是新打开的,并且处于“可视化模式”,则可以假定任何失败的 ReferenceProduct 属性都是 Parts。产品会起作用。

如果您的文档尚未保存,它也可能不起作用(我不记得了)。

评论

0赞 Nikita Pelevin 4/24/2020
CR Johnson,谢谢!你的方法效果很好。我用了.关于组装。我想将此脚本用于工作项目,而不是用于新创建的项目。If TypeName(ItemSelection.Item(1).Value.ReferenceProduct.Parent) = "ProductDocument" Then