středa 7. února 2018

Změna rotace Annotative objektů pro různá měřítka

V AutoCADu a produktech na něm založených (Architecture, MEP), jsou již několik verzí dostupné funkce, pomocí kterých lze textům, kótám, šrafám, multileaderům a dalším entitám nastavit různou, respektive při tisku stejnou, velikost a pozici při zobrazení různých měřítek. V nelokalizovaných verzích se tato funkce nazývá Annotative. Funkci lze použít například při kreslení situací, kterých je v projektové dokumentaci několik a ve více měřítkách (katastrální situace, koordinační situace, celková situace …). Nastavíme-li katastrálním číslům a blokům, které znázorňují kulturu pozemků vlastnost Annotative, budou se pro každé měřítko zobrazovat ve stejné velikosti při tisku.

image

měřítko 1:200


image

měřítko 1:500

Annotative objekty mohou mít kromě rozdílných velikostí v rozdílných měřítkách i rozdílné pozice. Toho lze dosáhnout tak, že objekty posuneme za uzel. Pokud použijeme příkaz pro posun (move) posuneme objekt ve všech měřítkách, pro které je u objektu v seznamu měřítek neprázdná hodnota.

image

měřítko 1:200


image

měřítko 1:500


U Annotative objektů však lze nastavit i různé úhly natočení opět pro různá měřítka. To může být výhodné u textů, kdy potřebujeme, aby se text v jednom měřítku zobrazoval vodorovně a v jiném s určitým úhlem natočení. Jak ovšem tento úhel jen pro jedno měřítko nastavit?

Nelze to provést přímo na vybraném objektu pomocí uzlů jako u posunu, ale pouze přes paletu vlastnosti (properties), kde do příslušného řádku napíšeme úhel natočení. Úhel natočení je pak platný pouze pro dané měřítko.

image

nastavení úhlu v paletě Properties


image

měřítko 1:200


image

měřítko 1:500


Dvě poznámky na závěr:

1) U víceřádkového textu lze tímto způsobem nastavit pro každé měřítko jinou šířku odstavce.

2) Viditelnost všech zobrazení annotative objektů pro všechna měřítka při jejich výběru řídí systémová proměnná SELECTIONANNODISPLAY, která nabývá hodnot 0 a 1.

image

Zobrazení výběru při nastavení SELECTIONANNODISPLAY na hodnotu 1.

sobota 18. listopadu 2017

Funkce na zarovnání textu ke křivce

Tuto funkci jsem si napsal hlavně proto, že mě při kreslení koordinačních situací vždy zdržovalo zarovnávání popisů inženýrských sítí tak, aby popisy byly rovnoběžné s vedením té které sítě. Třeba ale najdete i jiné využití. Na popisy používám raději mtext než dtext a to proto, abych mohl u mtextu nastavit neprůhledné pozadí a síť popisem zároveň vykryl. Pokud úhel, pod kterým má být text do výkresu vložen nezadám hned po výběru prvního rohu mtextu, tak pak musím text k síti přiložit a orotovat ho ve směru sítě, případně před tím ještě změnit zarovnávací bod textu na jeden ze středových.

Funkce, kterou si můžete stáhnout na konci příspěvku nebo na kartě download v sekci LISPy, se po zavolání dotáže na text, který má být k síti vložen a následně vyzve k výběru křivky. Vybrat lze nejen polyline, ale také line – čáru, arc – oblouk nebo spline. Funkce následně do vybraného místa křivky vloží v předchozím kroku zadaný text a zarovná ho ke křivce. Hladina a typ čáry se přeberou z vybrané křivky. Styl textu je aktuální styl a velikost textu odpovídá proměnné TEXTSIZE – tedy naposled použité výšce textu. Zarovnávací bod textu se nastaví na Middle Center. Chcete-li změnit výšku textu, stačí tak zadat do příkazové řádky textsize a napsat výšku.

Po dalším zavolání funkce se jako implicitní text na výzvu po zadání nového textu nabídne text použitý při posledním spuštění funkce. Funkce se spouští příkazem txtal (text align)

V souboru je však definovaná ještě jedna funkce txtper (text perpendicular), která text vloží kolmo ke křivce v místě výběru.


První zavolání funkce txtal nebo txtper

image


Při dalším zavolání již funkce jako implicitní nabízí předchozí text. Implicitní výběr nelze potvrdit mezerníkem, ale je nutno použít Enter.

image


Výsledek funkce  txtal a txtper – zarovnání k polyline a spline

image

image


Obě funkce definované v souboru TextAlignToPLine.lsp si můžete stáhnout zde a to ve zdrojovém kódu, takže je možné je dále upravovat.

Návod jak načíst *.lsp soubor s funkcemi do výkresu najdete například na konci jednoho z předchozích příspěvků.

středa 1. listopadu 2017

Fall Creators Update 1709 zpomaluje AutoCAD

Pokud se stejně jako já potýkáte s příšerným zpomalením AutoCADu (Architecture, MEP …) po instalaci posledního Fall Creators Updatu na verzi Windows 10 1709 můžete zkusit následující řešení:

V panelu Centrum zabezpečení v programu Windows Defender klepněte na Řízení aplikací a prohlížečů

image

V dalším panelu sjeďte až dolů a tam klepněte na text  Nastavení Ochrany Exploit Protection

image

A v položce Ochrana toku řízení (CFG) vyberte Ve výchozím nastavení vypnuto.

image

Nové nastavení se projeví až po restartu počítače. Pak se AutoCAD vrátí ke své původní rychlosti.

Zpomalení se projevuje především v práci ve 3D, která je po instalaci Fall Creators Updatu i v jen trochu větším modelu téměř nemožná. Problémy se netýkají jen AutoCADu, ale i Inventoru, Revitu, 3D Maxu a dalších profesionálních programů. Odinstalování FCU nemusí pomoci.

neděle 30. července 2017

Šrafy tmavého obkladu např. z prken

AutoCAD nabízí velké množství šrafovacích vzorů. Ještě více jich jde postahovat z internetu, ale žádný z nich většinou není takový, jaký je potřeba. Takže po šrafách pórobetonu, tepelné izolace, a střešní krytiny jsem vyrobil šrafu obkladu (např. z prken) tmavého odstínu. Tmavý odstín je reprezentován tečkami a obkladová prkna (nebo jiný materiál) dvěma čárami u sebe. Ty reprezentují spáru. Spára přitom není tečkovaná. Osová vzdálenost obkladových profilů je pro měřítko šrafy 1 jednotka 170 mm. 150 mm je šířka prkna a 20 mm je šířka spáry. Kód šrafy vypadá takto:

*DrevenyObkladHTmavy, vodorovné čáry s tečkami
0,0,0,0,170
0,0,150,0,170
0,0,25,25,170,0,-25
0,0,50,25,170,0,-25
0,0,75,25,170,0,-25
0,0,100,25,170,0,-25
0,0,125,25,170,0,-25

image

… a stáhnout si ji můžete ze stránky download ze sekce “Šrafy” – soubor DrevenyObkladHTmavy.pat

Soubor si zkopírujte do složky “pats”

například

C:\Users\[jméno profilu]\AppData\Roaming\Autodesk\[verze AutoCADu]\enu\Support\pats

šrafa se pak objeví v dialogovém okně Hatch Pattern Palette na kartě Custom

image

image

pondělí 3. dubna 2017

AutoCAD Architecture a MEP 2018

V AutoCADu Architecture a MEP 2018 bohužel nenajdeme žádná velká vylepšení. Jedinou novinkou jsou přidané multiview bloky do AEC Contentu. Nejedná se však o úplně nové prvky hlavně pro ty z vás, kteří již dříve používali a měli nainstalovaný dánský Content. Ve většině případů se jedná pouze o MVbloky, které byly z tohoto Dánského contentu převedeny i do anglické verze. Zajímavostí je, že pokud tyto bloky obsahovaly atributy tak jejich názvy alespoň v beta verzi stále zůstaly v Dánštině Smile

Podle sdělení vývojového týmu se Autodesk v této verzi soustředil pouze na opravu chyb jejichž hlavní výčet uvádím níže.

  • Oprava exportu dat z tabulek (Schedule Table) do excelu.
  • Oprava nastavení transparentnosti AEC entit přes dialog display properties - šlo nastavovat jen přes paletu properties a vlastnost transparency nebylo možné nastavit pro více komponent najednou. (to opravil již SP1 pro AMEP 2017)
  • Potlačen byl dialog Manage Content Library při migraci z předchozí verze.
  • Rozdělené prostory (Space) zůstali rozděleny, i když jeden z prostorů byl izolován pomocí volby Isolate Obejct.
  • Opraveno bylo padání AMEP, které se někdy vyskytovalo při otevírání a ukládání souborů a při zrcadlení MEP entit.
  • Systémová proměnná HPMAXLINES je nastavena na 100 000 pro rychlejší otevírání výkresů.
  • Bylo vylepšeno otevírání výkresů verze 2010.
  • Objekty typu Mass Element je již možno dělit i při jiném než defaultním UCS. (to opravil již SP1 pro AMEP 2017)
  • Vylepšení exportu do IFC.
  • Při vytvoření nových výkresů v Project Navigatoru není třeba pro jejich zobrazení provádět Refresh projektu (zajímavé, s tím jsem nikdy problémy neměl).
  • Bylo odstraněno příležitostné padání AMEP při importování PDF souborů pomocí příkazu PDFIMPORT a při přetahování poznámek do tool palet.
  • Oprava nekorektního zobrazení bloků MEP Contentu při zobrazení realistic.
  • Odstranění příležitostného padání AMEP při exportu výkresů, které obsahovaly entity Open Light do AutoCADu (příkaz EXPORTTOAUTOCAD).
  • Při generování pohledů a řezů jsou z modelu, ze kterého se generování provádí, vyjmuty 2D bloky. Nevznikají tak v pohledech a řezech vodorovné čáry, které je třeba následně odstraňovat. (To lze myslím považovat za jediné vylepšení)
  • Při síťové instalaci jsou nyní viditelné všechny updaty přidané pomocí Add Updates

Na co se asi bude vývojový tým soustředit u verze 2019?

neděle 22. ledna 2017

AutoCAD MEP – Cut Length - délky trubek

V jednom z předchozích příspěvků o AutoCADu MEP jsme vynechali nastavení Cut Length v paletě Properties při kreslení kanalizačních trubek. Tehdy jsem slíbil, že se k tomuto tématu vrátím a činím tak po více jak roce .

Jednoduše řečeno – hodnota Cut Length určuje, po jaké vzdálenosti se na rovném úseku potrubí vykreslí hrdlo (v případě vodovodního PPR potrubí nátrubek). Ve Specify Cut Length tedy nejprve zadáme, zda se tímto budeme zabývat a v Cut Length pak vzdálenost po které se trubky budou dělit a vkládat mezi ně hrdla / nátrubky.

MEP24

 MEP25

Ovšem co je to hrdlo pro AMEP? AMEP neobsahuje entitu typu trubka s hrdlem, ale jen rovné trubky se stejným průřezem po celé délce a tvarovky. To, že se mezi trubky a tvarovky mají vkládat hrdla je zadáno v Routing Preference v položce Joints. O Routing Preferences pojednává o něco podrobněji jeden z předchozích příspěvků. V Routing Preference je tedy nastaveno pravidlo, které říká, že při spojení trubky s tvarovkou nebo dvou trubek (případ zadání nenulové Cut Length) se do MEP26tohoto spoje vloží hrdlo. Hrdlo je tedy z pohledu AMEP samostatná tvarovka a trubka s hrdlem na následujícím obrázku dole se ve skutečnosti skládá z rovné trubky a hrdla.

To ale odporuje realitě a asi Vás napadne, že to bude problém při vypisovaní délek potrubí. Mohu Vás uklidnit, problém to překvapivě není a pokud si pomocí příkazu Move (posun) trubku a hrdlo nerozeberete, jak jsem to udělal já, tak vůbec nepoznáte, že hrdlovou troubu AMEP skládá ze dvou částí.

 

 

 

Dobře je to vidět na dvou následujících obrázcích.  K trubkám jsem připojil sadu vlastností (Property Set Definitions) která obsahuje mimo jiné i automaticky odečítanou vlastnost Cut Length. Zatímco u trubky bez hrdla vypíše délku 938 mm u trubky s hrdlem (všimněte si, že je vybrána pouze trubka a ne hrdlo) je to 1020 mm.

MEP27

MEP28

 

Katalog trubek a tvarovek si můžete stáhnout zde nebo ze stránky download. Po jeho instalaci, která je popsána zde nezapomeňte ještě provést regeneraci katalogu výběrem Regenerate Catalog a následně vybrat All.

 image_thumb[1]

pondělí 9. ledna 2017

Převod vektorových PDF katastrálních map do DWG s roztříděním entit do hladin

Od verze 2017 umožňuje AutoCAD a produkty, které jsou na něm založené, převádět do DWG vektorové PDF soubory. Osobně nejvíce tuto funkci používám při konverzi souborů snímků katastrální mapy z cuzk.cz, která je již na většině území České republiky digitalizovaná. Oproti dřívější rastrové podobě katastrální mapy v mapě již nejsou slučky, ale čáry jsou pomocí tloušťky rozděleny na katastrální hranice a zbytek, čemuž dle doporučení geodetů říkám vnitřní kresba. Při konverzi PDF souborů do DWG se převedené entity vloží všechny do jedné hladiny - katastrální hranice i vnitřní kresba. Přesto je vhodné pro další práci s entitami vloženými z katastru nemovitostí mít tyto dva typy čar oddělené a rozdělené do dvou samostatných hladin. Z tohoto důvodu jsem napsal malý program v ve VisualLISPu, který nejprve založí hladiny pro katastrální hranice a vnitřní kresbu a podle tloušťky čáry přenese jednotlivé entity do jedné nebo druhé hladiny. Entitám pak nastaví vlastnosti barvy, a typu čáry na BYLAYER (v češtině myslím DLEHLAD).

Princip funkce je založený na tom, že hranice z katastru nemovitostí jsou rozděleny tloušťkou čáry. Zjistil jsem však, že ne všchny stejně. Hranice mezi katastrální hranicií a vnitřní kresbou prochází někde kolem tloušťky 0.15 a podle této hodnoty také funkce dělí entity do hladin.

Při převodu PDF souborů je pouze třeba mít zaškrtnuto pole, že se mají entity převádět s tloušťkou čáry. V nelokalizované verzi Apply lineweight properties

image

Po vložení je třeba ještě kresbu rozložit byl-li PDF soubor vložen jako blok. Funkce se spouští příkazem katastrtodwg a po jejím zavolání se všechny entity ve výkresů převedou do výše zmíněných dvou hladin v závislosti na parametru tloušťky čáry. Funkci je tedy dobré spouštět ve výkresu, kde nejsou žádné další entity, protože funkce by byla aplikována i na tyto objekty a zařadila by je do jedné ze dvou nově založených hladin.

image

PDF soubor po vložení…

 

image

…a po prohnání funkcí katastrtodwg

Funkce je umístěna v souboru katastrtodwg.lsp a můžete si ji stáhnout ze stránky download z okna LISPy.

Funkce je ve zdrojovém kódu a lze ji dále editovat například v případě potřeby změny hranice tloušťky čáry, podle které se mají entity dělit do hladin.

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íka) 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 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

sobota 24. prosince 2016

Podrobný popis tvorby šrafy bobrovek pro AutoCAD a šrafy porobetonu

Tento příspěvek popisuje tvorbu vlastního šrafovacího vzoru, který si spolu s dalšími šrafovacími vzory si můžete stáhnout ze stránky Download sekce šrafy. Náhled vzorů najdete na konci článku.

 

Definice šrafovacích vzorů jsou uloženy v samostatných souborech s příponou *.pat, které lze otevřít a editovat pomocí poznámkového bloku. Pat soubory jsou uloženy v adresáři pats v podadresáři Support

(např. C:\Users\Jmeno_Profilu\AppData\Roaming\Autodesk\Jmeno_Produktu\enu\Support\pats)

Syntaxe první řádky souboru je následující:

*JmenoSrafy,PopisSrafy

Přitom jméno pat souboru musí být stejné jako jméno šrafy.

Na dalších řádkách jsou definovány jednotlivé entity šrafy. Jejich hodnoty jsou oddělené čárkami. Pořadí hodnot je následující:

úhel ve stupních, X-ová souřadnice, Y-ová souřadnice, opakování entity ve směru jejího kreslení, opakování ve směru kolmo k entitě, délka kreslené části, délka nekreslené části,  délka kreslené části, délka nekreslené části ...

Každá hodnota musí být oddělena čárkou, za poslední hodnotou se čárka nedělá.

Chceme-li si vytvořit vlastní šrafu, je nejvhodnější přidat ji do adresáře pats, případně do jakéhokoliv jiného adresáře, který najdeme v dialogu Options na kartě Files v položce Suport File Search Path. Zde je seznam adresářů, které AutoCAD prohledává při načítání uživatelských šraf a dalších souborů.

Pro editaci šrafy nebo napsání vlastní šrafy musíme používat takový textový editor, který nám do souboru nebude vkládat žádné formátovací znaky. Nejlépe tedy poznámkový blok, nebo něco podobného.

V příkladu si vytvoříme šrafovací vzor střešních tašek bobrovek se šupinovým krytím. Přitom je nutné upozornit, že AutoCAD neumožňuje definovat ve šrafách kružnici ani žádné jiné tvary kromě rovných úseček a teček. Oblouk bobrovky tedy nahradíme polovinou dvanáctiúhelníku. Abychom mohli šrafu správně nadefinovat, je nejlepší si ji nakreslit pomocí čar v AutoCADu. Naše šrafa bude vypadat následovně.

clip_image001

Šrafa se definuje pro velikost měřítka 1:1 a měla by být poměrně malá, zhruba tak, aby vzdálenost mezi opakujícími se entitami nepřesáhla jednu kreslící jednotku, i když to není nevyhnutelně nutné.

Otevřeme si tedy například zmiňovaný poznámkový blok a soubor uložíme do adresáře pats jako BobrovkySupinove.pat

Na první řádku napíšeme:

*BobrovkySupinove,Střešní krytina z bobrovek na šupinové krytí

První řádek s jménem šrafy musí vždy začínat hvězdičkou a jméno šrafy se musí shodovat se jménem souboru.

Dále budeme definovat první úsečku šrafy, která je na následujícím obrázku označena tučně. Kružnicí je označen počátek souřadného systému, který jsem pro definici šrafy zvolil a od kterého budeme měřit souřadnice jednotlivých entit šrafy. Umístění počátku souřadného systému šraf je libovolné, ale je ho vhodné volit tak, aby se v řádcích objevovalo co nejvíce nul.

clip_image002

První čárka, kterou budeme definovat se tedy kreslí pod úhlem 0°, má souřadnice v bodě 0.241481 a 0, ve směru kreslení se opakuje po 0.241481 a ve směru kolmém po 0.418258. Délka kreslené části je 0.12941 a délka nekreslené části 0.353553.

Druhá řádka definice naší šrafy vypadá tedy následovně:

0,.176777,0,.241481,.418258,.12941,-.353553

Jak vidíte, oddělovač desetinných míst je tečka, u čísel menších než jedna není třeba psát nulu před desetinnou tečkou a nekreslená část úsečky se píše se znaménkem mínus.

Dále budeme definovat úsečku pod úhlem 30°, která má počátek v bodě 0.306187 a 0, ve směru kreslení se opakuje po 0.418258 a ve směr kolmém k úsečce po 0.241481. Délka kreslené části je 0.12941 a délka nekreslené části 0.288849. Třetí řádka definice šrafy vypadá pak následovně:

30,.306187,0,.418258,.241481,.12941,-.288849

clip_image003

Následuje úsečka pod úhlem 60° s počátkem v bodu 0.418258 a 0.064705, s opakováním ve směru kreslení 0.241481 a kolmém 0.418258. Délka kreslené části je 0.12941 a části nekreslené 0.353553. Celá řádka vypadá následovně

60,.418258,.064705,.241481,.418258,.12941,-.353553

clip_image004

Druhou polovinu začneme svislou čárkou pod úhlem 90° s počátkem v bodu 0 a 0.176777, která se ve směru kreslení opakuje po 0.418258 a ve směru kolmém po 0.241481. Délka kreslené části je 0.241481 a délka nekreslené je 0.595035. Finální řádka definice šrafy je následující:

90,0,.176777,.418258,.241481,.241481,-.595035

clip_image005

Předposlední bude čárka pod úhlem 150° s počátkem v bodu 0.176777 a 0, která se ve směru kreslení opakuje po 0.418258 a ve směru kolmém po 0.241481. Délka kreslené části je 0.12941 a délka nekreslené části 0.707107. Celá řádka bude vypadat takto:

150,.176777,0,.418258,.241481,.12941,-.707107

clip_image006

Poslední úsečka je pod úhlem 300°. Abychom měli v souřadnicích alespoň jednu nulu, můžeme ale místo 300 napsat -60 a jako počátek vzít horní bod úsečky se souřadnicemi 0 a 0.176777. Úsečka se ve směru kreslení opakuje po 0.241481 a kolmo ke směru kreslení po 0.418258. Délka kreslené části je 0.12941 a délka nekreslené části 0.353553.

Poslední řádka bude vypadat takto:

-60,0,.176777,.241481,.418258,.12941,-.353553

clip_image007

Aby bylo možné šrafu používat musí soubor na konci obsahovat ještě alespoň jeden prázdný řádek, takže poslední napsaný řádek nezapomeňte odentrovat. Celý soubor by měl vypadat následovně:

*BobrovkySupinove,Střešní krytina z bobrovek na šupinové krytí

0,.176777,0,.241481,.418258,.12941,-.353553

30,.306187,0,.418258,.241481,.12941,-.707107

60,.418258,.064705,.241481,.418258,.12941,-.353553

90,0,.176777,.418258,.241481,.241481,-.595035

150,.176777,0,.418258,.241481,.12941,-.707107

-60,0,.176777,.241481,.418258,.12941,-.353553

 

Pořadí v jakém jednotlivé úsečky definujeme není důležité.

Po uložení a zavolání příkazu pro šrafování najdeme šrafovací vzor BobrovkySupinove v uživatelsky definovaných šrafách a můžeme jím šrafovat.

Jak je vidět z předchozího příkladu bývá při definice vlastních šraf největší problém najít takový vzor, v němž se budou jednotlivé úsečky co nejčastěji opakovat a pak správně najít opakující se dvojici. Při vytváření vlastních šraf je výhodné po každém napsaném řádku si takto nedokončenou šrafou zkusit něco vyšrafovat. Tím snadněji odhalíme případné chyby. Aby bylo možno i nedokončenou šrafu používat, nezapomeňte za poslední řádek přidat jeden řádek prázdný a soubor uložit.

Na záložce Download v sekci šrafy najdete jak tuto šrafu, tak několik dalších, které AutoCAD neobsahuje, ale po kreslení v našich podmínkách mohou být užitečné. 

první řádek: soubory StresniKrytina1.pat, StresniKrytina2.pat, StresniKrytina3.pat

druhý řádek: soubory Porobeton1.pat, Porobeton2.pat, Porobeton3.pat

třetí řádek: soubory publikované již dříve TepIzol1.pat, TepIzol2.pat, TepIzol3.pat

clip_image008

pátek 26. června 2015

Využití LISPu v příkazové řádce AutoCADu 3.

Předchozí texty o využití LISPu v příkazové řádce najdete zde:

Využití LISPu v příkazové řádce AutoCADu 1.

Využití LISPu v příkazové řádce AutoCADu 2.

Nyní zkusíme do příkazového řádku nadefinovat jednoduchou funkci.

Představme si, že pracujeme na projektu s kreslícími jednotkami odpovídajícími milimetrům, ale potřebujeme do projektu dokreslit komponentu jejíž podklady jsou kótované v palcích. I když existuje i jiné řešení, zkusme to vyřešit vlastní funkcí nadefinovanou pomocí LISPu. Potřebujeme k tomu znát funkci defun, která definuje funkci (define function) její syntaxe je (defun _jmenofunkce (argumenty / lokální proměnné)) Lokální proměnné nyní potřebovat nebudeme, takže se jimi nemusíme zabývat. Druhou věc, kterou potřebujeme vědět je, že LISP používá takzvanou obrácenou logiku (to je důvod, proč je tak populární:-)) Ta spočívá v tom, že se nejprve píše jméno funkce a pak její argumenty. A protože i násobení (*) je funkce, tak budeme-li chtít převést palce na milimetry a počet palců tedy vynásobit 25.4 musíme napsat (* pocet_palcu 25.4)

Naše funkce bude tedy vypadat následovně:

(defun mmp (palce) (* palce 25.4))

image_thumb[35]_thumb

mmp je jméno funkce. Funkce má jeden argument palce, který v dalším kroku vynásobíme konstantou 25.4. Na konci nezapomeňte na dvě uzavírací závorky. První uzavírá funkci násobení, druhá definici funkce mmp.

Nyní zavoláme příkaz na kreslení čáry / stěny …, zadáme výchozí bod (můžeme použít v předchozím příkladu definovaný pt), zadáme směr a namísto délky zadáme například (mmp 10). AutoCAD nakreslí čáru / stěnu o délce 254 mm.

image_thumb[37]_thumb

image_thumb[38]_thumb

V tomto textu jsem popsal jen několik nejzákladnějších funkcí AutoLISPu. Pomocí AutoLISPu a Visual LISPu lze psát ale i rozsáhlejší programy s cykli, rozhodovacími procedurami a dialogovými panely. Všechny funkce LISPu si můžete nechat vypsat do příkazové řádky pomocí příkazu lsp a následným výběrem Function. AutoCAD v sobě obsahuje jednoduché vývojové prostředí pro psaní funkcí v tomto jazyce, které spustíte příkazem vlide nebo vlisp. Nečekejte ovšem žádné Visual Studio. Jedná se spíše o trochu vylepšený poznámkový blok.

pátek 19. června 2015

Využití LISPu v příkazové řádce AutoCADu 2.

V předchozím příspěvku jsme popsali několik jednoduchých příkazů LISPu, které můžeme využít v příkazové řádce AutoCADu. Nyní se koukneme na to, jak pomocí LISPu manipulovat s výběrovými množinami.

Do příkazové řádky  zadáme tuto sekvenci:

(setq vyber1 (ssget))

image_thumb[19]

a na výzvu, která se objeví po odeslání sekvence vybereme jeden nebo více objektů. Tímto jsme do proměnné vyber1 uložili jednu nebo více vybraných entit. Ssget značí Selection Set Get.

image_thumb[21]

Nyní zadejte opět například příkaz pro posun či kopírování a na výzvy po výběry objektů zadejte !vyber1. Vyberte bod a na další výzvy po vzdálenosti zadejte !vzd (viz předchozí příspěvek).

image_thumb[23]

image_thumb[25]

image_thumb[27]

Tímto způsobem si můžeme ve výkresu do proměnných uložit několik entit najednou, které pak můžeme i najednou editovat. Přitom syntaxi můžeme zadat do příkazového řádku i ve chvíli, když už jsou entity vybrané. Například posouváme více entit a po jejich výběru nás napadne, že všechny tyto entity budeme pravděpodobně muset ještě jednou editovat. Stačí při vybraných entitách zadat např (setq vyber2 (ssget)). Tentokrát nejsme vyzváni k výběru žádných objektů, ale do proměnné vyber2 se uloží právě vybrané entity. Ty pak můžeme pomocí !vyber2 znovu vybrat a manipulovat s nimi.

Pokud potřebujeme znovu vybrat poslední výběr (aniž bychom si ho uložili do proměnné pomocí funkce ssget) zadáme na výzvu po výběru objektů pr (previous) ( v lokalizovaném AutoCADu s poddtržítkem _pr). Potřebujeme-li vybrat do výkresu naposled přidanou entitu napíšeme na výzvy po výběru objektů la  / _la (last). Potřebujeme-li vybrat všechny viditelné objekty můžeme namísto výběru myší z jednoho rohu obrazovky do druhého napsat all / _all.

Potřebujeme-li si do proměnné uložit bod, použijeme na to funkci getpoint. Syntaxe je následující:

(setq pt (getpoint "Vyberte bod"))

anebo pokud Vám nevadí, že budete ochuzeni o výzvu k vybrání bodu tak jednoduše (setq pt (getpoint))

image_thumb[29]

image_thumb[31]

Tímto způsobem uložíme souřadnice bodu do proměnné pt. Ověřit si to můžeme zapsáním !pt do příkazové řádky. Výsledek bude podobný tomuto

image_thumb[33]

Proměnnou pt pak můžeme využít pokaždé, když budeme AutoCADem vyzváni k zadání bodu .

pátek 12. června 2015

Využití LISPu v příkazové řádce AutoCADu 1.

V AutoCADu se po léta vyskytuje programovací jazyk AutoLISP a od verze 2000 VisualLISP (šel doinstalovat i do verze R14). Jazyk se dnes již nevyvíjí a z dnešního pohledu má spoustu nevýhod. Jeho obrovskou výhodou ale je, že na jednom řádku vyřešíte to, co v C# na deseti, což souvisí s jeho nedokonalostí.

Pro začátek stačí o LISPu vědět jen pár věcí:

- LISP není case sensitive - nerozlišuje tedy velká a malá písmena

- každá funkce musí být uzavřena v závorkách

- LISP používá takzvaný dynamický typový systém. To znamená, že v LISPu není třeba deklarovat datový typ proměnných a že v proměnné mohu mít jednou uloženo celé číslo a pak do ní vložit třeba text.

- pro dekladrování proměnné slouží funkce setq

napišme do příkazové řádky například tuto sekvenci a odešleme ji Enterem:

(setq a 550 b 98)

image

Tímto řádkem jsme do proměnné "a" uložili hodnotu 550 a do proměnné "b" hodnotu 98. Můžeme si to ověřit zadáme-li do příkazového řádku !a nebo !b

image

Nakresleme si teď nějakou entity a zadejme příkaz pro posun nebo kopírování. Vybereme objekt, vyberme bod (base point), zadejme směr a na výzvu po vzdálenosti místo čísla napišme “!a”. Entita se posune či zkopíruje o 550 jednotek.

image

image

Vyberme znovu nějakou entitu zadejme příkaz pro rotaci, vyberme střed otáčení a na výzvy po velikosti úhlu zadáme místo číselné hodnoty "!b". Entita se otočí o 98° (jsou-li jako úhlové jednotky nastaveny stupně). Proměnné jsou platné po celou dobu otevření výkresu a můžeme je tedy kdykoliv použít.

image

image

Nyní napíšeme do příkazového řádku toto:

(setq vzd (getdist "Vyber dva body"))

image

Na výzvu "Vyber dva body" vybereme dva body a vzdálenost mezi nimi se nám uloží do proměnné vzd. Výzva za getdist není povinná a body můžete vybrat i bez výzvy. Napíšeme-li teď do příkazové řádky !vzd objeví se vzdálenost, která je v této proměnné uložena a tu pak můžeme používat v dalších příkazech. Asi není nutno nějak obšírněji vysvětlovat, že getdist znamená get distance.