Hallo zuusammen,
ich habe ein Macro, welches eine in einem Part befindliche PowerCopy in dem selben Part mehrfach instanziiert. Als Inputelemente dienen dabei Geometrieelmente aus einem selektierten GeoSet.
Das Macro habe ich in Abwandlung des im Installationsumfang von R16 mitgelieferten Beispiels erstellt.
Funktioniert alles wunderbar...
Nur, nach Ende des Macros ist mein Part plötzlich auf Read-Only gesetzt!
Ich gebe am Ende des Macros die "Instanz Factory" wieder frei.
Was fehlt noch?
Bin für Hilfe dankbar!
Hier der Code: (Beispielpart im Anhang), KT1-Lizenz wird benötigt
Sub CATMain()
'
Language="VBSCRIPT"
'
PowerCopyName = "PowerCopy.1"
FixElementName1 = "Plane.1"
ElementNameInPC1 = "Point"
ElementNameInPC2 = "Plane"
'
Dim PartDocumentDest As PartDocument
Set PartDocumentDest = CATIA.ActiveDocument
Dim PartDest As Part
Set PartDest = PartDocumentDest.Part
DocFullName = CATIA.ActiveDocument.FullName
Dim InputObjectType(0)
InputObjectType(0)="HybridBody"
Dim factory As InstanceFactory
Set factory = PartDest.GetCustomerFactory("InstanceFactory")
Dim Plane As Object
Dim Point As Object
Set Selection = PartDocumentDest.Selection
Selection.Clear
'
'=======================================================
' GeoSet selektieren
'=======================================================
'
Auswahl=Selection.SelectElement2(InputObjectType,"Geometrical Set selektieren",true)
Set hybridbodySAS = selection.item(1).value
'
'=======================================================
' Präfix eingeben
'=======================================================
'
Praefix= InputBox("Bitte gewünschtes Präfix für die Namen eingeben", "Eingabe Präfix", "xx" )
if Praefix = "" Then exit sub
'
'=======================================================
' Die InstanceFactory aufrufen
'=======================================================
'
Set factory = PartDest.GetCustomerFactory("InstanceFactory")
'
'=======================================================
' Schleife über alle Elemente im selektierten Set
'=======================================================
'
for k = 1 to hybridbodySAS.HybridShapes.Count
'
'=======================================================
' Element umbenennen
'=======================================================
'
hybridbodySAS.HybridShapes.item(k).Name = Praefix&k
'
'=======================================================
' PowerCopy aufrufen und Elemente zuweisen
'=======================================================
'
factory.BeginInstanceFactory PowerCopyName , DocFullName
factory.BeginInstantiate
Set Point = hybridbodySAS.HybridShapes.item(k)
Set Plane = PartDest.FindObjectByName(FixElementName1)
factory.PutInputData ElementNameInPC1 , Point
factory.PutInputData ElementNameInPC2 , Plane
'
'=======================================================
' PowerCopy Instanz erstellen
'=======================================================
'
Dim Instance As ShapeInstance
Set Instance = factory.Instantiate
'
'=======================================================
' Ende Instanziierung, Factory freigeben
'=======================================================
'
factory.EndInstantiate
factory.EndInstanceFactory
next
'
'=======================================================
' Part updaten
'=======================================================
'
PartDest.Update
end sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP