Zobrazují se příspěvky se štítkemLisp. Zobrazit všechny příspěvky
Zobrazují se příspěvky se štítkemLisp. Zobrazit všechny příspěvky

čtvrtek 9. ledna 2014

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.

getprint1

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.

getprint2

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.

lsp13

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.

2014secureload1

 

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

 

Jan Panoch

sobota 7. září 2013

Funkce na přenášení hodnot textů mezi Dtextem Mtextem a Multileaderem

Při popisování a poznámkování výkresů je třeba některé popisy vkládat opakovaně. Příkladem může být hodnota hloubky základové spáry v půdorysu základů, dimenze dřevěného prvku krovu v půdorysu nebo řezu nebo třeba specifická poznámka odkazující na detail, který se na výkresu vyskytuje vícekrát. Při požadavku na změnu popisu či poznámky je pak třeba měnit všechny tyto poznámky. To lze provést jednak pomocí příkazu find na vyhledání a nahrazení textu nebo tak, že budeme do opakujících se poznámek a popisů vkládat hodnotu zdrojového popisu jako automatické pole  - field.

ttf1

Půdorys základů se dvěma opakujícími se výškovými kótami. Na výškové kóty je použita entita typu Multileader, u které je potlačena odkazová čára.

Automatické pole se vkládá do do textu stiskem kláves Ctrl+F, po kterém se objeví tabulka, kde můžeme vybrat hodnotu, která se bude do textu vkládat. Nalezení objektu a hodnoty textu, kterou chceme použít pro automatické pole je ale poněkud zdlouhavé. Celou proceduru usnadní jednoduchá lispovská funkce, která vyzve k výběru zdrojového a cílového objektu. Zdrojový objekt je Dtext, Mtext nebo Multileader, jehož hodnotu textu chceme jako automatické pole použít v jiném Dtextu, Mtextu nebo Multileaderu. Cílový objekt je ten, do kterého bude vloženo automatické pole objektu zdrojového. Při změně hodnoty textu zdrojového objektu se změní i hodnota všech textů objektů, do kterých je vloženo automatické pole zdrojového objektu.

ttf2

Stejný půdorys základů jako na předchozím obrázku. Zdrojové výškové kóty jsou dvě v horním levém rohu. V ostatních výškových kótách je vloženo automatické pole s hodnotou jedné ze dvou zdrojových výškových kót. Při přepisu jedné ze dvou zdrojových kót ze změní i odpovídající cílové.

Funkce funguje napříč entitami, takže jako zdrojový objekt může být použit třeba Dtext a jako cílový Multileader.

Funkce se spouští příkazem ttf (Text To Field) a vyzve nejprve k výběru zdojového Mtextu, Dtextu nebo Multileaderu. V příkladu na obrázku jsem vybral horní jednořádkový Dtext.

ttf3
Po výběru jsem vyzváni k výběru cílového objektu, do kterého se má hodnota zdrojového Dtextu vložit. Na obrázku jsem vybral spodní Multileader. ttf4
Do Multileaderu se vložila textová hodnota Dtextu. To že jde o automatické pole poznáme podle toho, že má šedivé pozadí. Zobrazení šedivého pozadí se řídí systémovou proměnnou fielddisplay (přepínač 0/1). ttf5
Stejným způsobem (výběrem Dtextu a následným výběrem Mtextu) přeneseme hodnotu textu z Dtextu i do Mtextu. Připomínám, že hodnoty lze přenášet i mezi dvěma Dtexty, Mtexty či Multileadery. ttf6
Jestliže přepíšu hodnotu Dtextu a zavolám příkaz pro regeneraci regen … ttf7
… změní se hodnoty textů i dvou cílových objektů. ttf8

To kdy se automatická pole aktualizují řídí systémová proměnná fieldeval.

0 – automatická pole se neaktualizují

1 - automatická pole se aktualizují při otevření výkresu

2 - automatická pole se aktualizují při uložení výkresu

4 - automatická pole se aktualizují při tisku

8 - automatická pole se aktualizují při použití etransmitu

16 - automatická pole se aktualizují při regeneraci

V proměnné fieldeval může být uložen součet některých z předchozích hodnot. Například hodnota 31 (implicitní nastavení) je součtem 1+2+4+8+16. Automatická pole se tak budou aktualizovat při jakékoliv z výše uvedených akcí.

Funkci na přenášení hodnot textů si můžete stáhnout zde: https://docs.google.com/file/d/0B8vvgahpGh3vMmd0WUI3Vnd1RlU/edit?usp=sharing

nebo ze stránky Download http://cadcz.blogspot.cz/p/download.html , kde najdete i další snad užitečné funkce ke stažení.

Načtení vlx 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íka) ikonu vlx 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 z 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. Budeme-li chtít funkci spouštět často, vyplatí se přidat ji do Startup Suit. Do tohoto dialogového okna se dostaneme klepnutím na tlačítko Contents. 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.

ttf9

Jan Panoch

neděle 12. května 2013

AutoCAD 2014 – plug-in a ochrana před viry

S AutoCADem 2014 dostáváme i několik plug-inů. Mezi ty nejzajímavější patří podle mě aplikace na importování skp souborů (Google SketchUp) do AutoCADu. Funkci lze spustit příkazem importskp Ikona Connect to Exchange umožňuje navíc snadný přístup k dalším aplikacím. 2014SKP1
  2014SKP2
Na dalších obrázcích je mezonetový byt modelovaný v AutoCADu Architecture a zařízený “SKP” nábytkem. Obrázky nejsou rendrované a byly vytvořeny v Autodesk Showcase. 2014SKP6
  2014SKP4
  2014SKP3
Dialog Autodesk Exchange App Manager slouží ke správě načtených plug-inů včetně provádění updatů. 2014exchange1
AutoCAD 2014 zavádí ochranu před nechtěným načítáním škodlivých VBA, LSP, VLX, ARX a dalších souborů. V nastavení Optinos na kartě Files přibyla položka Trusted Location. Sem lze zadat cestu k bezpečným souborům. K tomu se váží i dvě nové systémové proměnné TRUSTEDPATHS a TRUSTEDDOMAINS. 2014secureload1
Na kartě System pak nalezneme nové tlačítko Executable File Settings. Executble files se míní soubory ARX, DBX, HDI, LSP, FAS, VLX, MNL, DVB, DLL a další.
Zde lze nastavit, zda externí funkce budou načítány jen z umístění, které je zadáno na kartě Files v Trusted Locations nebo odkudkoliv a zda se bude zobrazovat upozornění v případě načítání funkce umístěné mimo Trusted Location. Nastavení v dialogu lze ovládat také systémovou proměnnou SECURELOAD.
Spodní část dialogu pak řídí proměnná ACADLSPASDOC
2014secureload2
Závěrem připomeňme ještě jednu drobnou opravu, která souvisí s psaním funkcí v Auto nebo Visual LISPu:
V editoru VsualLispu bylo opraveno nastavování barev textů a pozadí pro 64-bitové verze. V předchozích 64-bitových verzích nebylo možno provádět nastavení jinak než ručním editováním souboru VLIDE.DSK a to právě z důvodu nefunkčnosti tohoto dialogu.
2014VlideColor_thumb2

Jan Panoch

pondělí 22. dubna 2013

Nový OpenDCL Runtime pro AutoCAD 2014

ODCLLogoPoužíváte-li nějaký program či funkci psanou v LISPu s dialogovým rozhraním napsaným v OpenDCL a zároveň jste si již nainstalovali AutoCAD, AutoCAD Architecture, MEP … 2014, nezapomeňte si také nainstalovat nový OpenDCL Runtime. Bez tohoto Runtime pod novým AutoCADem 2014 funkce s ODCL dialogy vůbec nenaběhnou.

OpenDCL Runtime verze 7.0.0.12 pro AutoCAD 2014 si můžete stáhnout zde: http://www.opendcl.com/download/

V případě, že budete instalovat OpenDCL studio (prostředí pro vytváření OpenDCL dialogů), není třeba instalovat poté runtime, ten se nainstaluje se studiem.

Instalátor nově přidává do proměnné TrustedPath cestu k ARX souborům OpenDCL. Ta je vidět v dilagovém panelu Option na kartě Files pod položkou Trusted Locations. (např c:\program files (x86)\common files\opendcl\)

Popis instalace a kontrolu správnosti provedené instalace naleznete zde.

Jan Panoch

pátek 15. února 2013

Co je třeba k běhu funkcí s ODCL dialogy

Hodláte–li distribuovat svoje LISPovské funkce s dialogy psanými v ODCL i ostatním uživatelům, anebo si chcete takovou funkci spustit, je nutné, mít na počítači nainstalovaný OpenDCL Runtime. Ten lze stáhnout z adresy http://www.opendcl.com/download/
Na stránce je kromě runtime ke stažení i OpenDCL Studio, které ale pro spuštění funkcí s ODCL dialogy není nutné. Obyčejně se na stránce vyskytují dvě verze runtime (stable a current build). Current build je většinou potřeba stáhnout  v případě že by funkce s ODCL dialogy měla běžet na zcela nové verzi AutoCADu nebo produktu na něm založeném, obzvlášť došlo-li mezi poslední a předposlední verzí AutoCADu ke změně formátu DWG. V ostatních případech postačuje stáhnout stable build.
U OpenDCL Runtime je možno stáhnout Windows Installer. MSI nebo Windows Installer Merge Module.MSM. MSI soubor je klasický instalátor, který si uživatel funkce nainstaluje před prvním spuštěním. MSM soubor je modul, který může být součástí dalšího instalátoru. Jedná se tady o soubor, který by využily pouze tvůrci programů, pokud by chtěli na svoje funkce psát instalátory. To ale vzhledem k malé velikosti ODCL Runtime není potřeba. Celý runtime je menší než 4 MB a je ho tedy možné poslat společně s funkcí třeba emailem.
Instalace OpenDCL Runtime (Windows Installer. MSI) je velmi rychlá a nijak se viditelně neprojeví. Pokud byl při instalaci spuštěn AutoCAD je třeba ho ukončit a znovu spustit.
To, že je ODCL Runtime nainstalovaný správně můžeme poznat podle toho, když napíšeme do příkazové řádky příkaz
_opendcl
Jestliže AutoCAD nahlásí
Unknown command "OPENDCL".  Press F1 for help.
pak instalace neproběhla správně a OpenDCL Runtime neběží.
Pokud AutoCAD nenapíše nic, tak instalace proběhla správně a OpenDCL Runtime běží.
Od této chvíle se do AutoCADu bude při každém spuštění Runtime načítat a všechny funkce s ODCL dialogy se budou zobrazovat správně.
Načtení lsp nebo vlx 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íka) ikonu lsp nebo vlx 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 z 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. Budeme-li chtít funkci spouštět často, vyplatí se přidat ji do Startup Suit. Do tohoto dialogového okna se dostaneme klepnutím na tlačítko Contents. 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.
ap01 ap02

Jan Panoch