| |
| 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: Wo liegt hier der Fehler ??? (1720 mal gelesen)
|
romi1 Mitglied Bautechniker
Beiträge: 647 Registriert: 09.02.2006 Xeon E3-1245V2 16GB RAM Windows 10 Professional 64 bit AutoCAD 2014
|
erstellt am: 03. Mai. 2007 20:10 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute! Habe als Lisp-Anfänger ein Problem, das ich scheinbar selbst nicht mehr lösen kann, und zwar bei der beiliegenden Funktion "romi": Der Hund liegt scheinbar bei den letzten 6 Code-Zeilen: Möchte eine Polyline zeichnen lassen, die als Anfangspunkt die Koordinaten von "einsetzpunkt" nimmt, und dann jeden Punkt relativ vom vorhergehenden konstruiert, und zwar mit Zuhilfenahme der relativen Abstände aus der Liste "abstandslist". Wie ich zu den Daten von "einsetzpunkt" und zu jenen von "abstandslist" komme, ist hier (meiner Meinung nach) nicht relevant, denn soweit funktioniert das Programm ja. An und für sich sollte die Polylinenkonstruktion nach dem 1. Punkt mit der 3.-vorletzten Programmzeile erledigt werden - das klappt aber überhaupt nicht (wegen dem "@" ??); So hab' ich die Zeile mal aus- kommentiert und es ohne "@" probiert. Als Ergebnis wäre hier zu erwarten, das nach dem 1. Punkt die Daten aus "abstandlist" nicht als Abstände, sondern als Koordinaten hergenommen werden. Das klappt aber auch nicht so. Es kommt ein Linie raus, bei der mehrere Punkte übereinander liegen. Das dürfte nicht sein, wenn man am Programmbeginn eine 3D-Polyline wählt, deren Punkte unterschiedliche Höhen haben ... damit wird nämlich dann in Folge die Liste "abstandslist" erzeugt. Kann mir jemand von Euch helfen?? Danke im Vorraus, Roman 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: 03. Mai. 2007 21:50 <-- editieren / zitieren --> Unities abgeben: Nur für romi1
Schreib am Ende: Code: (setq einsetzpunkt (getpoint "\nEinsetzpunkt:")) (command "_pline" einsetzpunkt) (foreach n abstandslist (setq einsetzpunkt (mapcar '+ einsetzpunkt n)) (command einsetzpunkt) ) (command "")
------------------ Mit freundlichem Gruß Udo Hübner Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
romi1 Mitglied Bautechniker
Beiträge: 647 Registriert: 09.02.2006 Xeon E3-1245V2 16GB RAM Windows 10 Professional 64 bit AutoCAD 2014
|
erstellt am: 04. Mai. 2007 08:25 <-- editieren / zitieren --> Unities abgeben:
Hallo! Danke Udo für Deine Hilfe!! Mein erster Fehler war also scheinbar, daß ich die Koordinaten direkt aus der Funktion "foreach" an "command" weitergeleitet habe, und nicht vorher mittels einem "setq" eine Variable für die Punkt- koordinate belegt habe. Das mit dem relativen Koordinaten (Abständen) hast Du also mit dem addieren gelöst. Warum das mit einer relativen Angabe mittels "@" hier nicht funktioniert ist mir aber noch nicht ganz klar; es geht ja schließlich bei einer normalen Polylinenkonstrukion auch ... Egal, bis ich das weiß mach' ich's mal mit dem aufaddieren. Danke jedenfalls nochmals für deine Hilfe ... ich hab' gestern mindestens einen halben Tag über dem Problem gebrütet und bin nicht weitergekommen .... Roman Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
romi1 Mitglied Bautechniker
Beiträge: 647 Registriert: 09.02.2006 Xeon E3-1245V2 16GB RAM Windows 10 Professional 64 bit AutoCAD 2014
|
erstellt am: 04. Mai. 2007 09:29 <-- editieren / zitieren --> Unities abgeben:
Hi! Habe mich scheinbar schon zu früh gefreut .... Brauche bitte nochmals Eure Hilfe bzw. Eure Meinung: Habe nun das Programm nach den Angaben von Herrn Hübner adaptiert und es zeichnet nun auch brav die Längsabwicklung der 3D-Polyline. Wenn ich allerdings die Funktion nochmals aufrufe, und die gleiche 3D-Polyline wähle und den Einsetzpunkt etwas oberhalb angebe, bekomme ich ein anderes Ergenis. Beim 3. Durchlauf wird's wieder etwas anders gezeichnet, usw... Meistens wird (unerklärlicherweise) ein Punkt auf die zuvor generierte Linie hingezogen. Ich denke, das es an den Werten der Variablen nicht liegen kann, denn Die hab' ich ja zurückgesetzt. Auch die Liste "abstandslist" wird scheinbar bei jedem Durchlauf korrekt berechnet. Warum wird bloß die Linie nicht jedes mal gleich gezeichnet ???? Ich lege euch die Lisp-Datei und meine Probe-Dwg-Datei (gelbe Line verwenden) bei. Vielen Dank für Eure Mühe Roman Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 04. Mai. 2007 09:32 <-- editieren / zitieren --> Unities abgeben: Nur für romi1
die Sysvars OSMODE auf 0 bzw. OSNAPCOORD auf 1 ? ( sonst wird beim PL-Zeichnen vielleicht ein anderer Punkt in der Nähe gefangen) ------------------ - 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 |
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: 04. Mai. 2007 11:15 <-- editieren / zitieren --> Unities abgeben: Nur für romi1
Hallo Roman, ich habe mal ausprobiert, gab aber keine Probleme. Anbei habe ich den command-Befehl durch eine entmake-Funktion geändert (es werden keine LWPOLYLINE's erzeugt) Du kannst ja mal testen, ob Du, wenn CADmium nicht schon einen Volltreffer gelandet hat, damit weiterkommst. ------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
romi1 Mitglied Bautechniker
Beiträge: 647 Registriert: 09.02.2006 Xeon E3-1245V2 16GB RAM Windows 10 Professional 64 bit AutoCAD 2014
|
erstellt am: 05. Mai. 2007 14:04 <-- editieren / zitieren --> Unities abgeben:
Hallo! Danke CADmium und Jörn für Eure Hilfe! Also das mit den Systemvariablen war wirklich ein Volltreffer! Insbesondere die "OSNAPCOORD" wars ... sie war auf <2> eingestellt. Jörn, Deine Variante mit entmake muß ich mir erst genauer zu Gemüte führen - bin ja noch ein LISP-Anfänger .... vielleicht kapier ich's ja. Muß mir dann noch überlegen, ob ich die weitere Grafik mit (entmake) oder mittels (command ...) erzeugen werde. Vielleicht muß ich euch dann ohnedies nochmals um Hilfe bitten ... Roman Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
romi1 Mitglied Bautechniker
Beiträge: 647 Registriert: 09.02.2006 Xeon E3-1245V2 16GB RAM Windows 10 Professional 64 bit AutoCAD 2014
|
erstellt am: 09. Mai. 2007 15:26 <-- editieren / zitieren --> Unities abgeben:
Hallo! Ich hab's ja ohnedies vermutet, daß ich wieder eure Hilfe benötige: Also bitte ich euch jetzt wieder mal darum. Folgendes: Ich hab' mein Programm mittlerweile etwas weiter- entwickelt und möchte mit dem Befehl (ssget) nun auch Blöcke extrahieren, deren Name "schacht" ist, und die genau auf den Koordinaten der Polyline (Variable "vertex") liegen. Das funkioniert bei mir einfach nicht. Ich hab' die Zeile, wo der Wurm liegt mit dem Kommentar "Hier ist was falsch" vermerkt. Meiner Meinung nach liegt der Fehler in einem der letzten beiden oder eben in beiden Klammerausdrücken dierser Zeile: ..... (-4 . "=,=,=") (10 vertex) Ich bitte Euch um Eure Meinung. Danke, Roman Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 10. Mai. 2007 17:50 <-- editieren / zitieren --> Unities abgeben: Nur für romi1
1. Neues thema-> neuer Thread 2. die angehängte zip bekome ich nicht auf 3. (setq VERTEX '(10 20 0)) (setq BLKNAME "SCHACHT") (ssget "_x" (list '(0 . "INSERT") (cons 410 (getvar "CTAB"))(cons 2 BLKNAME)(cons 10 VERTEX))) liefert alle Blockreferenzen des aktuellen Layouts, die den Block "Schacht" referenzieren und auf der Koordinate VERTEX = 10,20,0 eingefügt wurden. Willst du alle Blockreferenzen wie oben auswählen, jedoch mit dem Unterschied, dass alle Koordinaten einer PL gültige Einfügepunkte sein sollen funktioniert das jedoch besser etwas anders : man erzeugt einen Auswahlsatz ohne GC10 , macht daraus eine Objektliste und entfernt daraus alle (vl-remove-if-not ... (member ..)) deren GC10 nicht einem GC10 der LW-PL entspricht ...
------------------ - 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 |
romi1 Mitglied Bautechniker
Beiträge: 647 Registriert: 09.02.2006 Xeon E3-1245V2 16GB RAM Windows 10 Professional 64 bit AutoCAD 2014
|
erstellt am: 10. Mai. 2007 18:09 <-- editieren / zitieren --> Unities abgeben:
Hallo. Tut mir leid, die zip-Datei war scheinbar ramponiert. Ich häng's als .txt an. Die Zeile, wo der Fehler liegt ist markiert: (ssget "X" '((0 . "INSERT") (2 . "schacht") (-4 . "=,=,=") (10 vertex))) ; < Hier ist was falsch Der Fehler liegt in einer der beiden letzten Klammern, nur blos wo? Roman 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: 10. Mai. 2007 18:18 <-- editieren / zitieren --> Unities abgeben: Nur für romi1
gequotete Ausdrücke können keine Variablen enthalten (ssget "X" '((0 . "INSERT") (2 . "schacht") (-4 . "=,=,=") (10 vertex))) müsste so aussehen (ssget "X" (list '(0 . "INSERT") '(2 . "schacht") '(-4 . "=,=,=") (cons 10 vertex)))
------------------ Mit freundlichem Gruß Udo Hübner Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
romi1 Mitglied Bautechniker
Beiträge: 647 Registriert: 09.02.2006 Xeon E3-1245V2 16GB RAM Windows 10 Professional 64 bit AutoCAD 2014
|
erstellt am: 11. Mai. 2007 07:28 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen! Danke CADmium, Danke Udo!! Jetzt hab' ich's scheinbar auch kapiert, wo der Fehler lag. Die Variable darf also (natürlich) nicht gequotet werden .... Vielen Dank für Eure Hilfe ... Roman Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |