| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS | | | | On-Demand-Webinare zu SolidCAM (SolidCAM) |
Autor
|
Thema: API - Spaltmessung Problem (979 mal gelesen)
|
volvoracer Mitglied student
Beiträge: 10 Registriert: 31.01.2009 vista home premium SP1 Intel core 2 duo t5800(2x2ghz) 4GB DDR2 RAM Geforce 9600GT(512MB DDR3) ProE SW 2008
|
erstellt am: 24. Jun. 2009 12:17 <-- editieren / zitieren --> Unities abgeben:
Hallo an Alle, Ich schreibe grade eine Projektarbeit zum Thema Geometrieanalyse in deren Rahmen ein Makro geschrieben werden soll, welches die minimalen Spaltmaße zwischen den Oberflächen von Bauteilen messen soll, um die RP-Fähigkeit der Bauteile festzustellen. Hierzu habe ich zunächst ein Makro geschrieben, welches alle Flächen durchläuft und miteinander vergleicht. Um Festzustellen, ob die Tolleranzen für ein minimales Spaltmaß unterschritten werden, muss ich nun zunächst einmal feststellen, ob zwei Flächen überhaupt einen Spalt einschließen. Hierfür habe ich mir zwei Kriterien überlegt: 1. liegen die normalenvektoren der Flächen in einem Winkel von 90°-270° zueinander? (Dieser Teil funktioniert einwandfrei) 2. In welcher Position liegen die Flächen zueinander? Und hier beginnt mein Problem: Mein Plan war, ein Koordinatensystem, dessen x-Achse parallel zum Normalenvektor der Fläche1 in ihrem Ursprung liegt zu positionieren, um dann den x-Wert von Fläche2 zu bestimmen. Somit müsste ich feststellen können, ob die Normalenvektoren der Flächen "voneinander weg" zeigen(kein Spalt möglich) oder ob sie "aufeinander zu" zeigen(Spalt möglich). Leider kann man mit der Funktion "InsertCoordinateSystem" nur die Achsen des Ursprungssysthems umkehren, nicht aber das Koordinatensystem "schief" zum Ursprungssystem anordnen. Kann mir irgendjemand sagen, wie ich die X-Achse des Koordinatensystems parallel zum Normalenvektor der Fläche ausrichten kann? Ich hoffe ich habe mich jetzt nicht zu umständlich ausgedrückt, und es ist klar, wo mein Problem liegt, wenn nicht, einfach bescheid sagen. Wenn mein Gedankengang zum Feststellen ob ein Spalt vorliegt jetzt kompletter Mumpitz sein sollte und irgendjemand einen besseren Ansatz kennt wäre es natürlich auch super, wenn er mir den verraten könnte. So, Vielen Dank schonmal im Vorraus, Benne ------------------
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jens_oliver Mitglied Softwareentwickler
Beiträge: 114 Registriert: 28.06.2005
|
erstellt am: 24. Jun. 2009 13:48 <-- editieren / zitieren --> Unities abgeben: Nur für volvoracer
hi, vieleicht helfen dir die beiden funktionen. den minimalen abstand zweier flächen kannst du mit ModelDoc2::ClosestDistance bestimmen. die materialrichtung ist in der fläche (face2) gespeichert. Face2::Normal sollte immer vom material wegzeigen. gruß oliver ------------------ Software nach Maß für Ihr CAD-System www.ib-knepper.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
volvoracer Mitglied student
Beiträge: 10 Registriert: 31.01.2009 vista home premium SP1 Intel core 2 duo t5800(2x2ghz) 4GB DDR2 RAM Geforce 9600GT(512MB DDR3) ProE SW 2008
|
erstellt am: 24. Jun. 2009 14:49 <-- editieren / zitieren --> Unities abgeben:
Hallo Oliver, Danke schonmal für die Antwort, die Funktion "ClosestDistance" wollte ich verwenden um ,nachdem sichergestellt ist, dass es überhaupt einen Spalt gibt, die Distanz zu messen. Das Problem ist allerdings leider, dass durch meine erste Einschränkung(Winkel) Flächen, wie z.B. die obere und die untere Seite eines Quaders nicht ausgeschlossen werden, obwohl diese ja keinen Spalt miteinander einschließen können. Ich suche also nach einer Möglichkeit sicherzustellen, dass Flächen, welche das Winkelkriterium erfüllen, aber dennoch keinen Spalt einschließen, ausgeschlossen werden. Danke trotzdem für deine schnelle Antwort, Gruß, benne ------------------
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jens_oliver Mitglied Softwareentwickler
Beiträge: 114 Registriert: 28.06.2005
|
erstellt am: 24. Jun. 2009 15:50 <-- editieren / zitieren --> Unities abgeben: Nur für volvoracer
was liefert denn face2.normal? einen vektor der von 0,0,0 zu einem punkt auf der ebene(fläche) geht, natürlich normal steht und ein bestimmte länge hat aber nicht die materialrichtung angibt? oder einen einheitsvektor (länge 1) der normal zur ebene liegt, weg vom material? ich glaube ja die funktion liefert den einheitsvektor mit der materialrichtungsinformation. und mit diesem vektor hast du alle informationen, bis auf den abstand. oder was meinst du mit "position der flächen"? edit: sollte doch erstmal nachdenken und dann schreiben. die position der fläche wäre mit dem normalenvektor natürlich noch nicht definiert und man kann nicht bestimmen ob ein spalt möglich ist. aber wenn du dir noch einen beliebigen punkt auf den flächen holst, dann ja. die funktion ClosestDistance gibt dir ja die beiden punkte zurück. erstellst du daraus einen vektor kannst du den mit den normalen vergleichen. gruß
------------------ Software nach Maß für Ihr CAD-System www.ib-knepper.de [Diese Nachricht wurde von jens_oliver am 24. Jun. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
volvoracer Mitglied student
Beiträge: 10 Registriert: 31.01.2009 vista home premium SP1 Intel core 2 duo t5800(2x2ghz) 4GB DDR2 RAM Geforce 9600GT(512MB DDR3) ProE SW 2008
|
erstellt am: 24. Jun. 2009 16:29 <-- editieren / zitieren --> Unities abgeben:
Du hast schon recht, die Funktion liefert den Einheitvektor mit der Materialrichtungsinformation. Ich habe mal auf die schnelle ein Bild gemalt, um das Problem zu verdeutlichen, es ist halt sonst wirklich schwer zu erklären. Fläche 2 und Fläche 3 Schließen einen Spalt ein, ihre Normalenvektoren haben einen Winkel von >90° <270° zueinander und zeigen vom Material weg. Also ist alles in Ordnung. Fläche 1 und Fläche 4 Schließen keinen Spalt ein, ihre Normalenvektoren haben aber auch einen Winkel von >90° <270° zueinander und zeigen auch vom Material weg. Ich würde mit "closestDistance" also, wenn ich nur die Winkelbedingung benutze auch hier einen Spalt feststellen, obwohl es keinen gibt. Wenn ich jetzt ein Koordinatensystem, dessen X-Achse parallel zum Normalenvektor von Fläche 1 ist und in dieselbe Richtung zeigt, einfügen könnte, dann hätte der Flächenursprung von Fläche 4 in diesem Koordinatensystem einen negativen X-Wert, und ich könnte die Fläche somit ausschließen. Wenn man dasselbe dann mit Fläche 2 und Fläche 3 machen würde, hätte der Flächenursprung der zu vergleichenden Fläche einen positiven X-Wert, ein Spalt wäre möglich, und ich könnte die Distanz messen. Ich hoffe mal, dass mein Problem damit etwas verständlicher geworden ist. Gruß, Benne ------------------ [Diese Nachricht wurde von volvoracer am 24. Jun. 2009 editiert.] [Diese Nachricht wurde von volvoracer am 24. Jun. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jens_oliver Mitglied Softwareentwickler
Beiträge: 114 Registriert: 28.06.2005
|
erstellt am: 24. Jun. 2009 17:07 <-- editieren / zitieren --> Unities abgeben: Nur für volvoracer
fläche 1 -> fläche 4 closestDistance liefert dir einen punkt auf fläche1 (p1) und fläche4 (p4). wenn du jetzt einen vektor bildest (p4-p1) und den winkel mit der normalen von fläche1 berechnest ist dieser über 90°. fläche2 ->fläche3 winkel zwischen normale auf fläche3 und vektor(p2-p3) ist aber kleiner als 90°. ist das nicht dein zweites kriterium? ------------------ Software nach Maß für Ihr CAD-System www.ib-knepper.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
volvoracer Mitglied student
Beiträge: 10 Registriert: 31.01.2009 vista home premium SP1 Intel core 2 duo t5800(2x2ghz) 4GB DDR2 RAM Geforce 9600GT(512MB DDR3) ProE SW 2008
|
erstellt am: 24. Jun. 2009 17:22 <-- editieren / zitieren --> Unities abgeben:
|
Dirk Wollborn Mitglied Entwicklungskonstrukteur
Beiträge: 379 Registriert: 31.07.2001
|
erstellt am: 24. Jun. 2009 18:33 <-- editieren / zitieren --> Unities abgeben: Nur für volvoracer
Zitat: Original erstellt von volvoracer: ... Das Problem ist allerdings leider, dass durch meine erste Einschränkung(Winkel) Flächen, wie z.B. die obere und die untere Seite eines Quaders nicht ausgeschlossen werden, obwohl diese ja keinen Spalt miteinander einschließen können. ...
Müssen die Flächen denn nicht von 2 verschiedenen Körpern kommen, um einen Spalt zu bilden? Das würde deinen Fall 2 Flächen vom gleichen Würfel ja ausschließen
------------------ Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|