Děkujeme za účast na konferenci CADfórum 2025 - podívejte se na reportáž
Přes 120.000 registrovaných u nás, celkem 1.107.000 registrovaných (CZ+EN), přes 53.000 CAD/BIM bloků.
Vyzkoušejte nový přesný Kalkulátor,
vylepšený Převodník jednotek a
proměnné prostředí AutoCADu.
Diskuzní fórum, poradna
?CAD diskuze, rady, výměna zkušeností
Veřejné diskuzní fórum k CAD aplikacím - ptejte se na libovolné otázky týkající se oboru CAx, podělte se o vaše znalosti a zkušenosti s programy AutoCAD, Inventor, Revit, Fusion, 3ds Max, Vault a s dalšími CAD/BIM/PDM aplikacemi.
Zaregistrujte se nebo se přihlašte a zašlete váš příspěvek do odpovídajícího fóra. Viz další informace o CAD Fóru. Nechcete se registrovat? Zeptejte se v naší Facebook poradně.
Fórum nenahrazuje technický support firmy ARKANCE (CAD Studio) - přímá podpora pro zákazníky funguje na helpdesk.arkance-systems.cz
|
Odpovědět
|
archiv |
| Autor | |
Petr75
TOP uživatel
Přihlášen: 16.úno.2007 Lokalita: ČR (JM) Používám: AutoCAD LT 2025, 2026 Stav: Offline Bodů: 446 |
Téma: pořadí příkazů v makrechZasláno: 29.říj.2012 v 11:04 |
|
Mám makro:
^C^C_setvar;USERI2;$M=$(+,1,$(getvar,USERI1))^M_setvar;USERI3;$M=$(+,2,$(getvar,USERI1))^M_-insert blok1.dwg \1 1 0 $M=$(getvar,USERI1)^M$M=$(getvar,USERI2)^M$M=$(getvar,USERI3)^M_-insert blok2.dwg @0,-2000 1 1 0 $M=$(getvar,USERI1)^M$M=$(getvar,USERI2)^M$M=$(getvar,USERI3)^M_setvar;USERI1;$M=$(+,3,$(getvar,USERI1)) Podle mně by se měla nastavit proměnná USERI2 na USERI1+1 a USERI3 na USERI1+2, vložit blok1 na souřadnice zadané při vstupu, s měřítkem 1 a natočením 0. blok má 3 atributy a chci mu postupně předat čísla z USERI1, USERI2 a USERI3 Toto se opakuje pro další bloky (zde uvádím jen 2, ale budu jich vkládat více). Na konec se zvýší proměnná USERI1 o 3. Z nějakého mně neznámého důvodu se změna proměnných USERI2 a USERI3 projeví až po skončení makra. Takže 2. a 3. atribut se nastaví s číslem o 3 menší. Při prvním použití makra, nejsou USERI2 a USERI3 definovaná, takže se použije 0. V čem je chyba? Sice můžu napsat makro takhle: ^C^C_-insert blok1.dwg \1 1 0 $M=$(getvar,USERI1)^M$M=$(+,1,$(getvar,USERI1))^M$M=$(+,2,$(getvar,USERI1))^M_-insert blok2.dwg @0,-2000 1 1 0 $M=$(getvar,USERI1)^M$M=$(+,1,$(getvar,USERI1))^M$M=$(+,2,$(getvar,USERI1))^M_setvar;USERI1;$M=$(+,3,$(getvar,USERI1)) Ale to budu muset stejnou hodnotu víckrát počítat. |
|
![]() |
|
Sedláček
TOP uživatel
Přihlášen: 15.dub.2005 Lokalita: Czech Republic Používám: AutoCad 2024 LT Stav: Offline Bodů: 384 |
Zasláno: 29.říj.2012 v 14:09 |
|
Zde by měly pomoci "uvozovky". Nejsem tak zběhlý, abych je bez ladění doplnil přesně, ale zkuste je doplnit viz citace.
|
|
![]() |
|
Sedláček
TOP uživatel
Přihlášen: 15.dub.2005 Lokalita: Czech Republic Používám: AutoCad 2024 LT Stav: Offline Bodů: 384 |
Zasláno: 29.říj.2012 v 14:11 |
|
Ještě pro doplnění - pro ladění DIESELu nastavte proměnné:
menuecho 8
macrotrace 1 |
|
![]() |
|
Petr75
TOP uživatel
Přihlášen: 16.úno.2007 Lokalita: ČR (JM) Používám: AutoCAD LT 2025, 2026 Stav: Offline Bodů: 446 |
Zasláno: 29.říj.2012 v 15:39 |
|
S přidanými uvozovkami to nefunguje vůbec.
|
|
![]() |
|
Sedláček
TOP uživatel
Přihlášen: 15.dub.2005 Lokalita: Czech Republic Používám: AutoCad 2024 LT Stav: Offline Bodů: 384 |
Zasláno: 29.říj.2012 v 16:34 |
|
Minule jsem se s tšmí uvozovkami nějak moc rozjel. Asi by měly stačit:
[QUOTE=Petr75]Mám makro:
^C^C_setvar;USERI2;"$M=$(+,1,$(getvar,USERI1))^M_setvar;USERI3;$M=$(+,2,$(getvar,USERI1))"^M_-insert blok1.dwg \1 1 0 $M=$(getvar,USERI1)^M$M=$(getvar,USERI2)^M$M=$(getvar,USERI3)^M_-insert blok2.dwg @0,-2000 1 1 0 $M=$(getvar,USERI1)^M$M=$(getvar,USERI2)^M$M=$(getvar,USERI3)^M_setvar;USERI1;$M=$(+,3,$(getvar,USERI1)) |
|
![]() |
|
Petr75
TOP uživatel
Přihlášen: 16.úno.2007 Lokalita: ČR (JM) Používám: AutoCAD LT 2025, 2026 Stav: Offline Bodů: 446 |
Zasláno: 30.říj.2012 v 07:36 |
|
Děkuji za snahu, ale takhle to také nefunguje.
|
|
![]() |
|
Sedláček
TOP uživatel
Přihlášen: 15.dub.2005 Lokalita: Czech Republic Používám: AutoCad 2024 LT Stav: Offline Bodů: 384 |
Zasláno: 30.říj.2012 v 09:12 |
|
Tak ještě jednou, tentokrát jsem to i vyzkoušel a mělo by to fungovat. Pokud ne, tak si zapněte ty výše zmiňované proměnné (menuecho=8, macrotrace=1) a případně vystavte co vám bude Autocad hlásit.
|
|
![]() |
|
Petr75
TOP uživatel
Přihlášen: 16.úno.2007 Lokalita: ČR (JM) Používám: AutoCAD LT 2025, 2026 Stav: Offline Bodů: 446 |
Zasláno: 30.říj.2012 v 13:18 |
|
Tentokrát to již funguje. Přidal jsem ještě další 2 bloky, ale asi mám makro již moc dlouhé.
Udělal jsem ještě zkrácení: - _setvar;USERIx jsem zkrátil na USERx - ^M jsem nahradil znakem ; Ale pořád to je dlouhé. Dočetl jsem se, že makro má omezení na 256 znaků, ale délka výrazu $M=... se počítá až vyhodnoceného výraz. Škoda, že v nápovědě AutoCADu jsou minimální informace u makrech a výrazech DIESEL a na internetu něco najít, je docela obtížné. |
|
![]() |
|
Sedláček
TOP uživatel
Přihlášen: 15.dub.2005 Lokalita: Czech Republic Používám: AutoCad 2024 LT Stav: Offline Bodů: 384 |
Zasláno: 30.říj.2012 v 16:53 |
|
Jako ukázka využití uvozovek v DIESELu se mi líbí následující makro. Po zadání 4 bodů se mezi mimi vykreslí čtyřúhelník. Před spuštěním makra je třeba zapnout _SNAP (KROK). Před použitím výraz v nějakém textovém editoru (NOTEPADu) převeďte do jednoho řádku.
^Cid;\$m=id;\$m=id;\$m=id;\$m=_line;$(getvar,lastpoint);"$(getvar,lastpoint);;
_line;$(getvar,lastpoint);""$(getvar,lastpoint);;_line;$(getvar,lastpoint);""""$(getvar,lastpoint);;
_line;"""""""$(getvar,lastpoint);"""""""$(getvar,lastpoint);;"""""""^C Upravil Sedláček - 30.říj.2012 v 17:06 |
|
![]() |
|
Petr75
TOP uživatel
Přihlášen: 16.úno.2007 Lokalita: ČR (JM) Používám: AutoCAD LT 2025, 2026 Stav: Offline Bodů: 446 |
Zasláno: 30.říj.2012 v 22:50 |
|
Zajímavé. Ke konci jsem se v těch uvozovkách začal ztrácet.
|
|
![]() |
|
Sedláček
TOP uživatel
Přihlášen: 15.dub.2005 Lokalita: Czech Republic Používám: AutoCad 2024 LT Stav: Offline Bodů: 384 |
Zasláno: 01.lis.2012 v 15:52 |
Když jsem před lety experimentoval s DIESELem tak jsem omezení na délku znaků řešil tak, že jsem část kódu uložil pomocí _SETENV (ukládá se do REGISTRY Windows) při tvorbě makra a pak jej v makru načetl pomocí _GETENV. Fungovalo to ale pouze v Autocadu LT - plná verze neznala příkazy _SETENV a _GETENV (bylo to v A2002LT - jak to je v nových verzích nevím). Opět bylo nutno experimentovat s uvozovkama, aby načítání proběhlo až v době, kdy už bude část makra zpracována (po několika průchodech interpretem DIESELu).
|
|
![]() |
|
Vladimír Michl
Profil člena
Odeslat soukromou zprávu
Najít příspěvky člena
Navštívit stránky člena
Přidat do seznamu známých
Moderátor
ARKANCE Přihlášen: 09.zář.2004 Lokalita: ČR (JČ) Používám: Implementujeme řešení Autodesk Stav: Offline Bodů: 22041 |
Zasláno: 01.lis.2012 v 16:14 |
![]() |
|
Sedláček
TOP uživatel
Přihlášen: 15.dub.2005 Lokalita: Czech Republic Používám: AutoCad 2024 LT Stav: Offline Bodů: 384 |
Zasláno: 02.lis.2012 v 13:35 |
|
Pokud máte po přidání dalších dvou bloků makro již moc dlouhé, je možné váš algoritmus jinak.
Např. vložit nejprve bloky s nadefinovanými (jedinečnými) texty atributů (aaa bbb ccc) a ty pak zaměnit za požadovanou hodnotu pomocí příkazu _-ATTEDIT:
^C^C_-insert blok1.dwg \1 1 0 aaa;bbb;ccc;_-insert blok2.dwg @0,-200 1 1 0 aaa;bbb;ccc;_setvar;USERI2;$M=$(+,1,$(getvar,USERI1))^M_setvar;USERI3;$M=$(+,2,$(getvar,USERI1)) _-attedit n n;;;aaa;aaa;"""$M=$(getvar,USERI1)""";_-attedit n n;;;bbb;bbb;"""$M=$(getvar,USERI2)""";_-attedit n n;;;ccc;ccc;"""$M=$(getvar,USERI3)""";_setvar;USERI1;$M=$(+,3,$(getvar,USERI1)) (graphscr)
Po odladění makra ještě doporučuji doplnit na začátek "hvězdičku" * pro opakování makra:
*^C^C_-insert ....
|
|
![]() |
|
Petr75
TOP uživatel
Přihlášen: 16.úno.2007 Lokalita: ČR (JM) Používám: AutoCAD LT 2025, 2026 Stav: Offline Bodů: 446 |
Zasláno: 05.lis.2012 v 10:13 |
|
Nejdelší makro mám zatím se 4 bloky a 3x4 atribut. Hodnoty jsem počítal u každého atributu. Makro je sice delší, ale pro vyhodnocení je "kratší" a funguje. Vkládám to sem na více řádcích kvůli lepšímu přehledu, ale jinak to je jeden řádek.
^C^C _-insert Sch_4K.dwg \1 1 0 $M=$(getvar,USERI1);$M=$(+,1,$(getvar,USERI1));$M=$(+,2,$(getvar,USERI1));$M=$(+,3,$(getvar,USERI1)); _-insert Nar_4K.dwg @0,-2500 1 1 0 $M=$(getvar,USERI1);$M=$(+,1,$(getvar,USERI1));$M=$(+,2,$(getvar,USERI1));$M=$(+,3,$(getvar,USERI1)); _-insert Pud_4K.dwg @0,-1900 1 1 0 $M=$(getvar,USERI1);$M=$(+,1,$(getvar,USERI1));$M=$(+,2,$(getvar,USERI1));$M=$(+,3,$(getvar,USERI1)); _-insert Ram_4K.dwg @0,-1900 1 1 0 _setvar;USERI1;$M=$(+,4,$(getvar,USERI1)) Ještě bych se chtěl zeptat, jak to funguje s vícenásobnými uvozovkami. |
|
![]() |
|
Pro technickou podporu CAD
kontaktujte Helpdesk
Odpovědět
|
|
| Přejít na fórum | Oprávnění fóra ![]() Nemůžete vytvářet nová témata v tomto fóru Nemůžete odpovídat na témata v tomto fóru Nemůžete vymazávat vaše příspěvky v tomto fóru Nemůžete upravovat vaše příspěvky v tomto fóru Nemůžete vytvářet ankety v tomto fóru Nemůžete hlasovat v anketách v tomto fóru |
Stránka byla vygenerována za 0,338 sekund.




pořadí příkazů v makrech
Možnosti tématu


Petr75 napsal(a):
