Zobrazit plnou verzi příspěvku: Efektivna praca s velkym poctom blokov
Dobrý deň,chcem sa spýtať ako čo najefektívnejšie môžem vytvoriť cca 1000 dynamických blokov v situácii:Potrebujem vytvoriť bloky s názvami: A(1), A(2), A(3), ...., A(10), B(1), B(2), B(3), ...., B(10), C(1), ...., C(10), atď., pričom bloky A(1), B(1), C(1), atď. majú rovnakú geometriu (aj "dynamiku"), A(2), B(2), C(2), atď. majú opäť rovnakú geometriu (aj "dynamiku"), A(3), B(3), C(3), atď. zase rovnakú geometriu (aj "dynamiku") atď...Všetkých 1000 blokov má cca 10 rovnakých atribútov, pričom hodnota v 6 atribútoch je rovnaká pre všetkých 1000 blokov a hodnoty v ostatných 4 atribútoch sú rovnaké pre 10 blokov s rovnakým názvom (nie aj číslom), teda pre A(1), A(2), A(3), ..., A(10) a bloky B(1), B(2), B(3), ...., B(10) majú opäť rovnaké hodnoty aj v spomínaných 4 atribútoch, atď.Dúfam, že problém som opísal dostatočne zrozumiteľne.Za rady Vám vopred ďakujem
Vladimír Michl
22.11.2014, 15:39
Nebude jednodušší vkládat jen jeden blok a v paletě/menu si přednastavit hodnotu oněch proměnných/fixních atributů?
Ďakujem za odpoveď, no tak to odo mňa nechcú. Mám za úlohu vytvoriť týchto cca 1000 blokov s pevne danými atribútmi a geometriou. Aby sa nemuselo nič dopĺňať ani dopisovať/prepisovať. Aby si mohli jednotlivé bloky vkladať s tým, že o hodnoty jednotlivých atribútov sa už nemusia zaujímať, pretože sú vyriešené a pevne dané.
Jestli to dobře chápu, tak by vám stačilo vytvořit 10 bloků (nebo 1 blok s deseti stavy viditelnosti?) s různými dynamickými vlastnostmi a jejich různým nastavením vytvoříte 1000 bloků, které pak uložíte pod specifickými názvy. Takže asi máte dvě možnosti.... buď to budete prostě 14 dní klikat ručně, což vás nepochybně bude velmi bavit, ale určitě se při to nic nového nenaučíte. Nebo týden řešit jak to zautomatizovat, nevím jestli vás to bude víc bavit, ale určitě se i něco přiučíte. A myslím, že by to ani nemuselo být tak složité... Předně - dyn. blokům moc nerozumím.., tak se kdyžtak omlouvám, když moje domněnky nebudou úplně exaktni... Problém číslo1) vyřešit jak v autocadu zautomatizovat nastavování dyn. parametrů bloků. Myslím, že na to není standardní příkaz v autocadu. Kdysi jsem to potřeboval, tak jsem zjistil, že to umí poměrně snadno vba, a ačkoli vba neumím, tak s několika vzory a radami jsem to dal do kupy a dodnes funguje - mohu poskytnout kód (dnes nutný vbaenabler)Nebo se to nechá udělat lispem. Na netu existují procedury; dají se dohledat i nějaké prográmky z kterých by se to dalo odkoukat.. možná trochu složitější, ale i to by se dalo.Třeba jsou i jiné možnosti.. pro vás snazší.. nevím, možná pohledat na netu.2) no druhý krok už je snazší určitě, nebo snáze naučitelný.. udělat v excelu z nějaké tabulky stavů script, který pak proženete autocadem. Ten bude řešit načtení toho obecného bloku s nastavením vlastností dle bodu 1 a jeho uložení do nové bloku.Takže tak, to bych zkusil.Edit: Jó a ještě existuje třetí možnost.. buď jako doplněk předchozím dvěma, nebo je nahrazující... Napsat na fóra typu theswamp.org, forums.autodesk.com.. kde je spousta až nevěřícně ochotných lidí, kteří rádi poradí.. někdy i celé naprogramují...
johny2014-11-23 18:49:50
Ďakujem za rady, no nemám čas sa učiť VBA, LISP, ... potrebujem čo najskôr mať aspoň zopár tých blokov spravených. Viete mi povedať či je možnosť aspoň tým blokom A(1), A(2), ..., A(10) zmeniť hodnoty jednotlivých atribútov naraz? (aby som nemusel každý jeden otvárať a prepisovať jednotlivé atribúty v prípade, že budem musieť bloky kopírovať a prepisovať názvy blokov s rovnakou geometriou)Ďakujem.
Vladimír Michl
24.11.2014, 07:43
Sice si pořád myslím že by bylo jednodušší upravit vkládání než definice, zde je utilita na rychlou úpravu hodnoty konstantních atributů v bloku (mj. jdou upravovat také příkazem BATTMAN). [CODE](defun editattdef (blok tag val / ent entdata) (if (setq ent (tblobjname "block" blok)) ; existuje? (while (setq ent (entnext ent)) ; projdi definici (if (and (= (cdr (assoc 0 (setq entdata (entget ent)))) "ATTDEF") ; ATTDEF? (= (strcase (cdr (assoc 2 entdata))) (strcase tag)) ; editovaný? (= (logand 2 (cdr (assoc 70 entdata))) 2) ; konstantní? ) (entmod (subst (cons 1 val) (assoc 1 entdata) entdata)) ; uprav ) ; if ) ; while ))[/CODE] volá se příkazem: [CODE](editattdef "MujBlok" "NazevAtributu" "JehoNovaHodnota")[/CODE]
Ďakujem, skúsim to pomocou tohto poriešiť...
- Vložte si bloky do výkresu, tak ako ste ich vytvorili.- pomocou export atribútov z Express tools si ich vyexportujete do *.txt,- následne Select All a Ctrl+C Ctrl+V do *.xls- v Exceli si ich upravíte Excelovskými nástrojmi,- a potom si ich naspäť okopírujete do *.txt- a pomocou Importu atribútov z Express tool prepíšete v AutoCAD výkrese. Tip: Texty, ktoré sa nemenia dajte ako preset, alebo obyčajný text v bloku a ostatné ako meniteľný atribút
Ešte raz čítam Vašu otázku a napadlo ma, že jednoduchšie je nastaviť atribúty priamo cez Properties dialog (Atribúty, ktoré budú mať rovnaké hodnoty, nech majú aj rovnaký názov atribútu)
Myslíte cez properties v Editore blokov? Ale to by som musel každý jeden otvoriť a prepísať nie? (1000 blokov - v každom zmeniť 4 hodnoty atribútov = 4000 )
Cez okno Vlastnosti (Properties) na príkazovom riadku _PROPERTIES
Definícií bloku je len zopár a vložení bloku je množstvo.Preto aby sa využili rovnaké vlastnosti jedného celku, v tomto prípade vzhľad objektu a nastaviteľná hodnota textu, t.j. hodnota atribútov, preto sa použije blok vo výkrese.Ak ukážete ako vyzerajú tie bloky, skôr Vám poradíme, koľko definícií budete potrebovať.
Ještě jeden pokus.. když nepotřebujete měnit dynamicke vlastnosti je to jednodušší.Záměr: Mám 10 bloků, každý z nich musím rozkopírovat 100x, přejmenovat a pak jim po různu přenastavovat atributy - kdyžtak mě opravte, jestli jsem to opět nepochopil.V příloze je utilita, která VŠECHNY bloky vložené ve výkrese přejmenuje na BLOCK-1, BLOCK-2... atd. 1) potřebuju získat 100 kopií deseti bloků s unikátními názvy. Takže těch 10 rozkopíruju 100x třeba pod sebe. Pak vždy těch 100 stejných bloků vyberu a vložím do samostatného výkresu (10x). V každém tom výkresu to projedu tou utilitou a dostanu bloky na BLOCK-1 až BLOCK-100. 2) přejmenování. V excelu udělám jednoduchý skrip na hromadné přejmenování bloků přičemž výsledkem na každém řádku bude text (snad je správná syntaxe, netestováno):_-rename _block "BLOCK-1" "A(1)" _-rename _block "BLOCK-2" "B(1)"atd.proženu to každým výkresem v příslušném formátu3) přenastavení atributů - jak doporučovala Buba udělám to přes Export-Excel-Import Atributů.4) všechny bloky vyexportuju do samostaných výkresů.. Použiju jednu z utilit tady:http://www.theswamp.org/index.php?topic=13436.0uploads/1045/blr.lsp
johny2014-11-27 12:01:33
[QUOTE=johny]_-rename _block "BLOCK-1" "A(1)" _-rename _block "BLOCK-2" "B(1)"atd.[/QUOTE]Ukazuje se, že to není správná syntaxe. Zatím mi funguje jen když za těmi texty dávám Enter a nerozhoduje jestli je to v uvozovkách nebo není. Původně jsem myslel že těmi uvozovkami se zbavím Enterů.. lze se jich nějak zbavit? Díky-rename block OldName1NewName1-rename block OldName2NewName2
johny2014-11-27 12:08:20