Zobrazit plnou verzi příspěvku: hledání bloků ve výkrese

Ferdinand
30.01.2008, 21:40
Nějak se nemohu dostat s tím dál... Představa: Potřebuji zjistit, jestli ve výkresech existují nějaké bloky s konkrétním názvem, pokud ne, tak výkres se uloží zvlášť do jiného podadresáře.
Příklad:
1. otevřený výkres se jmenuje 111.dwg, měl by obsahovat bloky s názvem 111-B, 111-N, 111-P (anebo alespoň jednoho z nich)
Hledám bloky s názvem 111_C, 111_C-B, 111_C-N, 111_C-N (tj. porovnávám 111-B <-> 111_C-B, ...)
Pokud  ve výkrese 111 některý blok tohoto názvu (s indexem _C) najde (tj. shoduje se "kořen" názvů 111), končí a otevře další výkres s názvem 222.dwg...
Pokud ve výkrese 111 nenajde ani jeden z těch bloků (s indexem _C), tak 111.dwg se uloží do podadresáře <AktualniAdresar>\neshoda-bloky\111.dwg, končí a otevře další výkres s názvem 222.dwg...
 
(defun S::STARTUP ()
...
;;;;;podrutina pro ziskani odkladaciho podadresare  (defun C:ADR (/ D1 D2 DWG A1 A2 A3)    (setq D1 (getvar "cdate"))  ;20071213.15 /akt. datum/    (setq D2 (rtos (fix D1) 2 0)) ;"20071213"    (setq DWG (cadr (fnsplitl (getvar "dwgname")))) ;nazev akt.vykresu    (setq A1 (getvar "dwgprefix")) ;<AktualniAdresar>    (setq A2 (strcat A1 "neshoda-bloky" D2 "\\")) ;nazev podadresare    (setq A3 (strcat A2 DWG))  ;nazev akt. vykresu s plnou cestou    (command "shell" (strcat "mkdir" " " A2)) ;zalozi podadresar A2    (princ)  )
...
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;zacatek procedury    (C:ADR)    ;ziskani podadresare
    (setq      DWG-B    (strcat DWG "-B")      DWG-N    (strcat DWG "-N")      DWG-P    (strcat DWG "-P")
      DWG_C    (strcat DWG "_C")      DWG_C-B  (strcat DWG_C "-B")      DWG_C-N  (strcat DWG_C "-N")      DWG_C-P  (strcat DWG_C "-P")
    )
    (setq SS1 (list DWG DWG-B DWG-N DWG-P))
    (setq SS2 (list DWG_C DWG_C-B DWG_C-N DWG_C-P))
    (if (and (tblsearch "insert" SS1) (tblsearch "insert" SS2))      nil      (command "_saveas" "" A3)    )
...
 
...a tady to nevím jestli to takhle funguje a jak by to mělo být dál ...
Lisp je pojmenován acad2004.lsp, je umístěn v <AktualnimAdresari>. Proces startuje buď kliknutím na 1. výkres anebo napsáním "acad" do přík. řádku, výkresy se otvírají jeden po druhém a vyhodnocují se...Ferdinand2008-01-30 21:44:25

pavelstyl
31.01.2008, 07:11
A čeho chcete dosáhnout?
Aby se vždy při každém otevření výkresu prováděla ta kontrola a nebo to budete spouštět přes nějaký script generátor ručně (např. 1x týdně)?
 
Pavel Štyl

Ferdinand
04.02.2008, 15:21
Jde o to sladit/sjednotit názvy bloků naší nadstavby (cca. 1200 výkresů bloků) tj. splnění podmínky, že každý výkres použitého bloku smí obsahovat jen dílčí bloky s výše popsanými příponami. Důvod je návaznost některých aplikací na názvy těchto dílčích bloků. Jednorázově bych to chtěl zkontrolovat - při odchodu z práce bych to spustil, ráno by byly výkresy s "neuniformními" bloky odděleně uloženy.