发布几何集,SetDirect错误

我正在尝试使用VBA脚本发布“几何”零件中的点,线和平面。

我在Publications1的SetDirect方法上遇到错误,错误提示“方法SetDirect失败”。

出版物已添加到列表中,但元素为空。

我尝试过 publications1.SetDirect("centerPoint1",reference1)publications1.SetDirect "centerPoint1",reference1

这里是文档; http://catiadoc.free.fr/online/interfaces/interface_Publications.htm

我在做什么错?我认为这可能是参考文献1? 可以使用VBA脚本制作出版物吗?

我要制作出版物的部分的图像

发布几何集,SetDirect错误

VBA代码

 Sub publicationTest2()


Set CATIA = GetObject(,"CATIA.Application")
Set documents1 = CATIA.Documents

Set partDocument1 = documents1.Item("Part1.CATPart")

Set part1 = partDocument1.Part

Set hybridBodies1 = part1.HybridBodies
Set hybridBody1 = hybridBodies1.Item("arr_set")
Set hybridShapes1 = hybridBody1.HybridShapes
Set hybridShapePointOnPlane1 = hybridShapes1.Item("centerPoint1")

'Set publications1 = CATIA.activeDocument.Product.Products.Item(partName).Publications
Set productDocument1 = CATIA.activeDocument
Set product1 = productDocument1.Product
Set products1 = product1.Products
Set product2 = products1.Item("Part1.1")

Set publications1 = product2.Publications


Set reference1 = hybridShapePointOnPlane1
publications1.Remove ("centerPoint1")
Set publication1 = publications1.Add("centerPoint1")
part1.Update
Set publ1 = publications1.SetDirect("centerPoint1",reference1)

End Sub
wolfll 回答:发布几何集,SetDirect错误

发布全部与确定Product上下文中的魔术参考字符串有关。大多数时候,它将是... product.name /!事物名称。

如果具有相同名称的多个功能或非常深的树结构,则可能必须使用Part.Parameters.GetNameToUseInRelation方法来增强此功能,但是对于我过去的大多数VBA工作而言,此子例程就足够了: / p>

Sub PublishSomething(thing,partProd As Product,Optional pubName As String = "")

  Dim oProd As Product 
  Set oProd = partProd.ReferenceProduct  'just in case is instance product 
  Dim ref As Reference
  Dim pubString As String
  pubString = oProd.name & "/!" & thing.name
  Set ref = oProd.CreateReferenceFromName(pubString)

  Dim pubs As Publications
  Set pubs = oProd.Publications

  If Len(pubName) = 0 Then pubName = thing.name

  Dim thePub As Publication

  On Error Resume Next
  Set thePub = pubs.item(pubName)

  If Err.Number <> 0 Then
    Err.clear
    Set thePub = pubs.add(pubName)
  Else
    Exit Sub
  End If

  On Error GoTo 0
End Sub

P.S。记录宏对于找出这些内容可能非常有帮助。

本文链接:https://www.f2er.com/2366008.html

大家都在问