FastFiber

Printermedia opvragen (Opgelost)

Gestart door EddyBeerke, di 09 03 2010, 16:51:05

Vorige topic - Volgende topic

EddyBeerke

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.
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

roy_043

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.

EddyBeerke

Nee ik wil van een in een vorige sub gekozen printer de media opvragen en niet die van de layout.
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

roy_043

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.

EddyBeerke

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:

  • een file met 5 layouttabs met kaders voor A0
  • verschaald afdrukken op A3 formaat

"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
...
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

cetacad

#5
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

EddyBeerke

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!
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

cetacad

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.


EddyBeerke

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

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, zodat ik meerdere layouts achter elkaar kan printen.
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

cetacad

#9
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

EddyBeerke

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.
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

cetacad

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.)

EddyBeerke

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).
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

cetacad

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.

EddyBeerke

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.
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/