| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: sphärische Punkteingabe (1525 mal gelesen)
|
Werner-Maahs.de Mitglied CAD-Dozent + Konstrukteur + Autor
Beiträge: 626 Registriert: 04.05.2005 Win XP AC 2005/6 Manchmal AC 2011
|
erstellt am: 28. Feb. 2008 13:41 <-- editieren / zitieren --> Unities abgeben:
In AutoCAD habe ich die Möglichkeit der sphärischen Punkteingabe -> Abstand<Winkel<Winkel. In Lisp habe ich bisher immer erst das BKS verändert um dann mit der Funktion (polar Punkt Winkel Abstand) ans gewünschte Ziel zu kommen. Dies zieht aber immer den, wie ich finde lästigen Schwanz (trans ..), mit der Koordinatenumwandlung mit sich. Daher hier meine Frage: Kann ich in Lisp eine Punktberechnung (ohne BKS-Änderung) vornehmen, die der sphärischen Punkteingabe in AutoCAD vergleichbar ist? ------------------ strukturiertes Zeichnen mit Werner-Maahs [Diese Nachricht wurde von Werner-Maahs.de am 28. Feb. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 28. Feb. 2008 13:50 <-- editieren / zitieren --> Unities abgeben: Nur für Werner-Maahs.de
|
Werner-Maahs.de Mitglied CAD-Dozent + Konstrukteur + Autor
Beiträge: 626 Registriert: 04.05.2005 Win XP AC 2005/6 Manchmal AC 2011
|
erstellt am: 28. Feb. 2008 14:32 <-- editieren / zitieren --> Unities abgeben:
Hallo Thomas, Ohne Deinen Beitrag irgend wie geprüft zu haben, hier mal ein Beispiel in AutoCAD:
Code: 1 Linie 2 0,0,0 3 100<90<60 4
in LISP:
Code: (command "Linie" '(0 0 0) (List 0 (* 100 (sin (/ pi 2))) (* 100 (sin (/ pi 3)))) "")
Hast Du das gemeint?
------------------ strukturiertes Zeichnen mit Werner-Maahs Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Werner-Maahs.de Mitglied CAD-Dozent + Konstrukteur + Autor
Beiträge: 626 Registriert: 04.05.2005 Win XP AC 2005/6 Manchmal AC 2011
|
erstellt am: 28. Feb. 2008 14:43 <-- editieren / zitieren --> Unities abgeben:
|
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 28. Feb. 2008 14:52 <-- editieren / zitieren --> Unities abgeben: Nur für Werner-Maahs.de
Hallo Werner, oder erst Polar in der Ebene anhängen und dann um z korrigieren: Code:
(defun c:test ( / ) (setq pkt '(0.0 0.0 0.0) dist 10.0 w1 (/ pi 2.0) w2 (/ pi 3.0)) (command "_.line" pkt (mapcar '+(polar pkt w1 (*(cos w2) dist)) (list 0.0 0.0 (*(sin w2) dist)))""))
------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
scj Mitglied
Beiträge: 555 Registriert: 09.08.2001
|
erstellt am: 28. Feb. 2008 15:27 <-- editieren / zitieren --> Unities abgeben: Nur für Werner-Maahs.de
Mein Vorschlag ist sicher nicht sehr elegant - aber er funktioniert: (setq a (strcat (rtos l) "<" (rtos ang1) "<" (rtos ang2))) (command "_line" "0,0,0" a "") Mit besten Grüßen aus der Rhön Jochen PS: Man kann so auch noch den "Klammeraffen" mit einbasteln... [Diese Nachricht wurde von scj am 28. Feb. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 28. Feb. 2008 20:38 <-- editieren / zitieren --> Unities abgeben: Nur für Werner-Maahs.de
Zitat: Original erstellt von Werner-Maahs.de: ...mit der Funktion (polar Punkt Winkel Abstand)...sphärischen Punkteingabe...
Mach dir einfach eine Funktion ( Polar3D pt dist ang1 ang2) genau wie von Jörn vorgeschlagen. Hier aus meinem Fundus - und sie sieht exakt wie die Funktion von Jörn aus Code: ((defun Polar3D (3dpt 3ddist xyAng zAng) (mapcar '+ (polar 3dpt xyAng (* (cos zAng) 3ddist)) (list 0.0 0.0 (* (sin zAng) 3ddist)) ) )
Die Winkel kann man sich vorher ja mit (ANGTOF Winkeltext) umrechnen lassen. ------------------ Mit freundlichem Gruß
Udo Hübner www.CAD-Huebner.de [Diese Nachricht wurde von CAD-Huebner am 01. Mrz. 2008 editiert.]
[Diese Nachricht wurde von CAD-Huebner am 01. Mrz. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Werner-Maahs.de Mitglied CAD-Dozent + Konstrukteur + Autor
Beiträge: 626 Registriert: 04.05.2005 Win XP AC 2005/6 Manchmal AC 2011
|
erstellt am: 29. Feb. 2008 13:36 <-- editieren / zitieren --> Unities abgeben:
Super, Danke an alle für die schnelle Hilfe! Ich habe inzwischen mit CADmiums Hilfe gearbeitet, indem ich den Zielpunkt durch Schnittpunktfunktion ermittelt habe und dann einfach eine Linie von Punkt nach Punkt gezeichnet habe. Je nach Aufgabe finde ich in fast allen Hilfen etwas was mich auf dem Weg ein wenig mehr zu LISPeln unterstützt. Versucht habe ich zwar erst die Tipps von Thomas aber insbesondere die Funktion von Udo macht mich neugierig. Habe bisher nur sehr wenig mit 'mapcar' gearbeitet um es zu verstehen. Nochmals Danke an alle
------------------ strukturiertes Zeichnen mit Werner-Maahs Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Werner-Maahs.de Mitglied CAD-Dozent + Konstrukteur + Autor
Beiträge: 626 Registriert: 04.05.2005 Win XP AC 2005/6 Manchmal AC 2011
|
erstellt am: 01. Mrz. 2008 09:53 <-- editieren / zitieren --> Unities abgeben:
Jetzt habe ich auch das mit der Mapcar-Funktion verstanden. Ist einfach genial! Udo, klappt eigentlich Dein Fundus bei Dir? Ich habe es damit jedenfalls nicht hinbekommen. Aber Dein Hinweis, dass es exakt die Funktion von Jörn ist, hat mich veranlaßt die Sachen zu vergleichen. Die Funktion von Jörn funktionierte jedenfalls auf anhieb. Ich hatte zunächst nur nicht seine Erklärung verstanden. Da Ihr ja in der Regel wissen wollt wie das Ergebnis Eurer Hilfe ausschaut, hier meine Vereinigung von Jörn's und Udo's Funktionien:
Code: (defun Polar3D ( 3DPkt 3DDist xyAng zAng ) (setq xyAng (* pi (/ xyAng 180.0)) zAng (* pi (/ zAng 180.0))) (mapcar '+ (polar 3DPkt xyAng (* (cos zAng) 3DDist)) (list 0.0 0.0 (* (sin zAng) 3DDist)) ) )
------------------ strukturiertes Zeichnen mit Werner-Maahs Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 01. Mrz. 2008 10:13 <-- editieren / zitieren --> Unities abgeben: Nur für Werner-Maahs.de
Nun ja, die Funktion polar (und meine daraus entwickelte Funktion Polar3D) erwarten den Winkel - wie üblich - im Bogelmaß. Deshalb der Hinweis, evt. Winkeleingaben mit Angtof umzurechnen. So eine Funktion muss algemeingültig laufen - ich habe auch viele Vermessungszeichmungen, da ist das Winkeleinheitensystem auf Gon (Neugrad) eingestellt). Da wäre der Faktor 180/PI schlichtweg falsch. Allerdings hatte meine ursprüngliche Funktion oben einen Tippfehler (beim Formatieren eingeschlichen) enthalten, deswegen lief sie nicht - mein Versehen Werner - habs jetzt korrigiert. Hier die Funktion und eine dazu passende Testfunktion
Code: ;;; Allgemeine 3D Polarfunktion, Winkel werden im Bogenmaß erwartet (defun Polar3D (3dpt 3ddist xyAng zAng) (mapcar '+ (polar 3dpt xyAng (* (cos zAng) 3ddist)) (list 0.0 0.0 (* (sin zAng) 3ddist)) ) ) ;;; Testfunktion ;;; (defun c:Test ( / pt dist w1 w2) (setq pt (getpoint "Startpunkt:") dist (getdist pt "\n3D-Länge:") w1 (getangle pt "Winkel in XY Ebene:") w2 (getangle pt "Winkel in Z Ebene:") ) (command "_line" pt (Polar3D pt dist w1 w2) "") )
Die Winkel kann man natürlich in Grad eingeben, werden von getangle automatisch ins Bogenmaß umgerechnet.Befehl: TEST Startpunkt: 3D-Länge:100 Winkel in XY Ebene:30 Winkel in Z Ebene:60 ------------------ Mit freundlichem Gruß
Udo Hübner www.CAD-Huebner.de
[Diese Nachricht wurde von CAD-Huebner am 01. Mrz. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |