| |
| 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-Problem (1457 mal gelesen)
|
luki77 Mitglied Bauzeichner
Beiträge: 13 Registriert: 02.09.2008 Autocad 2008
|
erstellt am: 11. Sep. 2008 11:43 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen Wer kann mir bei meinem Lisp-Problem weiterhelfen? Es geht darum, eine Bodenmarkierung für Sehbehinderte dar zu stellen. Diese soll jeweils 0.90m lang und 0.04m mit Abständen von jeweils 0.08m (oder 0.12 zum Ansetzen der nächsten Fläche) sein (die ursprüngliche Lisp hatte die Masse 4.00/0.40/0.60 resp. 1m für den Ansatz der nächsten Fläche). Ich versuchte da ein bereits bestehendes Lisp von meinem pensionierten Vorgänger an zu passen. Leider gibt's da noch irgendwo ein Problem und ich finde nicht heraus, woran es liegen könnte da ich in Sachen Lisp absolut blutiger Anfänger bin. Hier mal die Lisp-Definition: (defun C:sbm (/ oname pkt1 pkt2 pkt3 pn1 pn2 pn3 pn4 n1 n2 ende fl) (setvar "cmdecho" 0) ;(command "layer" "m" "B-markalt" "") (command "layer" "setzen" "VB_SEHBEHINDERTENMARKIERUNG" "") (command "farbe" vonlayer ) (setq fgb (getreal "\n Breite Sehbehindertenmarkierung V o r g a b e < 0.90 > ")) (if (= fgb nil)(setq fgb 0.90)) (setq fl (getstring "\n Sehbehindertenmarkierung n u r mit Umrandung V o r g a b e < NEIN > ")) (if (= fl "")(setq fl "nein")) (setq pkt3 (getpoint "\n 1. Flucht-Punkt wählen : ")) (setq pkt1 (getpoint "\n 2. Basis-Punkt wählen : ")) (setq pkt2 (getpoint "\n 3. Flucht-Punkt wählen : ")) (setq ende "") (setq n1 0) (setq n2 (+ n1 0.04)) (while (/= ende "e") (setq dx1 (- (car pkt2)(car pkt1)) dy1 (- (cadr pkt2)(cadr pkt1)) m (/ dy1 dx1) y1 (cadr pkt1) x1 (car pkt1) b1 (- y1 (* m x1)) y3 (cadr pkt3) x3 (car pkt3) a1 (- y3 (* m x3) b1) a2 (+ (* m m) 1) a2 (sqrt a2) a (/ a1 a2) );Ende setq (setq d1-3 (distance pkt1 pkt3) b (sqrt (- (* d1-3 d1-3)(* a a))) a4 fgb b4 (/ (* a4 b) a) d1-2 (distance pkt1 pkt2) dya (/ dy1 d1-2) dxb (/ dx1 d1-2) d1-4 (sqrt (+ (* b4 b4) (* a4 a4))) dx2 (- (car pkt3)(car pkt1)) dy2 (- (cadr pkt3)(cadr pkt1)) dx4 (/ dx2 d1-3) dy4 (/ dy2 d1-3) y4 (+ y1 (* dy4 d1-4)) x4 (+ x1 (* dx4 d1-4)) pkt4 (list x4 y4 0) y2 (cadr pkt2) x2 (car pkt2) dx2 (- (car pkt3)(car pkt1)) dy2 (- (cadr pkt3)(cadr pkt1)) m2 (/ dy2 dx2) b2 (- y1 (* m2 x1)) nx1 (- y2 (* m2 x2) b2) nx2 (+ (* m2 m2) 1) nx2 (sqrt nx2) nx (/ nx1 nx2) nxx 1 );Ende setq (if (< nx 0) (setq nxx -1)) (setq n1 (* n1 nxx) n2 (* n2 nxx) bn1 (/ (* d1-2 n1) nx) bn2 (/ (* d1-2 n2) nx) yn1 (+ y1 (* dya bn1)) xn1 (+ x1 (* dxb bn1)) pn1 (list xn1 yn1 0) yn2 (+ y4 (* dya bn1)) xn2 (+ x4 (* dxb bn1)) pn2 (list xn2 yn2 0) yn3 (+ y1 (* dya bn2)) xn3 (+ x1 (* dxb bn2)) pn3 (list xn3 yn3 0) yn4 (+ y4 (* dya bn2)) xn4 (+ x4 (* dxb bn2)) pn4 (list xn4 yn4 0) );Ende setq (command "plinie" pn1 pn2 pn4 pn3 pn1 "") (if (= fl "nein") (command "solid" pn1 pn2 pn3 pn4 "")) (setq ende (getstring "\n Return oder < e > für Ende eingeben: ")) (setq n1 (+ (abs n1) 1)) (setq n2 (+ (abs n2) 1)) );Ende while );Ende defun Ebenfalls hab ich eine Datei angehängt, wie diese Markierung schlussendlich aussehen soll.
Besten Dank schon mal für Eure Hilfe! Gruss Lukas 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 2009
|
erstellt am: 11. Sep. 2008 12:15 <-- editieren / zitieren --> Unities abgeben: Nur für luki77
Was für einen Fehler bekommst du genau?? Wird die Lisp im selben Autocad verwendet, mit dem auch das Lisp erstellt wurde?? Welche Version benutzt du überhaupt? Und welche Sprachversion benutzt du?? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
luki77 Mitglied Bauzeichner
Beiträge: 13 Registriert: 02.09.2008 Autocad 2008
|
erstellt am: 11. Sep. 2008 12:24 <-- editieren / zitieren --> Unities abgeben:
Es kommt die Fehlermeldung: Funktion nicht definiert für Argument: -1.19904e-014 Die Lisp wurde ursprünglich glaube ich mit Autocad 2000 erstellt. Jetzt angepasst und abgespeichert wurde sie mit Autocad 2008 und damit wird sie auch verwendet. Die ursprüngliche Lisp läuft auf Autocad 2008 noch einwandfrei. Sprachversion von Autocad ist Deutsch. 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 2009
|
erstellt am: 11. Sep. 2008 12:49 <-- editieren / zitieren --> Unities abgeben: Nur für luki77
Zitat: Original erstellt von luki77: Die ursprüngliche Lisp läuft auf Autocad 2008 noch einwandfrei.
Du meinst hoffentlich 2000 Außerdem, was sind: 1. Flucht-Punkt (erster Fluchtpunkt) 2. Basis-Punkt 3. Flucht-Punkt (zweiter Fluchtpunkt) Was sollen diese drei Punkte? Was ist mit dem ersten Fluchtpunkt gemeint? Was ist mit dem Basispunkt gemeint? und was ist mit dem zweiten Fluchtpunkt gemeint? Ich teste nämlich gerade das LISP und bei mir scheint es zu funktionieren. Nur leider weiß ich nicht wie es zu benutzen ist. Bei mir kommt jedenfalls nicht das raus, wie dass was du hier online gestellt hast. Was mir aber aufgefallen ist, durch mein wahlloses wählen der drei Punkte, ist dass es eine Division durch Null geben kann und dass er da abricht.
[Diese Nachricht wurde von THE_ONE am 11. Sep. 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 2009
|
erstellt am: 11. Sep. 2008 13:33 <-- editieren / zitieren --> Unities abgeben: Nur für luki77
So habs jetzt mit 2009 getestet und bekomme auch keine Fehlermeldungen! Musst mir nur noch sagen wie das mit den Punkten funktioniert? Ich bekomme einfach nichts zustande, das so aussieht wie das was du hier online gestellt hast. LG THE_ONE Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
luki77 Mitglied Bauzeichner
Beiträge: 13 Registriert: 02.09.2008 Autocad 2008
|
erstellt am: 11. Sep. 2008 14:03 <-- editieren / zitieren --> Unities abgeben:
Mit dem ersten Fluchtpunkt und dem Basispunkt gebe ich quasi die Startpunkte fest (eine Basislinie). Mit dem 2. Fluchtpunkt, gebe ich ihm die Richtung an (man könnte dies also nicht nur rechtwinklig, sondern auch schiefwinklig ausführen). Leider kommt bei mir auch nicht das raus, was ich hier reingestellt habe. Wäre dies so, hätte ich hier nicht um Hilfe gebeten. Hab dies mit dem ursprünglichen Lisp erstellt und anschliessend manuell bearbeitet um zu zeigen, wie es eigentlich aussehen sollte. Was kommt denn bei dir raus? 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: 11. Sep. 2008 14:32 <-- editieren / zitieren --> Unities abgeben: Nur für luki77
|
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 2009
|
erstellt am: 11. Sep. 2008 14:49 <-- editieren / zitieren --> Unities abgeben: Nur für luki77
Das mit dem Objektfang ist eine gute Idee, auf jeden Fall abschalten! Hab dir mal das hochgeladen, was ich bekomme: (siehe Anhang - animated gifs) beim zweiten Pic (sbm_funkt_nicht.gif) sieht man dass man keine Streifen zeichnen kann die parallel zur X bzw zur Y Achse sind! Lg THE_ONE
[Diese Nachricht wurde von THE_ONE am 11. Sep. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
luki77 Mitglied Bauzeichner
Beiträge: 13 Registriert: 02.09.2008 Autocad 2008
|
erstellt am: 11. Sep. 2008 14:56 <-- editieren / zitieren --> Unities abgeben:
|
luki77 Mitglied Bauzeichner
Beiträge: 13 Registriert: 02.09.2008 Autocad 2008
|
erstellt am: 11. Sep. 2008 14:59 <-- editieren / zitieren --> Unities abgeben:
O.k., scheint bei THE_ONE wirklich zu funktionieren. Was jetzt noch ist, der Abstand zwischen den Flächen ist noch immer zu gross. Sollte also anstatt 0.96m nur noch 0.08m Abstand sein. Da hab ich aber keine Ahnung, wo ich dies anpassen muss. Wo ist dieser Abstand definiert? 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 2009
|
erstellt am: 11. Sep. 2008 15:15 <-- editieren / zitieren --> Unities abgeben: Nur für luki77
Also habe jetzt noch etwas herumprobiert und bekomme den selben Fehler wie du! und zwar wenn ich das ganze etwas drehe also den Winkel verändere. siehe Anhahng - hab das ganze nochmal zusammengefasst. Also bei bestimmten Winkel funktioniert dein LISP nicht. Hängt wahrscheinlich an den Divisionen. Wie man das mit dem Abstand ändert, das ist frage des Codes, auf den ersten Blick habe ich nicht gesehen wo das zum einstellen wäre! Lg THE_ONE 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 2009
|
erstellt am: 11. Sep. 2008 15:48 <-- editieren / zitieren --> Unities abgeben: Nur für luki77
Kannst du mir das mit den Abständen erklären?? wo soll 0.12m Abstand sein und wo soll 0.08m Abstand sein?? Müssen diese Streifen immer rechtwinkelig sein?? [Diese Nachricht wurde von THE_ONE am 11. Sep. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
luki77 Mitglied Bauzeichner
Beiträge: 13 Registriert: 02.09.2008 Autocad 2008
|
erstellt am: 11. Sep. 2008 15:57 <-- editieren / zitieren --> Unities abgeben:
Es ist so, dass die Fläche 0.04m breit ist. Zwischen der 1. und der 2. Fläche (usw.) sollten 0.08m sein, so dass jeweils eine Fläche zusammen mit einem Abstand 0.12m ergeben. Zur Zeit ist es so, dass die Fläche 0.04m breit ist und dazwischen, bis zur nächsten Fläche also, sin 0.96m, was zusammen jeweils einen Meter ergibt. Irgendwo muss also quasi definiert sein, dass die Basislinie um einen bestimmten Wert versetzt wird um die nächste Fläche zu erstellen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 bis ACA 2013 Arcibem System: Windows Internet-Startseite: http://www.archi.de
|
erstellt am: 11. Sep. 2008 16:06 <-- editieren / zitieren --> Unities abgeben: Nur für luki77
Hallo Lukas, Warum nimmst Du nicht einfach einen entsprechenden Linientyp und eine Polylinie mit der Breite 0.9 ? Sehbehinderte.lin
Code: *Sehbehinderte,004-008 __ __ __ __ __ __ __ A,.04,-.08
Grüsse, Henning ------------------ Henning Jesse VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure http://www.voxelman.de 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 2009
|
erstellt am: 11. Sep. 2008 16:53 <-- editieren / zitieren --> Unities abgeben: Nur für luki77
|
luki77 Mitglied Bauzeichner
Beiträge: 13 Registriert: 02.09.2008 Autocad 2008
|
erstellt am: 12. Sep. 2008 08:37 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von wronzky: Hallo Lukas, Warum nimmst Du nicht einfach einen entsprechenden Linientyp und eine Polylinie mit der Breite 0.9 ?Sehbehinderte.lin
Code: *Sehbehinderte,004-008 __ __ __ __ __ __ __ A,.04,-.08
Grüsse, Henning
Hallo Henning Hm, manchmal liegt die Lösung näher als man danach sucht. Die Vorlage für die Fussgängerstreifen war bereits vorhande. Mein erster Gedanke war also, ich passe diese Vorlage einfach an, weil dies wohl das einfachste ist. Dass die Situation aber nicht 1 zu 1 vergleichbar ist, ist mir dabei gar nicht aufgefallen. Fussgängerstreifen müssen des öfteren in Bereichen von Einlenkern eingekürzt werden. So ist es also zwingend, dass die einzelnen Elemente mit Griffen bearbeitet werden können. Ebenfalls sind Fussgängerstreifen nicht zwingend rechtwinklig. Bei diesen Sehbehindertenmarkierungen ist dies aber nicht der Fall und eine Polylinie reicht völlig aus. Besten Dank also für die Hilfe! Gruss Lukas [Diese Nachricht wurde von luki77 am 12. Sep. 2008 editiert.] [Diese Nachricht wurde von luki77 am 12. Sep. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
luki77 Mitglied Bauzeichner
Beiträge: 13 Registriert: 02.09.2008 Autocad 2008
|
erstellt am: 12. Sep. 2008 08:40 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von THE_ONE: Hallo!Darf es solche Streifen auch geben?? Das habe ich vorher gemeint als ich fragte ob die Streifen rechtwinkelig sein müssen, hier sind sie es z.B. nicht!
@THE_ONE Besten Dank für deine Bemühungen. Wie du in obigem Eintrag sehen kannst, gibt es eine noch viel einfachere Lösung. Diese funktioniert allerdings auch nur, weil diese Sehbehindertenmarkierungen immer rechtwinklig ausgeführt werden. Solche Markierungen werden im übrigen als Aufmerksamkeitsfeld mit einer mit Gehstock spürbaren Reliefmarkierung im Bereich von Trottoirüberfahrten angebracht. Gruss Lukas 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 2009
|
erstellt am: 12. Sep. 2008 10:02 <-- editieren / zitieren --> Unities abgeben: Nur für luki77
Zitat: Original erstellt von luki77: Hallo HenningDass die Situation aber nicht 1 zu 1 vergleichbar ist, ist mir dabei gar nicht aufgefallen. Fussgängerstreifen müssen des öfteren in Bereichen von Einlenkern eingekürzt werden. So ist es also zwingend, dass die einzelnen Elemente mit Griffen bearbeitet werden können. Ebenfalls sind Fussgängerstreifen nicht zwingend rechtwinklig.
Wie wäre das dann mit dem Abstand am Beispiel der Fussgängerstreifen? Welcher der beiden Abstände müsste jetzt 0.8 sein, wahrscheinlich der rechtwinklige, oder? Lg THE_ONE Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |