CADsite forum

AutoCAD => Autolisp => Topic gestart door: EddyBeerke op di 09 03 2010, 16:51:05

Titel: Printermedia opvragen (Opgelost)
Bericht door: EddyBeerke op di 09 03 2010, 16:51:05
Ik wil de printermedia (voor de printer beschikbare papierformaten) op vragen en heb o.a. deze code gevonden.

(defun GetLocaleMediaName (pd / ad la al)
(setq ad (vla-get-activedocument (vlax-get-acad-object))
la (vla-item (vla-get-layouts ad) "Model")
al (vla-get-activelayout ad)
);end setq
(vla-put-configname al pd)
(mapcar '(lambda(mn)(vla-GetLocaleMediaName la mn)) (GetCanonicalMediaNames))
(princ)
);end defun

Citaat van: roy_043 op vr 05 03 2010, 20:26:14
Volgens mij niet helemaal wat je zoekt:
Met de functie vla-GetPaperSize kun je het plotformaat van een layout opvragen.
http://forums.cadalyst.com/showthread.php?t=5234&page=2
http://discussion.autodesk.com/forums/thread.jspa?threadID=479253

Als ik dit deel (vla-put-configname al pd) weg laat krijg ik de papierformaten van de ingestelde printer/plotter van de huidige Pspace.
Als ik het deel (vla-put-configname al pd) laat staan dan wijzigt in Pspace de ingestelde printer/plotter in een printer/plotter die ik gekozen heb in een voorgaande sub.

De oplossing die ik zoek is dat ik de ingestelde printer/plotter blijft, en dat ik van de gekozen printer/plotter de papierformaten krijg.

Wie helpt mij.
Titel: Re:Printermedia opvragen
Bericht door: roy_043 op di 09 03 2010, 17:42:17
Ik begrijp het waarschijnlijk niet: maar geef jij niet zelf al het antwoord:
Citaat van: EddyBeerke op di 09 03 2010, 16:51:05Als ik dit deel (vla-put-configname al pd) weg laat krijg ik de papierformaten van de ingestelde printer/plotter van de huidige Pspace.
Titel: Re:Printermedia opvragen
Bericht door: EddyBeerke op di 09 03 2010, 21:47:24
Nee ik wil van een in een vorige sub gekozen printer de media opvragen en niet die van de layout.
Titel: Re:Printermedia opvragen
Bericht door: roy_043 op di 09 03 2010, 23:59:30
Voor zover ik het begrijp kan de functie vla-GetPaperSize alleen het papierformaat van een layout uitlezen. Vandaar mijn vorige opmerking "Volgens mij niet helemaal wat je zoekt".

Maar is het niet zo dat jij van elke printer waarover jij kunt beschikken de papierformaten kent? Daar kun je toch een lisp-lijst van maken om in jouw programma te gebruiken?

Bijvoorbeeld:
(setq printerInfoLijst '(("KleinFormaatMerkA" "A3" "A4") ("GrootFormaatMerkB" "A0" "A1" "A2")))
Met het bekende cdr-assoc-principe kun je gegevens uit de lijst halen. Bijvoorbeeld:
(cdr (assoc "KleinFormaatMerkA" printerInfoLijst)) ; => ("A3" "A4")
En met dat resultaat kun je dan weer een dialoog vullen.
Titel: Re:Printermedia opvragen
Bericht door: EddyBeerke op wo 10 03 2010, 07:58:02
Citaat van: roy_043 op di 09 03 2010, 23:59:30
Voor zover ik het begrijp kan de functie vla-GetPaperSize alleen het papierformaat van een layout uitlezen. Vandaar mijn vorige opmerking "Volgens mij niet helemaal wat je zoekt".

Maar is het niet zo dat jij van elke printer waarover jij kunt beschikken de papierformaten kent? Daar kun je toch een lisp-lijst van maken om in jouw programma te gebruiken?

Bijvoorbeeld:
(setq printerInfoLijst '(("KleinFormaatMerkA" "A3" "A4") ("GrootFormaatMerkB" "A0" "A1" "A2")))
Met het bekende cdr-assoc-principe kun je gegevens uit de lijst halen. Bijvoorbeeld:
(cdr (assoc "KleinFormaatMerkA" printerInfoLijst)) ; => ("A3" "A4")
En met dat resultaat kun je dan weer een dialoog vullen.

Ja, ik kan voor mijn EIGEN Acad wel de papierformaten bedenken maar het gaat hier om een lisp die op alle pc's waar acad (van versie 2006 t/m 2010) gebruikt kan worden.
Zo heb ík voor het printer van A4 en A3 formaat 4 printer (2 kleur en 2 Zw/Wt) waar ik uit kan kiezen met verschillende papierformaten, maar niet iedereen heeft dezelfde printers staan.
(Note: ik ben GEEN systeem beheerder en bedenk deze lisp puur voor mijzelf "ter lering en vermaak".)

De bedoeling is dus dat iedereen zijn/haar eigen printer/plotter kan kiezen en gelijk daarna het papierformaat.
Als insteek is er dit voorbeeld:

"Kies printer:"
1 printer A
2 printer B
3 printer C
4 printer D
...

"Uw keuze: 3 printer C"
"Kies papierformaat" (Deze lijst is dus gebaseerd op de keuze van hierboven)

1 A 3
2 A 4
3 ISO A3
4 ISO A4
...
Titel: Re:Printermedia opvragen
Bericht door: cetacad op wo 10 03 2010, 11:06:15
Ik heb 2 bestanden toegevoegd.
Er kan gekozen worden uit max. 20 printers en daarna uit max. 20 papierformaten.

Aan het eind van de routine worden de naam van de printer en de naam van het papier aangegeven ("plotter-uitvoer" en "papier-uitvoer").
Deze kan je in je eigen printroutine verwerken.

succes, Fred
Titel: Re:Printermedia opvragen
Bericht door: EddyBeerke op wo 10 03 2010, 11:21:13
Citaat van: cetacad op wo 10 03 2010, 11:06:15
Ik heb 2 bestanden toegevoegd.
Er kan gekozen worden uit max. 20 printers en daarna uit max. 20 papierformaten.

Aan het eind van de routine worden de naam van de printer en de naam van het papier aangegeven ("plotter-uitvoer" en "papier-uitvoer").
Deze kan je in je eigen printroutine verwerken.

succes, Fred
Bij mij geeft het venster 10 printers weer i.p.v. 20. (incl. "None" hier heb je niets aan als je wilt printen/plotten)
Maar ik krijg in ieder geval wel papierformaten van de printer die ik gekozen heb! (ook maar 10 i.p.v. 20)

Ik zal er naar eens induiken.
Alvast bedankt!
Titel: Re:Printermedia opvragen
Bericht door: cetacad op wo 10 03 2010, 11:36:33
Citaat van: EddyBeerke op wo 10 03 2010, 11:21:13
Bij mij geeft het venster 10 printers weer i.p.v. 20.

Wellicht gebruik je een oudere versie van plotters.dcl
Ik heb plotters.dcl al eens eerder aangemaakt voor het weergeven van 10 printernamen. Deze is nu uitgebreid naar 20 stuks. Als je deze nogmaals download zou het goed moeten gaan.

Fred.

Titel: Re:Printermedia opvragen
Bericht door: EddyBeerke op wo 10 03 2010, 12:41:53
Citaat van: cetacad op wo 10 03 2010, 11:36:33
Wellicht gebruik je een oudere versie van plotters.dcl
Ik heb plotters.dcl al eens eerder aangemaakt voor het weergeven van 10 printernamen. Deze is nu uitgebreid naar 20 stuks. Als je deze nogmaals download zou het goed moeten gaan.

Fred.


Inderdaad ik had 'm al een keer gedownload en stond in een hogere zoek pad.
Mijn excuses hiervoor.
Maar ook jou lisp doet dus het zelfde als de mijne omdat we dezelfde basis hebben gebruikt:
http://discussion.autodesk.com/forums/thread.jspa?threadID=479253 (http://discussion.autodesk.com/forums/thread.jspa?threadID=479253)

Het past de layout aan en dat is nou net niet wat ik wil.
Ik wil alleen het papierformaat krijgen zonder dat er iets wordt aangepast.
Verder gebruik ik de code uit: http://www.cadsite.be/smf/index.php?topic=2601.msg13346#msg13346 (http://www.cadsite.be/smf/index.php?topic=2601.msg13346#msg13346), zodat ik meerdere layouts achter elkaar kan printen.
Titel: Re:Printermedia opvragen
Bericht door: cetacad op wo 10 03 2010, 13:25:04
Citaat van: EddyBeerke op wo 10 03 2010, 12:41:53
Het past de layout aan en dat is nou net niet wat ik wil.
Ik weet niet precies wat je bedoelt. Wat wordt er aangepast in de layout ?

Ik heb de routine aangepast zodat je een printer kan selecteren met de papierformaten die bij die desbetreffende printer horen.
Dit had ik in eerste instantie al moeten doen. Ik hoop dat dit is wat je zoekt.

Fred
Titel: Re:Printermedia opvragen
Bericht door: EddyBeerke op wo 10 03 2010, 16:23:01
Citaat van: cetacad op wo 10 03 2010, 13:25:04
Ik weet niet precies wat je bedoelt. Wat wordt er aangepast in de layout ?
...
Fred

Nou dit:
Ik geef het commando "plot" en zie de instellingen die ik heb bij het openen van de tekening.
Dan start ik jou lisp met het commando "PLOTTERS" en maak een keuze.
Hierna geef ik het commando "REGENALL" en zie dat er layout-instellingen zijn veranderd.
Zie ook het plaatje wat ik bij heb gevoegd.
Titel: Re:Printermedia opvragen
Bericht door: cetacad op wo 10 03 2010, 17:58:12
Als je het commando plot alsvolgt doorloopt:  (COMMAND "-plot" "Y" ....ect.

Dan kom je bij de vraag: Save changes to page setup [Yes/No]. Als je hier NO invult wordt er niets aangepast.

Voorbeeld voor modelspace:
(COMMAND "-plot" "Y" "" plotter-uitvoer papier-uitvoer "" "" "" "" "" "" "" "" "" "" ""    "y"  "n" "y")
Voorbeeld voor paperspace:
(COMMAND "-plot" "Y" "" plotter-uitvoer papier-uitvoer "" "" "" "" "" "" "" "" "" "" "" "" "y"  "n" "y")


Succes, Fred.

(Indien je nog vragen hebt. Maandag ben in weer online.)
Titel: Re:Printermedia opvragen
Bericht door: EddyBeerke op do 11 03 2010, 11:36:56
Citaat van: cetacad op wo 10 03 2010, 17:58:12
Als je het commando plot alsvolgt doorloopt:  (COMMAND "-plot" "Y" ....ect.

Dan kom je bij de vraag: Save changes to page setup [Yes/No]. Als je hier NO invult wordt er niets aangepast.

Voorbeeld voor modelspace:
(COMMAND "-plot" "Y" "" plotter-uitvoer papier-uitvoer "" "" "" "" "" "" "" "" "" "" ""    "y"  "n" "y")
Voorbeeld voor paperspace:
(COMMAND "-plot" "Y" "" plotter-uitvoer papier-uitvoer "" "" "" "" "" "" "" "" "" "" "" "" "y"  "n" "y")


Succes, Fred.

(Indien je nog vragen hebt. Maandag ben in weer online.)

Ik heb geen (COMMAND "-plot" "Y" "" plotter-uitvoer papier-uitvoer "" "" "" "" "" "" "" "" "" "" ""    "y"  "n" "y") gebruikt in mijn voorbeeld maar alleen jou lisp!
Het zit denk ik in de (vla-put.....) maar ik weet niet hoe ik dit kan opvangen.

Misschien heeft iemand een idee om zonder dat de layout veranderd een papierformaat op te vragen.
De bedoeling is om deze gegevens in een tekst bestand op te slaan voor later gebruik (ook bijvoorbeeld na het afsluiten van Acad) in een andere routine om b.v. alleen de voorgaande keuze te bevestigen en dus niet om de tekenig te bewerken (zeg maar voor mensen die niet weten hoe Acad werkt en alleen op een knopje willen/kunnen klikken).
Titel: Re:Printermedia opvragen
Bericht door: cetacad op ma 15 03 2010, 11:01:48
Ik heb een undo-mark toegevoegd. Hierdoor wordt de verandering in de layout ongedaan gemaakt.

Ons bedrijf werkt met verschillende printers op verschillende vestigingen. Om dit probleem op te vangen heb ik in acad2009doc.lsp per vestiging aangegeven welke printers aangestuurd moeten worden.

Zo zou je per computer aan kunnen geven welke printer/papierformaat er aangestuurd moet worden. Echter als dit per tekening anders is, dan weet ik hier niet zo snel een oplossing voor.

Fred.
Titel: Re:Printermedia opvragen
Bericht door: EddyBeerke op di 16 03 2010, 07:56:51
Citaat van: cetacad op ma 15 03 2010, 11:01:48
Ik heb een undo-mark toegevoegd. Hierdoor wordt de verandering in de layout ongedaan gemaakt.

Ons bedrijf werkt met verschillende printers op verschillende vestigingen. Om dit probleem op te vangen heb ik in acad2009doc.lsp per vestiging aangegeven welke printers aangestuurd moeten worden.

Zo zou je per computer aan kunnen geven welke printer/papierformaat er aangestuurd moet worden. Echter als dit per tekening anders is, dan weet ik hier niet zo snel een oplossing voor.

Fred.
Tja... een "UNDO-mark" daar had ik nog niet aan gedacht, ik ga jou lisp eens opnieuw bekijken.
Ik laat nog weten hoe mijn lisp is geworden. Alvast bedankt.
Titel: Re:Printermedia opvragen
Bericht door: EddyBeerke op di 16 03 2010, 14:47:51
Citaat van: EddyBeerke op di 16 03 2010, 07:56:51
Tja... een "UNDO-mark" daar had ik nog niet aan gedacht, ik ga jou lisp eens opnieuw bekijken.
Ik laat nog weten hoe mijn lisp is geworden. Alvast bedankt.
'
Zo is de MAIN-PROGRAM geworden:


(defun c:DoIt () ; ook te gebruiken met "BaBe" van Joop
(command "undo" "mark")
(printerkeuze)
(papierkeuze)
        (plotten)
(Command "FILEDIA" "1")
(princ "\nFILEDIA is set to 1")
(princ)
(command "undo" "back")
);end defun




;####################################################
; Regels die uitgevoerd worden bij het laden v/d Lisp

(princ "\nTpye: \"DoIt\" om te starten.")
(princ)

;####################################################

Titel: Re:Printermedia opvragen
Bericht door: cetacad op wo 17 03 2010, 08:22:09
Citaat van: EddyBeerke op di 16 03 2010, 14:47:51
'
Zo is de MAIN-PROGRAM geworden:




Zou je de complete routine als bestand willen toevoegen aan dit forum.
Alvast bedankt.

Fred.
Titel: Re:Printermedia opvragen (Opgelost)
Bericht door: EddyBeerke op do 18 03 2010, 12:37:32
Omdat ik nog het een en ander het aangepast is ie iets anders dan in mijn vorige post.
Hier is de complete Lisp: PintAllLayouts.LSP rev1.0 (2010-03-18)
Deze is NIET te gebruiken met Babe, dit was wel mijn bedoeling maar het komt bij mij (nog) niet voor dat ik met Babe op deze manier ga printen.

Opmerking:
Let op dat er wel een gevonden CTB-file ingesteld moet zijn. (o.a. een reden om het niet met BaBe te gebruiken)
Het ondervangen van 'een gebrek aan CTB' moet nog toegevoegd worden.


Veel plezier met deze tool (kun je eindelijk weer eens bier, thee of koffie halen voor je collega's)
Titel: Re:Printermedia opvragen (Opgelost)
Bericht door: sschevers op di 06 04 2010, 14:42:46
Eddy,

Misschien kun je iets met bijgaande lisp fiel. Ooit een keer gevonden op internet. Helaas is zit er geen commentaar bij.
Je kunt er wel de media die beschikbaar is voor je printer/plotter mee uitvragen

greetz stephan