| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | |  | NVIDIA GTC Paris und ISC High Performance-Konferenz 2025, eine Pressemitteilung
|
Autor
|
Thema: Stückliste erstellen (908 mal gelesen)
|
rem2k8 Mitglied Techniker

 Beiträge: 12 Registriert: 18.11.2008 ACAD 20xx (Dank Subscription immer die aktuelle)
|
erstellt am: 18. Nov. 2008 11:54 <-- editieren / zitieren --> Unities abgeben:         
Hallo VB-Profis Ich arbeite derzeit an einem Programm, welches mir aus dem Ansichtsplan (2D) einer Glasfassade alle Gläser wählen lässt und in eine Excel-Vorlage exportiert. Die Gläser sind entweder als Rechteck oder mit Polylinie gezeichnet. Das Programm funktioniert soweit schon perfekt. Mein Problem ist nun, das nur rechteckige Gläser in die Stückliste aufgenommen werden sollen, auch wenn diese nicht parallel zur XY - Achse liegen. Bei den geraden Rechtecken (parallel zur XY-Achse) geht die Ermittlung der Geometrie perfekt über die BoundingBox - Methode. Wie jedoch bekomme Ich die richtige Breite und Höhe eines Rechteckes, dass verdreht zur XY-Achse liegt? Weiters suche Ich nach einer Möglichkeit zur Prüfung, ob das gewählte Objekt überhaupt ein Rechteck ist. Eine Prüfung über die Anzahl der Stützpunkte hab ich schon im Programm (4 beim Rechteck, 5 bei Polylinie) jedoch heißt das ja noch lange nicht, dass das Element ein echtes Rechteck ist. Wow, was für ein langer Text - aber ich hoffe ich konnte mich halbwegs verständlich ausdrücken, wo der Schuh drückt und es kann mir irgend ein Mathe-Genie (welches ich nicht gerade bin) weiterhelfen. Danke vorerst, Mario Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 18. Nov. 2008 12:07 <-- editieren / zitieren -->
Hi Mario, wenn Du Polylinien hast, dann hat jede Polylinie eine Eigenschaft '.Coordinates' ==> in dieser stehen die Vertizes drin. wenn Du Regionen hast, dann ist's schon ein wenig unangenehmen, lass mich wissen, wenn das der Fall sein sollte. Bei den Polylinien musst Du aufpassen, ob es LW-Polylines oder 2D-Polylines sind, denn diese stellen die Vertizes in unterschiedlichen Array-Deklarationen in '.Coordinates' zur Verfügung (einmal sind's 3 Doubles für einen Punkt, bei LWPoly sind's 2 Doubles). Pass aber bitte auch auf, ob die Polylinien mit KurvenAngleichen oder ähnlichem behandelt sind oder Bögen enthalten. Und dann musst Du Punkt für Punkt durchgehen und den Winkel zwischen PPrevious - PCurrent - PNext halt mathematisch rechnen. - alfred - |
rem2k8 Mitglied Techniker

 Beiträge: 12 Registriert: 18.11.2008
|
erstellt am: 18. Nov. 2008 13:24 <-- editieren / zitieren --> Unities abgeben:         
|
Ex-Mitglied
|
erstellt am: 18. Nov. 2008 13:42 <-- editieren / zitieren -->
|
Ex-Mitglied
|
erstellt am: 18. Nov. 2008 14:27 <-- editieren / zitieren -->
Hi, gerade noch so eine Idee, vielleicht hilft's, wäre halt von der Performance unvergleichlich schneller als sinus und cosinus rechnen: Du kannst mal, wenn ich Deine Aufgabe richtig verstanden habe, > 90% dadurch abdecken, dass es Polylinien mit 4 Punkten gibt (auch wenn der 5.te Punkt ev. vorhanden ist und gleich dem Startpunkt wäre). Unter der Voraussetzung, dass es 4 Punkt-Polylinien sind: abs((Abstand Pkt1 zu Pkt3) - (Abstand Pnt2 zu Pkt4)) < Toleranz Soll heissen, vergleiche die Länge Deiner Diagonalen, sind diese gleich (zumindest soweit es geometrische Toleranz betrifft), dann sind die Vierecke rechteckig!!! - alfred - |
rem2k8 Mitglied Techniker

 Beiträge: 12 Registriert: 18.11.2008
|
erstellt am: 18. Nov. 2008 14:47 <-- editieren / zitieren --> Unities abgeben:         
Hi Hätt ich auch schon versucht - stimmt aber leider auch nicht. Denn nur wenn sich die Diagonalen in der Mitte treffen und im selben Winkel liegen sind alle 4 Winkel 90*. Ich werds jetzt über den gute, alten Pythagoras versuchen: Distanz von A nach B = Kathete Distanz von A nach C = Kathete Wenn Distanz von B nach C (Hypothenuse) = sqrt(a2 + b2) dann Winkel = 90° Dies lass ich in einer Schleife durch alle 4 Punkte laufen und wenn alle 4 90° ergeben, dann passts eben. Umständlicher gehts wohl nicht, aber es dürfte funktionieren. - Mario -
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |