Vytisknout stránku | Zavřít okno

Zamena Bloku

Vytištěno z: CAD Fórum
Kategorie: Autodesk - stavebnictví, strojírenství, CAD/GIS
Název fóra: AutoCAD
Popis fóra: Otázky kolem aplikací AutoCAD a AutoCAD LT, AutoCAD 360, prohlížečů, DWG a DWF, Design Review, Navisworks, nadstavby, 123D, A360 a cloud Autodesk 360
URL: https://www.cadforum.cz/forum/forum_posts.asp?TID=4125
Datum vytištění: 25.dub.2026 v 15:14


Téma: Zamena Bloku
Odeslal: Peter M.
Předmět: Zamena Bloku
Datum odeslání: 02.bře.2007 v 12:18
Zdravim panove,
 opet se vracim k otazce BLOKY - mam vykres s 250ti stejnymi bloky a 100 z nich potrebuju vymenit za jiny blok.
 Nechcesemi rucne kazdy obklikavat - chci udelat jeden vyber a tyto vybrane hromadne zamenit za jiny blok.

 Je na to nekde funcke, nebo jak na to?

-------------
Peter M.



Odpovědi:
Odeslal: pavelstyl
Datum odeslání: 02.bře.2007 v 12:45
Jestli tomu rozumím, tak chcete:
 - oknem vybrat některé bloky ve výkrese
 - a tyto bloky vyměnit za nějaký jiný blok (již existující ve výkrese)
 - a aby zachoval vkládací bod, měřítka, otočení, ...
 
Pokud tomu dobře rozumím, tak je to lisp na 10 řádků.
Chcete ho napsat ?
 
Pavel Štyl


Odeslal: Ferdinand
Datum odeslání: 02.bře.2007 v 14:02
Z těch 250-ti se těch 100 jmenuje jak? Je to např. BL0051, BL0052, BL0053, ... anebo je to např SKL1, BAT15, PRO92, ... anebo je to jediný stejný název pro všechny např. VYTBOD, anebo je to úplně jinak? Ty bloky jsou všechny úplně identické (tj. každý obsahuje ty stejné entity se stejnými vlastnostmi)?

-------------
-FerTh-


Odeslal: Peter M.
Datum odeslání: 02.bře.2007 v 14:03
No to by bylo uzasne. Clap  Nemusi se vybirat oknem, staci jednotlive - kliknutim - protoze nejsou vedle sebe, ale ruzne rozmistneny.

 Takze to co vyberu at se zameni za jiny blok.

-------------
Peter M.


Odeslal: Peter M.
Datum odeslání: 02.bře.2007 v 14:05
Původně odeslal(a) Ferdinand Ferdinand napsal(a):

Z těch 250-ti se těch 100 jmenuje jak? Je to např. BL0051, BL0052, BL0053, ... 


Je to 250 stejnych bloku (stejny nazev) a jen ty, co vyberu at se zameni za jiny blok.


-------------
Peter M.


Odeslal: Ferdinand
Datum odeslání: 02.bře.2007 v 14:20
Tak na to je někde zde už hotový lispík pro záměnu bloku jiným blokem...jakpak se to jmenovalo?...už nevím, zkuste pohledat.

-------------
-FerTh-


Odeslal: Mantlík
Datum odeslání: 02.bře.2007 v 14:20
Třeba pomůže tahle stará rutinka (autor neznámý). Jednoduchá, ale funguje. Zachová vztažný bod, měřítko i natočení
 
http://www.cadforum.cz/forum/uploads/20070302_141739_REBLOK.LSP - uploads/20070302_141739_REBLOK.LSP

 

Omezení - musíte mít nový blok načtený ve výkresu

               - musíte jeho název vypsat ručně (aspoň poprvé, pokud si ho při vícenásobných nahrazováních uložíte do schránky, je to rychlejší)
               - můžete najednou nahradit jen jeden blok
 
A možná někoho napadne i úprava (třeba že místo názvu bloku se ukáže na už použitý blok) .......
 
 
 


-------------
J. Mantlík



Odeslal: Peter M.
Datum odeslání: 02.bře.2007 v 14:42
Vyzkousim - snad mi to nezmeni i ty ostatni bloky. Zkousel jsem z ET Replace BL. w. an. BL, ale to menilo vsechny bloky se stejnym nazvem Confused ....

-------------
Peter M.


Odeslal: pavelstyl
Datum odeslání: 02.bře.2007 v 14:49

Narychlo zplácnuté, ale myslím, že to dělá co potřebujete. Je to "ukazovací", takže se nic nepíše ručně.

První výzva je výběr bloku, který chci vyměnit. Když něco vyberu budou se potom vybírat pouze bloky toho jména. Když dám ENTER, vyberu jakýkoliv blok.

Druhá výzva je blok, kterým budu nahrazovat a musí již být vložen ve výkrese

No a potom vyberu bloky, které chci vyměnit.
 
(defun C:VYBLOK (/ bl1 bl2 name2 i eg)
 (setq bl1 (entsel "\nVyber blok, který budeme nahrazovat (nebo stiskni ENTER): "))
 (setq bl2 (entsel "\nVyber blok, kterým budeme nahrazovat: "))
 (setq name2 (cdr (assoc 2 (entget (car bl2)))))
 (if bl1
  (setq vyber (ssget (list (cons  -4 "<AND") (cons 0 "INSERT") (assoc 2 (entget (car bl1))) (cons -4 "AND>") )))
  (setq vyber (ssget (list (cons 0 "INSERT"))))
 )
 (if (null vyber)
  (progn
   (alert "\nNic nebylo vybrano.")
   (exit)
  )
 )
 (setq i 0)
 (while (< i (sslength vyber))
  (setq eg (entget (ssname vyber i)))
  (setq eg (subst (cons 2 name2) (assoc 2 eg) eg))
  (entmod eg)
  (setq i (1+ i))
 )
 (princ)
)
 
 
Pavel Štyl


Odeslal: PepaR
Datum odeslání: 03.bře.2007 v 14:08
Něco podobného se tu již řešilo, viz nástroj http://www.cadforum.cz/cadforum/dl_file.asp?ID=633 - BLKREDEF.LSP .

-------------
PepaR
https://www.jremes.cz" rel="nofollow - jremes.cz | https://www.stavlab.cz" rel="nofollow - stavlab.cz



Vytisknout stránku | Zavřít okno