Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Wo liegt hier der Fehler ???

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Wo liegt hier der Fehler ??? (1711 mal gelesen)
romi1
Mitglied
Bautechniker


Sehen Sie sich das Profil von romi1 an!   Senden Sie eine Private Message an romi1  Schreiben Sie einen Gästebucheintrag für romi1

Beiträge: 638
Registriert: 09.02.2006

Xeon E3-1245V2
16GB RAM
Windows 10 Professional 64 bit
AutoCAD 2014

erstellt am: 03. Mai. 2007 20:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


lae.txt

 
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



Sehen Sie sich das Profil von CAD-Huebner an!   Senden Sie eine Private Message an CAD-Huebner  Schreiben Sie einen Gästebucheintrag für CAD-Huebner

Beiträge: 9732
Registriert: 01.12.2003

One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11

erstellt am: 03. Mai. 2007 21:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für romi1 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von romi1 an!   Senden Sie eine Private Message an romi1  Schreiben Sie einen Gästebucheintrag für romi1

Beiträge: 638
Registriert: 09.02.2006

Xeon E3-1245V2
16GB RAM
Windows 10 Professional 64 bit
AutoCAD 2014

erstellt am: 04. Mai. 2007 08:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von romi1 an!   Senden Sie eine Private Message an romi1  Schreiben Sie einen Gästebucheintrag für romi1

Beiträge: 638
Registriert: 09.02.2006

Xeon E3-1245V2
16GB RAM
Windows 10 Professional 64 bit
AutoCAD 2014

erstellt am: 04. Mai. 2007 09:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


dat.zip

 
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




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 04. Mai. 2007 09:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für romi1 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von joern bosse an!   Senden Sie eine Private Message an joern bosse  Schreiben Sie einen Gästebucheintrag für joern bosse

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 04. Mai. 2007 11:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für romi1 10 Unities + Antwort hilfreich


lae.lsp.txt

 
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


Sehen Sie sich das Profil von romi1 an!   Senden Sie eine Private Message an romi1  Schreiben Sie einen Gästebucheintrag für romi1

Beiträge: 638
Registriert: 09.02.2006

Xeon E3-1245V2
16GB RAM
Windows 10 Professional 64 bit
AutoCAD 2014

erstellt am: 05. Mai. 2007 14:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von romi1 an!   Senden Sie eine Private Message an romi1  Schreiben Sie einen Gästebucheintrag für romi1

Beiträge: 638
Registriert: 09.02.2006

Xeon E3-1245V2
16GB RAM
Windows 10 Professional 64 bit
AutoCAD 2014

erstellt am: 09. Mai. 2007 15:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


lae1.zip

 
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




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 10. Mai. 2007 17:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für romi1 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von romi1 an!   Senden Sie eine Private Message an romi1  Schreiben Sie einen Gästebucheintrag für romi1

Beiträge: 638
Registriert: 09.02.2006

Xeon E3-1245V2
16GB RAM
Windows 10 Professional 64 bit
AutoCAD 2014

erstellt am: 10. Mai. 2007 18:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


lae.txt

 
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



Sehen Sie sich das Profil von CAD-Huebner an!   Senden Sie eine Private Message an CAD-Huebner  Schreiben Sie einen Gästebucheintrag für CAD-Huebner

Beiträge: 9732
Registriert: 01.12.2003

One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11

erstellt am: 10. Mai. 2007 18:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für romi1 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von romi1 an!   Senden Sie eine Private Message an romi1  Schreiben Sie einen Gästebucheintrag für romi1

Beiträge: 638
Registriert: 09.02.2006

Xeon E3-1245V2
16GB RAM
Windows 10 Professional 64 bit
AutoCAD 2014

erstellt am: 11. Mai. 2007 07:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz