【问题标题】:How to make copies of a not-saved part in CATIA in assembly evironment by VBA?如何通过VBA在装配环境中复制CATIA中未保存的零件?
【发布时间】:2022-10-15 03:45:36
【问题描述】:

我有一个由 VBA Excel 自动创建的 CATIA 程序集。例如,现在我需要添加 6 个相同的螺栓。从理论上讲,我可以添加一些 VBA 代码来创建该程序集中的每个螺栓作为单独的螺栓,这似乎很麻烦。是否可以创建一个螺栓(尚未保存,因为我想先看看它在 3D CAITA 环境中的情况)并将其复制为装配中的其他螺栓,就像我们在 CATIA 中经常交互的方式一样。如果可能,请告诉我该怎么做。非常感谢!

【问题讨论】:

  • 请看一下添加组件产品收集方法。
  • 是的,我做到了,但有一个错误表示为“自动化错误(错误 440)”,我不知道它的原因。我的代码如下: Set product1_3 = products1.AddNewComponent("Part", "Bolt1") -----(create the product1_3) 'copy product1_3 Set product1_4 = products1.AddComponent(product1_3)
  • 使用参考产品而不是实例产品(例如product1_3.参考产品) 在 AddComponent 方法中。

标签: vba catia


【解决方案1】:

如果我正确理解您的请求,您希望在装配体中拥有 6 个尚未保存的 CATPart 副本。

您可以通过简单的复制/粘贴来实现这一点。

例如:

Sub CATMain()

Dim oDoc As Document
Dim oSel As Object
Dim aFilter(0)
Dim oSelected
Dim oRef As Reference

Set oDoc = CATIA.ActiveDocument

Set oSel = oDoc.Selection
oSel.Clear

aFilter(0) = "Product"

oSelected = oSel.SelectElement2(aFilter, "Select Object in the tree which you want to insert six times or ESC..", True)
If oSelected = "Cancel" Then
    Debug.Print "KO"
    Exit Sub
End If

oSel.Copy

Dim i As Integer
For i = 0 To 6
    oSel.Clear
    oSel.Add oDoc.Product
    oSel.Paste
Next

End Sub

您当然可以更换系统以自动选择您想要复制的产品,这取决于您需要的逻辑。

【讨论】:

    猜你喜欢
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 2022-07-19
    • 1970-01-01
    相关资源
    最近更新 更多