Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  entmake

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:  entmake (930 mal gelesen)
fca_mi2
Mitglied
Bauingenieur


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

Beiträge: 505
Registriert: 10.01.2003

ACAD2018

erstellt am: 30. Okt. 2003 10:12    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

moin,

ich versuche über entmake eine linie zu erstellen. kann man da nicht mit variablen arbeiten ? ich bekomme immer eine fehlermeldung.

(defun fc_linie (ep zp layername farbnr faktor linientyp /)
  (entmake '(
    (0 . "LINE")
    (6 . linientyp)
    (8 . layername)
    (10 (car ep) (cadr ep) 0.0)
    (11 (car zp) (cadr zp) 0.0)
    (8 . faktor)
    (62 . farbnr)
    ))
);defun

------------------
Vielen Dank !

MfG
Frank

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: 30. Okt. 2003 12:05    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 fca_mi2 10 Unities + Antwort hilfreich

der 'trick' ist cons
(cons 6 linientyp)

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

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: 30. Okt. 2003 12:16    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 fca_mi2 10 Unities + Antwort hilfreich

@cadwiesel

heute ein wenig schreibfaul? ;-))

@fca_mi2
es ist dann noch etwas mehr zu ändern.

(defun fc_linie (ep zp layername farbnr faktor linientyp /)
  (entmake
(list
    '(0 . "LINE")
    (cons 6 linientyp)
    (cons 8 layername)
    (cons 10 (list (car ep) (cadr ep) 0.0))
    (cons 11 (list (car zp) (cadr zp) 0.0))
    ;(8 . faktor);;??
    (cons 62 farbnr)
    ))
);defun

Bei Fragen ...

Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
NEU: AutoLISP- Projektschulung
NEU: Praxisorientierte Schulungen und Workshops durch die bekannten CAD.de Moderatoren
AutoCAD, AutoCAD LT, AutoCAD Mechanical, Mechanical Desktop, Architectural Desktop

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

fca_mi2
Mitglied
Bauingenieur


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

Beiträge: 505
Registriert: 10.01.2003

ACAD2018

erstellt am: 30. Okt. 2003 12: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

so klappt es prima,

habe mich in meinem code verschrieben anstatt der 8 sollte dort eigentlich 48 stehen.

den unterschied zwischen list und ' habe ich noch nicht ganz verstanden.

------------------
Vielen Dank !

MfG
Frank

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: 30. Okt. 2003 14:17    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 fca_mi2 10 Unities + Antwort hilfreich

Hallo fca_mi2,

ich versuche mal Laienhaft zu beschreiben.
Lisp ist ein Listenverarbeitungsprogramm. Die Syntax ist immer so
(was param1 param2..)
Damit der Interpreter weiß, wann er eine solche Liste nicht evaluieren (ausführen) soll, gibt es das (list ...)-Konstrukt. Das Ergebnis sieht genau so aus, wie ein Lisp-Befehl. Nur dass das erste Listenelement nun auch einen Wert darstellt.
Dem Lispinterpreter kann man nun aber auch ganz einfach die Evaluation untersagen, indem man ein ' voranstellt. Somit wird das, was dahinter kommt nicht ausgeführt.
'(1 2 3) funktioniert
'((car variable)(cadr variable)) funktioniert nicht, da der Interpreter ja nix ausführen soll (wg. dem Hochkomma vorn dran). Deshalb muss man dann
(list (car variable)(cadr variable))
schreiben, und alles wird ausgeführt.
Dies kann man aber auch nutzen, indem man auf diese Weise z.B. Funktionen mit variablen funktionen schreibt.
Hier mal 2 Bsp:

Code:

(mapcar '(lambda (L)
          ((eval L) 1)
          )
        '(1+ 1-)
        )
;;;
(setq bspliste (mapcar '(lambda (Z)
                          (if (<= Z 0)
                            (cons '1- Z)
                            (cons '1+ Z)
                            )
                          )
                      '(-2 -1 0 1 2)
                      )
      )
(mapcar '(lambda (L)
          ((eval (car L)) (cdr L))
          )
          bspliste
        )


Es lohnt sich, sich damit tiefer zu beschäftigen. Die Möglichkeiten gerade auch für kurzen, schnellen Code wachsen gewaltig.

Bei Fragen ...

Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
NEU: AutoLISP- Projektschulung
NEU: Praxisorientierte Schulungen und Workshops durch die bekannten CAD.de Moderatoren
AutoCAD, AutoCAD LT, AutoCAD Mechanical, Mechanical Desktop, Architectural Desktop

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: 30. Okt. 2003 14:30    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 fca_mi2 10 Unities + Antwort hilfreich

mit "LIST" erstellst du eine Liste...in diesem Fall die notwendigen Gruppencodes, die in Klammern stehen.
Lisp denkt, wenn etwas in Klammern steht (normalerweise ein Befehl), muss es was damit tun...
soll es in einem Fall wie (0 . "INSERT") allerdings gar nicht.
Damit nun Lisp erkennt, dass es die Klammer in Ruhe lassen soll, schreibt man ein ' davor....also '(0 . "INSERT").
Das ist auch das Grundproblem in deinem Code.
So wie du es versucht hast, kann es nur funktionieren, wenn alle GCs von vorneherein feststehen...tun sie aber
bei dir nicht.
Du setzt z.B. den 10er in Abhängigkeit einer Variablen. Wenn man nun ein ' vor (10 ...) setzen würde, bekämst du
genau das zurück was dortsteht (10 (car ep) (cadr ep) 0.0)...doof da keine Koordinaten.
Also ohne ' statt dessen (cons 10 (list...
das kann aber wiederum nur funktionieren, wenn du das ' ganz am Anfang weglässt...deshalb erstellst du deine
GC-Liste mit LIST.
LIST ist ein Befehl... ' verhindert Befehle.
Schwer zu erklären...vergleiche einfach deinen mit Holgers Code, dann wirst du schnell sehen worum es geht.

schwer zu erklären...menno...würde auch keine handbücher oder tudorials schreiben wollen....apropos...schau doch mal bei MAPCARs homepage vorbei...

------------------
.......good vibrations make the world go round 

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