| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY WIRD VON NVIDIA ZUM HÄNDLER DES JAHRES GEWÄHLT, eine Pressemitteilung
|
Autor
|
Thema: Auswahlfenster erstellen (882 / mal gelesen)
|
Stefan-Schirge Mitglied
Beiträge: 42 Registriert: 26.10.2020
|
erstellt am: 18. Aug. 2021 10:36 <-- editieren / zitieren --> Unities abgeben:
Hallo, vielleicht kann mir ja jemand helfen. Ich möchte eine Abfrage erstellen, welches Layout gedruckt werden soll. Meine Idee ist folgende: Ich lasse mir über Layoutlist alle Layouts ausgeben. Diese soll er mir dann in einem Autocad Fenster anzeigen. Wenn ich davon eins auswähle, soll das Layout mit der voreingestellen Plotterkonfiguration gedruckt werden. Allerdings hänge ich schon am Anzeigen in einem Autocad Fenster. Hat eventuell jemand einen Tipp? Lieben Gruß Stefan ------------------ AutoCad 2018 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 18. Aug. 2021 10:49 <-- editieren / zitieren --> Unities abgeben: Nur für Stefan-Schirge
|
cadwomen Ehrenmitglied V.I.P. h.c. Mädchen für fast alles
Beiträge: 3067 Registriert: 26.08.2002 ACAD R11 - 2018.1.2 (Plant3D) AVIS ACAD LT 2013- 2020 ZWCAD 2015 Versuch "nun ja" [s]History P3D 2012/(13) SP und Hotfix([/s]<P> Windows 10 / 64 Bit Xeon CPU 3.5GHz 16GB Ram NVIDIA Quadro P2000 3x Dell TV100 88P Monitore
|
erstellt am: 18. Aug. 2021 11:33 <-- editieren / zitieren --> Unities abgeben: Nur für Stefan-Schirge
|
Stefan-Schirge Mitglied
Beiträge: 42 Registriert: 26.10.2020
|
erstellt am: 18. Aug. 2021 11:55 <-- editieren / zitieren --> Unities abgeben:
Hallo und Danke für deine Antwort. Ich weiß gerade nicht so recht was du mit DCL Box meinst. Dein Code funktioniert soweit auch bei mir. Nur kann ich nicht aus den vorhandenen Layouts auswählen, sondern muss diesen händisch eintragen. Vielleicht hast du eine Idee woran das liegen könnte. (defun c:BBG-Automatisierung ( / myerror plot_func zip_func LAYOUTS PATTERN KWORD) ;------------------------------------------------------- ;-------------Plotfunktion------------------------------ ;------------------------------------------------------- (defun plot_func ( / ) (setq *ERROR* myerror) (setq filename (strcat (getvar 'dwgprefix) (vl-filename-base (getvar 'dwgname)) ".pdf" ) ) (if (setq filehandle (open filename "a")) (progn (close filehandle) (setq LAYOUTS(mapcar 'strcase(cons "MODEL" (layoutlist)))) (if(and(setq PATTERN(strcase(getstring "Layoutname (with wildcards):"))) (/= PATTERN "") ) (progn (setq LAYOUTS(vl-remove-if-not '(lambda(X)(wcmatch X PATTERN))LAYOUTS)) (setvar "CTAB" (car LAYOUTS)) (princ (strcat "\n" (itoa(length LAYOUTS))" layouts found.")) (setq LAYOUTS(cdr LAYOUTS)) (initget "Yes No") (while(and LAYOUTS (or(=(setq KWORD (getkword "\rNext layout ? (Yes / No)<Yes>"))"Yes") (not KWORD) ) ) (setvar "CTAB" (car LAYOUTS)) (setq LAYOUTS(cdr LAYOUTS)) (initget "Yes No") ) ) )
(command-s "_.PSPACE") (command "zoom" "g") (command "plot" "nein" "" "" "" (strcat (getvar 'dwgprefix) (vl-filename-base (getvar 'dwgname)) ".pdf" ) "" "" ) ); End of progn (progn (myerror) ); End of Progn ); End of If return ) ;------------------------------------------------------- ;-------------E-Transmit-------------------------------- ;------------------------------------------------------- (defun zip_func ( / ) (setvar "ctab" "Modell") (command "zoom" "g") (command "bereinig" "AL" "" "N") (bns_redir "*" ".") (if (ssget "X" '((0 . "IMAGE"))) (command "isave")) (command "_.qsave" "_.-etransmit" "_c" (strcat (getvar 'dwgprefix) (vl-filename-base (getvar 'dwgname)) ".zip" ) )
) ;------------------------------------------------------- ;-------------Errorhandling----------------------------- ;------------------------------------------------------- (defun myerror (msg / ) (alert "Bitte PDF schließen und den Befehl erneut starten.") (setq *ERROR* nil) ) ;------------------------------------------------------- ;-------------Programmablauf---------------------------- ;------------------------------------------------------- (plot_func) (zip_func) (princ) );End of Function ------------------ AutoCad 2018 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadwomen Ehrenmitglied V.I.P. h.c. Mädchen für fast alles
Beiträge: 3067 Registriert: 26.08.2002 ACAD R11 - 2018.1.2 (Plant3D) AVIS ACAD LT 2013- 2020 ZWCAD 2015 Versuch "nun ja" [s]History P3D 2012/(13) SP und Hotfix([/s]<P> Windows 10 / 64 Bit Xeon CPU 3.5GHz 16GB Ram NVIDIA Quadro P2000 3x Dell TV100 88P Monitore
|
erstellt am: 18. Aug. 2021 12:12 <-- editieren / zitieren --> Unities abgeben: Nur für Stefan-Schirge
Zitat: Original erstellt von Stefan-Schirge: Hallo und Danke für deine Antwort. Ich weiß gerade nicht so recht was du mit DCL Box meinst. ;
Hy, also dein Code funktioniert nur wenn alles was mit der PDF erstellung zu tun hat in den Layouts eingerichtet ist. Das Bereinigen läuft durch und was mit der DCL Box gemeint ist , wenn du etwas auswählen willst must du eine Dialogbox programieren wo deine Auswahlliste reingeschrieben / dargestellt wird und dort dann zur Auswahl bereit steht. in dem Verlikten Beitrag voncadffm ist eine VLX Datei wenn du diese Ausführst kommt im prinziep genau so eine DCL Box , aber nur mit einfach Auswahl , wenn ich das richtig versteh willst du aber dort einen Mehrfachauswahl ? cu cw
------------------ Also ich finde Unities gut ... und andere sicher auch ------------------------------------------------ cadwomen™ Plant ist nur die Spitze des Berges der da treibt ? [Diese Nachricht wurde von cadwomen am 18. Aug. 2021 editiert.] [Diese Nachricht wurde von cadwomen am 18. Aug. 2021 editiert.] [Diese Nachricht wurde von cadwomen am 18. Aug. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stefan-Schirge Mitglied
Beiträge: 42 Registriert: 26.10.2020
|
erstellt am: 18. Aug. 2021 12:33 <-- editieren / zitieren --> Unities abgeben:
Hallo, ja es ist beabsichtigt, dass es nur geht wenn alles eingerichtet ist. Wir müssen leider die Kollegen zwingen, einheitliche Vorlagen zu verwenden und keine eigenen mehr. In denen ist dann alles schon eingerichtet. Ok dann probiere ich das mit der VLX mal. Vielen Dank ------------------ AutoCad 2018 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 18. Aug. 2021 13:16 <-- editieren / zitieren --> Unities abgeben: Nur für Stefan-Schirge
>>" Ich weiß gerade nicht so recht was du mit DCL Box meinst." Na das zeigt ja wie gut du dich damit schon beschäftigt hast, entschuldbar vor meiner Antwort, aber nach meiner Antwort ist das eigentlich schon etwas unverzeihlich >>"Ok dann probiere ich das mit der VLX mal. " Das machst du natürlich nicht, du nimmst die Datei aus dem Beitrag den ich verlinkt habe, also die ZIP und die Quelltext Dateien daraus. Irgendwi habe ich das Gefühl du hast meine komplette Antwort ignoriert, das ist dir aber nicht hilfreich Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stefan-Schirge Mitglied
Beiträge: 42 Registriert: 26.10.2020
|
erstellt am: 18. Aug. 2021 13:18 <-- editieren / zitieren --> Unities abgeben:
|
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 18. Aug. 2021 13:31 <-- editieren / zitieren --> Unities abgeben: Nur für Stefan-Schirge
|
cadwomen Ehrenmitglied V.I.P. h.c. Mädchen für fast alles
Beiträge: 3067 Registriert: 26.08.2002 ACAD R11 - 2018.1.2 (Plant3D) AVIS ACAD LT 2013- 2020 ZWCAD 2015 Versuch "nun ja" [s]History P3D 2012/(13) SP und Hotfix([/s]<P> Windows 10 / 64 Bit Xeon CPU 3.5GHz 16GB Ram NVIDIA Quadro P2000 3x Dell TV100 88P Monitore
|
erstellt am: 18. Aug. 2021 13:41 <-- editieren / zitieren --> Unities abgeben: Nur für Stefan-Schirge
Hy cadffm, aber dazu braucht er ja erstmal seine DCL und den inhalt, und ich verstehe das so das er das nicht hat. In der Lisp wird ja nur einen Eingabe mit Wildcard genutzt und aus der VLX kann er ja nicht die DCL entnehmen ? hab aber das Post nicht weiter durchgeschaut cu cw ------------------ Also ich finde Unities gut ... und andere sicher auch ------------------------------------------------ cadwomen™ Plant ist nur die Spitze des Berges der da treibt ? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stefan-Schirge Mitglied
Beiträge: 42 Registriert: 26.10.2020
|
erstellt am: 18. Aug. 2021 14:05 <-- editieren / zitieren --> Unities abgeben:
Super, vielen Dank. Eine einzige Frage noch Wie bekomme ich es hin, dass er mir bei der Filehandle-Überprüfung, den Namen das Layouts davor setzt? "-" vor ".pdf" ist klar, allerdings weiß ich den Befehl für den Layoutnamen nicht. Sonst funktioniert das Error-Handling nicht ganz so, wie es soll ;------------------------------------------------------- ;-------------Plotfunktion------------------------------ ;------------------------------------------------------- (defun plot_func ( / ) (setq *ERROR* myerror) (c:GOLAY) (setq filename (strcat (getvar 'dwgprefix) (vl-filename-base (getvar 'dwgname)) ".pdf" ) ) (if (setq filehandle (open filename "a")) (progn (close filehandle)
------------------ AutoCad 2018 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 18. Aug. 2021 14:46 <-- editieren / zitieren --> Unities abgeben: Nur für Stefan-Schirge
Hi, meine lange Antwort habe ich wieder gelöscht und frage mal direkt: Du suchst jetzt nicht nach CTAB, was du ja unlängst verwendest? Sorry, Ich kenne zwar den Inhalt "deiner golay.lsp" nicht, aber egal was da drinsteht, dein geposteter Teil der plot_func Funktion sieht unsinnig aus - ich mag mich irren. (schlechter Stil den Lispnamen bei anderem Inhalt zu nutzen / aber in der Entwicklung und generell natürlich deine Sache. Du hast doch hier nicht die originale golay.lsp geladen, oder?) _ _ _ Du möchtest doch.. Eine (mehrfach) Auswahl an Layouts, also benötigst du Lisp- und DCL-Code der eine LISTE mit Layoutnummern oder Layoutnamen zurückgibt. Hast du? Dann eine Schleife welche die Liste abarbeitet Vorhanden? und für jedes Listenelement prüft ob es bereits eine PDF gibt, falls ja löscht. Falls das nicht geht zum schließen auffordert und [OK] drücken wenn die Datei geschlossen wurde, wenn das dann noch immer nicht geht: Entweder das Layout übergeht oder einen Alternativnamen nutzt. Ich lasse jetzt mal jemanden anderen rann, ich habe das Gefühl ich stehe hier auf dem Schlauch.
Gruß Sebastian
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stefan-Schirge Mitglied
Beiträge: 42 Registriert: 26.10.2020
|
erstellt am: 19. Aug. 2021 07:33 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen Sebastian, ich glaube nicht dass du auf dem Schlauch stehst, sondern ich das einfach schlecht erkläre. Ich bin noch blutiger Anfänger, hatte zwar mittlerweile einen Lehrgang zum Thema LISp, aber in 3 Tagen erlernt man das natürlich nicht. Das mit den DCL Dateien habe ich mittlerweile soweit verstanden.[IMG][/IMG] Dass ich c:golay im Befehl hatte, war nur zum Testen. Ich habe es mittlerweile angepasst. Also es funktioniert soweit auch, für die Mehrfachauswahl muss ich noch eine Schleife einbauen. Da muss ich mal schauen, wie ich das mache. (getvar ctab) war die Lösung zu dem anderen Problem. Danke, da stand ich auf dem Schlauch.
Code:
(defun c:BBG-Automatisierung ( / myerror plot_func zip_func LAYOUTS PATTERN KWORD) ;------------------------------------------------------- ;-------------Plotfunktion------------------------------ ;------------------------------------------------------- (defun plot_func ( / ) (setq *ERROR* myerror) (setq CD (getvar "cmdecho") LLIST (vl-sort (cons "Model" (layoutlist)) '< ) ) (setvar "cmdecho" 0) (if (> (setq IV (load_dialog "golay")) 0) (progn (if (new_dialog "golay" IV) (progn (start_list "dcl_list") (mapcar 'add_list LLIST) (end_list) (set_tile "dcl_list" (itoa (vl-position (getvar "ctab") LLIST)) ) (action_tile "accept" "(if (setq new_lay (get_tile \"dcl_list\")) (done_dialog 1))" ) (action_tile "cancel" "(done_dialog 0)") (start_dialog) ) (alert "Kann Dialogfeld nicht anzeigen!") ) (unload_dialog IV) ) (alert "Kann Dialogfeld nicht laden!") ) (if NEW_LAY (setvar "ctab" (nth (atoi NEW_LAY) LLIST)) ) (setvar "cmdecho" CD) (setq filename (strcat (getvar 'dwgprefix) (vl-filename-base (getvar 'dwgname)) "-" (getvar "CTAB") ".pdf" ) ) (if (setq filehandle (open filename "a")) (progn (close filehandle) (command-s "_.PSPACE") (command "zoom" "g") (command "plot" "nein" "" "" "" "" "" "" ) ); End of progn (progn (myerror) ); End of Progn ); End of If return ) ;------------------------------------------------------- ;-------------E-Transmit-------------------------------- ;------------------------------------------------------- (defun zip_func ( / ) (setvar "ctab" "Modell") (command "zoom" "g") (command "bereinig" "AL" "" "N") (bns_redir "*" ".") (if (ssget "X" '((0 . "IMAGE"))) (command "isave")) (command "_.qsave" "_.-etransmit" "_c" (strcat (getvar 'dwgprefix) (vl-filename-base (getvar 'dwgname)) ".zip" ) )
) ;------------------------------------------------------- ;-------------Errorhandling----------------------------- ;------------------------------------------------------- (defun myerror (msg / ) (alert "Bitte PDF schließen und Befehl erneut starten.") (setq *ERROR* nil) ) ;------------------------------------------------------- ;-------------Programmablauf---------------------------- ;------------------------------------------------------- (plot_func) (zip_func) (princ) );End of Function
Vielen Dank vorab. Stefan ------------------ AutoCad 2018 [Diese Nachricht wurde von Stefan-Schirge am 19. Aug. 2021 editiert.] [Diese Nachricht wurde von Stefan-Schirge am 19. Aug. 2021 editiert.] [Diese Nachricht wurde von Stefan-Schirge am 19. Aug. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stefan-Schirge Mitglied
Beiträge: 42 Registriert: 26.10.2020
|
erstellt am: 19. Aug. 2021 08:14 <-- editieren / zitieren --> Unities abgeben:
|
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 19. Aug. 2021 10:15 <-- editieren / zitieren --> Unities abgeben: Nur für Stefan-Schirge
Ui, Blutiger Anfänger hat normal nicht so einen Code, aber das Wort Schulung könnte das die Erklärung sein. Anfänger Autolisp oder auch Anfänger Programmierung? Frage: Wieso eine Pause machen, wofür? Du wechselst das Layout, ich empfehle hier es über (command zu machen, und dann druckst du über -PLOT, auch mit (command Danach wieder von vorn, Wechsel, Plot, Wechsel, Plot... Du kannst dir den Wechsel auch sparen, ACAD fragt ja was gedruckt werden soll. (Ich bin nur nicht mehr ganz sicher ob das Ergebnis in 100.00% der möglichen Fälle identisch ist, eigentlich müßte es kein Problem sein) Foreach layout layoutlist (command "_.-PLOT" "_no" layout usw. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stefan-Schirge Mitglied
Beiträge: 42 Registriert: 26.10.2020
|
erstellt am: 19. Aug. 2021 10:48 <-- editieren / zitieren --> Unities abgeben:
Ja auch Anfänger bei der Programmierung. Du hattest mir schonmal letztes Jahr im Oktober geholfen. Seitdem lag das Thema auf Eis. Nun hatte ich einen 3tägigen Lehrgang und verstehe zumindest etwas mehr. Daher sieht der Befehl auch etwas ordentlicher aus, als damals. Vieles habe ich mir aber auch gesucht und kopiert Mir ging es darum, wenn ich die Mehrfachauswahl in der DCL aktiviert habe und dann auch mehrfach wähle, dass er dies dann auch so druckt. Momentan springt er zum ersten Layout und druckt diesen. Er soll aber auch die anderen angewählten drucken. ------------------ AutoCad 2018 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 19. Aug. 2021 12:13 <-- editieren / zitieren --> Unities abgeben: Nur für Stefan-Schirge
Okay, nicht beliebt aber dennoch meine Antwort: [Wenn ich hier jetzt von Dgolay spreche, dann meine ich die von dir angepasste Version] 1. D(ein)golay.lsp und versuche im groben zu verstehen was passiert, die Details zu den Vorbereitungen mit der DCL zu arbeiten sind nicht so wichtig, es geht um den Punkt an dem das Dialogfeld die Daten zurückgibt. 2. Hausaufgabe: Hier ist eine Funktion die so ziemlich alles in einem ALERT-Fenster anzeigen kann, Setze diese Funktion ein um die Rückgabe des Layout-Auswahldialoges "sichtbar" zu machen. (defun alert+ (dat)(vl-load-com)(alert(vl-princ-to-string dat))) Du musst also nur (alert+ *HierDieRückgabe*) verwenden. *HierDieRückgabe* muss natürlich angepasst werden mit deinem Symbol/Variable in der die Rückgabe gespeichert ist. --
Hintergrund: Unterstellung! Du hast einfach irgendwas copy/pasted ohne zu verstehen was der Inhalt des ganzen ist. Mit der "Aufgabe" wirst du gezwungen an dem richtigen Punkt anzusetzen an dem man dann auch alles weitere anhängen kann, also deine Schleife. DEINE Schleife, nicht irgendwas Kopiertes >>"Momentan springt er zum ersten Layout und druckt diesen. Er soll aber auch die anderen angewählten drucken." Dann ist dieser Sprung wohl nicht in einer Schleife eingebaut, das Drucken auch nicht (sonst würde ja wenigstens 10x das gleiche Layout gedruckt werden).
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |