Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Buchempfehlung

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:  Buchempfehlung (1566 mal gelesen)
AB
Mitglied



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

Beiträge: 255
Registriert: 24.05.2002

Mechanical Desktop 6
AutoCAD 2002

erstellt am: 28. Aug. 2002 08:13    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 zusammen,

ich bin ganz dringend auf der Suche nach guter Literatur für die Programmiersprache AutoLISP.
Es sollte die Syntax beschrieben sein und wenn möglich, der Aufbau der command-Befehle.

Als ich nämlich beispielsweise den Befehl "_section" (Querschnitt) automatisiern wollte, wusste ich nicht, das die richtige Befehlsfolge z.B. so: (command "_section" (car (entsel)) "" "_3p" p1 p2 p3) auszusehen hat. Woher kann man so etwas erfahren? Gibt es irgendeine Literatur, die diese Befehle auflistet und erklärt oder gibt es da ganz einfache Regeln, die ich nur noch nicht durchschaut habe?

Vielen Dank für Eure Hilfe
Andrea

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: 28. Aug. 2002 08: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 Nur für AB 10 Unities + Antwort hilfreich

Hallo Andrea,

ich kann dir nur folgenden Link empfehlen. http://www.autolisp-tutorial.mapcar.net
Anschaulichere Literatur habe ich bisher nirgends gefunden. Es wird nicht nur auf die reinen Lisp-Befehle eingegangen, sondern auch der Sinn dieser Funktionen anschaulich erläutert. Das ist das, was in der mir bekannten Literatur fehlt. Aber Achtung: Dieses Tutorial ist nicht anspruchslos. Man braucht Zeit, und die sollte man sich auch nehmen, um einige Sachen zu verstehen.

Nun zu Deinen (Command - Problem. Die Reihenfolge der Befehlsparameter bekommst du am einfachsten raus, wenn du den Befehl einfach mal im AutoCAD ausführst. Denn genau diese Reihenfolge erwartet dann auch der (command- Befehl.
Aber Vorsicht bei der Verwendung, denn diese Reihenfolge kann sich von Release zu Release ändern, was dann zur Folge hat, dass die Prog. nicht mehr laufen. Deshalb sollte man, soweit möglich, auf andere, unabhängige Wege ausweichen.

Grüße Holger

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

AB
Mitglied



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

Beiträge: 255
Registriert: 24.05.2002

Mechanical Desktop 6
AutoCAD 2002

erstellt am: 28. Aug. 2002 09: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

Hallo Holger,

mit dem Tutorium von Mapcar habe ich bereits begonnen und finde es auch echt sehr gut.

Aber da habe ich direkt eine andere Frage: wie kann ich denn die entsprechenden Befehle finden, um die Command-Befehle zu umgehen? Wie mache ich dann z.B. Querschnitte, wenn ich den Befehl "_section" nicht benutzen darf?

Viele Grüße
Andrea

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: 28. Aug. 2002 09: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 Nur für AB 10 Unities + Antwort hilfreich

Hallo Andrea,

die meisten Befehle erzeugen, oder manipulieren irgendwelche AcadObjekte (Linien, Blöcke,...) Diese lassen sich allesamt mit den Befehlen (entmake, (entmod, (entupd erzeugen und auch ändern.
Die 3d- Objekte geben Ihre Definitionsdaten jedoch nur verschlüsselt aus, da diese anders erzeugt werden. Ich weiß bis her nicht, wie ich an diese Daten der Objekte rankommen sollte, Wenn es also jemand anders weiß, bitte mitteilen!!!
In diesem Fall kann man sich natürlich auch nicht die Definitionsdaten rausholen und ändern. Somit bleibt, nach meinem Wissensstand tatsächlich nur die (command - Lösung.

Grüße Holger

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

AB
Mitglied



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

Beiträge: 255
Registriert: 24.05.2002

Mechanical Desktop 6
AutoCAD 2002

erstellt am: 28. Aug. 2002 09: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, wenn ich dich richtig verstanden habe, dann muss ich (zumindest deines Wissens) auch zum Beispiel Layer (und alle anderen Befehle, die nicht mit den Zeichenbefehlen zu tun haben) mit dem command-Befehl erzeugen, oder?

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

AB
Mitglied



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

Beiträge: 255
Registriert: 24.05.2002

Mechanical Desktop 6
AutoCAD 2002

erstellt am: 28. Aug. 2002 09:48    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

...und das Messen einer Linie ("_measure") und so...

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: 28. Aug. 2002 10:14    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 AB 10 Unities + Antwort hilfreich

...
das ist so nicht richtig. Die Ausnahme ist nur der 3D-Bereich.
Layer,... können mit den genannten Befehlen bearbeitet und auch erzeugt werden. Nachstehende Zeilen erzeugen einen roten Layer namens Andrea. Weiterhin werden die Tabellenobjekte durchforstet und aufgelistet.

(entmake (list
  '(0 . "LAYER")
  '(100 . "AcDbSymbolTableRecord")
  '(100 . "AcDbLayerTableRecord")
  '(2 . "ANDREA")
  '(70 . 0)
  '(62 . 1)
  '(6 . "Continuous")
  '(290 . 1)
  '(370 . -3)
  )
)
(setvar "CLAYER" "ANDREA")

;;Tabelleneinträge folgen
(setq tbllist
      (list
"APPID"
"BLOCK"
"DIMSTYLE"
"LAYER"
"LTYPE"
"STYLE"
"UCS"
"VIEW"
"VPORT"
)
      )
(mapcar '(Lambda (TBL)
  (princ "---------------------------------")
  (princ TBL)
  (princ "---------------------------------")
  (setq elem (tblnext TBL T))
  (terpri)
  (while elem
    (princ elem)
    (princ (strcat "\n---------DATA--" TBL ": " (cdr (assoc 2 elem)) "-------"))
    (terpri)
    (princ(entget (tblobjname TBL (cdr (assoc 2 elem)))))
    (setq elem (tblnext TBL))
    (terpri)
   
    )
  )
tbllist
)


Untersuche mal verschiedene AutoCAD-Objekte mit folgender Zeile
(entget(car(entsel)))
Es werden die Elementdaten aufgelistet. Der Unterschied zwischen 2d- und 3d Objekten wird dir auffallen.
Solchen Befehlen wie _measure liegt ja auch irgendein Programm zu Grunde. Man kann dieses nach programmieren, damit man nicht die (command- Schiene fahren muß oder man geht den (Command- Weg. (Aufwand - Nutzen) Es heißt ja nicht, dass man die (command- Lösung nicht nutzen soll, aber es kann eben sein, dass Acad die Befehlsparameter ändert oder den Befehl löscht. Dessen muß man sich bewußt sein.

Bei Fragen ...

Grüße Holger

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

AB
Mitglied



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

Beiträge: 255
Registriert: 24.05.2002

Mechanical Desktop 6
AutoCAD 2002

erstellt am: 28. Aug. 2002 10:33    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

Ja super, danke. Werde das gleich mal ausprobieren. Kannst du mir nur noch sagen, wo ich nachlesen kann, was die einzelnen Gruppen (...) festlegen? Also, was sie einzelnen Zahlen in den Klammern bedeuten?

Ich habe ein Buch "AutoCad 2.6 organisiert" (tewi), da ist die AutoCAD Geometriedatenbank ein wenig erläutert, allerdings ist es sehr alt. Ich habe eine neuere Auflage nicht ausfindig machen können.
Vielleicht hast Du noch eine Idee.

Aber auch bisher hast Du mir schon sehr geholfen.

Danke, Andrea

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

AB
Mitglied



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

Beiträge: 255
Registriert: 24.05.2002

Mechanical Desktop 6
AutoCAD 2002

erstellt am: 28. Aug. 2002 11:00    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 muss leider direkt noch eine Frage hinterher stellen. Ich möchte nicht nur einen Layer, sondern mehrere in verschiedenen Farben erstellen. Ich habe folgenes geschrieben:

(entmake (list
    '(0 . "LAYER")
    '(100 . "AcDbSymbolTableRecord")
    '(100 . "AcDbLayerTableRecord")
    '(2 . "1._Layer")
    '(70 . 0)
    '(62 . 1)
    '(6 . "Continuous")
    '(290 . 1)
    '(370 . -3)
    )
  )
  (entmake (list ; rot
    '(0 . "LAYER")
    '(100 . "AcDbSymbolTableRecord")
    '(100 . "AcDbLayerTableRecord")
    '(3 . "2._layer")
    '(70 . 0)
    '(62 . 1)
    '(6 . "Continuous")
    '(290 . 1)
    '(370 . -3)
    )
  )

....


doch es funktioiert nicht. Kann ich nicht einfach die Farbzahl austauschen?

Gruß
Andrea

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

AB
Mitglied



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

Beiträge: 255
Registriert: 24.05.2002

Mechanical Desktop 6
AutoCAD 2002

erstellt am: 28. Aug. 2002 11: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

Oh, hab meinen Fehler gerade selber gefunden!!!
Jetzt funktioniert es.

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: 28. Aug. 2002 11: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 Nur für AB 10 Unities + Antwort hilfreich

Hallo Andrea,

grundsätzlich ist der Aufbau so zu sehen:
(Bezeichner . Wert)

Der Bezeichner (Klassifizierung) ist eine Zahl, in der DXF-Referenz kannst du nachlesen, welche Zahl was bedeutet.
Hier ist es so, dass die (2 . "IRGENDWAS") den Layernamen beschreibt.
Die (62 . 1) beschreibt die Farbe.
1 -> rot
2 -> gelb
3 -> grün
usw.
Bei Dir muß es also heißen

Zitat:
Original erstellt von AB:
Ich muss leider direkt noch eine Frage hinterher stellen. Ich möchte nicht nur einen Layer, sondern mehrere in verschiedenen Farben erstellen. Ich habe folgenes geschrieben:

(entmake (list
     '(0 . "LAYER")
     '(100 . "AcDbSymbolTableRecord")
     '(100 . "AcDbLayerTableRecord")
     '(2 . "1._Layer")
     '(70 . 0)
     '(62 . 1)
     '(6 . "Continuous")
     '(290 . 1)
     '(370 . -3)
    )
  )
  (entmake (list ; rot
     '(0 . "LAYER")
     '(100 . "AcDbSymbolTableRecord")
     '(100 . "AcDbLayerTableRecord")
     '(2 . "2._layer");Bezeichner zurück auf 2 gestellt
     '(70 . 0)
     '(62 . 3);Farbe auf 3 geändert
     '(6 . "Continuous")
     '(290 . 1)
     '(370 . -3)
    )
  )

....


doch es funktioiert nicht. Kann ich nicht einfach die Farbzahl austauschen?

Gruß
Andrea


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: 28. Aug. 2002 11:36    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 AB 10 Unities + Antwort hilfreich

Hallo Andrea,
zur verdeutlichung ein kleines Programm, mit welchem du beliebig viele Layer erzeugen kannst:

(defun c:mla (/ lnam lcol lnaml)
  (while (/= ""
    (setq lcol nil
  lnam (if (tblsearch "LAYER" (setq lnam (getstring "\nLayername: ")))
  (progn
    (princ (strcat "\nLayer: " lnam " bereits vorhanden!"))
    ""
    )
  lnam
  )
  )
    )
    (while (not lcol)
      (setq lcol (getint "\nFarbnummer")
    lnaml (cons lnam lnaml)
    )
      (if (or
    (< lcol 1)
    (< 255 lcol)
    )
(setq lcol nil)
(entmake (list
  '(0 . "LAYER")
  '(100 . "AcDbSymbolTableRecord")
  '(100 . "AcDbLayerTableRecord")
  (cons 2 lnam)
  '(70 . 0)
  (cons 62 lcol)
  '(6 . "Continuous")
  '(290 . 1)
  '(370 . -3)
  )
)
)
      )
    )
  (if lnaml
    (progn
      (princ "\nLayer:")
      (mapcar '(lambda (LN)
(terpri)
(princ LN)
)
      (reverse lnaml)
      )
      (princ "\n erzeugt!")
      )
    )
  (princ)
  )


Bei Fragen ...

Grüße Holger

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