Hallo zusammen,
ich würde gerne automatisiert ein Abstandsmaß einfügen. Ich habe die beiden parallelen Flächen bereits an der Hand (MECMOD.Face native_face1, MECMOD.Face native_face2).
Eigentlich würde ich gerne direkt in C# eine Dimension erstellen. Allerdings scheitere ich dabei ein UserSurface für mein Face zu erstellen. Im Makro funktioniert das wunderbar - in der API für C# scheint 'Generate()' jedoch nicht verfügbar zu sein. Daher gehe ich aktuell den nicht so schönen Umweg über Makros - diese werden mit einer Parameterliste in C# aufgerufen und erstellen darin das Makro. Zumindest für CreateRoughness(UserSurface1) funktioniert das so. Der schönere Weg direkt mit C# sähe vmtl. so ähnlich aus:
Code:
// C#
UserSurface usf1 = document.Part.UserSurfaces.Generate(native_face1); /// <-- scheitert hier; keine Funktion 'Generate'
AnnotationSet annotationSet1 = (AnnotationSet)document.Part.AnnotationSets.GetItem(annotationset_name);
annotationSet1.CreateSemanticDimension(usf1, ??, ??); /// <-- hier wüsste ich ebenfalls nicht was parameter 2 und 3 sein sollen...
// CreateSemanticDimension(UserSurface iSurf, ref object iType, ref object iSubType)
Frage 1) Hat jemand eine Ahnung wie ich auf alternativem Wege an ein UserSurface kommen kann? Bzw. wie ich direkt in C# eine Dimension erzeugen kann, ohne den Umweg über Makros zu gehen?
.
Ein weiteres Problem stellt sich mir beim Erstellen von Abstandsmaßen. Aus der Dokumentation auf catiaDoc.free.fr - AnnotationFactory werde ich nicht schlau (s. Anhang). Der zweite Parameter ist z.B. vom Typ iDimensionType - wobei die Auflistung eher auf ein Enum schließen lässt? Weder im Makro, noch in C# wüsste ich was genau ich hier angeben sollte, um die richtige Einstellung zu wählen (1 : CATTPSLinearDimension und 0 : CATTPSDistanceDimension).
Mein aktuelles Makro sieht so aus:
Code:
Language="VBSCRIPT"Sub CATMain(native_face1,native_face2,annotationset_name)
Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part
Set userSurfaces1 = part1.UserSurfaces
Set userSurface1 = userSurfaces1.Generate(native_face1)
Set userSurface2 = userSurfaces1.Generate(native_face2)
Set annotationSet1 = part1.AnnotationSets.Item(annotationset_name)
Set annotationFactory = annotationSet1.AnnotationFactory
Set pmi = annotationFactory.CreateNonSemanticDimension(userSurface1,1,0)
End Sub
Frage 2) welche Parameter benötigt CreateNonSemanticDimension im Makro (bzw. in C# falls es eine Lösung für Frage 1 gibt)?
.
Frage 3) Kennt jemand den Unterschied zwischen CreateNonSemanticDimension und CreateSemanticDimension?
.
Vielen Dank schon einmal für die Unterstützung. Ich hänge an dem Problem schon seit geraumer Zeit.. Würde mich über jeglichen Input freuen (:
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP