| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
|
Autor
|
Thema: Lotrechte Linie durch alle Scheitelpunkte einer 3d-Polylinie (1805 mal gelesen)
|
Kloburg Mitglied Bauzeichner
Beiträge: 4 Registriert: 02.06.2015
|
erstellt am: 02. Jun. 2015 14:10 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich bin Neuling im AutoLisp, möchte mich aber mehr damit befassen und habe da schon gleich ein Problem. Da ich dieses Forum schon länger kenne denke ich das mir hier geholfen werden kann. Also... Ich möchte automatisch von jedem Scheitelpunkt einer 3d-Polylinie eine Lotrechte auf eine andere 3d-Polylinie ziehen lassen. Aber irgendwie finde ich nicht die richtigen Ausdrücke um die Scheitelpunkte auszuwählen. Ich habe hier im Forum eine Lösung gefunden, wo man allerdings die Punkte alle selber auswählen muss um eine Linie zu zeichnen, das ist noch nicht ganz das was ich will. Kann mir einer helfen (super wäre es, wenn es mit Erklärung ist, damit ich auch nachvollziehen kann, was ich da machen soll)? Hier mein bisheriger (falscher) Code: (setq PL1(car(entsel "/nPolylinie 1 wählen: "))) (setq PL2(car(entsel "/nPolylinie 2 wählen: "))) (setq LotAbst (vlax-curve-getClosestPointTo (vlax-ename->vla-object PL1) PL2 ) ) (foreach n (vox-get-pl-points PL2) (entmake (list'(0 . "LINE") (cons 10 LotAbst) (cons 11 n) '(62 . 1) ) ) ) ) (defun vox-get-pl-points (ele / vx ret) (while (= (cdr (assoc 0 (setq vx (entget (setq ele (entnext ele)))))) "VERTEX") (setq ret (cons (cdr (assoc 10 vx)) ret)) ) (reverse ret) ) Liebe Grüße Kloburg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 02. Jun. 2015 14:34 <-- editieren / zitieren --> Unities abgeben: Nur für Kloburg
beim ersten Drüberschauen ist mir sofort aufgefallen, dass die Parameter zu vlax-curve-getClosestPointTo nicht stimmen können. Du übergibst beide Elemente, was nicht stimmen kann, denn die Hilfe schreibt dazu: Zitat: Original aus der AutoCAD-Lisp-Hilfe (vlax-curve-getClosestPointTo curve-obj givenPnt [extend]) Argumentscurve-obj The VLA-object to be measured. givenPnt A point (in WCS) for which to find the nearest point on the curve. extend If specified and not nil, vlax-curve-getClosestPointTo extends the curve when searching for the nearest point. Return Values A 3D point list representing a point on the curve, if successful; otherwise nil.
Ob noch andere Dinge nicht stimmen .. habe ich nicht weiter nachgesehen. Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen.
defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kloburg Mitglied Bauzeichner
Beiträge: 4 Registriert: 02.06.2015
|
erstellt am: 02. Jun. 2015 15:43 <-- editieren / zitieren --> Unities abgeben:
|
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 02. Jun. 2015 19:15 <-- editieren / zitieren --> Unities abgeben: Nur für Kloburg
Hallo Kloburg, mit welchem Editor arbeitest du? Falls du mit dem VL-Editor arbeitest (bringt Acad mit) dann kannst du debuggen und dir die einzelnen Variablenwerte zur Laufzeit anzeigen lassen. Damit solltest du dich auseinander setzen, das erleichtert die Fehlersuche sehr. Ansonsten ist deine Feststellung "Komme aber einfach nicht auf den richtigen Weg!" eben nur eine Feststellung und für die Leser hier bietet das kaum einen Angriffspunkt für eine Unterstützung. Sag wo es klemmt .. welche Fehler werden ausgegeben -- versuche den Punkt, an dem du nicht weiter kommst detailliert zu beschreiben. Dann ist die Hilfe leichter. So weiß man nicht, wie dir geholfen werden kann, ohne dir den ganzen Code zu schreiben. Grüße1 Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen.
defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2799 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 Plateia, Canalis Visual Basic
|
erstellt am: 02. Jun. 2015 20:05 <-- editieren / zitieren --> Unities abgeben: Nur für Kloburg
|
neurosis Mitglied dipl.ing.
Beiträge: 224 Registriert: 22.08.2006
|
erstellt am: 03. Jun. 2015 08:54 <-- editieren / zitieren --> Unities abgeben: Nur für Kloburg
hallo kloburg, mal auf die schnelle vorgehensweise, wenn du wirklich die lotrechten berechnen willst: - alle scheitelpunkte von 3dpolylinie1 sammeln (vox-get-pl-points) - alle scheitelpunkte von 3dpolylinie2 sammeln (vox-get-pl-points) - fuer jeden punkt von 3dpolylinie1 die lotrechte auf die liniensegmente von 3dpolylinie2 mit folgender funktion:
Code:
; Lot von p3 auf Linie p1-p2 ; p1, p2, p3 muessen 3dpunkte sein ; wenn 'u' kleiner 0 oder groesser 1, dann virtueller punkt ; wenn 'u' gleich 0 oder gleich 1, dann rueckgabe identisch mit p1 oder p2 ; wenn 'u' zwischen 0 und 1, dann punkt irgendwo auf linie p1-p2 (defun perpendicular ( p1 p2 p3 / x1 x2 x3 y1 y2 y3 z1 z2 z3 x y z n d u) (setq x1 (car p1) y1 (cadr p1) z1 (caddr p1) x2 (car p2) y2 (cadr p2) z2 (caddr p2) x3 (car p3) y3 (cadr p3) z3 (caddr p3)) (setq n (+ (* (- x3 x1) (- x2 x1)) (* (- y3 y1) (- y2 y1)) (* (- z3 z1) (- z2 z1))) d (* (sqrt (+ (* (- x2 x1) (- x2 x1)) (* (- y2 y1) (- y2 y1)) (* (- z2 z1) (- z2 z1)))) (sqrt (+ (* (- x2 x1) (- x2 x1)) (* (- y2 y1) (- y2 y1)) (* (- z2 z1) (- z2 z1))))) u (/ n d) x (+ x1 (* u (- x2 x1))) y (+ y1 (* u (- y2 y1))) z (+ z1 (* u (- z2 z1)))) (list u (list x y z)) )
- an hand von 'u' kannst du unterscheiden, ob die lotrechte wirklich auf das liniensegment faellt gruss marco ------------------ Marco Heuer www.arc-aachen.de Airport Office Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kloburg Mitglied Bauzeichner
Beiträge: 4 Registriert: 02.06.2015
|
erstellt am: 04. Jun. 2015 16:16 <-- editieren / zitieren --> Unities abgeben:
|
Kloburg Mitglied Bauzeichner
Beiträge: 4 Registriert: 02.06.2015
|
erstellt am: 04. Jun. 2015 16:18 <-- editieren / zitieren --> Unities abgeben:
|