Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Ergänzung Lisp-Routine für das automatische plotten benannter Ausschnitte ?

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:  Ergänzung Lisp-Routine für das automatische plotten benannter Ausschnitte ? (1135 mal gelesen)
Juergen55
Mitglied
Elektrotechniker


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

Beiträge: 282
Registriert: 08.03.2001

AutoCAD2010, EPlan P8 2.8.1, Core I5 2400 3,1GHZ, 8GB Arbeitsspeicher

erstellt am: 30. Mai. 2001 20:49    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 Zusammen,

ich habe seit längerem eine sehr nützliche Lisp-Routine mit der man benannte Auschnitte in einer Zeichnung automatisch plotten kann, z.B. bei Stromlaufplänen können es schon mal 60 bis 100 Blätter(Auschnitte) sein. Wir haben eine größere Zahl(60) von benannten Auschnitten in einer Vorlage abgespeichert die wir verwenden. Das Problem ist das das Lisp Tool auch wenn ich nur 20 Blätter benutze die restlichen Seiten plottet, leere Blätter auswirft.
Wäre es möglich die Routine so zu verändern das z.B. vor jedem plotten eines Auschnitts, eine Abfrage erscheint die mit Return bestätigt werden muß, so das man steuern kann welche Auschnitte geplottet werden.
Ich hab schon eine Anpassung versucht, das hat aber nicht geklappt, irgendwie hab ich wohl zu wenig Ahnung von Lisp-Programmierung.

Hier nun die Lisp-Routine, wäre schön wenn sich das mal jemand ansehen könnte,

Gruß, Jürgen


;; alle benannten Views plotten
(defun Plotviews (/ bview bviewName)
;; alle benannten views durchgehen
(while (setq bview (tblnext "VIEW" (not bview)))
(progn
(setq bviewName (cdr (assoc 2 bview)))
(princ (strcat "\nDrucke nun " bviewName "-Ausschnitt"))
(if (= (substr (getvar "ACADVER") 1 4) "15.0")
(command "_plot" "_Y" "" "" "" "" "" ""
"_V" bviewName "" "" "" "" "" ""
"" "" ""
)
(command "_plot" "_V" bviewName "0")
)
)
)
)
(Plotviews)
(princ)
;;end of lisp


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


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

Beiträge: 295
Registriert: ..

ACAD14 und 2005;
MAP4; GeoCAD; PARIS;
( Vermessung )

erstellt am: 30. Mai. 2001 22: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 Nur für Juergen55 10 Unities + Antwort hilfreich

Versuchs mal damit

;; alle benannten Views plotten
(defun
Plotviews
(/ bview bviewName plot_JA_NEIN)
;; alle benannten views durchgehen
(setq plot_JA_NEIN "JA")
(while (and (setq bview (tblnext "VIEW" (not bview)))
(= plot_JA_NEIN "JA")
) ;_ Ende von and
(progn
(setq bviewName (cdr (assoc 2 bview)))
(princ (strcat "\nDrucke nun " bviewName "-Ausschnitt"))

(if (= (substr (getvar "ACADVER") 1 4) "15.0")
(command
"_plot" "_Y" "" "" "" "" "" "" "_V" bviewName "" "" "" "" ""
"" "" "" "") ;_ Ende von command
;_ Ende von command
(command "_plot" "_V" bviewName "0")
) ;_ Ende von if
(setq plot_JA_NEIN ;neu Anfang
(Getstring "\nNächsten Ausschnitt plotten ? <J>/N : ")
) ;_ Ende von setq
(if (or (= plot_JA_NEIN "JA")
(= plot_JA_NEIN "ja")
(= plot_JA_NEIN "J")
(= plot_JA_NEIN "j")
(= plot_JA_NEIN "")
) ;_ Ende von or
(setq plot_JA_NEIN "JA")
(setq plot_JA_NEIN nil)
) ;_ Ende von if ;neu Ende
) ;_ Ende von progn
) ;_ Ende von while
(Plotviews)
(princ)
) ;_ Ende von defun
;;end of lisp


Gruß m-troeger ;-)

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

Juergen55
Mitglied
Elektrotechniker


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

Beiträge: 282
Registriert: 08.03.2001

AutoCAD2010, EPlan P8 2.8.1, Core I5 2400 3,1GHZ, 8GB Arbeitsspeicher

erstellt am: 30. Mai. 2001 23: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


Hallo m-troeger,

vielen Dank für die schnelle Antwort, ich hab das gerade mal ausprobiert, das Lisp startet aber nicht, und bei Dir geht es ?
Gibt es etwas spezielles zu beachten dabei ?

Gruß, Jürgen

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

Brischke
Ehrenmitglied V.I.P. h.c.
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: 4185
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 31. Mai. 2001 08:01    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 Juergen55 10 Unities + Antwort hilfreich

Hallo Jürgen,

ich habe eine zusätzliche Abfrage reingebracht, ob der Ausschnitt gedruckt werden soll Ja/Nein. Wenn das mit "ja" beantwortet wird, dann geht es mit deiner If -Unterscheidung weiter.

Bei Fragen...

Grüße Holger

;; alle benannten Views plotten
(defun Plotviews (/ bview bviewName)
;; alle benannten views durchgehen
(while (setq bview (tblnext "VIEW" (not bview)))
(progn
(setq bviewName (cdr (assoc 2 bview)))
(princ (strcat "\nDrucke nun " bviewName "-Ausschnitt"))
(setq antw nil)
(initget "Ja Nein")
(setq antw (getkword (strcat "\nDrucke nun " bviewName "-Ausschnitt Ja/Nein <N>")))
(if (= antw "Ja")
(if (= (substr (getvar "ACADVER") 1 4) "15.0")
(command "_plot" "_Y" "" "" "" "" "" ""
"_V" bviewName "" "" "" "" "" ""
"" "" ""
)
(command "_plot" "_V" bviewName "0")
)
(princ (strcat "\nDrucke nun " bviewName "-Ausschnitt NICHT geplottet!"))
)
)
)
)
(Plotviews)
(princ)
;;end of lisp

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

Juergen55
Mitglied
Elektrotechniker


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

Beiträge: 282
Registriert: 08.03.2001

AutoCAD2010, EPlan P8 2.8.1, Core I5 2400 3,1GHZ, 8GB Arbeitsspeicher

erstellt am: 31. Mai. 2001 21: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 Holger,

funktioniert wirklich wunderbar genauso wie ich mir das gedacht habe, Vielen Dank. Habs im ACAD14 + 2000 getestet.
Jetzt muß ich mir das Autolisp doch mal selber genauer anschauen, es bringt wohl doch einiges wenn man da Ahnung hat !
Wie funktioniert das eigentlich wenn man das mit einem Befehl aufrufen möchte, bei anderen Lisps kann man nach dem einfügen das ganze durch einen Begriff starten ? So das man die Lisp-Routine im appload von AutoCAD vorlädt und der Befehl dann immer zur Verfügung steht.

Gruß, Jürgen

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

Brischke
Ehrenmitglied V.I.P. h.c.
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: 4185
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 01. Jun. 2001 09:40    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 Juergen55 10 Unities + Antwort hilfreich

Hallo Jürgen [ich nehme an Du heißt nicht wirklich Juergen55 ;-) ],

um eine LISP direkt aus AutoCAD aufzurufen, wie einen normalen Befehl, mußt Du die Funktion wie folgt definieren:
(defun c:BLABLABLA ()
...
)
Das "c:" bewirkt, dass der Befehl "BLABLABLA" direkt in der Befehlszeile eingegeben werden kann und die Routine startet.
Dazu muß allerdings die LISP-Routine geladen sein, oder in dem Moment geladen werden, wenn der Befehl aufgerufen wird.
Das Laden erfolgt mit dem Aufruf
(load "LISPDATEI.lsp")
Man sollte, jedoch, wenn wan sehr viele LISP-Funktionen benötigt, nicht alle Dateien Laden, da damit permanent Speicher belegt wird. Deshalb gibt es die Funktion (autoload ...) Die Syntax:
(autoload "LISPDATEI.lsp" '("Befehl1" "Befehl2" ...))
Befehl1 u. Befehl2 stehen für die in der LISPDATEI mit (defun c:Befehl1 ()... definierten Befehle. Vorteil dieser autoload-Funktion ist, daß die Lispdatei erst beim Aufruf der Befehle geladen wird, also nicht die ganze Zeit Speicher belegt.

Wie bekommt man AutoCAD nun dazu, das man diese Ladeanweisungen nicht von Hand in der Befehlszeile eintippen muß?
Dazu sind diese (load...) und/oder (autoload ...) Anweisungen in der
R14->acad.lsp
R15->acad2000.lsp/acaddoc.lsp
im Bereich (defun s::startup ...) einzufügen.
Zweite Möglichkeit ist, diese Zeilen in der acad.mnl einzufügen. Diese MNL->Menülispdatei wird automatisch mit dem Laden des ACAD-Menüs geladen.
Diese Variante ist also auch sinnvoll, wenn Du Dir ein eigenes Menü "gestrickt" hast, welches alle Deine LISP-Funktionen zur Verfügung stellt. Dann muß die mnl-Datei den gleichen Namen haben wie die mnu-Datei.

Bei Fragen ...


Grüße Holger

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

Juergen55
Mitglied
Elektrotechniker


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

Beiträge: 282
Registriert: 08.03.2001

AutoCAD2010, EPlan P8 2.8.1, Core I5 2400 3,1GHZ, 8GB Arbeitsspeicher

erstellt am: 02. Jun. 2001 00: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


Hallo Holger,

Danke für die ausführliche Antwort zu Autolisp, das defun hab ich schon in die Routine eingebaut und es funktioniert sehr gut !

Gruß, Jürgen

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

Juergen55
Mitglied
Elektrotechniker


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

Beiträge: 282
Registriert: 08.03.2001

AutoCAD2010, EPlan P8 2.8.1, Core I5 2400 3,1GHZ, 8GB Arbeitsspeicher

erstellt am: 24. Jun. 2001 13:03    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,

ich hab mich jetzt etwas in das Autolisp eingearbeitet und eine eigene Version zum plotten der benannten auschnitte erstellt. Am Anfang wird noch abgefragt ob alle Auschnitte geplottet werden sollen, die vorhandenen Auschnitte in der Zeichnung werden angezeigt !

Gruß, Jürgen

(defun c:T12 ()
(initget 1 "Ja Nein")
(setq x (getkword "Alle Auschnitte plotten ? (Ja oder Nein) "))
(princ "Auschnitte in Zeichnung:")
(setq t 1)
(while (<= t 100)
(setq e 1)
(while (<= e 100)
(setq bview(tblnext "VIEW"))
(setq bviewN(cdr (assoc 2 bview)))
(if (= x "Ja")(if (/= bview nil)
(if (= (substr (getvar "ACADVER") 1 4) "15.0")
(command "_plot" "_Y" "" "" "" "" "" "" "_V" bviewN "" "" "" "" "" "" "" "" "")
(command "_plot" "_V" bviewN "0"))))
(if (/= bview nil)(princ " "))
(if (/= bview nil)(princ bviewN))
(if (/= bview nil)(princ " "))
(setq e (1+ e))
)
(tblnext "view" T)
(setq x "Nein")
(setq n (getstring " Welcher Auschnitt ? "))
(if (= (substr (getvar "ACADVER") 1 4) "15.0")
(command "_plot" "_Y" "" "" "" "" "" "" "_V" n "" "" "" "" "" "" "" "" "")
(command "_plot" "_V" n "0"))
(setq t (1+ t))
)
)

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

Wolli
Mitglied
Konstrukteur


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

Beiträge: 704
Registriert: 28.02.2001

Win7 64Bit+32Bit VM-Ware
I7 12GB
ACAD Mech 2010
Inventor Pro 2010 + 2012
Ansys 13 NLS

erstellt am: 25. Jun. 2001 08:51    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 Juergen55 10 Unities + Antwort hilfreich

Servus Zusammen,

beim Lesen Eurer Beiträge gab es viele "AHA´s" und Achsoo´s"
Ich habe vor einem Jahr bei der unserer Umstellung auf ACAD die
Aufgabe bekommen das CAD zu betreuen, seitdem murkse ich mich so
durch VBA und Lisp. Wer kennt denn gute Bücher für Anfänger zu diesen Themen, oder woher holt Ihr denn Euer Wissen?

Gruss Wolfgang

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

Brischke
Ehrenmitglied V.I.P. h.c.
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: 4185
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 25. Jun. 2001 12:57    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 Juergen55 10 Unities + Antwort hilfreich

Hallo Wolli,

ich kann für meinen Teil sagen, daß ich reinweg nur mit der AutoCAD-Dokumentation arbeite. Angefangen habe ich mit den Büchern von R12. Diese fand ich sehr gut, die folgenden sind in meinen Augen immer schlechter geworden.
Problem ist, daß man zwar alle Funktionen schön im Buch beschrieben sind, welche Eingangsgrößen und Rückgabewerte zu erwarten sind, was jedoch fehlt ist eine Beschreibung, wozu man diese Funktionen sinnvoll gebrauchen kann. Ich glaube das bringt nur die Erfahrung. Wenn ich mir die Programme anschaue, die ich vor 7 Jahren geschrieben habe, dann kann ich auch nur mit dem Kopf schütteln.
Neue Anregungen oder Ideen der Herangehensweise bei der Lösung eines Problems bringt auch das Nachvollziehen einer Funktion im Quelltext, die jemand anders geschrieben hat.
Nun weißt Du woher ich mein Wissen habe, auch wenn Dir das nur bedingt weiterhilft. -> nicht den Kopf in den Sand stecken und auch mal 3 Tage an einem Problem tüfteln, dabei lernt man so viele andere Sachen kennen, die man irgendwann mal gebrauchen kann.

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