Autor
|
Thema: Kantenlänge auslesen (1147 mal gelesen)
|
Antelito Mitglied
Beiträge: 88 Registriert: 27.11.2013 CATIA R24 WIN 10 x64
|
erstellt am: 09. Jan. 2017 13:51 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, ich nutze aus dem Buch von Hansen das Kochrezept 18 (Bauraum, auch Bounding Box genannt). Hintergrund ist folgender: aus einer Liste von Teilen möchte ich nur die Teile weiter bearbeiten, dessen Bounding Box innerhalb bestimmter Grenzen liegt. Nur weiss ich nicht, wie man die einzelnen Kanten (Länge, Breite und Höhe) automatisch ausliest. Kann mir jemand mit einem Code-Schnipsel weiterhelfen? Der Makro-Recorder von CATIA zeichnet leider nichts auf... Vielen Dank im vorraus! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 09. Jan. 2017 14:15 <-- editieren / zitieren --> Unities abgeben: Nur für Antelito
Servus Was wird mit dem Makro erzeugt? (ich kenne den Code nicht auswendig) Linien/Ebenen? Du könntest über die SPA-Workbench (such zB nach GetMeasurable) einen Abstand zwischen Ebene/Punkten messen. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joehz Moderator Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 09. Jan. 2017 16:19 <-- editieren / zitieren --> Unities abgeben: Nur für Antelito
Hi Antelito, in der For/Next-Schleife, Zeilen 47-53, werden die Extrema entlang der zuvor definierten/ermittelten Trägheitsachsen bestimmt. Innerhalb der nächsten Schleife werden Referenzen auf die Extrema gebildet und anschliessend paarweise der Abstand bestimmt. Dazu einige Anmerkungen: - das neu erzeugte (Trägheits-)Achsensystem ist nicht immer systemparallel - die Referenzen der Extrema kannst auch gegen ein anderes Achsensystem messen und dann entscheiden, ob die Box Deinen Randbedingungen entspricht; sprich: Innerhalb liegt. Hope it helps, Joe ------------------ Inoffizielle Catia Hilfeseite Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Antelito Mitglied
Beiträge: 88 Registriert: 27.11.2013 CATIA R24 WIN 10 x64
|
erstellt am: 12. Jan. 2017 09:01 <-- editieren / zitieren --> Unities abgeben:
Hallo, zunächst einmal Danke für die Antworten. Ich bin mir nicht sicher, ob ich aus urheberrechtlichen Gründen den Quelltext aus dem Buch hier posten darf. Daher werde ich es vorsichtshalber auch nicht tun. Aber um die Frage von bgrittmann zu beantworten: es werden zunächst Extrempunkte ermittelt, dann werden Linien erzeugt um anschließend eine Ebene an den Schnittpunkten der Linien zu erzeugen. Und ich habe noch eine Frage an joehz: du sagtest "das neu erzeugte (Trägheits-)Achsensystem ist nicht immer systemparallel". Genau das ist auch mein Hauptproblem: manchmal ist die erzeugte BoundingBox top (im Sinne von: hat die minimalsten Kantenlängen). Manchmal jedoch erzeugt das Makro die BoundingBox schräg und dies hat zur Folge, dass die Box nicht die minimalsten Kantenlängen hat und somit größer ausfällt als tatsächlich nötig. Gibt es hierzu schon eine Lösung? Wie bekommt man immer ein Systemparalleles Achsensystem definiert? Danke im vorraus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 12. Jan. 2017 09:11 <-- editieren / zitieren --> Unities abgeben: Nur für Antelito
Servus Hier verschiedene BoundingBox-Varianten (als PowerCopy). Beim einen kannst du das Referenzachsensystem wählen, beim andern werden die Trägheitsachsen verwendet (je nach dem was gewünscht ist) ggf musst du dann gar nicht ein Makro verwenden. Wenn du im Makro eh schon die Extrempunkte hast kannst du ja zwischen den gegenüberliegenden Punkten die Abstände messen (dann nur bestimmte Komponenten auswerten) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joehz Moderator Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 12. Jan. 2017 13:04 <-- editieren / zitieren --> Unities abgeben: Nur für Antelito
Hi Antelito, Zitat:
du sagtest "das neu erzeugte (Trägheits-)Achsensystem ist nicht immer systemparallel". Genau das ist auch mein Hauptproblem: manchmal ist die erzeugte BoundingBox top (im Sinne von: hat die minimalsten Kantenlängen). Manchmal jedoch erzeugt das Makro die BoundingBox schräg und dies hat zur Folge, dass die Box nicht die minimalsten Kantenlängen hat und somit größer ausfällt als tatsächlich nötig.
Das ist auch mein hauptsächlicher Kritikpunkt an der Routine. Zitat:
Gibt es hierzu schon eine Lösung? Wie bekommt man immer ein Systemparalleles Achsensystem definiert?
Klar. In dem man eines verwendet/erzeugt. :-) Tschau, Joe
------------------ Inoffizielle Catia Hilfeseite Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joehz Moderator Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 12. Jan. 2017 17:34 <-- editieren / zitieren --> Unities abgeben: Nur für Antelito
Hi Antelito, für ein Achsensystem 1,1,1(rechtsdrehend, systemparallel) ändere das Makro ab und zwar:
Code:
Dim directions1(2) ' Set directions1(0) = hybridShapeFactory1.AddNewDirectionByCoord(Components1(0), Components1(3), Components1(6)) ' Set directions1(1) = hybridShapeFactory1.AddNewDirectionByCoord(Components1(1), Components1(4), Components1(7)) ' Set directions1(2) = hybridShapeFactory1.AddNewDirectionByCoord(Components1(2), Components1(5), Components1(8)) Set directions1(0) = hybridShapeFactory1.AddNewDirectionByCoord(1, 0, 0) Set directions1(1) = hybridShapeFactory1.AddNewDirectionByCoord(0, 1, 0) Set directions1(2) = hybridShapeFactory1.AddNewDirectionByCoord(0, 0, 1) 'Neues Achsensystem im Schwerpunt Set axisSystem1 = Part1.AxisSystems.Add() ' axisSystem1.PutOrigin Gcoord ' Dim vectorXCoord(2) ' vectorXCoord(0) = Components1(0) ' vectorXCoord(1) = Components1(3) ' vectorXCoord(2) = Components1(6) ' ' Dim vectorYCoord(2) ' vectorYCoord(0) = Components1(1) ' vectorYCoord(1) = Components1(4) ' vectorYCoord(2) = Components1(7) ' ' axisSystem1.PutVectors vectorXCoord, vectorYCoord 'axisSystem1.IsCurrent = 1 Set reference1 = Part1.CreateReferenceFromObject(UserSel) selection1.Clear
Tschau, Joe ------------------ Inoffizielle Catia Hilfeseite Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Entwicklungsingenieur Wasserstoffsysteme (m/w/d) | Die X2E System Engineering GmbH ist ein interdisziplinäres Technologieunternehmen, welches mit zwei Geschäftsfeldern am Markt aktiv ist: Im Bereich Engineering bieten wir Entwicklungsdienstleistungen mit Schwerpunkt Soft- und Hardwareentwicklung an. Unter dem Namen X2Energy treten wir als Dienstleister für Energieoptimierung und Photovoltaik auf. Als Teil der wachstumsstarken X2E Unternehmensgruppe ... | Anzeige ansehen | Entwicklung |
|
Antelito Mitglied
Beiträge: 88 Registriert: 27.11.2013 CATIA R24 WIN 10 x64
|
erstellt am: 17. Jan. 2017 08:58 <-- editieren / zitieren --> Unities abgeben:
|