Funkce na rychlé nastavení papíru ve výkresovém prostoru AutoCADu

Kategorie » téma: AutoCAD | AutoCAD Architecture | AutoCAD Civil 3D

17.01.2014 14.20 | Jan Panoch | Komentáře: 7 komentářů | Přečteno: 22706x

Funkce na rychlé nastavení papíru ve výkresovém prostoru AutoCADu:

Pokud často nastavujete ve výkresovém prostoru určité rozměry papírů a nebaví vás neustále vybírat v roletce typ plotru a pak hledat požadovaný rozměr papíru, můžete si zkusit tuto operaci zjednodušit malinkou LISP sekvencí, která požadované nastavení provede za Vás v jednom kroku. Funkce funguje tak, že po jejím zavolání se ve výkresovém prostoru nastaví tiskárna a požadovaný formát papíru a po jejím opětovném zavolání se otočí o 90°. Další zavolání provede opět otočení o 90° atd. V lsp souboru, který si můžete stáhnout na konci tohoto příspěvku, není ovšem tato funkce o které se zmiňuji, ale funkce, která jí teprve vygeneruje.

Samotný zdrojový kód pro funkci, která nastaví plotr na DWG to PDF a papír na formát A4 může vypadat třeba takto:

(defun c:pdfa4    ()
  (vl-load-com)
  (setq    layout (vla-get-layout (vla-get-paperspace (vla-get-activedocument (vlax-get-acad-object))))
    plotrotation (vla-get-plotrotation layout)
    )
(vla-put-configname layout "DWG To PDF.pc3")
  (vla-put-canonicalmedianame layout "UserDefinedMetric (210.00 x 297.00MM)")
  (if (= plotrotation 1)
    (vla-put-plotrotation layout 0)
    (vla-put-plotrotation layout 1)
    )
  (command "_regen")
  )

Ale pozor, kdybyste si tuto funkci zkopírovali do lsp souboru a zkusili ji načíst, nebude Vám s největší pravděpodobností fungovat, protože Váš DWG to PDF plotr se může jmenovat jinak a pravděpodobně se bude jmenovat jinak i papír A4 (u mě je to "UserDefinedMetric (210.00 x 297.00MM)")
V souboru na konci příspěvku je definována funkce, která se volá příkazem getprint. Před jejím spuštěním si ve výkresovém prostoru naposled ručně nastavte typ plotru a papíru, jaký bude nová funkce sama nastavovat. Po zadání příkazu getprint (stále ve výkresovém prostoru) se objeví dialogové okno, kde zadáme název a umístění naší nové funkce. 

 

bb1

Funkci lze později pomocí správce souborů přejmenovat i přemístit. Poté se vygeneruje soubor s funkcí a objeví se dialogové okno, které nás o tom informuje. Ve vygenerovaném souboru je třeba provést jen jednu drobnou úpravu. V prvním řádku si slova volani_funkce nahraďte příkazem, kterým budete funkci volat. Příkaz nesmí obsahovat mezery.

 

bb2

Takto může vypadat vygenerovaná funkce po otevření v poznámkovém bloku

V mém případě (na obrázku nahoře) nastavuje funkce plotr na HP a papír na A4 (User1292), takže jsem první řádek změnil na
(defun c:HPa4 ()
Na velikosti písmen nezáleží. Po uložení souboru a jeho načtení můžeme funkci používat.

Načtení lsp souboru s funkcí do aktuálního výkresu AutoCADu lze provést v zásadě dvěma způsoby. Ten nejjednodušší je, že přetáhneme z okna správce souborů (třeba z Průzkumníku) ikonu lsp souboru do okna AutoCADu a funkci spustíme. Druhý způsob je využití příkazu _appload. V dialogovém okně vybereme požadovaný soubor s funkcí a máme-li zaškrtnuto tlačítko Add to History vloží se odkaz na tento soubor do okna Histroy list, takže příště již nebudeme muset soubor vyhledávat. V tomto případě je ale pravděpodobnější, že budeme chtít funkci načítat automaticky při každém spuštění AutoCADu, a proto ji přidáme do Startup Suit. Do tohoto dialogového okna se dostaneme klepnutím na tlačítko Contents v dialogu Load\Unload Application. Pomocí tlačítka Add přidáme soubor s funkcí. Funkce v souborech, které se zobrazují ve Startup Suit se načítají při každém spuštění AutoCADu a při otevření každého výkresu, takže je není třeba zvlášť načítat stačí je spustit stejně jako jakýkoliv jiný příkaz.

 

bb3

 

Pokud si pomocí funkce getprint vygenerujete více funkcí na více papírů a plotrů není nutné je uchovávat v samostatných souborech. Funkce je možné nakopírovat do jednoho souboru a ten pak načítat.

Ve verzi 2014 si nezapomeňte v options na první kartě files přidat cestu odkud se lsp funkce načítají do položky Trusted Location nebo si lsp soubory nahrajte do složky, které již máte v Trusted Location uvedeny.

bb4

 

Funkci na generování funkcí si můžete stáhnout zde

 

Jan Panoch

Komentáře:

#1 | Ondřej Urban » problem

19.02.2014 11.07

Dobrý den, bohužel mě nefunguje (CAD 2012)
chyba:
Příkaz: (LOAD "C:/Urban/___CAD/nastav Plotr/A2.lsp") C:A2
Příkaz: A2
; chyba: Automation chyba. Neplatný vstup
Příkaz:

GETPRINT - bez problemů ? asi
****
(defun c:A2 ()
(vl-load-com)
(setq layout (vla-get-layout (vla-get-paperspace (vla-get-activedocument (vlax-get-acad-object))))
plotrotation (vla-get-plotrotation layout))
(vla-put-configname layout "\\czjes03sv\czjesplot01")
(vla-put-canonicalmedianame layout "User1644")
(if (= plotrotation 1)
(vla-put-plotrotation layout 0)
(vla-put-plotrotation layout 1)
)
(command "_regen")
)


třeba Vás něco napadne, jinak super myšlenka

#2 | Panoch » odpověď

09.04.2014 14.29

Tak to mě mrzí. Problém bude v nastavování té síťové tiskárny. Když do sekvence, kterou jste poslal doplním svůj plotr a papír, tak program funguje správně.
Zkusil bych vyměnit řádku:
(vla-put-configname layout "\\czjes03sv\czjesplot01")
za
(vla-put-configname layout "\\czjes03sv\\czjesplot01")
nebo za
(vla-put-configname layout "\\czjes03sv/czjesplot01")

Omlouvám, se, že odpovídám až teď, chodím sem občas.

Panoch

#3 | Ondřej Urban » bohužel

11.11.2014 15.52

S tím časem není potřeba se omlouvat.

Bohužel jsem vyzkoušel kde co, ale s tou síťovou tiskárnou se to nedaří. Přesto díky.
Ondřej

#4 | Ondřej Urban » ok

11.08.2015 14.35

tak musí být tiskárna *.pc3 , pak funguje, díky

#5 | Jan Panoch » --

11.08.2015 15.00

Prima :-)

#6 | Ondřej Urban » ještě problém ....

11.08.2015 18.21

Dobrý den,
když nechci tisknout "rozvržení", ale "max" + přizpůsobit měřítko,
tak na "max" jsem našel

(vla-Put-PlotType alob 2)
;; 012345=DisplayExtentsLimitsViewWindowLayout

ale nefunguje, háže to chybu:
; chyba: nesprávný typ argumentu: VLA-OBJECT nil

ten "max" je kvůli PDF

#7 | Jan Panoch » řešení

11.08.2015 18.55

Mě funguje tato syntaxe:
(vla-put-plottype layout acextents)

Jinak sem pro jistotu dávám i celou funkci:
(defun c:HPA4-2 ()
(vl-load-com)
(setq layout (vla-get-layout
(vla-get-paperspace
(vla-get-activedocument (vlax-get-acad-object))
)
)
plotrotation (vla-get-plotrotation layout)
)
(vla-put-configname layout "HP Designjet 500 24 by HP")
(vla-put-canonicalmedianame layout "User1292")
(vla-put-plottype layout acextents)
(if (= plotrotation 1)
(vla-put-plotrotation layout 0)
(vla-put-plotrotation layout 1)
)
(vla-Regen (vla-get-activedocument (vlax-get-acad-object)) acAllViewports)
)

Přidat komentář

 *
 *
 
 *

*) Povinné položky jsou označeny hvězdičkou.