Autor
|
Thema: Auslesen der Koordinaten von Extrempunkten (3005 mal gelesen)
|
Starbirth Mitglied Konstrukteur
Beiträge: 119 Registriert: 22.10.2009 Catia V5-6 R24 Windows 7 64bit Intel Xeon (4x3,5GHz) 32B Ram Nvidia Quatro K4200
|
erstellt am: 27. Nov. 2009 09:30 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum. Im Anschluss an diesen Thread ergaben sich neue Probleme. Ich versuche nun die Koordinaten der (zur Erstellung der Annotation verwendeten) Punkte auszulesen. Da auf Extrema aber sowohl GetCoordinates (HybridShape) als auch GetPoint (SPA Workbench) fehlschlägt wollte ich nun den Punkt kopieren und als Datum wieder einfügen um dieses dann auszumessen. Der entsprechende Code sieht folgendermaßen aus:
Code: Dim Coords(2)Dim iSel As Selection Set iSel = CATIA.ActiveDocument.Selection iSel.Clear iSel.Add iPoint 'Der zu messende Punkt iSel.Copy iSel.Clear iSel.Add iHybBody 'Das Set in dem der Punkt liegen soll iSel.PasteSpecial "CATPrtResultWithOutLink" iSel.Clear Dim Messpunkt As Object Set Messpunkt = iHybBody.HybridShapes.Item(iHybBody.HybridShapes.Count) Dim MeasureRef As Reference Set MeasureRef = iPart.CreateReferenceFromObject(Messpunkt) Set SPA = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench") Set myMeasure = SPA.GetMeasurable(MeasureRef) Call myMeasure.GetPoint(Coords) MsgBox "X=" & Coords(0) & ", Y=" & Coords(1) & ", Z=" & Coords(2)
Dieser Code läuft durch, jedoch verstehe ich das Ergebnis nicht (siehe Bild). Was ist das für ein Element? Das Icon ist mir noch nie untergekommen. Auch ist das Ergebnis im Space nicht sichtbar (weder im normalen View, noch im NoShow). Wie erhalte ich ein Ergebnis, dass ich auch Ausmessen kann? Hat jemand eine Idee? EDIT: Eigentlich hab ich das Problem gerade gelöst. Mit dem obigen Code (neu eingefügt) funktioniert das Auslesen. Wäre trotzdem noch interessant zu wissen was die PasteSpecial Operation da eigentlich für ein Element erzeugt hat. Also, wer was weiß, bitte melden. EDIT2: Kommando zurück. Beim ersten Extrempunkt funktioniert alles wie es soll. Die Koordinaten sind richtig. Beim 2. Extrempunkt schlägt die Messung schon wieder fehl (Method GetPoint failed). Ich versteh nicht weshalb. Hilfe wäre nett. EDIT3: Problem erkannt. Statt eines Extrempunktes wird hier eine Extremlinie erzeugt. Für die gibt es natürlich keine Punktkoordinaten. Werde somit die Erstellnug des Extrempunktes verfeinern müssen. [Diese Nachricht wurde von Starbirth am 27. Nov. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 30. Nov. 2009 17:41 <-- editieren / zitieren --> Unities abgeben: Nur für Starbirth
Ich weiß nicht ob's die richtige Antwort auf deine Frage zu dem Typ ist, aber: Die Annotation kommt, wie auch die Drawingelemente aus den Sketcher-Librarys. Von daher vermute ich, dass deine "dumme" Geometrie aus dieser Richtung abgeleitet wurde, also so ne Art "dummer" Point on Surface. Das würde auch dei orangene Fläche im Icon erklären. Ansonsten würde mir auch nicht einfallen, warum man extrempunkte nicht messen können sollte, aber dein Code sieht so aus, als hättest Du's auch gesehen. Edit: Es sieht auch danach aus, dass dieses Icon Vertexe anzeigt. Nicht jedes Element besitzt eine Visualisierungseigenschaft, was ich mir auch oft zunutze mache. ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing [Diese Nachricht wurde von HoBLila am 30. Nov. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Starbirth Mitglied Konstrukteur
Beiträge: 119 Registriert: 22.10.2009
|
erstellt am: 01. Dez. 2009 09:47 <-- editieren / zitieren --> Unities abgeben:
Hallo Lila, hab mir das Icon mittlerweile versucht selbst zu erklären. Mein Versuch bestand darin es als eine Art Sammel... äh... dingens für dumme geometrische Elemente zu sehen. Also ein dummes Element, dass je nachdem woraus es erzeugt wurde sowohl eine Fläche, Linie, Kurve oder Punkt sein kann (was ja bei einem dumm kopierten Extremum alles durchaus im Bereich des Möglichen ist). Die Position der Extrema zu messen ist mir mittlerweile (indirekt, also über den Umweg des dummen Elements) gelungen. Direkt ging es allerdings immer noch nicht. Was mich in diesem Zusammenhang wundert ist, dass die automatisierte Erzeugung solcher Geometrien teilweise komplett andere Ergebnisse ausspuckt als der händische Ablauf. Beispiele: Erzeugt man per Hand einen Extrempunkt auf einer Kurve und kopiert ihn dumm noch mal drunter ist es ein dummer Punkt, auch vom Icon her. Das selbe bei Linien. Über die Automatisierungsschnittstelle gibt es dann aber diese "Sammelicons". Auch kann ich händisch ohne Probleme direkt den Extrempunkt ausmessen, die Automatisierung will nicht. Das sind noch so ein paar Sachen die man erstmal kapieren muss. Interessant fand ich auch deinen letzten Satz ("Nicht jedes Element besitzt eine Visualisierungseigenschaft..."). Könntest du darauf noch kurz ein wenig näher eingehen? Wie machst du dir dies gezielt zunutze? Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Starbirth Mitglied Konstrukteur
Beiträge: 119 Registriert: 22.10.2009 Catia V5-6 R24 Windows 7 64bit Intel Xeon (4x3,5GHz) 32B Ram Nvidia Quatro K4200
|
erstellt am: 07. Dez. 2009 09:34 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich mal wieder. Meine unbekannten Elemente bereiten mir immer noch Kopfzerbrechen. Ich versuche nun diese, nach dem Auslesen der Punktkoordinaten, wieder zu löschen. Ohne Erfolg, die verhalten sich nämlich ein wenig komisch. Zeichne ich das Löschen (was händisch mal wieder perfekt funktioniert) mit dem Makroeditor auf erhalte ich folgendes:
Code: Dim partDocument1 As PartDocument Set partDocument1 = CATIA.ActiveDocumentDim selection1 As Selection Set selection1 = partDocument1.Selection selection1.Search "Name='Result of Ankerpunkt_Annotation',all" Set partDocument1 = CATIA.ActiveDocument Dim selection2 As Selection Set selection2 = partDocument1.Selection selection2.Clear Dim item1 As Item ' No resolution found for the object item1... selection2.Add item1 selection2.Delete
Der Code lässt sich natürlich so nicht umsetzen.Frage ich im VB Editor die Objektauflösung ab, kann diese nicht erstellt werden. Alles bleibt leer. Baue ich mir den Pfad zum Element selber zusammen (explizit, über die Namen der Sets und Elemente) gibt das Makro einen Fehler aus der darauf schließen lässt, dass das Element eigentlich garnicht da ist . Wenn Interesse besteht bastel ich gleich mal noch ein Beispiel zusammen und stelle den Code ein den ich zum Löschen verwenden möchte. EDIT: Das Interesse hab ich jetzt mal vorausgesetzt Part hängt an. Wer schafft es "Result of Ankerpunkt_Annotation" per Makro anzusprechen und zu löschen? Mein aktuellster Versuch:
Code: Dim iSel As Selection Set iSel = CATIA.ActiveDocument.Selection iSel.Clear iSel.Add CATIA.ActiveDocument.Part.HybridBodies.Item("Bemassung").HybridShapes.Item("Result of Ankerpunkt_Annotation") iSel.Delete
[Diese Nachricht wurde von Starbirth am 07. Dez. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
V5Playaz Mitglied Dipl.-Ing (BA)
Beiträge: 447 Registriert: 12.07.2005 DELL PRECISION 390 3,25 GB RAM WIN XP PRO SP2 CATIA V5 R16-19 Delmia V5 R19 VB6, VB2008 Adobe Acrobat 9 Pro Extended
|
erstellt am: 07. Dez. 2009 11:10 <-- editieren / zitieren --> Unities abgeben: Nur für Starbirth
Hallo, also ich seh da momentan kein Problem darin. Bei mir hat es so funktioniert: Code: Dim partDocument1 As PartDocument partDocument1 = CATIA.ActiveDocument Dim selection1 As Selection selection1 = partDocument1.Selection selection1.Search("Name='Result of Ankerpunkt_Annotation',all") selection1.Delete()
grüße Dominik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Starbirth Mitglied Konstrukteur
Beiträge: 119 Registriert: 22.10.2009
|
erstellt am: 07. Dez. 2009 12:19 <-- editieren / zitieren --> Unities abgeben:
Seltsam. Bekommst du ein ordentliches Ergebnis wenn du im Editor die Objektauflösung für das oben genannte Element einfügst? Sollte es so sein liegt das Problem wohl bei mir lokal vor. Mit deinem Code funktioniert es bei mir auch. Nur würde ich aus performancegründen gerne die Suche vermeiden. Hast du eine Idee wo das Problem in meiner Zeile "iSel.Add CATIA.ActiveDocument.Part.HybridBodies.Item("Bemassung").HybridShapes.Item("Result of Ankerpunkt_Annotation")" steckt? Die Fehlermeldung gibt an, dass die Methode "Item" fehlschlägt. Heißt ja AFAIK so viel wie "Was du suchst ist nicht da." Das Set heißt jedoch immer gleich und befindet sich in der Hauptebene des Dokumentes. Selbes gilt für den Punkt, Ort und Name sind bekannt. IMHO ist alles da um den Punkt in die Auswahl zu kegeln. Ich sehe meinen Fehler nicht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
V5Playaz Mitglied Dipl.-Ing (BA)
Beiträge: 447 Registriert: 12.07.2005 DELL PRECISION 390 3,25 GB RAM WIN XP PRO SP2 CATIA V5 R16-19 Delmia V5 R19 VB6, VB2008 Adobe Acrobat 9 Pro Extended
|
erstellt am: 07. Dez. 2009 12:41 <-- editieren / zitieren --> Unities abgeben: Nur für Starbirth
Die Objektauflösung hat bei mir auch nicht funktioniert. Aber die Suche hat funktioniert. Auch wenn die Performance bei weitreichenden Suchen schlecht ist, hauptsache es funktioniert. Zu deinem Code, versuche es mal mit:
Code: iSel.Add CATIA.ActiveDocument.Part.HybridBodies.Item("Bemassung").HybridShapes.Item("Ankerpunkt_Annotation")
Auf das Element/Item 'Result of Ankerpunkt_Annotation' lässt sich nicht zugreifen. Das siehst du aber auch live, wenn du die Watchlist benutzt. Dort ist unter HybridShapes nur ein Element vorhanden -> Ankerpunkt_Annotation grüße Dominik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Starbirth Mitglied Konstrukteur
Beiträge: 119 Registriert: 22.10.2009
|
erstellt am: 07. Dez. 2009 12:46 <-- editieren / zitieren --> Unities abgeben:
Also wie vermutet, es geht einfach nicht. Warum auch immer. Dann halt doch mittels Suche. Werd versuchen diese dann zumindest auf das Set zu beschränken. Dann sollte sie auch nicht all zu viele Ressourcen in Anspruch nehmen. Danke dir. So hab ich zumindest die Gewissheit dass es am Punkt liegt und nicht nur lokal an meinem Catia oder meiner Programmierung. EDIT: Rechtschreibung [Diese Nachricht wurde von Starbirth am 07. Dez. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |