我想为电源复制创建宏。我从这个链接中提取了代码和模型,不幸的是它不起作用(我做了一些小的修改)。我在这个主题中发现了类似的问题,而在他的例子中,它是有效的。
Private Sub CommandButton1_Click()
' Instantiation of a PowerCopy Reference "SurfacicHoles"
' SurfacicHoles is stored in the CATPart "e:\tmp\PowerCopyReference.CATPart"
' It has
' 3 inputs: FirstHole, Support,and SecondHole
' 2 published parameters: Radius1 and Radius2
'------------------------------------------------------------------
'------------------------------------------------------------------
Dim CATIA As Object
Set CATIA = GetObject(, "CATIA.Application")
Dim SysS As Object
Set SysS = CATIA.SystemService
Dim SpassString As String
'CATIA.SystemService.Print ("Retrieve the current part")
SpassString = SysS.Print("Retrive the current part")
Dim PartDocumentDest As PartDocument
Set PartDocumentDest = CATIA.ActiveDocument
Dim PartDest As Part
Set PartDest = PartDocumentDest.Part
'------------------------------------------------------------------
'CATIA.SystemService.Print "Retrieve the factory of the current part"
SpassString = SysS.Print("Retrieve the factory of the current part")
Dim factory As InstanceFactory
Set factory = PartDest.GetCustomerFactory("InstanceFactory")
'Debug.Print factory.Name
'------------------------------------------------------------------
'CATIA.SystemService.Print "BeginInstanceFactory"
SpassString = SysS.Print("BeginInstanceFactory")
factory.BeginInstanceFactory "SurfacicHoles", "C:\PowerCopyReference.CATPart"
'------------------------------------------------------------------
'CATIA.SystemService.Print "Begin Instantiation"
SpassString = SysS.Print("Begin Instantiation")
factory.BeginInstantiate
'------------------------------------------------------------------
'CATIA.SystemService.Print "Set Inputs"
SpassString = SysS.Print("Set Inputs")
Dim FirstHole As Object
Set FirstHole = PartDest.FindObjectByName("Point.1")
Dim Support As Object
Set Support = PartDest.FindObjectByName("Surface.1")
Dim SecondHole As Object
Set SecondHole = PartDest.FindObjectByName("Point.2")
factory.PutInputData "FirstHole", FirstHole
factory.PutInputData "Support", Support
factory.PutInputData "SecondHole", SecondHole
'------------------------------------------------------------------
'CATIA.SystemService.Print "Modify Parameters"
SpassString = SysS.Print("Modify Parameters")
Dim param1 As Parameter
Set param1 = factory.GetParameter("Radius1")
param1.ValuateFromString ("25mm")
Dim param2 As Parameter
Set param2 = factory.GetParameter("Radius2")
param2.ValuateFromString ("15mm")
'------------------------------------------------------------------
'CATIA.SystemService.Print "Instantiate"
SpassString = SysS.Print("Instantiate")
Dim Instance As ShapeInstance
Set Instance = factory.Instantiate
'------------------------------------------------------------------
'CATIA.SystemService.Print "End of Instantiation"
SpassString = SysS.Print("End of Instantiation")
factory.EndInstantiate
'------------------------------------------------------------------
'CATIA.SystemService.Print "Release the reference document"
SpassString = SysS.Print("Release the reference document")
factory.EndInstanceFactory
'------------------------------------------------------------------
'CATIA.SystemService.Print "Update"
SpassString = SysS.Print("Update")
PartDest.Update
End Sub在这个步骤中出现一个错误
factory.BeginInstanceFactory "SurfacicHoles", "C:\PowerCopyReference.CATPart"运行时错误'-2147467259(80004005)':自动化错误。未指定错误
Windows 7 64位
今天我从管理层那里得到了新的信息..。我们的一些工厂没有获得KT1许可证.在这种情况下,有没有其他方式使用自动电源复制?
发布于 2018-01-29 11:21:25
使用BeginInstanceFactory打开实例工厂后,必须由相应的EndInstanceFactory关闭它。
现在发生的事情,特别是在开发中,是做一个BeginInstanceFactory,然后在调用EndInstanceFactory之前的某个地方中断,您必须再试一次。
然而,实例工厂在CATIA会话中仍然是打开的,如果您立即再次尝试宏,您将在BeginInstanceFactory上得到一个错误。
因此,作为最佳实践,我一直做的是在调用EndInstanceFactory之前调用BeginInstanceFactory (当然,在最后也是如此)。如果不需要调用,它将被忽略。但是,如果需要它(如果由于先前的失败运行,该工厂在会话中仍然处于打开状态),它应该将工厂重新打开的所有内容恢复到预期的状态。
因此,总结一下,尝试如下:
...
Set factory = PartDest.GetCustomerFactory("InstanceFactory")
factory.EndInstanceFactory
factory.BeginInstanceFactory "SurfacicHoles","C:\PowerCopyReference.CATPart"
...https://stackoverflow.com/questions/48422105
复制相似问题