| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | | | PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
|
Autor
|
Thema: Lisp zum Ermitteln von einem Schnittpunkt (3634 mal gelesen)
|
Hawk82 Mitglied CAD Konstrukteur
Beiträge: 28 Registriert: 26.09.2007
|
erstellt am: 09. Apr. 2008 18:43 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, vorweg - ich bin absoluter Neuling, was LISP angeht. Mein Problem ist, dass ich einen Schnittpunkt aus einer Ebene und einer Linie ermitteln möchte und an diesem Schnittpunkt eine Kugel zeichnen möchte. Mein Stand bisher: Eine Linie ist definiert durch 2 Punkte Eine Ebene ist definiert durch 3 Punkte Mit dem Befehl ILP kann man diesen Schnittpunkt ermitteln Die Funktion ILP benötigt 5 Paramer . Allerdings muss dies im richtigen Syntax eingegeben werden: CAL (enter) ILP([0,0,0], [0,0,0], [0,0,0], [0,0,0], [0,0,0]) Wie verpacke ich das nun richtig in ein LISP, damit ich nur die 5 Punkte auswählen muss. Meine Bemühungen ein eigenes LISP zu schreiben waren nicht schlecht, scheiterten aber bei der übernahme der Koordinaten von P1 bis P5. Er gibt mir zwar die Koordinaten des Schnittpunktes an, übernimmt sie mir aber nicht als Zentrum für meine Kugel. Ich hoffe ich hab das jetzt einigermaßen verständlich erklärt. Ich hänge noch mein bisheriges LISP an. Wäre super wenn mir jemand weiterhelfen kann. Gruß Stefan
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Claudio Mitglied Architekt
Beiträge: 334 Registriert: 13.04.2002 ACA, Revit, MAX 2020
|
erstellt am: 09. Apr. 2008 19:36 <-- editieren / zitieren --> Unities abgeben: Nur für Hawk82
Hallo Stefan! (defun c:test ( / P1 P2 P3 P4 P5) (arxload "GEOMCAL") ;;;Rechner muss geladen werden (setq P1 (getpoint "\nErster Punkt der Linie:")) (setq P2 (getpoint "\nZweiter Punkt der Linie:")) (setq P3 (getpoint "\nErster Punkt der Ebene:")) (setq P4 (getpoint "\nZweiter Punkt der Ebene:")) (setq P5 (getpoint "\nDritter Punkt der Ebene:")) (cal "P6=ilp (p1,p2,p3,p4,p5)") (command "_sphere" P6) ) Gruß Claudio Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hawk82 Mitglied CAD Konstrukteur
Beiträge: 28 Registriert: 26.09.2007
|
erstellt am: 10. Apr. 2008 08:08 <-- editieren / zitieren --> Unities abgeben:
Danke Claudio für deine Mühe, aber leider funktioniert das bei mir nicht so wie es solll. Als Mittelpunkt der Kugel hat er einen Endpunkt der Linie. Irgendwie berechnet er den P6 nicht richtig, bzw. fügt er ihn nicht richtig ind den _sphere-Befehl ein. Ich hab in der Defun-Zeile noch P6 ergänzt, keine Ahnung ob das notwendig ist, funktioniert aber trotzdem nicht. Gruß
Stefan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 10. Apr. 2008 08:44 <-- editieren / zitieren --> Unities abgeben: Nur für Hawk82
|
Hawk82 Mitglied CAD Konstrukteur
Beiträge: 28 Registriert: 26.09.2007
|
erstellt am: 10. Apr. 2008 09:06 <-- editieren / zitieren --> Unities abgeben:
Super jetzt funktioniert es. Hab das mit dem Objektfang noch ins LISP eingebaut. Ich stelle mal mein finales LISP noch rein. Danke an alle Stefan [Diese Nachricht wurde von Hawk82 am 10. Apr. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
THE_ONE Mitglied Student, Alter:23
Beiträge: 299 Registriert: 27.04.2005 AMD XP 2000, 512MB-RAM, WIN XP Pro Readon 9600Pro VIZ 2005, Autocad 2007,(Mechanical)
|
erstellt am: 17. Jun. 2009 13:22 <-- editieren / zitieren --> Unities abgeben: Nur für Hawk82
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 17. Jun. 2009 13:29 <-- editieren / zitieren --> Unities abgeben: Nur für Hawk82
Früher hat der Befehl CAL die arx automatisch geladen ..... war IMHO alles im Autocad 14 -Buch sehr gut erklärt.. in der ACAD-Hilfe : Befehle - K - KAL ..... ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 669 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 05. Apr. 2012 08:58 <-- editieren / zitieren --> Unities abgeben: Nur für Hawk82
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 05. Apr. 2012 13:33 <-- editieren / zitieren --> Unities abgeben: Nur für Hawk82
|
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 669 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 05. Apr. 2012 15:04 <-- editieren / zitieren --> Unities abgeben: Nur für Hawk82
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 05. Apr. 2012 16:00 <-- editieren / zitieren --> Unities abgeben: Nur für Hawk82
Ich habe mal den Text in Word mit kyrilisch code importiert und dann das ganze in den Google geworfen, da kam das raus Autor: Gregor Cherevkov http://www.elecran.com.ua/ =========================== Keine Haftung für die Verwendung dieser Texte und eventuelle Fehler sind die Autoren nicht. Allgemeine Kommentare Funktionen werden in AutoLisp geschrieben Alle Berechnungen werden mit mathematischen Methoden (Vektoralgebra, analytische Geometrie), ohne Unterstützung beim Aufbau von AutoCAD-Objekten und deren Analyse durchgeführt. Globale Variablen Viele Library-Funktionen beziehen sich auf die zwei globale Variablen Die Variable hat einen Wert von $ P000 '(0.0 0.0 0.0) $ Dopusk einen Wert von 0,00001 - enthält die Fehlerwert wird für verschiedene Vergleiche verwendet (zum Beispiel die Koordinaten von Punkten). Er muss nur mit dem akkumulierten Fehler in den Berechnungen zu tun. Um Variablen in der Ausgangsposition Teil Ihres Programms initialisieren, zum Einfügen von Zeilen (Setq $ P000 '(0.0 0.0 0.0) $ 0,00001 Dopusk ) Benennung von Variablen, Parameter In den Parameter dieser Funktionen werden häufig Variablennamen verwendet. P, P1, P2, P3 .... - Der Punkt PC - Der zentrale Punkt des Bogens oder Kreises L, Lx, Ly, Lz - Länge Wekt, Wekt1, Wekt2, WektX, WektY, WektZ, W, W1, W2-Vektor (eine Liste von 3 Zahlen) WNorm - Normalenvektor. Im Hinblick auf die AutoCAD ist ein Vektor der Extrusionsrichtung, die alle die Primitive unter 210 assoziativen Code gespeichert ist. Ang - der Winkel R, R1, R2 - der Radius ================================================== ==================== Berechnungen der Bögen A. Der Abstand von einem Punkt in der Ebene der Bogen zu Bogen (1.zip) Zwei. Berechnung der Bogenlänge (2.zip) Drei. Berechnung des mittleren Winkel des Bogens (3.zip) 4. Berechnen der Mittelpunkt des Bogens (4.zip) Fünf. Berechnung der Mittelpunkt des Bogens (Bogen um 2 Punkte und der Richtung gegebenen Tangente an die erste Stelle) (5.zip) Analyse-Funktionen gehören und Kreuzung Elemente 6. Zubehör-Punkte auf der Linie, da ein Punkt und ein Vektor (15.zip) 7. Die Zugehörigkeit Punkt Intervall (16.zip) Acht. Die Mitgliedschaft des Bogens der Punkte (alle Punkte in der gleichen Ebene!) (17.zip) 9. Die Mitgliedschaft des Bogens (Punkte in verschiedenen Ebenen!) (18.zip) 10. Die Mitgliedschaft in der Lichtbogen Lichtbogen (19.zip) Funktionen für die Berechnung des Durchschnitts von Objekten im Raum 11. Der Schnittpunkt von 2 Kreisen gegeben Mittelpunkt und Radius in einer Ebene liegen (10.zip) 12. Der Schnittpunkt von 2 Kreisen gegeben Mittelpunkt und Radius befindet sich in einer gegebenen Ebene (11.zip) 13. Der Schnittpunkt der Linie und der Ebene (12.zip) 14. Die Schnittpunkte mit der Ebene des Kreises (13.zip) 15. Berechnung der Schnittlinie der Ebenen (14.zip) 16. Crossing the Line und den Kreis, dass in einer Ebene liegen (8.zip) 17. Der Schnittpunkt von Linie und Kreis, zufällig befindet (9.zip) Funktionen für allgemeine Zwecke 18. Vector Produkt (20.zip) 19. Vektor senkrecht zu der Ebene. Die Ebene, die durch 3 Punkte (21.zip) definiert 20. Berechnen Sie die Einheitsvektor (Einheitsvektor) (22.zip) 21. Reduzierung der Länge des Vektors bis 1000 (langen Vektor) (23.zip) 22. Punkt liegt auf P1 in einem Abstand L in Richtung des Punktes P2 (24.zip) 23. Der Punkt liegt von P1 in einem Abstand L entlang des Vektors Wekt (25.zip) 24. Punkt verschoben bis 2-m-Vektoren (26.zip) 25. Die Bedingung der Orthogonalität der Vektoren (27.zip) 26. Der Winkel zwischen den Vektoren (29.zip) 27. Der Winkel zwischen den Vektoren in einer Richtung im Uhrzeigersinn von der normalen (30.zip) 28. Der Vektor Winkel in Bezug auf diesen Teil der normalen (31.zip) 29. Der nächste Punkt von einem gegebenen Punkt im Intervall (32.zip) 30. Der Abstand von Punkt zu Segment (33.zip) 31. Drehen Sie den Punkt um die Achse (34.zip) 32. Die Projektion von einem Punkt auf der Linie (Linie Soll-und Vektor) (35.zip) 33. Die Projektion eines Punktes auf der Linie (Linie durch zwei Punkte definiert) (36.zip) 34. Die Projektion eines Punkts auf der Ebene (37.zip) 35. Der Abstand zwischen den Ebenen (38.zip) Die Funktionen der räumlichen Geometrie 36. Berechnung der Berührungspunkt des Kreises von dem Punkt (6.zip) 37. Berechnung der Berührungspunkte der 2-m Kreise (7.zip) ================================================== ======================= ------------------ Gruss Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 05. Apr. 2012 16:41 <-- editieren / zitieren --> Unities abgeben: Nur für Hawk82
Zitat: Original erstellt von gmk: Servus!Kann man im GEOMCAL auch einen Bogen mit einer Ebene verschneiden? Wann ja, kann mir jemand den Befehl dafür nennen?
Da man mit Geomcal beliebige Berechnungen durchführen kann, geht das sicherlich. Eine vorgefertigte Formel, wie sie z.B. hinter ILP steht, gibt's für Dein Problem aber vermutlich nicht. Du musst die Mathematik kennen, die zu Deiner Lösung führt. Und dann kannst Du das Ganze natürlich auch gleich in Lisp berechnen. Das Prinzip ist simpel: such Dir die Gleichung, die Deinen Bogen beschreibt, und die Gleichung Deiner Ebene, und setze beide gleich. Daraus ergibt sich automatisch eine Gleichung, die die Menge aller Punkte beschreibt, die sowohl zum Bogen als auch zur Ebene gehören. Für einen elementaren Einstieg: die Gleichung eines Kreises mit Radius r am Ursprung in der XY-Ebene lautet: x² + y² = r². Das ist trivialerweise nichts anderes als der Satz des Pythagoras, bei dem x und y die Katheten sind, und r die Hypothenuse. Jeder Punkt (x,y), der diese Gleichung erfüllt, liegt auf dem Kreis. Die Gleichung der Ebene, die von der Y- und der Z-Achse aufgespannt ist, lautet trivialerweise X=0. Alle Punkte (x,y,z), die diese Gleichung erfüllen, liegen in dieser Ebene. Wenn Du nun die Schnittpunkte zwischen dem Kreis und dieser Ebene berechnen willst, dann setzt Du einfach die zweite Gleichung in die erste ein. Aus x² + y² = r² wird dadurch y² = r². y ist also +-r. Du hast also zwei Schnittpunkte (0,-r) und (0,+r). Die Gleichungen für Deinen Fall findest Du sicher leicht im Netz.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 669 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 06. Apr. 2012 07:27 <-- editieren / zitieren --> Unities abgeben: Nur für Hawk82
Servus Tom! Vielen Dank für Deine ausführliche Erklärung. Ich habe aus Mangel an Zeit (DWG mußte gestern noch raus) einfach ein BKS über die Ebenenpunkte erzeugt und den Bogen solange verlängert bis sein Endpunkt Höhe 0 hatte; Deine Gleichung also händisch umgesetzt :-) Ciao Georg ------------------ http://www.xxx-tausend.info Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|