Autor
|
Thema: Achsensysteme in geometrischen Set ansprechen (2617 mal gelesen)
|
k71 Mitglied Dipl.Ing. Maschinenbau
Beiträge: 10 Registriert: 05.09.2006
|
erstellt am: 13. Okt. 2006 09:35 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich möchte gerne ein Achsensystem ansprechen, das in einem geometrischen Set gespeichert ist. Bei den Achsensystemen die im Knoten Achsensysteme abgelegt sind, ist das kein Problem (CATIA.ActiveDocument.Part.Axissystems.item("Name_des_Achsensystemes"). Nur in den geometrischen Set's habe ich nichts gefunden. Hat vielleicht jemand eine Idee Schöne Grüße Konrad Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Proofin Mitglied Dpl.Ing
Beiträge: 208 Registriert: 24.11.2004
|
erstellt am: 13. Okt. 2006 10:41 <-- editieren / zitieren --> Unities abgeben: Nur für k71
|
k71 Mitglied Dipl.Ing. Maschinenbau
Beiträge: 10 Registriert: 05.09.2006
|
erstellt am: 13. Okt. 2006 10:54 <-- editieren / zitieren --> Unities abgeben:
Hallo Proofin Danke für deine schnelle Meldung. Das Thema ist, das ich in einem Makro Linien erzeugen möchte. Startpunkt soll der Ursprung des Achsensystems sein, X- bzw. Y-Richtung des Achsensystems sollen die Richtung vorgeben. Als Krücke würde es evtl. gehen die Achsensysteme im Knoten Achsensysteme zu erstellen, habe aber hiefür noch keinen Makrobefehl gefunden der mir diese Schaltfläche aktiviert. Schöne Grüße Konrad Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Proofin Mitglied Dpl.Ing
Beiträge: 208 Registriert: 24.11.2004
|
erstellt am: 13. Okt. 2006 11:21 <-- editieren / zitieren --> Unities abgeben: Nur für k71
Also Achsensysteme erstellen kannst du über: Set rootPart = partDoc.Part Set NewAxisSystem = rootPart.AxisSystems.Add() Als Alternative kannst über die Selektion gehen: Set oSel = CATIA.ActiveDocument.Selection oSel.Clear ' dein GeoSet zur Selektion hinzufügen Call oSel.Add(DeinGeoSet) ' suchstring für ein Achsensystem in deinem GeoSet oSel.Search ("'Part Design'.Achsensystem,sel") ' Achsensystem speichern Set oAxes = oSel.Item(1).Value Das wären jetzt mal auf die Schnelle meine Vorschläge. Sonst müßtest du dein Szenario mal genau beschreiben(viele GeoSet, viele Achsensystem, in jeden GoeSet eins, usw.) Mfg Proofin
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
k71 Mitglied Dipl.Ing. Maschinenbau
Beiträge: 10 Registriert: 05.09.2006
|
erstellt am: 13. Okt. 2006 13:22 <-- editieren / zitieren --> Unities abgeben:
Hallo Proofin Sorry, hatte da vorher einen kleine Knoten in meinen Hirnwindungen: Die Achsensysteme, die ich im Makro erzeuge, liegen im Knoten Achsensysteme; nur bei dem Modell, das ich genommen hatte, hatte ich die Achsensysteme händisch im geometr. Set "Achsensysteme" erzeugt. Ich hab dir mal mein bis jetzt leider nicht ganz lauffähiges Makro angehängt: Sub Hauptrichtung() Set part1 = CATIA.ActiveDocument.Part Anzahl = part1.HybridBodies.Item("Referenzdaten").HybridBodies.Item("Flaechen").HybridShapes.Count Set Koerper = part1.HybridBodies.Item("Referenzdaten").HybridBodies.Add() Koerper.Name = "Hauptrichtungen" For i = 1 To Anzahl Set Punkt = part1.HybridBodies.Item("Referenzdaten").HybridBodies.Item("Punkte").HybridShapes.Item("Punkt_" & i) Set Achs = part1.AxisSystems.Item("Achsensystem_" & i) Set Richtung = part1.HybridShapeFactory.AddNewDirection(Achs.XAxisDirection) Set hybridShapeLinePtDir1 = part1.HybridShapeFactory.AddNewLinePtDir(Punkt, Richtung, 0#, 20#, False) Koerper.AppendHybridShape hybridShapeLinePtDir1 hybridShapeLinePtDir1.Name = "X_" & i Next part1.Update End Sub Wobei ich die Achsensysteme per Makro auch ganz gerne im Set Referenzdaten\Achsensystem erzeugen würde. Hast Du hierzu auch eine Idee? Schöne Grüße Konrad Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Proofin Mitglied Dpl.Ing
Beiträge: 208 Registriert: 24.11.2004
|
erstellt am: 13. Okt. 2006 14:49 <-- editieren / zitieren --> Unities abgeben: Nur für k71
Kannst du mal bitte genau beschreiben was deine Ausgangssituation ist und was du genau vor hast!! Wenn ich das jetzt richtig verstehe hast du für jede Fläche ein Achsensystem und erstellts für jede Fläche eine Linie in X Richtung. Woher kommen die Achsensysteme? Sind sie vorhanden oder erstellst du sie selbst? Die Achsensysteme kannst du auch per Selection/Cut Paste verschieben. Mfg Proofin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
k71 Mitglied Dipl.Ing. Maschinenbau
Beiträge: 10 Registriert: 05.09.2006
|
erstellt am: 14. Okt. 2006 18:49 <-- editieren / zitieren --> Unities abgeben:
Hallo Proofin, Erst mal Danke für deine Geduld. Ich möchte mir dem Script die Einfallwinkel von einem best. Punkt auf LED's messen. Dazu lasse ich den Anwender die Flaechen per UserSelection auswählen. Das Makro erzeugt daraufhin für jede LED eine neue Fläche im Set "Flaechen"; berechnet und erzeugt im Set "Punkte" die Mittelpunkte der Flächen. Anschließend erzeugt das Makro im Set "Achsensysteme" die Achsensysteme so, daß der Ursprunkt im Flächenmittelpunkt und die z-Richtung normal auf der Fläche steht. x- u. y-Richtung sind mit Koordinaten belegt (weil ich's noch nicht hingebracht habe die horizontalen Kanten der vorher erzeugten Flächen anzusprechen - deshalb auch die Meldung am Ende, daß man die Achsen noch manuel korrigieren muß . Für die Messung möchte ich jetzt im Set "Hauptrichtungen" die X- u. Y-Richtung als LinePtDir erzeugen. Dabei sollte der Startpunkt der Urspung des Achsensystemes sein (bis jetzt der Flächenmittelpunkt, was aber eigentlich identisch ist), die Richtung soll von X- bzw. Y-Richtung des Achsensystemes bestimmt sein. Ich häng noch mal das Script für die Achserzeugung an: Sub Achssystem() Set part1 = CATIA.ActiveDocument.Part Set Auswahl = CATIA.ActiveDocument.Selection Anzahl = part1.HybridBodies.Item("Referenzdaten").HybridBodies.Item("Flaechen").HybridShapes.Count Set Koerper = part1.HybridBodies.Item("Referenzdaten").HybridBodies.Add() Koerper.Name = "Achsensysteme" For i = 1 To Anzahl Set Achs = part1.AxisSystems.Add() Achs.OriginType = catAxisSystemOriginByPoint Set objekt = part1.HybridBodies.Item("Referenzdaten").HybridBodies.Item("Punkte").HybridShapes.Item("Punkt_" & i) Set Reference = part1.CreateReferenceFromObject(objekt) Achs.OriginPoint = Reference Achs.ZAxisType = catAxisSystemAxisSameDirection Set objekt = part1.HybridBodies.Item("Referenzdaten").HybridBodies.Item("Normale").HybridShapes.Item("Normale_" & i) Set Reference = part1.CreateReferenceFromObject(objekt) Achs.ZAxisDirection = Reference Achs.XAxisType = catAxisSystemAxisSameDirection Achs.XAxisType = catAxisSystemAxisByCoordinates Dim arrayof_xAXS(2) arrayof_xAXS(0) = 0 arrayof_xAXS(1) = 1# arrayof_xAXS(2) = 0# Achs.PutXAxis arrayof_xAXS Achs.YAxisType = catAxisSystemAxisSameDirection Achs.YAxisType = catAxisSystemAxisByCoordinates Dim arrayof_yAXS(2) arrayof_yAXS(0) = 0 arrayof_yAXS(1) = 0# arrayof_yAXS(2) = 1# Achs.PutYAxis arrayof_yAXS Achs.Name = "Achsensystem_" & i Achs.IsCurrent = False Next part1.Update MsgBox "Bitte Achsen noch manuel korrigieren" End Sub Warum das Makro die Achsen manchmal im Knoten Achsensysteme und manchmal im Set "Achsensysteme" anlegt ist mir bis jetzt ein Rätsel. Bin aber auch erst vor 6 Wochen in die Makroprogrammierung eingestiegen. Ich hoffe, ich konnte jetzt ein wenig Klarheit in meine Frage bringen. Schöne Grüße Konrad Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Proofin Mitglied Dpl.Ing
Beiträge: 208 Registriert: 24.11.2004
|
erstellt am: 16. Okt. 2006 10:14 <-- editieren / zitieren --> Unities abgeben: Nur für k71
Guten Morgen Konrad, ich hab gerade mal ausprobiert die Achsensystem zu erstellen/verschieben. Erstellt werden sie bei mir immer unter dem Knoten Achsensysteme. Das Verschieben funktioniert zwar interaktive aber scheinbar nicht per Skript. Denn selbst mit Copy Paste werden die Systeme wieder unter dem Knoten Achsensysteme erstellt, nur der Name ändert sich. Deshalb würde ich jetzt erstmal sagen das du sie nicht per Skript in die GeoSets verschieben. Tut mir Leid das ich da nicht weiter helfen konnte Gruß Proofin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AlfaRomeo75 Mitglied Dipl.Ing. - Flächenkonstrukteur/Methodenplaner
Beiträge: 174 Registriert: 06.12.2004 ----------------- Windows XP professional Version2002 Service Pack 2 ----------------- CATIA V5 R16 SP5 ----------------- Intel Pentium 4 3,4GHz 4 GB RAM -----------------
|
erstellt am: 17. Okt. 2006 13:33 <-- editieren / zitieren --> Unities abgeben: Nur für k71
Hallo, hatte auch mal ein ähnliches Problem bzgl. der Anordnung von Achsensystemen. Wo ein Achsensystem erzeugt wird ist abhängig davon ob der Button (siehe Bild!) bei der Achsensystemerzeugung aktiviert ist oder nicht! Ich hatte ein Makro in dem Achsensystme erzeugt werden geschrieben und mich gewundert das die Achsensystem bei manchen Kollegen unter dem GeoSet erzeugt wurden und bei manchen Kollegen unter dem Knoten Achsensysteme! Prüft mal, was bei Euch eingestellt ist! Leider weiß ich nicht ob man dieses Button auch per Makro ansprechen kann oder ob dies auch über Tools/Optionen gefixt werden kann! Ich hoffe ich konnte helfen!
------------------ ------------------------------------------------- Gruß, AlfaRomeo75 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TiEetsch Mitglied Konstrukteur Maschinenbau
Beiträge: 25 Registriert: 08.01.2003 CATIA V5 R14 SP4
|
erstellt am: 03. Nov. 2006 16:36 <-- editieren / zitieren --> Unities abgeben: Nur für k71
Hallo zusammen, in der Makroprogrammierung bin ich zwar noch nicht so fit, aber bzgl. Achsensysteme kann ich was beisteuern. Achsensysteme werden in dem "in Bearbeitung" befindlichen Objekt erzeugt. Das kann ein geom. Set oder, wenn "Hybridkonstruktion" erlaubt ist, auch ein Body sein. Ist ein Body aktiv und "Hybridkonstruktion" nicht erlaubt, wird das AS automatisch unter dem Knoten "Achsensysteme" erzeugt. Das Objekt in Bearbeitung kann man z.B. mit part1.InWorkObject = part1.HybridBodies.Item("Geometrisches Set.1") festlegen. Ich hoffe ich konnte helfen. SchöWoE Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Carasianer Mitglied Elektroniker
Beiträge: 12 Registriert: 21.09.2006
|
erstellt am: 31. Jan. 2007 19:52 <-- editieren / zitieren --> Unities abgeben: Nur für k71
Ich möchte das Thema nochmal aufgreifen, da ich gerade vor demselben Problem stehe. Ziel meiner Arbeit ist es, einige Achsensysteme zu isolieren, um deren Verlinkung aufzuheben. Bei "normalen" Achsensystemen (also den, die im Knoten "Axis Systems" stehen) ist das einfach: die erreiche ich über die Kollektion Code: MyPart.AxisSystems
. Nun können Achsensysteme außer im Knoten "Axis Systems" auch in beliebigen GeomSets stehen (die kann man erzeugen, in dem man das GeomSet "Define in Work" setzt, anschließend das Achsensystem erzeugt und dabei den Haken "Under the Axis System node" ausschaltet. Siehe Bild.Leider finde ich keine Möglichkeit, auf diese Achsensysteme vom Makro aus zuzugreifen. Zu erwarten wäre ein Zugriff ähnlich Code: MyPart.HybridBodies.Item(x).AxisSystems
Funktioniert aber nicht.Die Makro-Doku schweigt sich zu diesem Thema leider aus. Auch der Makrorecorder hilft nicht weiter: Bei der Aufzeichnung der Erzeugung eines "normalen" Achsensystems und eines GeomSet-Achsensystems entsteht exakt derselbe Code, der bei der Wiedergabe natürlich das falsche Ergebnis liefert. Wenn ich manuell auf beide Achsensystem-Typen zugreife (z.B. HIDE/SHOW-setzen) und den Makrorecorder protokollieren lasse, schreibt er beim Zugriff auf das GeomSet-Achsensystem als Kommentar "No resolution found for the object "Axis System.2" in die Protokolldatei. Die CATIA-Suchfunktion zwecks Finden der Achsensysteme will ich aus Performancegründen nicht im Makro benutzen. Kennt jemand einen Weg, wie man an diese GeomSet-Achsensysteme heran kommt? Danke. Rüdiger
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Proofin Mitglied Dpl.Ing
Beiträge: 208 Registriert: 24.11.2004
|
erstellt am: 31. Jan. 2007 21:20 <-- editieren / zitieren --> Unities abgeben: Nur für k71
Hi Rüdiger, ich bin nicht mehr ganz sicher, aber als ich das Thema für diesen Beitrag untersucht habe, hab ich auch in den Parametern nach den Achsensystemen gesucht. Dort findet man auch diese Achsysteme wieder. Allerdings muß ich mir das erst wieder genauer anschauen um genaueres sagen zu können. Hoffe das hilft dir weiter. Gruß Proofin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Proofin Mitglied Dpl.Ing
Beiträge: 208 Registriert: 24.11.2004
|
erstellt am: 31. Jan. 2007 22:10 <-- editieren / zitieren --> Unities abgeben: Nur für k71
Hi Rüdiger, vergiss was ich zuvor geschrieben habe. Über die Parameter kommst du nur an die (eben) Parameter des Achsensystems aber nicht an das Objekt. Wenn du das Objekt brauchst kommst du wohl nicht um die Selektion drum herum. Gruß Proofin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |