Česky English Deutsch
Přihlášení:
 právě čte: 1334 
300 Euro pro vás k AutoCADu LT
RSS tipy RSS kanál - CAD tipy
RSS diskuze RSS kanál - CAD diskuze

Diskuze Diskuzní fórum

NápovědaCAD diskuze

CAD Fórum   Aktivní témataAktivní témata  Zobrazit seznam členů fóraČlenové  KalendářKalendář  Prohledat fórum  NápovědaNápověda
  RegistrovatRegistrovat  PřihlásitPřihlásit
CAD programování
 CAD Fórum : Autodesk - stavebnictví, strojírenství, CAD/GIS : CAD programování
Téma: hromadný Refedit(Téma uzavřeno Téma uzavřeno) Poslat odpověď Poslat nové téma
Stránka  ze 3 Další >>
Autor Zpráva
Ferdinand
TOP uživatel
TOP uživatel


Přihlášen: 01.říj.2004
Lokalita: ČR (JM)
Online stav: Offline
Příspěvky: 1904

Používám:
AutoCAD2004 (EN) na Windows XP
bullet Téma: hromadný Refedit
    Zasláno: 12.čer.2006 v 11:59
Mám přes 1000 výkresů, každý obsahuje 3 až 8 bloků. Potřebuji hromadně převést v těchto blocích vlastnosti Bylayer na Byblock. V příkazu Refedit je výzva pro selekci konkrétního bloku (nelze zadat jméno bloku)...Lze na to vymyslet nějaký rozumný způsob mimo ruční editace?
-FerTh-
IP IP záznam
Rostislav Říha
TOP uživatel
TOP uživatel


Přihlášen: 03.říj.2004
Lokalita: ČR (Pha)
Online stav: Offline
Příspěvky: 1439

Používám:
ACA 2010
bullet Zasláno: 12.čer.2006 v 13:22

na toto je zpusob nikoli pres REFEDIT, ale pres LISP:

;;;Example of using Dean's program on all Inserts
;;;on a given layer

(defun c:PRAC (/ YN clr lyr)
   (initget "Yes No")
   (setq YN  (getkword "\nChange entities to layer 0 <No>: "))
   (setq clr (acad_colordlg 256))
   (setq lyr "Center")
   (BCOLORSSX YN clr lyr)
   (princ)
)

(defun BCOLORSSX (yn clr lyr / ss idx eg1 nam en2)
  (if (tblsearch "Layer" lyr)
    (progn (setq ss (ssget "x" (list (cons 0 "INSERT") (cons 8 lyr))))
    (setq idx 0)
    (repeat (sslength ss)
      (setq eg1 (entget (ssname ss idx)))
      (setq nam (cdr (assoc 2 eg1))
     en2 (cdr (assoc -2 (tblsearch "BLOCK" nam)))
      )
      (prblk en2 nam)
      (setq idx (1+ idx))
    )
    )
    (alert (strcat "Layer: " (strcase lyr) " not found!"))
  )
)

; TIP1127.LSP: BCOLOR.LSP    Change Block Color    (c)1995, Dean Langmaid
;**********Routine to change the color of a block**********
(defun C:BCOLOR (/ CLR CNT CMD EN1 EN2 EG1 EG2 NAM SS1 YN)
   (setq CMD (getvar "CMDECHO"))
   (setvar "CMDECHO" 0)
   ;---Get the block to modify---
   (while (null EN1)
      (setq EN1 (entsel "\nSelect block to modify: "))
      (if EN1
         (progn
             (setq EN1 (car EN1)
                EG1 (entget EN1)
             )
             (if (= (cdr (assoc 0 EG1)) "INSERT")
                (redraw EN1 3)
                (progn
                   (redraw EN1 3)
                   (setq EN1 nil)
                   (princ "\nItem selected is not a block.")
                )
             )
         )

         (princ "\nNothing selected.  Try again.")
      )
   )
   ;---Check for layer change---
   (initget "Yes No")
   (setq YN (getkword "\nChange entities to layer 0 <No>: "))
   ;---Check for color---

   (while (null CLR)
      (initget "? RED YELLOW GREEN CYAN BLUE MAGENTA WHITE BYLAYER BYBLOCK")
      (setq CLR (getint "\nColor for entities/? for list/<BYLAYER>: ")
         CLR (cond ((null CLR) 256)
             ((and (= (type CLR) 'INT) (< -1 CLR 257)) CLR)
           ((= CLR "?") (LSTCDS))
             ((= CLR "RED") 1)
             ((= CLR "YELLOW") 2)
             ((= CLR "GREEN") 3)
             ((= CLR "CYAN") 4)
             ((= CLR "BLUE") 5)
             ((= CLR "MAGENTA") 6)
             ((= CLR "WHITE") 7)
             ((= CLR "BYBLOCK") 0)
             ((= CLR "BYLAYER") 256)
             (t  (and (princ "\nBad value, try again.") nil))
      ))
   )


   ;---Loop through entities in the block---
   (setq NAM (cdr (assoc 2 EG1))
      EN2 (cdr (assoc -2 (tblsearch "BLOCK" NAM)))
   )
   (PRBLK EN2 NAM)

   (setvar "CMDECHO" CMD)
   (princ)
)
;*******Subroutine to change color and layer********
(defun PRBLK (EN2 NAM)
   (setq CNT 0)
   (while EN2
      (setq CNT (1+ CNT)
         EG2 (entget EN2)
         EN2 (entnext (cdr (assoc -1 EG2)))
      )
      (grtext -2 (strcat NAM " block entity # " (itoa CNT)))

      ;---Check for nested blocks---
      (if (= (cdr (assoc 0 EG2)) "INSERT")
         (progn
             (setq NM2 (cdr (assoc 2 EG2))
                EN3 (cdr (assoc -2 (tblsearch "BLOCK" NM2)))
             )
             (PRBLK EN3 NM2)
         )

         (progn
             ;---Check color---
             (if (assoc 62 EG2)
                (setq EG2 (subst (cons 62 CLR) (assoc 62 EG2) EG2))
                (setq EG2 (append EG2 (list (cons 62 CLR))))
             )
             (entmod EG2)

             ;---Check layer---
             (if (and (= YN "Yes") (/= (cdr (assoc 8 EG2)) "0"))
                (progn
                   (setq EG2 (subst (cons 8 "0") (assoc 8 EG2) EG2))
                   (entmod EG2)
                )
             )
         )
      )
   )
   ---Update all blocks in the drawing---
   (setq SS1 (ssget "X" (list (cons 2 NAM)));find all insertions of that block, if any
          CNT 0)
   (if SS1 (progn
         (setq C (- (sslength SS1) 1))  ; set counter
         (while (>= C CNT)  ; while entities in the list
      (setq EN1 (ssname SS1 CNT))
      (setq CNT (1+ CNT))
      (entupd EN1)
       );end while C
          );progn
   );if SS1
);defun

;********Subroutine to list the options*************
(defun LSTCDS ()
   (if textpage (textpage) (textscr))
   (princ "\n                                                             ")
   (princ "\n                   Color number   |   Standard meaning ")
   (princ "\n                  ________________|____________________")
   (princ "\n                                    |                      ")
   (princ "\n                           0        |      <BYBLOCK>     ")
   (princ "\n                           1        |      Red         &nb sp; ")
   (princ "\n                           2        |      Yellow        ")
   (princ "\n                           3        |      Green         ")
   (princ "\n                           4        |      Cyan          ")
   (princ "\n                           5        |      Blue          ")
   (princ "\n                           6        |      Magenta       ")
   (princ "\n                           7        |      White         ")
   (princ "\n                      8...255     |      -Varies-      ")
   (princ "\n                         256       |      <BYLAYER>     ")
   (princ "\n                                                       \n\n\n")
   (getint "\nColor number: ")
)

(princ "\n\tLoaded BCOLOR.LSP.  Type  BCOLOR  to begin.")
(princ); end bcolor.lsp

Rostislav Říha
IP IP záznam
Ferdinand
TOP uživatel
TOP uživatel


Přihlášen: 01.říj.2004
Lokalita: ČR (JM)
Online stav: Offline
Příspěvky: 1904

Používám:
AutoCAD2004 (EN) na Windows XP
bullet Zasláno: 12.čer.2006 v 15:55
Uf, děkuji (i Deanovi...), je to vyčerpávající. Zkusím - spouští se to patrně názvem rutiny PRAC. Kde jste to stáhl, pane Říha?
Výsledek:
1. PRAC.lsp - načten do výkresu
2. spouštím příkaz PRAC - je třeba zvolit Y, pak v dialogu kliknout na Byblock - naskočí hláška
Layer: CENTER not found!
- zavřu okno Alertu
3. spouštím příkaz BCOLOR - výzva k vybrání entity/bloku - je třeba zvolit Y, pak v dialogu kliknout na Byblock - provede změnu barvy všech entit vybraného bloku na Byblock
Moje idea:
Spustím rutinu - otevře Výkres1.dwg - rozpozná ve výkresu všechny bloky - vezme 1.blok - přemění vlastnosti pouze těch entit, které mají Color=Bylayer a Linetype=Bylayer na Color=Byblock a Linetype=Byblock, ostatní (tj. které jsou "natvrdo") nechá být - uloží blok - vezme 2.blok ... - uloží výkres - otevře Výkres2.dwg - ...
Bohužel to Refeditem nejde...

...ještě jsem na něco zapomněl:
před uložením výkresu by měl provést změnu Color a Linetype všech dílčích bloků ve výkresu=Byblock (to jen pro úplnost, hlavní problém jsem již uvedl)


Upravil Ferdinand - 12.čer.2006 v 16:54
-FerTh-
IP IP záznam
Rostislav Říha
TOP uživatel
TOP uživatel


Přihlášen: 03.říj.2004
Lokalita: ČR (Pha)
Online stav: Offline
Příspěvky: 1439

Používám:
ACA 2010
bullet Zasláno: 12.čer.2006 v 18:22

ufff, ja to dlouho nepouzil, spoustim myslim bud BCOLOR nebo pretazenim .lsp souboru do okna acadu - tento lisp mam proto, ze ho kdysi chtela nejaka nase profese a rikala, ze je s nim happy - ted jsem nasel jeste fixblock, to je pro vas asi lepsi:

 ;FIXBLOCK.LSP  [4/16/96]
 ;
 ; Copyright 1996 Manu-Soft Computer Services
 ;
 ; freeware by:
 ;   Owen Wengerd
 ;   Manu-Soft Computer Services
 ;   CompuServe:  71324,3252
 ;   owenw@nvi.nvi.net
 ;
 ; Load function, then enter FIXBLOCK to redefine selected blocks
 ;  so that all entities are on layer '0'.
 ;


(defun c:fixblock (/ ss cnt b donelist bredef)
  (defun bredef (b / e el)
    (setq e (tblobjname "BLOCK" b))
    (while e
      (setq el (entget e))
      (setq el (subst '(8 . "0") (assoc 8 el) el))
      (setq el (if (assoc 62 el) (subst '(62 . 0) (assoc 62 el) el) (append el '((62 . 0)))))
      (entmake el)
      (setq e (entnext e))
    )
    (if (/= "ENDBLK" (cdr (assoc 0 el))) (entmake '((0 . "ENDBLK") (8 . "0") (62 . 0))))
  )
  (if (> (logand (cdr (assoc 70 (tblsearch "layer" "0"))) 1) 0)
    (princ "\nLayer 0 must be thawed before running FIXBLOCK!\n")
    (if (setq ss (ssget '((0 . "INSERT"))))
      (progn
        (setq cnt (sslength ss))
        (while (>= (setq cnt (1- cnt)) 0)
          (if (not (member (setq b  (cdr (assoc 2 (entget (ssname ss cnt))))) donelist))
             (progn
               (bredef b)
               (setq donelist (cons b donelist))
             )
          )
        )
        (princ (strcat "\n" (itoa (sslength ss)) " blocks redefined\n"))
      )
      (princ "\nNo blocks selected!\n")
    )
  )
  (princ)
)
;End-of-file

Rostislav Říha
IP IP záznam
Rostislav Říha
TOP uživatel
TOP uživatel


Přihlášen: 03.říj.2004
Lokalita: ČR (Pha)
Online stav: Offline
Příspěvky: 1439

Používám:
ACA 2010
bullet Zasláno: 12.čer.2006 v 18:24

...kde jsem to stahl nevim, odhaduju, ze cadalog.

...byl bych rad, kdyby nekdo, kdo umi lisp, provedl "touchup" zaslanych lispu tak, aby delaly to, co asi potrebujem vsichni: vse do hladiny 0 a pak volba, jestli entity bylayer nebo byblock... pak to prehodit do kontextoveho menu pro entitu blok a zivot je krasny:)

Rostislav Říha
IP IP záznam
Jozef Lovás
Diskutér
Diskutér


Přihlášen: 19.říj.2005
Lokalita: Slovakia
Online stav: Offline
Příspěvky: 34

Používám:
AutoCAD 2009, AutoLisp, VzProCAD
bullet Zasláno: 12.čer.2006 v 18:42

TIP1127.LSP: BCOLOR.LSP je perfektný pretože rieši aj vnorené bloky, čo fixblock nerobí.

Pustiť ho treba cez "PRAC" a predtým je potrebné nastaviť hladinu, ktorú má prehladávať viď. (setq lyr "Center") alebo to upraviť nech si ju vyžiada.

Jozef Lovás
IP IP záznam
Ferdinand
TOP uživatel
TOP uživatel


Přihlášen: 01.říj.2004
Lokalita: ČR (JM)
Online stav: Offline
Příspěvky: 1904

Používám:
AutoCAD2004 (EN) na Windows XP
bullet Zasláno: 13.čer.2006 v 09:30
Bloky mám vytvořené již v hladině 0 (nula)
Jinak viz také můj příspěvek v sekci Programování v AutoCADu: fixblock.lsp


Upravil Ferdinand - 13.čer.2006 v 09:31
-FerTh-
IP IP záznam
Ferdinand
TOP uživatel
TOP uživatel


Přihlášen: 01.říj.2004
Lokalita: ČR (JM)
Online stav: Offline
Příspěvky: 1904

Používám:
AutoCAD2004 (EN) na Windows XP
bullet Zasláno: 13.čer.2006 v 09:33
Původně odeslal(a) Rostislav Říha

...kde jsem to stahl nevim, odhaduju, ze cadalog.

...byl bych rad, kdyby nekdo, kdo umi lisp, provedl "touchup" zaslanych lispu tak, aby delaly to, co asi potrebujem vsichni: vse do hladiny 0 a pak volba, jestli entity bylayer nebo byblock... pak to prehodit do kontextoveho menu pro entitu blok a zivot je krasny:)


No to by bylo fakt moc fajn
-FerTh-
IP IP záznam
Ferdinand
TOP uživatel
TOP uživatel


Přihlášen: 01.říj.2004
Lokalita: ČR (JM)
Online stav: Offline
Příspěvky: 1904

Používám:
AutoCAD2004 (EN) na Windows XP
bullet Zasláno: 16.čer.2006 v 14:30
Původně odeslal(a) Jozef Lovás

TIP1127.LSP: BCOLOR.LSP je perfektný pretože rieši aj vnorené bloky, čo fixblock nerobí.

Pustiť ho treba cez "PRAC" a predtým je potrebné nastaviť hladinu, ktorú má prehladávať viď. (setq lyr "Center") alebo to upraviť nech si ju vyžiada.


Kde najdu původní TIP1127.LSP: BCOLOR.LSP ?
-FerTh-
IP IP záznam
Ferdinand
TOP uživatel
TOP uživatel


Přihlášen: 01.říj.2004
Lokalita: ČR (JM)
Online stav: Offline
Příspěvky: 1904

Používám:
AutoCAD2004 (EN) na Windows XP
bullet Zasláno: 16.čer.2006 v 14:40
Fixblock
- je o něco lepší
    - Nemá tam ten filtr na entity které mají Color=natvrdo (a chci je nechat tak)
         - Selekce bloků není automaticky
         - Musí se na konci provést _Regen
    - Lze s ním vybrat všechno najednou (bohužel ručně)


Upravil Ferdinand - 16.čer.2006 v 14:47
-FerTh-
IP IP záznam
Rostislav Říha
TOP uživatel
TOP uživatel


Přihlášen: 03.říj.2004
Lokalita: ČR (Pha)
Online stav: Offline
Příspěvky: 1439

Používám:
ACA 2010
bullet Zasláno: 16.čer.2006 v 16:24
Původně odeslal(a) Ferdinand

Fixblock- je o něco lepší...
myslim, ze toto se miji ucinkem - postnul jsem sem ty dva lispy proto, ze jsem doufal, ze se najde nekdo, kdo ze dvou suboptimalnich udela jeden idealni - problem s natvrdo prirazenymi vlastnostmi mame vsichni, lisp co to vyresi, nam zas pomuze vsem - pokud to nekdo umi, udelejte ze dvou jeden - treba s nejakymi options, nebo, nedejboze, dialogem, kde si vyberu, ktere entity (vnorene bloky...) to ma zohlednovat, a ktere vlastnosti (barva, typ cary...) to ma na co (bylayer, byblock...) nastavit - to prece sakra nemuze byt problem, ne?:)
Rostislav Říha
IP IP záznam
pavelstyl
Zasloužilý člen
Zasloužilý člen


Přihlášen: 06.říj.2004
Lokalita: Czech Republic
Online stav: Offline
Příspěvky: 125

Používám:
AutoCAD Mechanical 2009, SolidEdge 20
bullet Zasláno: 19.čer.2006 v 07:46

Dobrý den,
 tuto diskuzi sleduji jen tak bokem. Ale vyhledem k tomu, že se na to programování nikdo nehlásí, tak bych to zkusil. I klidně s tím dialogem.

Mohl by někdo prosím shrnout, co by to všechno mělo dělat?
A jaké volby by to mělo mít?
Co všechno by v tom dialogu mělo jít nastavit?

Pavel Štyl

IP IP záznam
Rostislav Říha
TOP uživatel
TOP uživatel


Přihlášen: 03.říj.2004
Lokalita: ČR (Pha)
Online stav: Offline
Příspěvky: 1439

Používám:
ACA 2010
bullet Zasláno: 19.čer.2006 v 09:00

Původně odeslal(a) pavelstyl

Mohl by někdo prosím shrnout, co by to všechno mělo dělat?
A jaké volby by to mělo mít?
Co všechno by v tom dialogu mělo jít nastavit?

Dekuji za ochotu. utilita by IMHO mela mit nasledujici volby:

  • Vyber entit:
    • zahrnout/nezahrnout vnorene bloky
    • zpracovat/ignorovat bloky ve zmrazenych/zamcenych hladinach
  • Uprava vlastnosti
    • nejprve "zaskrtavatka" zda menit barvu/typcary/tloustku cary/plotstyl/hladinu)
    • moznost filtrovat, ktere hodnoty budou predmetem zmen (hladina, barva, typ a tloustka cary, plotstyl) - tj. moznost rici, ze se bude menit jen hladina, ktera ma jinou hodnotu, nez 0
    • potom ke kazde z vyseuvedenych moznost vybrat cilovy parametr (na co se to ma zmenit)
  • Uzivatelsky komfort
    • Moznost ulozeni nastaveni pro dalsi pouziti
    • "Quick sets" - tj. na jeden klik provest nejcastejsi akci (napr. vse co ma hodnotu natvrdo zmenit na byblock...)
    • moznost spoustet bez dialogu (pro skripty)

pokud jsem na neco zapomnel, doplnte:)

Rostislav Říha
IP IP záznam
pavelstyl
Zasloužilý člen
Zasloužilý člen


Přihlášen: 06.říj.2004
Lokalita: Czech Republic
Online stav: Offline
Příspěvky: 125

Používám:
AutoCAD Mechanical 2009, SolidEdge 20
bullet Zasláno: 19.čer.2006 v 09:12

Dotaz k tem blokum:
Co kdyz budu mit jeden blok ve vykrese vlozen 3x. Jednou bude v nezamcene hladine, podruhe v zamcene a potreti bude nekde jako blok v bloku.

Mam byt zpracovan nebo ne?

IP IP záznam
Petr Bláha
TOP uživatel
TOP uživatel


Přihlášen: 27.čer.2005
Online stav: Offline
Příspěvky: 509

Používám:
AutoCAD R14=>2010 CZ, Revit B/A 7.0=>2010 CZ
bullet Zasláno: 19.čer.2006 v 09:23
Jelikož je to jeden blok s jedním názvem, tak já bych bylo pro to zeditovat všechno. Stejně v náváznosti na princip bloků byste musel provést přejmenování bloku, aby to upravilo jen některé.
IP IP záznam
Petr Bláha
TOP uživatel
TOP uživatel


Přihlášen: 27.čer.2005
Online stav: Offline
Příspěvky: 509

Používám:
AutoCAD R14=>2010 CZ, Revit B/A 7.0=>2010 CZ
bullet Zasláno: 19.čer.2006 v 09:29
No myslím, že pan Říha není troškař a vypsal to kompletně . Za sebe musí říci, že bych vystačil i s tím, aby to dělalo věci napsané níže, ale pokud není problém zakomponovat i to ostatní, jen to uvítám:
- výběr bloků standardní metodou (klik/oknem/napříč/all/...) stačilo by jen ve viditelných a odemknutých hladinách
- zaškrtávátka/volby co chci měnit (barva/typč/hladina...) a volba na co to chci měnit (0, byblock,...)
- aplikace na všechny bloky stejného jména, ať jsou kdekoli
- určitě by bylo dobré, aby si to min. nějakou vnitřní proměnou pamatovalo poslední nastavení

Předem děkujeme za pomoc a jestli se Vám to podaří, máte alespoň u mě nějaký prezent. Z ručního upravování bloků po lidech co nevím, jak se mají správně dělat, mi vždy vstávají vlasy hrůzou na hlavě.
IP IP záznam
Ferdinand
TOP uživatel
TOP uživatel


Přihlášen: 01.říj.2004
Lokalita: ČR (JM)
Online stav: Offline
Příspěvky: 1904

Používám:
AutoCAD2004 (EN) na Windows XP
bullet Zasláno: 19.čer.2006 v 09:56
Původně odeslal(a) Petr Bláha

...Z ručního upravování bloků po lidech co nevím, jak se mají správně dělat, mi vždy vstávají vlasy hrůzou na hlavě.

Tím myslíte lidi, kteří neví, jak správně vytvářet bloky? Patrně jim to nikdo nikdy nevysvětlil, hromada lidí je samouk a dělá vše podle svého gusta (bohužel...). Ale možná za 10 let užívání nějakého CADu to umět už budou jako my... I když - zvyk je železná košile .
-FerTh-
IP IP záznam
Rostislav Říha
TOP uživatel
TOP uživatel


Přihlášen: 03.říj.2004
Lokalita: ČR (Pha)
Online stav: Offline
Příspěvky: 1439

Používám:
ACA 2010
bullet Zasláno: 19.čer.2006 v 09:57

Původně odeslal(a) Petr Bláha

No myslím, že pan Říha není troškař a vypsal to kompletně . Za sebe musí říci, že bych vystačil i s tím, aby ...

to, uznavam, asi nejsem - nechtel jsem ale, aby to pusobilo, ze se s chuti zakusuji do ruky, z niz byl nabidnut pouze prst:) - nicmene aspon za ten switch na vnorene bloky a ukladani uzivatelskych nastaveni bych rad byl:)

Rostislav Říha
IP IP záznam

Pro technickou podporu CAD
kontaktujte support@xanadu.cz

Příbuzné CAD tipy:
Tip 5726:GoPlot - dávkový tisk PLT a PRN souborů.
Tip 2426:Jak přebarvit blok vložený do výkresu?
Tip 1171:Jak lze provést hromadné dávkové vykreslení (batchplot) několika výkresů v AutoCADu LT?
Tip 7472:VIPHromadný tisk různých výkresových listů Inventoru do PDF.
Tip 7100:Bloky kolmé ke křivce.


Stránka  ze 3 Další >>

Verze pro tisk Verze pro tisk

Přejít na fórum
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 1,516 sekund.