Autor
|
Thema: Körper drehen mit Makro (1495 mal gelesen)
|
JPP Mitglied Dipl.Ing
Beiträge: 12 Registriert: 30.10.2007
|
erstellt am: 30. Okt. 2007 15:13 <-- editieren / zitieren --> Unities abgeben:
Hallo alle zusammen, hab vor kurzem gewagt eingige Sachen in Catia über Makros zu realisieren. Bis jetzt hat das alles relativ gut geklappt. Jetzt hab ich allerdings folgendes Problem: Namen und Koordinaten werde aus einer Tabelle ausgelesen. 1. Ich erstelle ein GeoSet und einen Körper die ich benenne 2. In dieses GeoSet wird ein Punkt und ein KOSY mit dem Punkt als Ursprung eingefügt. 3. Durch diesen Punkt wird eine Ebene mit Offset gelegt 4. Jetzt wird in diese Ebene ein Sketch1 gezeichnet 5. Ein Block aus Sketch1 wird in Körper1 eingefügt Punkte 1-5 werden sooft durchlaufen bis keine Koordinaten mehr in der Tabelle stehen. Soweit alles gut. Ich habe jetzt im Strukturbaum X GeoSets und X Körper und X Achsensysteme!!! Jetzt möchte ich gerne, sozusagen als 6., den Block1 der ja im KOSY1 liegt um die Z-Achse von KOSY1 drehen. Das schaut dann so aus: 'Anfang Drehung
Code: Set partDocument1 = CATIA.ActiveDocument Set part1 = partDocument1.Part Set bodies1 = part1.Bodies Set body1 = bodies1.Item(ZylName) part1.InWorkObject = body1 Set shapeFactory1 = part1.ShapeFactory Set axisSystems1 = part1.AxisSystems Set axisSystem1 = axisSystems1.Item(ZylName) Set reference1 = part1.CreateReferenceFromBRepName("REdge:(Edge:(Face:(Brp:(AxisSystem.2;3);None:();Cf11:());Face:(Brp:(AxisSystem.2;2);None:();Cf11:());None:(Limits1:();Limits2:());Cf11:());WithPe rmanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR14)", axisSystem1) Set rotate1 = shapeFactory1.AddNewRotate2(reference1, 50.000000) Set hybridShapeRotate1 = rotate1.HybridShape hybridShapeRotate1.RotationType = 0 hybridShapeRotate1.Axis = reference1 part1.InWorkObject = hybridShapeRotate1 part1.Update
' ENDE DrehungDas funzt auch beim ersten durchlauf der Schleife. Im zweiten Durchlauf, sprich für Block2 und KOSY2, bricht das Makro vor dem Drehen ab!!!!! Ich habe die Vermmutung das es mit folgender Zeile zusammenhängt: Code: Set reference1 = part1.CreateReferenceFromBRepName("REdge:(Edge:(Face:(Brp:(AxisSystem.2;3);None:();Cf11:());Face:(Brp:(AxisSystem.2;2);None:();Cf11:());None:(Limits1:();Limits2:());C f11:());WithPermanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR14)", axisSystem1)
Wenn ich das richtig verstehe müsste AxisSysem.2 das erste unterkoordinatensystem sein. Wenn ich jetzt zum 2. mal durch die Schleife laufe müsste hier ja dann AxisSystem.3 stehen?!!? Denke ich richtig? Wenn ja- ich habs schon mit ner Laufvariablen probiert, aber das geht nicht. So, ich hoff ihr könnt damit was anfangen. Vielen Dank schon mal, JPP
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
YellowDevil Mitglied PI, Makroentwicklung, NC Automatisierung
Beiträge: 67 Registriert: 21.12.2006
|
erstellt am: 05. Nov. 2007 22:36 <-- editieren / zitieren --> Unities abgeben: Nur für JPP
Moin, versuch mal die Zeile folgendermassen abzuändern: Set reference1=part1.CreateReferenceFromObject(axisSystem1) Das mit deiner Denkweise ist schon ganz richtig. Wenn obiges nicht funzen sollte, kannst du noch den Weg gehen das du jedesmal das Achsensystem suchen lässt und dann der Reference zuweist. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|