 |
Forum użytkowników programów ZWCAD, KOMPAS-3D, Scan2CAD, PDF2CAD
Forum CAD.
|
Przesunięty przez: dmatusz3 Pon Sie 01, 11 15:42 |
LISPy do bloków. |
| Autor |
Wiadomość |
2P
Dołączył: 18 Mar 2008 Posty: 92
|
Wysłany: Wto Maj 17, 11 23:45 LISPy do bloków.
|
|
|
Witam!
Poszukuję LISPów (lub innych rozwiązań), które wykonają mi następujące czynności:
1. Usuną atrybuty z definicji bloku i z jego wystąpień w rysunku, bez rozeksplodowywania bloku.
2. Ustawią warstwę dla atrybutów we wskazanym wystąpieniu - taką jaka jest w definicji bloku. (Wyjaśnienie: Mamy wstawione do rysunku bloki z atrybutami na jakich "dzikich warstwach". Wchodzimy w edycję bloku zmieniamy warstwę dla wszystkich elementów, w tym atrybutów - np. na 0. Zapisujemy edytowany blok. Jednak w wystąpieniach bloku, atrybuty zachowują wcześniej zdefiniowaną warstwę, a ja chciałbym, żeby one przeniosły się na warstwę z bieżącej definicji bloku). Jak to zrobić? Nie uśmiecha mi się zmieniać tego "ręcznie" dla każdego argumentu osobno!
Pozdr. |
_________________ =2P= |
|
|
|
 |
Jason
Pomógł: 4 razy Dołączył: 25 Sty 2011 Posty: 33
|
Wysłany: Czw Maj 19, 11 09:37
|
|
|
do 1:
| Kod: | (defun C:DELA (/ OB OB# BL CMD)
(vl-load-com)
(if (setq OB (entsel "\nWskaz blok z ktorego usunac atrybuty: "))
(if
(and
(= (cdr (assoc 0 (entget (car OB)))) "INSERT")
(setq OB# (vlax-Ename->vla-Object (car OB)))
(setq BL (kr:BLK_GetBlockName OB#))
)
(progn
(setq CMD (getvar 'CMDECHO))
(setvar 'CMDECHO 0)
(foreach % (jk:BLK_Get-Objects BL "ATTDEF")
(vla-Delete (vlax-Ename->vla-Object %))
)
(command "_attsync" "_S" (car OB) "_Y")
(setvar 'CMDECHO CMD)
)
)
(princ "\n** Nic nie wskazano **")
)
(princ)
)
; ============================================================ ;
; Get block name ;
; Blk# - VLA block reference object ;
; ============================================================ ;
(defun kr:BLK_GetBlockName (Blk#)
(if (vlax-Property-Available-P Blk# 'EffectiveName)
(vla-Get-EffectiveName Blk#)
(vla-Get-Name Blk#)
)
)
; ============================================================ ;
; Funkcja zwraca liste ENAME, obiektow okreslonego typu (argu- ;
; ment ObjType, w definicji bloku (rowniez XREF) podanego jako ;
; argument Name ;
; (jk:BLK_Get-Objects "POM" "INSERT") ;
; ============================================================ ;
(defun jk:BLK_Get-Objects (Name ObjType / En Ed res)
(setq En (tblobjname "BLOCK" Name))
(while
(and
(setq En (entnext En))
(setq Ed (entget En))
(/= "ENDBLK" (cdr (assoc 0 Ed)))
)
(if
(= (cdr (assoc 0 Ed)) (strcase ObjType))
(setq res
(append
(list (cdr (assoc -1 ed)) )
res
)
)
)
)
res
)
(princ "\n>> Wczytano DelAtt>LSP. Polecenie DELA. <<")
(princ) |
j. |
|
|
|
 |
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Dodaj temat do Ulubionych Wersja do druku
|
| | Strona wygenerowana w 0,12 sekundy. Zapytań do SQL: 10 |
|
|