Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Problem bei AutoLisp mit Koordinaten-Angaben

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:  Problem bei AutoLisp mit Koordinaten-Angaben (817 mal gelesen)
Imion
Mitglied
Bauzeichner


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

Beiträge: 32
Registriert: 22.01.2004

erstellt am: 22. Jan. 2004 14: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

Um mir das Erstellen von einem Sparrendach zu Erleichtern, dachte ich mir eine AutoLisp-Routine zu Schreiben.

Jedoch funktioniert das Ganze leider nicht, die Ursache:
Ein Vertex erkennt Variablen nicht als Koordinaten an.

ein Ausschnitt:

Zitat:

(entmake '((0 . "Vertex") (10 (+ (car Startpoint) Width)) (20 (cadr Startpoint)) (30 (caddr Startpoint))))


gedacht war, dass ein Startpunkt gesetzt wird, von dem aus eine Polylinie gezeichnet wird und später in eine Region konvertiert wird, vielleicht ersetz ich das auch durch ein pnetz, wenn das auch mit vertex funktioniert (wie ich vermute).
Jedoch brauch AutoLisp hier eine Zahl und keinen Ausdruck.

Bin für jede Hilfe dankbar.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

marvin101010
Mitglied
ingenieur der architektur ohne diplom, bauzeichner ohne lehre, cad-admin ohne wissen :-)


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

Beiträge: 562
Registriert: 22.01.2003

Pentium 4
Windows XP
Autocad 2002
Autocad 2002LT + Extender
ADT 3.3
ArchiCAD

erstellt am: 22. Jan. 2004 14:37    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 Imion 10 Unities + Antwort hilfreich

kenn mich mit vertex nich aus...denke aber auf jeden fall,
dass da ein oder zwei "cons" fehlen (cons 10 startpkt...

------------------
...so long and thanx for all the fish!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 22. Jan. 2004 14:42    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 Imion 10 Unities + Antwort hilfreich

Hallo Imion, hallo Marvin

der Fehler liegt an dem ' ganz am Anfang
(entmake '((0 . "Vertex") (10 (+ (car Startpoint) Width)) (20 (cadr Startpoint)) (30 (caddr Startpoint))))
Das teilt dem Programm mit, dass das folgende nicht evaluiert werden soll. Es wird also nicht der Wert der Variablen übergeben sondern der Variablenname. Und dass kann dann nicht funktionieren.
Ändere das dahingehend:
(entmake (list
'(0 . "VERTEX")
..
(cons 10 (+ (car Startpoint) Width))
..
)
)
Dann sollte es funktionieren.

Bei Fragen ...

Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
Da weiß man, wann man's hat!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Imion
Mitglied
Bauzeichner


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

Beiträge: 32
Registriert: 22.01.2004

erstellt am: 23. Jan. 2004 10:39    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

also mit cons müsste es quasi so aussehen:
Zitat:

(entmake (list '(0 . "Vertex") (cons (car Startpoint) (cons (cadr Startpoint) (caddr Startpoint)))))


weil der ja das erste Element einer Liste hinzufügt brauch ich 2 verschachtelte cons, funktioniert aber trotzdem nicht.
nämlich, gerade weil er eine liste ausgibt und für vertex, 3 für sich stehende variablen benötigt,
Zitat:

z.B. (aus der Hilfe):
(entmake '((0 . "VERTEX")      ; Object type
          (10 1.0 1.0 0.0)    ; Start point
) )


so gibt er mir bei dem ganz oben genannten Ausdruck folgende Fehlermeldung:
Zitat:

Ungültiger Feldtyp in 44 in (entmake).; Fehler: Fehlerhafte DXF-Gruppe:
(145.099 94.584 . 0.0)


der fett markierte punkt ist der fehler der durch den cons-ausdruck, soweit ich das für richtig verstanden hab (hier hatte ich auchnoch den Gruppencode vergessen in die Liste einzufügen).

meine letzte Idee war deswegen vielleicht eine verschachtelte list:

Zitat:

(entmake (list '(0 . "Vertex") (list (10 (car Startpoint) (cadr Startpoint) (caddr Startpoint)))))


leider gibt das die fehlermeldung:
Zitat:

Fehler: Fehlerhafte Funktion: 10


er scheint also "10" nichtmehr als gruppencode für "vertex" zu erkennen, sondern als neue Funktion, doch das ist falsch.

die gruppencodes 20 und 30 oben waren falsch, ich dachte dadurch vielleicht die y und z koordinaten einzeln eingeben zu können, doch das ist unnötig, da "10" für vertex schon x,y und z variablen beinhaltet.

Ich weiß nichtmehr weiter, noch irgendwer eine Idee ?

(tschuldigung wegen Rechtschreibfehlern, aber ich schreibe sehr schnell ohne auf dne Bildschirm zu schauen.)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADwiesel
Moderator
CAD4FM UG




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

Beiträge: 1968
Registriert: 05.09.2000

AutoCAD, Bricscad
Wir machen das Mögliche unmöglich

erstellt am: 23. Jan. 2004 11:11    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 Imion 10 Unities + Antwort hilfreich


aber grundsätzlich musst du ja x,y,z als 10 angeben.

könnte dan so aussehen:
(entmake (list
'(0 . "VERTEX")
(cons 10 (list(+ (car Startpoint) Width)(cadr Startpoint)(caddr Startpoint)))
)
)


------------------
Gruß
CADwiesel
Besucht uns im CHAT

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Imion
Mitglied
Bauzeichner


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

Beiträge: 32
Registriert: 22.01.2004

erstellt am: 26. Jan. 2004 10: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

Also letzteres hat mir schonmal sehr weitergeholfen, die Prüfung ergibt für die Funktion nun wenigstens "NIL".
Leider gibt er als Fehlermeldung:
Zitat:

Ungültiger Feldtyp in 44 in (entmake).

damit kann ich nichs anfangen ?!?

Der Quelltext für die Funktionierende Funktion lautet:

Zitat:

(defun bundbalken_1 (Startpoint Width Dicke /)
(entmake '((0 . "Polyline") (44 . 5) (66 . 1) (70 . 32)))
(entmake (list '(0 . "Vertex") (cons 10 (list (car Startpoint) (cadr Startpoint) (caddr Startpoint)))))
(entmake (list '(0 . "Vertex") (cons 10 (list (+ (car Startpoint) Width) (cadr Startpoint) (caddr Startpoint)))))
(entmake (list '(0 . "Vertex") (cons 10 (list (+ (car Startpoint) Width) (+ (cadr Startpoint) Dicke) (caddr Startpoint)))))
(entmake (list '(0 . "Vertex") (cons 10 (list (car Startpoint) (+ (cadr Startpoint) Dicke) (caddr Startpoint)))))
(entmake (list '(0 . "Vertex") (cons 10 (list (car Startpoint) (cadr Startpoint) (caddr Startpoint)))))
(entmake '((0 . "Seqend")))
;(command "_region" Startpoint "")

(entmake '((0 . "Polyline") (44 . 5) (66 . 1) (70 . 32)))
(entmake (list '(0 . "Vertex") (cons 10 (list (car Startpoint) (cadr Startpoint) (caddr Startpoint)))))
(entmake (list '(0 . "Vertex") (cons 10 (list (+ (car Startpoint) Width) (cadr Startpoint) (caddr Startpoint)))))
(entmake (list '(0 . "Vertex") (cons 10 (list (+ (car Startpoint) Width) (cadr Startpoint) (+ (caddr Startpoint) Dicke)))))
(entmake (list '(0 . "Vertex") (cons 10 (list (car Startpoint) (cadr Startpoint) (+ (caddr Startpoint) Dicke)))))
(entmake (list '(0 . "Vertex") (cons 10 (list (car Startpoint) (cadr Startpoint) (caddr Startpoint)))))
(entmake '((0 . "Seqend")))
;(command "_region" Startpoint "")

(entmake '((0 . "Polyline") (44 . 5) (66 . 1) (70 . 32)))
(entmake (list '(0 . "Vertex") (cons 10 (list (car Startpoint) (cadr Startpoint) (caddr Startpoint)))))
(entmake (list '(0 . "Vertex") (cons 10 (list (car Startpoint) (+ (cadr Startpoint) Dicke) (caddr Startpoint)))))
(entmake (list '(0 . "Vertex") (cons 10 (list (car Startpoint) (+ (cadr Startpoint) Dicke) (+ (caddr Startpoint) Dicke)))))
(entmake (list '(0 . "Vertex") (cons 10 (list (car Startpoint) (cadr Startpoint) (+ (caddr Startpoint) Dicke)))))
(entmake (list '(0 . "Vertex") (cons 10 (list (car Startpoint) (cadr Startpoint) (caddr Startpoint)))))
(entmake '((0 . "Seqend")))
;(command "_region" Startpoint "")
)



Die region Befehle sind auskommentiert, da er sich nicht richtig fängt, wo er die Regionen erstellen soll, ich habe gehofft, dass er durch den Gruppencode 70 . 32 ein Polygon erstellt.
Der Gruppencode 70 . 32 ist jedenfals nicht die das hab ich bereits per try and error ausprobiert.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 26. Jan. 2004 10:45    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 Imion 10 Unities + Antwort hilfreich

Hallo Imion,

wenn schon die Fehlermeldung mit der Zahl 44 erscheint, dann läßt das sehr leicht darauf schließen, dass der Gruppencode 44 an dieser Stelle nichts zu suchen hat.
Soll heißen, dass du die (44 . 5) mal aus deinem Code entfernen sollst. Dann haut es hin.
Was wolltest du denn mit dieser Gruppe bewirken?

Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
Da weiß man, wann man's hat!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Imion
Mitglied
Bauzeichner


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

Beiträge: 32
Registriert: 22.01.2004

erstellt am: 26. Jan. 2004 16:52    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

Ich weiß beim besten Willen nicht, warum ich den entmake 44 gesetzt hab, aber jetzt gehts, hab in der Hilfe nachgeschaut, aber nichtmehr rausgefunden, was für einen Sinn der Gruppencode hat, ich glaube es war die Farbe 44 und hab die vertauscht, hätte 5 . 44 also heißen müssen ... naja teste ich Übermorgen ... auf jedenfall gibt er jetzt in DIESER Funktion keine Fehlermeldung mehr aus, werd das dann wohl Übermorgen mal auf die anderen Funktionen übertragen.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Imion
Mitglied
Bauzeichner


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

Beiträge: 32
Registriert: 22.01.2004

erstellt am: 29. Jan. 2004 14: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

hmm jetzt hab ich alles geändert, doch bringt er jetzt folgende Fehlermeldung:
Zitat:

Fehlerhafte Funktion: 1603.26

und wenn ich im visual-lisp-editor die erste funktion die aufgerufen wird überprüfen lasse, bekomme ich die meldung:

Zitat:

fehlerhafte dxf-Gruppe: 10 nil nil nil


dass er "nil" angibt liegt daran, dass es sich um variablen handelt die per eingabe ge"setq"t werden.

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