Forum użytkowników programów ZWCAD, KOMPAS-3D, Scan2CAD, PDF2CAD Strona Główna Forum użytkowników programów ZWCAD, KOMPAS-3D, Scan2CAD, PDF2CAD
Forum CAD.

FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy
RejestracjaRejestracja  ZalogujZaloguj

Poprzedni temat «» Następny temat
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.
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
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

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Strona wygenerowana w 0,12 sekundy. Zapytań do SQL: 10