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
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