Zobrazit plnou verzi příspěvku: hromadný Refedit

Ferdinand
12.06.2006, 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?

Rostislav Říha
12.06.2006, 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

Ferdinand
12.06.2006, 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ýkresu2. spouštím příkaz PRAC - je třeba zvolit Y, pak v dialogu kliknout na Byblock - naskočí hláškaLayer: CENTER not found!- zavřu okno Alertu3. 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 ByblockMoje 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)Ferdinand2006-6-12 16:54:53

Rostislav Říha
12.06.2006, 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
12.06.2006, 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:)

Jozef Lovás
12.06.2006, 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.

Ferdinand
13.06.2006, 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
Ferdinand2006-6-13 9:31:7

Ferdinand
13.06.2006, 09:33

[QUOTE=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:)[/QUOTE]No to by bylo fakt moc fajn

Ferdinand
16.06.2006, 14:30

[QUOTE=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.[/QUOTE]Kde najdu původní TIP1127.LSP: BCOLOR.LSP ?

Ferdinand
16.06.2006, 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ě)
Ferdinand2006-6-16 14:47:32

Rostislav Říha
16.06.2006, 16:24
[QUOTE=Ferdinand] Fixblock- je o něco lepší...[/QUOTE] 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?:)

pavelstyl
19.06.2006, 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

Rostislav Říha
19.06.2006, 09:00
[QUOTE=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?[/QUOTE]
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:)

pavelstyl
19.06.2006, 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?

Petr Bláha
19.06.2006, 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é.

Petr Bláha
19.06.2006, 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ě.

Ferdinand
19.06.2006, 09:56

[QUOTE=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ě.[/QUOTE]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 .

Rostislav Říha
19.06.2006, 09:57
[QUOTE=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 ...[/QUOTE]
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:)

Petr Bláha
19.06.2006, 12:17
[QUOTE=Rostislav Říha]to, uznavam, asi nejsem - nechtel jsem ale, aby to pusobilo, ze se s chuti zakusuji do ruky, z niz byl nabidnut pouze prst:)[/QUOTE]
...tak jsem to ani nemyslel, jen že jste to popsal opravdu kompletně a myslím, že to nebude úplně jednoduché vytvořit (z LISPu ale umí jen základy).

pavelstyl
19.06.2006, 16:56
Na adrese http://www.pavelstyl.cz/acad/B.zip si můžete stáhnout první verzi programu, ktery umí něco (zatím málo) dělat s bloky (resp. entitami v blocích). Berte to prosím zatím jenom jako první nástřel. Já si hlavně potřebuji ověřit, že jsem se vydal správným směrem. Čtěte prosím B.docBylo to testováno na AutoCADu Mechanical 2006 anglické verze.Pavel Štyl

Petr Bláha
19.06.2006, 17:13
Měl bych první poznatek. Na AutoCADu 2007 EN a 2006 CZ se to ani nerozběhne ... hláška "; error: bad argument type: stringp nil" po zadání příkazu BB.

Ferdinand
19.06.2006, 17:45
Command: bb; error: bad argument type: stringp nil

pavelstyl
19.06.2006, 20:41
Omlouvam se, chybicka se vloudila. Uz je to snad v poradku.Pavel Styl

Ferdinand
20.06.2006, 09:47

[QUOTE=Ferdinand] ..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 - ......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 ...[/QUOTE]Nelze se dostat na ten odkaz www.pavelstyl...

iand
20.06.2006, 10:52
Nemohu se dostat na stránku www.pavelstyl.cz ani http://pavelstyl.cz, pokaždé mne to přesměruje na http://fotky.pavelstyl.cz, takže vás nemohu sledovat.

pavelstyl
20.06.2006, 13:01
Program lze stahnout z http://mujweb.cz/www/pavelstyl/ (snad uz to pujde stahovat). Neco malo bylo dodelano (podpora pro script, pamatovani poslednich zadanych hodnot)Pavel Styl

Ferdinand
21.06.2006, 16:22

Command: _appload B.lsp successfully loaded.Command:Command:Command: bb; error: quit / exit abortVe Visual Lisp editoru se dívám, v sekci  (action_tile    "accept"    "(setq ok 1)(block_read)(done_dialog)"  )  (action_tile "all" "(setq ok 2)(block_read)(done_dialog)")  (action_tile "cancel" "(done_dialog)")  (action_tile "CO1" "(block_co1 (atoi $VALUE))")  (action_tile "LT1" "(block_lt1 (atoi $VALUE))")  (action_tile "GENERUJ" "(block_gen)")něco není dobře ()
Ferdinand2006-6-21 16:26:11

pavelstyl
21.06.2006, 16:25
A skutečně najde AutoCAD ten dcl soubor ? Zkuste si v OPTIONS (support path)nastavit cestu na ten adresář, kde je ten dcl.
Pavel Štyl

Petr Bláha
21.06.2006, 16:30
Mě to co tam již je funguje správně. Ubíráte se správnou cestou. (AutoCAD 2007 EN)Petr Bláha2006-6-21 16:32:41

Ferdinand
21.06.2006, 16:47
Aha, na to jsem zapomněl , děkuji.Co mám v dialogu nastavit, aby to splnilo:1. Všechny Color ve všech blocích ve výkresu které jsou=Bylayer budou=Byblock, ostatní (tj. ty, které jsou "natvrdo") nechat být.2. Všechny Linetype ve všech blocích ve výkresu které jsou=Bylayer budou=Byblock, ostatní (tj. ty, které jsou "natvrdo") nechat být.

pavelstyl
21.06.2006, 16:57
Barva: = 256 0Typ cary: = BYLAYER BYBLOCK
Vysvětlení (barva):Když barva entity = hodnotě 256 (bylayer), tak ji nastav na 0 (byblock).
Klepnout na tlačítko "Na celý výkres".

Ferdinand
29.06.2006, 16:07
Takže první kolonka je pro zadání původní hodnoty a ta druhá je pro zadání hodnoty  požadované (změněné). Tak by bylo fajn to napsat k nim do dialog. okénka, poněvadž pozítří už to pamatovat nebudu Je totéž, když napíšu "Bylayer" a "256" ?Znamená to to stejné, když napíšu "Byblock" a "0" ?

Chop
30.06.2006, 06:22
[QUOTE=Ferdinand]Je totéž, když napíšu "Bylayer" a "256" ?Znamená to to stejné, když napíšu "Byblock" a "0" ?[/QUOTE]
Ano, je to totéž. Vnitřně má Cad hodnoty nastaveny na 0 nebo 256, ale pro nás je zobrazuje v dialozích jako "Byblock" nebo "Bylayer" pro lepší přehlednost.
(Stačí si zkusit takto nastavit barvu objektu a sledovat okno Properties…)

Peter Jirat
12.07.2006, 15:46
Moc dobré, zrovna se výborně hodilo. Nešlo by tam dodělat ještě "malé" zatržítko - Použít/Nepoužít i na Xrefy? V tomto stavu pak převede při volbě celého výkresu i xrefy na zvolený typ barvy / čáry. Xrefy lze sice před použitím BB unloadovat, ale kdyby to šlo tím zatržítkem....
Ale i tak dík
 

Ferdinand
28.07.2006, 10:57


Hurá, funguje to . Sqìlé - doplním skript a jdu na to...Dìkuji moc Pavlovi Stylovi!To Michl: Pane Michl, prosím Vás, umístit aplikaci B do Downloadu. Dìkuji.
Ferdinand2006-7-28 10:58:43

Vladimír Michl
28.07.2006, 11:49
Provedu. Nějak jsem to nesledoval, ale polepším se - a pokud pan Štyl nebude proti, přidám to na Download.

pavelstyl
07.08.2006, 12:16
Nemám nic proti umístění scriptu na web xanadu. Nicméně takto si nepředstavuji dodělaný produkt. Až se zase najde trošku času, tak na tom ještě zapracuji.
Pavel Štyl

Petr Bláha
07.08.2006, 20:18
[QUOTE=pavelstyl] Až se zase najde trošku času, tak na tom ještě zapracuji.
Pavel Štyl[/QUOTE]
Pokud byste našel i čas pro zakomponování změny hladiny objektů bloků (mě by stačilo i jen do "0"), tak byste byl skvělý. Bylo by to pak všechno hezky pohromadě v jednom příkazu.
Předem děkuji za všechny potencionální uživatele.

pavelstyl
14.08.2006, 16:27
Tady (www.mujweb.cz/www/pavelstyl) je další verze. Umí měnit i hladiny. Neměl jsem moc času to testovat, ale snad to pojede.
Pavel  Štyl

Vaclav Hryz
17.08.2006, 16:01
Dobrý den,
možná jsem trochu out, čtu se konferenci když mám čas...
Kdysi jsme řešili "učesání" dokumentace před odevzdáním. Vytvořil jsem tehdy dva prográmky, které jsem se rozhodl poskytnout (tohle téma je tu věčné). Předem se omlouvám za složitost, na tomhle jsem se programování v lispu učil. Dnes bych to již dotáhl do lepší podoby, ale to bych musel ve svém soukormém čase.
Popis funkčnosti: budu neúplný a zmatený, je to už dlouho, příkaz už dnes nepoužíváme.
Příkaz FIN načítal z externího souboru FIN.DAT "pravidla" převodu. Mám pocit, že rozlišoval uživatelské bloky a předdefinované bloky (rámečky ap.), v uživatelských "lezl dovnitř" a opravil entity i v nich. Rozlišoval typy entit, které měly předepsanou hladinu. Hlídala se barva a typ čáry ByLayer. Pravidel je v těle nadefinováno dost, nepamatuji si všechny. Co nebyl schopen zařadit, zapsal popis entity a příčiny do souboru, který měl stejný název jako DWG. Nakonec vyjela tabulka nalezených nevyřešených entit: hladina, barva, typ čáry. Ta po doplnění správné hladiny sloužila příkazu PREVEDHL.
Moc si toho nepamatuju. Poskytuji to hlavně odvážnému panu P. Štylovi, jestli by svoji rutinku nechtěl ještě zdokonalit. Abych řekl pravdu, nelíbí se mi totiž to generování do skriptu. Já jsem to řešil spuštěním skriptu s příkazem na adresáři výkresů a šel domů. Ráno jsem případné chyby ve výkresech zadal lidem k opravě, kde díky zápisu byli schopni lokalizovat problémové entity a rozhodnout ručně, co s nimi.
Tady jsou soubory http://www.iproject.cz/get.asp?/LISP/prevod%5Fhladin/Ko%F8en /fin.zip
Třeba jsem Vám trochu kápl do noty...
Přeji Vám hezký den.
V. Hryz

Ferdinand
04.09.2006, 16:21
V. Hryz napsal:...rozlišoval uživatelské bloky a předdefinované bloky...Jaký je rozdíl mezi "uživatelským" a "předdefinovaným" blokem?

Vaclav Hryz
11.09.2006, 13:37
Dobrý den,
tradičně přijměte moji omluvu za pozdní reakci :-)
Za předdefinovaný blok jsme považovali takový, který ve výkrese zůstal jako blok, jeho obsah nesměl být měněn a byl považován za "knihovní": takže rámečky formátů, razítko, řádky rozpisky, bločky různých informací ap. Většinou jsme se snažili, aby začínaly znakem podtržítko.
Uživatelské bloky je zbytek: to co si uživatelé nadefinovali sami.
Dělili jsme to proto, že některé "knihovní/předdefinované" bloky byly převzány od zákazníka a jejich úprava podle našeho standardu by je znehodnotila. Tím byly seznamem neprověřovaných bloků odfiltrovány. A také ty naše, které byly v pořádku. Proces procházení výkresu se pak zrychlil. Uvědomte si, že prográmek vznikl v době, kdy nejsilnější PC jsme měly PII-333 a 8MB grafiku...
Hezký den přeji
V. Hryz

Ferdinand
19.10.2006, 12:28
Pane Hryz, nějak mi to nechce fungovat Command: _appload Successfully loaded 2 files.fin.lsp successfully loaded.prevedhl.lsp successfully loaded.Command:Command:Command:Command:Command:Command: fin Verze 2.0 ze dne 20.6.2002 Mám ignorovat nebo pøevádìt podkladové hladiny? (Ignorovat/Pøevádìt): i Pokraèuju pøevodem blokových entit... Cyklus pøevodu blokù... Cyklus pøevodu blokù... Cyklus pøevodu blokù... Pokraèuju pøevodem entit...                                                                      FWJL-PS90ST.dwg   !!! CHYBA AUTOCADU !!! no function definition: NAHRAD
Ferdinand2006-10-19 12:29:24

Ferdinand
20.10.2006, 15:21

Připomínky k návodu B.doc :A.- Otevřu výkres,Command: (load "B") ; error: LOAD failed: "B"(správně:Command: _appload B.lsp successfully loaded.)- potvrdím Na celý výkresPokud to chci aplikovat pouze na tento 1 výkres, tak je to OK.
B. Pro hromadné zpracování:- Vygenerování scriptu (block_edit 2 256  0 2 "BYLAYER" "BYBLOCK" 1 "" "0"), řetězec vzít do Clipboardu, lisp přerušit, zavřít výkres- jít do Notepadu, tam to vložit, uložit to jako XXX.scr- jít do  ScriptPro, tam to vše zadat, spustitVýsledek: neprovedlo se nic (dle zpětné kontroly vlastností entit jednoho bloku příkazem Refedit v jednom z načtených výkresů) - vše zůstalo původní Dotaz: Co jsem dělal špatně?C. Co znamenají věty (u Hladina)„Vzdy“           hladina
entit bude nastavena na zadaný typ čára“=”                 jestliže
se hladina entity shoduje s typem čáry v políčku 1, bude změněna na hladina
z políčka 2“<>”                jestliže
se hladina entity shoduje s typem čáry v políčku 1, bude změněn na hladina
z políčka 2


Ferdinand2006-10-20 15:30:41

Vaclav Hryz
31.10.2006, 07:47
Dobrý den přeji.
 
Aha, to jsem zapomněl. Chybí rutinka, kterou mám strčenou jinde. Tady je zdroják:
 
(defun NAHRAD (KLIC NOVY DATA)  (setq DATA (subst (cons KLIC NOVY) (assoc KLIC DATA) DATA))  (entmod DATA)  (entupd (cdr (assoc -1 DATA))))
Třeba bude chybět ještě něco :-)
 
Přeji hezký den.
V. Hryz