| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: Superlisp (2641 mal gelesen)
|
Seven Mitglied
Beiträge: 429 Registriert: 20.06.2002 Autocad 2020 Inventor 2022
|
erstellt am: 01. Okt. 2003 15:03 <-- editieren / zitieren --> Unities abgeben:
Seit ich auf den Geschmack von Lisp's gekommen bin horte ich sie tüchtig. Zu meiner Sammlung gehören auch Lisp's mit welchen ich jede hereinkommende Zeichnung behandle: 0-pl, doppelt, plaetten, pkonv, killproxy usw. Nun würde ich gerne alle diese Lisp's aneinanderhängen, so dass ich nur ein Befehl ausführen muss und nicht jeden einzelnen. Wie hänge ich nun mehrere Befehle aneinander, so dass sie nacheinander abgearbeitet werden? Seven Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 01. Okt. 2003 15:10 <-- editieren / zitieren --> Unities abgeben: Nur für Seven
|
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 01. Okt. 2003 15:15 <-- editieren / zitieren --> Unities abgeben: Nur für Seven
mit einem script "Standard_IN.scr" auf ein Button legst du dann das Makro: filedia;0;_script;"Pfadangabe/Ordner/usw/Standard_IN.scr"; das Script würde so aussehen: (falls die Lisp´s schon geladen sind, etwa mit der acaddoc.lsp o.ä.)
0-pl kill_proxy nächster nächster nächster nächster filedia 1 ------------------ - Sebastian Mattis - Ich bin den 9. u. 10.10. auf der CAT.PRO ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Seven Mitglied
Beiträge: 429 Registriert: 20.06.2002 Autocad 2020 Inventor 2022
|
erstellt am: 01. Okt. 2003 15:44 <-- editieren / zitieren --> Unities abgeben:
Bahnhof Tut mir leid, doch ich verstehe nur Bahnhof. Ich weiss sehr wohl wie man Lisps lädt, doch sonst habe ich keinen schimmer. @Brischke Also was muss ich nun zuerst und was danach? @cadffm von Script's verstehe ich nichts. kannst du mir dein vorgehen etwas breiter beschreiben. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AsSchu Ehrenmitglied Konstrukteur
Beiträge: 1632 Registriert: 27.06.2003 ACAD 2012
|
erstellt am: 01. Okt. 2003 16:13 <-- editieren / zitieren --> Unities abgeben: Nur für Seven
Hallo, also ich bin ein fan von der acaddoc.lsp. Diese wird von acad automatisch geladen. Einfach diese Texte dort einfügen. (load "Kill'Proxy" '("KillProxy")) ;;==Aufruf des Befehls: KillProxy ;;==Löscht alle Proxy Elemente in einer Zeichnung ;;================================================================== (load "boesch" '("boesch")) ;;==Aufruf des Befehls: boesch ;;==erstellt Böschungsschraffur ;;================================================================== ;;ich benutze sie auch um Systemvariablen vorab einzustellen. (setvar "Attdia" 1) (setvar "PDmode" 1) (setvar "OSNAPCOORD" 1) (setvar "TEXTFILL" 1) (setvar "Regenmode" 1) (setvar "UCSFOLLOW" 0) (setvar "UCSICON" 1) (setvar "Pickstyle" 0) (setvar "Pickfirst" 1) (setvar "Edgemode" 1) (setvar "PSLTSCALE" 0) (setvar "Fontalt" "ISO8FW.shx") (setvar "COORDS" 2) (setvar "Gripblock" 1) (setvar "DIMFIT" 5) ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Seven Mitglied
Beiträge: 429 Registriert: 20.06.2002 Autocad 2020 Inventor 2022
|
erstellt am: 01. Okt. 2003 17:00 <-- editieren / zitieren --> Unities abgeben:
Aha ich glaube es gibt ein Missverständniss: Meine Lisps kann ich bestens laden. Doch ich will eigentlich was ganz anderes. Ich möchte mehrere Lisp's hintereinander abarbeiten: Zuerst soll das Superlisp alle 0 Elemente aus der Zeichnung löschen mit 0-pl.lsp, dann soll alle doppelten Elemente aus der Zeichnung löschen mit doppelt.lsp usw. und das alles in einem Lisp/Befehl. Wie hänge ich also Lisps aneinander? Seven Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AsSchu Ehrenmitglied Konstrukteur
Beiträge: 1632 Registriert: 27.06.2003 ACAD 2012
|
erstellt am: 01. Okt. 2003 17:08 <-- editieren / zitieren --> Unities abgeben: Nur für Seven
Zitat: Original erstellt von Seven: Aha ich glaube es gibt ein Missverständniss: Meine Lisps kann ich bestens laden. Doch ich will eigentlich was ganz anderes. Ich möchte mehrere Lisp's hintereinander abarbeiten: Zuerst soll das Superlisp alle 0 Elemente aus der Zeichnung löschen mit 0-pl.lsp, dann soll alle doppelten Elemente aus der Zeichnung löschen mit doppelt.lsp usw. und das alles in einem Lisp/Befehl. Wie hänge ich also Lisps aneinander?Seven
Warum nur 1 Lispbefehl?? Kannst doch alle hintereinander ausführen lassen so wie beschrieben ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
m-troeger Mitglied gel. Bauzeichner; Vermessungszeichner, Vermesser im Außendienst, GIS-Erfassung in PARIS
Beiträge: 295 Registriert: .. ACAD14 und 2005; MAP4; GeoCAD; PARIS; ( Vermessung )
|
erstellt am: 01. Okt. 2003 21:59 <-- editieren / zitieren --> Unities abgeben: Nur für Seven
Hi, Seven nim einen Editor, oder besser VisualLisp und erstelle dir eine Superlsp.lsp oder so (defun C:superlsp () (load "0-pl" '("0-pl")) (load "doppelt" '("doppelt")) . Hier weitere Lisps eintragen, welche du möchtest . Hier weitere Lisps eintragen, welche du möchtest . Hier weitere Lisps eintragen, welche du möchtest ) Servus, Mario www.the-skier.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Seven Mitglied
Beiträge: 429 Registriert: 20.06.2002 Autocad 2020 Inventor 2022
|
erstellt am: 02. Okt. 2003 08:20 <-- editieren / zitieren --> Unities abgeben:
@ m-troeger Aha, ja ich habe mir das mal so weit zurechtgebastelt: (defun C:zber () (load "0-pl" '("0-pl")) (load "doppelt" '("doppelt")) (load "plaetten" '("plaetten")) (load "pkonv" '("pkonv")) (load "killproxy" '("killproxy")) ) Autocad meint dazu aber nur: Befehl: Befehl: zber ("killproxy") und macht dann gar nichts. Noch was ist mir eingefallen. Die Lispbefehle haben Optionen oder man muss was auswählen. Wie kann ich das automatisiere? Z.B. plaetten > alles auswählen > enter? Seven Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Gotthard Mitglied
Beiträge: 227 Registriert: 29.08.2000 AutoCAD 2005, WIN 2000 mit SP2, WINXP mit SP2, alle A2005 SPs sind installiert, Plotter HP Designjet 750 C
|
erstellt am: 02. Okt. 2003 09:02 <-- editieren / zitieren --> Unities abgeben: Nur für Seven
|
CADwiesel Moderator CAD4FM UG
Beiträge: 1989 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 02. Okt. 2003 09:08 <-- editieren / zitieren --> Unities abgeben: Nur für Seven
|
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 02. Okt. 2003 10:34 <-- editieren / zitieren --> Unities abgeben: Nur für Seven
Hallo Seven, du musst zuerst alle Lisp's laden. Das weißt du ja wie es geht. Als letzte lädtst du die Sperlisp. In der stehk kein! (defun ...) sondern nur die Startbefehle in der Reihenfolge wie du die Tools abarbeiten möchtest. Da du aus LISP heraus die durch ein LISP-Tool definierten Befehle nicht mit (command ..) aufrufen kannst, musst du (so wie oben beschrieben) mit folgendem Aufruf die Tools ausführen (c:Befehlsname)mit Klammern! Warum (c:Befehlsname)? Lisproutinen werden mit (defun Name ...) definiert. Aufzurufen sind diese immer mit (Name)mit Klammern! Eine Besonderheit bilden die Namen, die mit c: beginnen. Diese werden bei der Eingabe ohne Klammern und ohne C: als 'normaler' AutoCAD-Befehl interpretiert. Dies aber nur in der Befehlszeile und Menü nicht aus anderen LISP-Dateien heraus. Auf den Seiten http://www.defun.de gibt es jetzt auch eine Serie zum Einstieg in AutoLISP. Da ist dies und einiges mehr beschrieben. Die Serie wird übrigens fortgesetzt. Noch Fragen ... ;-) Grüße Holger ------------------ Holger Brischke (defun - Lisp over night! ...mit erweitertem Leistunsspektrum... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Seven Mitglied
Beiträge: 429 Registriert: 20.06.2002 Autocad 2020 Inventor 2022
|
erstellt am: 02. Okt. 2003 17:36 <-- editieren / zitieren --> Unities abgeben:
ich bin zu blöd. Also kann mir jemand das lisp pkonv.lsp und KillProxy.lsp aneinanderhängen, damit ich das ganze studieren kann und anschliessend weitere selber dranbasteln? pkonv.lsp: ;es werden alle Polylinien auf eine Breite von NULL gesetzt. (defun c konv ( / t_2 Ss)
(setq Ss nil t_2 nil)
(setq Ss (ssget '((-4 . "<OR") (0 . "LWPOLYLINE") (0 . "POLYLINE") (-4 . "OR>") ) ) ;_ end of ssget ) (setq md_zaehler 0) (setq gesamt 0) (if (not Ss) (princ (strcat "\nKeine Polylinien gefunden.")) (progn (while (setq t_2 (ssname Ss 0)) (command "_.pedit") (command t_2) (command "BR") (command "0") (command) (setq Ss (ssdel t_2 Ss));;Remove this member;; (setq md_zaehler (1+ md_zaehler)) );ende while (princ md_zaehler) (princ " Polylinien konvertiert!") );end progn );end if (princ) ) (prompt "\nZum starten 'pkonv' eingeben") KillProxy.lsp:
(defun c:KillProxy (/ *error* ss i n n-b proxy) (vl-load-com) (defun *error* (error) (vla-endundomark *doc*) (cond ((not error)) ((wcmatch (strcase error) "*QUIT*,*CANCEL*")) (1 (princ (strcat "\nERROR: " error))) ) ;_ end of cond (princ) ) ;_ end of defun (or *acad* (setq *acad* (vlax-get-acad-object))) (or *doc* (setq *doc* (vla-get-ActiveDocument *acad*))) (vla-endundomark *doc*) (vla-startundomark *doc*) (or (and (setq i 0 n 0 ) ;_ end of setq (setq ss (ssget "X" '((0 . "*PROXY*")))) (while (< i (sslength ss)) (setq proxy (vlax-ename->vla-object (ssname ss i))) (and (not (vl-catch-all-error-p (vl-catch-all-apply 'vla-delete (list proxy)) ) ;_ end of vl-catch-all-error-p ) ;_ end of not (setq n (1+ n)) ) ;_ end of and (setq i (1+ i)) ) ;_ end of while (setq n-b(search-Blocktable)) (setq n (+ n n-b)) (princ (strcat "\n" (itoa n) " Proxy Objeke gelöscht." )) ) ;_ end of and (princ "\nKeine Proxys gefunden.") ) ;_ end of or (command "_.regenall") (*error* nil) ) ;_ end of defun (defun search-Blocktable (/ i EARX_BTAA elem elist elem_vor) (setq EARX_BTAA (tblnext "BLOCK" T) elist nil i 0 ) ;_ end of setq (while (/= EARX_BTAA nil) (setq elem (cdr (assoc -2 EARX_BTAA))) (while (/= elem NIL) (cond ((wcmatch (cdr (assoc 0 (entget elem))) "*PROXY*") (vla-Delete(vlax-ename->vla-object elem)) (setq elem elem_vor) ) ;_ end of if ) ;_ end of cond (setq elem_vor elem elem (entnext elem)) ) ;_ end of while (setq EARX_BTAA (tblnext "BLOCK")) ) ;_ end of while i ) ;|«Visual LISP© Format Options» (72 2 40 1 T "end of " 60 9 0 0 0 nil T nil T) ;*** KEINEN Text unterhalb des Kommentars hinzufügen! ***|; Seven
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Seven Mitglied
Beiträge: 429 Registriert: 20.06.2002 Autocad 2020 Inventor 2022
|
erstellt am: 02. Okt. 2003 17:38 <-- editieren / zitieren --> Unities abgeben:
Ah und wenn ich schon dran bin, langsam wird es nervig, dass ich nicht selber programmieren kann, was empfehlt ihr für eine programmiersprache zum erlernen. Lisp, ist sehr schwer zu erlernen, hab ich mir sagen lassen, vor allem weil es auch gar keine Handbücjher mehr dazu gibt, also was sonst VBA? Seven Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AsSchu Ehrenmitglied Konstrukteur
Beiträge: 1632 Registriert: 27.06.2003 ACAD 2012
|
erstellt am: 06. Okt. 2003 12:38 <-- editieren / zitieren --> Unities abgeben: Nur für Seven
Hallo, im Anhang deine superlisp. Wie gesagt die Anwendungen müssen vorher geladen sein. Ob du das über die acaddoc.lsp, oder z.B. die Anwendungen in die Startgruppe lädst ist egal. Dann würde ich mir ein Menümakro basteln, und den Befehl so hinterlegen: ^C^C(load "superlisp") So kannst du deine superlisp je nach Bedarf ausführen lassen. ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |