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.

úterý 2. června 2015

Zdravotechnika v AMEP–první výsledky

I když je katalog Českých tvarovek a trubek pro vodu a kanalizaci zatím poměrně málo rozsáhlý, již nyní se s jeho pomocí dají dělat jednodušší projekty včetně výpisů. Níže je několik printscreenů projektu vody a kanalizace pro jeden menší bytový dům, který jsem dělal v AMEP právě pomocí katalogu, který si můžete stáhnout zde.

image

ZTI03

ZTI09

ZTI05

ZTI04

ZTI06

ZTI07

ZTI10

ZTI08

image

 

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]

pátek 22. května 2015

Sady vlastností kanalizačních tvarovek (Property Set Definitions)

K tvarovkám a trubkám se s vložením do výkresu automaticky připojují sady vlastností (Property Set Definition - dále budu používat zkratku PSD) názvů jako PipeFittingElbowStyles, PipeFittingLateralStyles, PipeFittingTransitionStyles a podobně. Když se na ně podíváme podrobně ve Style Manageru zjistíme, že na vlastnostech je zámek a nedají se editovat.

clip_image001

Sada vlastností PipeFittingTransitionStyles

Tyto vlastnosti pocházejí přímo z katalogu a kromě vlastnosti SupplierName, která se nedá potlačit se jejich zobrazení řídí tím, co je v katalogu nadefinované.

V katalogu jsem tedy definoval tyto vlastnosti

DNozn - značení profilu (viz jeden z předchozích příspěvků)

kod - kód výrobku podle katalogu výrobce

zkratka - což je například u kanalizačních trub HT HTB u kolena, HTEM u trubky, HTR u redukce

clip_image002

Koleno

clip_image003

Redukce

clip_image004

Odbočka

clip_image005

Trubka

Tyto vlastnosti použijeme v PSD aplikované na objekty jednotlivých tvarovek a trubek.

Zatímco PSD aplikovaných na styl a vkládaných z katalogu je několik podle typu tvarovky, PSD aplikovaný na objekt je vzhledem k dalšímu vypisování a popisování vhodné mít jen jeden. Jak ovšem docílit nastavení takové vlastnosti, kterou budeme moci později vypisovat u jednotlivých tvarovek a bude vypadat třeba následovně: HTB 45°DN 125 (u kolena) nebo HTR DN 100/50 u redukce? Jak je vidět u některých tvarovek potřebujeme vypsat úhel u jiných ne, u redukcí a odboček budou dvě hodnoty DN, u kolem jen jedno … a to vše potřebujeme "nacpat" do jedné vlastnosti, kterou budeme později vypisovat v popisce nebo ve sloupci tabulky.

Ve Style manageru v Documentation object si založíme novou PSD, která se bude aplikovat na objekty typu Pipe Fittings

clip_image006

Do nově vytvořené PSD si vložíme několik automatických vlastností. Já jsem použil tyto:

NominalConnectionDiameter je skutečný - tedy ne vypisovaný průměr trubky

PartSizeName je název tvarovky včetně zkratky a průměru

PartType je vlastnost, ze které odečteme o jaký typ tvarovky se jedná (koleno, odbočka, redukce), a ketou budeme používat v dalších vlastnostech se vzorci jako filtr.

PathAngle je úhel kolen a odboček, u redukcí a ostatních přímých tvarovek nabývá hodnoty NA (not available)

clip_image007

Dále přidáme Tři vlastnosti se vzorci:

Automatická vlastnost Kod nám sesbírá kódy různých typů tvarovek do jedné vlastnosti pomocí procedury Select Case. Jak bylo zmíněno výše, má každá tvarovka podle svého typu svůj vlastní PSD. Vlastnost Kod tedy vypadá následovně:

Select Case "[PartType]"

Case "Lateral" RESULT = "[PipeFittingLateralStyles:kod]"

Case "Elbow" RESULT = "[PipeFittingElbowStyles:kod]"

Case "Tee" RESULT = "[PipeFittingTeeStyles:kod]"

Case "Transition" RESULT = "[PipeFittingTransitionStyles:kod]"

Case Else RESULT = "-"

End Select

Podobně vlastnost zkratka sesbírá označení tvarovek:

Select Case "[PartType]"

Case "Lateral" RESULT = "[PipeFittingLateralStyles:zkratka]"

Case "Elbow" RESULT = "[PipeFittingElbowStyles:zkratka]"

Case "Tee" RESULT = "[PipeFittingTeeStyles:zkratka]"

Case "Transition" RESULT = "[PipeFittingTransitionStyles:zkratka]"

Case Else RESULT = ""

End Select

clip_image008

Upozorňuji, že vzorce výše uvedené nelze vzít do schránky a do okna pro vzorec je zkopírovat. Názvy a vlastnosti PSD je nutno vložit přes okno Insert Property Definitions, jinak se požadované vlastnosti nebudou do vzorce načítat. To, že je vlastnost do vzorce vložena správně poznáte podle zašedlého pozadí.

Nejkomplikovanější vzorec bude ve vlastnosti, kterou jsem si nazval Label. Tato vlastnost se bude vypisovat do popisek u jednotlivých tvarovek a v mém podání vypadá následovně:

Select Case "[PartType]"

Case "Transition"

RESULT = "[PipeFittingTransitionStyles:zkratka]" & " DN[PipeFittingTransitionStyles:DNozn]"

Case "Elbow"

RESULT = "[PipeFittingElbowStyles:zkratka]" & " [PathAngle]°" & " DN[PipeFittingElbowStyles:DNozn]"

Case "Lateral"

RESULT = "[PipeFittingLateralStyles:zkratka] " & Replace ("[PathAngle]", "180;", "") &" °" & " DN[PipeFittingLateralStyles:DNozn]"

Case "Tee"

RESULT = "[PipeFittingTeeStyles:zkratka]" &" [PipeFittingTeeStyles:DNozn]"

Case Else

RESULT = "chyba"

End Select

V tomto vzorci se za sebe seřadí popisky, které mají pro danou tvarovku význam. Za upozornění stojí sekce definující popis odbočky, kde je třeba z vlastnosti PathAngle odstranit první úhel 180 a středník. Do PathAngle so totiž u odboček vypisují dva úhly oddělené středníkem. První úhel je ten, který svírá hlavní trouba (180°) a teprve druhý je úhel odbočky.

clip_image009

Po připojení PSD k objektům se nám pro každou tvarovku nyní vypisují správné hodnoty.

clip_image010

Koleno

 

clip_image011

Odbočka

 

clip_image012

Redukce

 

clip_image013

Čistič

 

clip_image014

Závěrem bych jen rád upozornil, že výše popsaný postup není jediný možný a k podobným nebo stejným výsledkům lze dospět i při jiném uspořádání sady vlastností a za použití jiných vzorců.

 

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]

pátek 15. května 2015

AutoCAD MEP – kreslení trubek

Při kreslení trubek je snad více než kdy jindy nutné dbát na správné nastavení vlastností v paletě Properties. Jak bylo zmíněno v jednom z předchozích příspěvků při kreslení trubky musíme vybrat jaký systém kreslíme (voda, kanalizace, drenáž…) a jaké tvarovky a trubky se nám budou do trasy, kterou budeme kreslit, vkládat.

MEP16Před samotným kreslením je třeba si ve Working Space vybrat Piping.

 

 

 

 

 

MEP17

Tím docílíme částečné změny Ribbon menu a na kartě Home se nám mimo jiné objeví ikona Pipe pro nakreslení trubky.

 

 

Po klepnutí na tuto ikonu se podívejme do palety Properties. Dejme tomu, že kreslíme kanalizaciMEP18

V položce System vybereme jeden ze stylů Pipe System Definitions, které výkres obsahuje – tedy to co kreslíme.

V položce Routing Preference vybereme jeden ze stylů -  tedy to jaké tvarovky se na to co kreslíme budu používat.

Dále vybíráme DN a to i u trubek ,které se značí vnějším průměrem D. V případě na obrázku odpovídá DN28.4 D32.

Cut Length zatím vynecháme a vrátíme se k ní později.

Elevation udává výšku v jaké potrubí kreslíme.

Justification je zarovnání a není k němu asi co dodávat. Jen zmíním to, že při redukování trubek pomocí nesouosých redukcí (a to je  u HT systému většinou) je třeba vléct jakoukoliv krajní stranu trubky. MEP19Jinými slovy cokoliv kromě Middle Center. V takovém případě se totiž AMEP pokusí vložit souosou redukci, kterou pro daný průměr systém nemusí obsahovat. Podobně to platí i naopak jestliže potřebujeme vložit souosou redukci musíme vléct Middle Center.

K nastavení ohledně sklonu (Slope) upozorňuji, že při kladných hodnotách kreslíme směrem vzhůru, při záporných kreslíme směrem dolu.

Vytváření ohybů (Bend) se u kanalizace řeší pomocí kolen (Elbow) a nastaveno je používání tvarovek z katalogu. Úhly dvou trubek mezi kterými je osazeno koleno ale nemusí přesně odpovídat úhlu kolena, protože u každého hrdla je v katalogu nastaveno možné vyskřípnutí v hrdle až 3°.

V Connection Details se pouze zobrazí vlastnosti napojovacích bodů a běžně se jimi není třeba zabývat.

Při zadání tloušťky izolace do pole Insulation Thickness se kolem trubek a tvarovek nakreslí izolace zadané tloušťky.

Use Fitting Tolerance umožňuje nebo zakazuje vyskřípání v hrdlech do mezí, které jsou zadány v katalogu (u kanalizačních tvarovek je to 3°). Takže při zadání Yes je možné například pomocí kolena 45° spojit trubky, které mezi sebou svírají úhel 42° – 48°.

Join Direction je velmi důležitá při kreslení hrdlových trub, protože pomocí ní nastavujeme, zda kreslíme po toku (Male to Female) nebo proti toku (Female to Male).

Branch Fitting řídí, jakým stylem budou řešeny odbočky. Pokud v případě kanalizace v Branch Fittings není vybráno Wye (Lateral) only nebudou se při spojování trubek vkládat do vedení odbočky, ale spoje budou třeba svařované. Při nastavení vodovodního potrubí to bude pochopitelně jinak.

Klepnutím na Fitting Setings bychom se dostali do nastavení Routing Preference

Klepnutím na Preference se zase zobrazí dialogové okno, které je také přístupně z ribbon menu Manage přes nástroj Piping.

MEP20

MEP21Toto nastavení je vhodné provést ještě před samotným kreslením, protože se zde zadává formát značení sklonů potrubí (stupně, 1:x …), nastavení popisků, kterými se zatím nebudeme zabývat, ale hlavně na druhé kartě nastavení spojování trubek.

 

 

 

 

 

MEP22

Jeho podrobnější popis prozatím také vynecháme, jen zkontrolujeme, zdali je v první řádce u Bell Vybrán Plain End.

 

 

 

 

 

 

 

 

 

 

Všechna tato nastavení v paletě Properties zůstanou zachována i při novém startu AMEP dokud je nezměníte.

 

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