Author Topic: Problem with attribute matching  (Read 5336 times)

0 Members and 2 Guests are viewing this topic.

Andrea

  • Water Moccasin
  • Posts: 2372
Re: Problem with attribute matching
« Reply #15 on: December 07, 2005, 08:21:02 PM »
Code: [Select]
;| ;
E S A Édition et Syncronisation des Attributs ;
Par: Andrea Andreetti ;
2005-11-29 ;
|;

;| ;;
PROGRAMME ESA ;;
|;
(defun c:esa ()
  (setq ega1 (entsel "Please select any block with attributes...")) 
  (setq ega2 (entget (car ega1)))
  (egaData)
   
  (princ)
 
)



;;;;;;;;;;;;;;;;;;;;;;;
(defun dxf (code elist)
  (cdr (assoc code elist))
);defun




;| ;;
VÉRIFICATION DE LA SÉLECTION ;;
|;
(defun egaData ()
  (setq ega_type (cdr (assoc 0 ega2)));;type d'entité = INSERT
  (setq ega_bname (cdr (assoc 2 ega2)));;block name

  (if (= ega_bname nil)
    (progn
    (alert (strcat "You have selected a \""  ega_type " \""))
    (reset_EGA_variables)
    )
    (progn
    (get_egadata)
    (reset_EGA_variables)
    )
   
  )
)



;| ;;
VÉRIFICATION LA SÉLECTION CONTIENT DES ATTRIBUT ;;
|;
(defun get_egadata ()

    (setq edata (entnext (dxf -1 ega2)));;<Nom d'entité: 7efb5058>
  (if edata
    (progn
    (setq edata1 (entget edata))
    (if (= (cdr (assoc 0 edata1)) "ATTRIB")
    (progn
    (vl-cmdf "_.eattedit" ega1)
    (extract_egatt)
  )
      (alert "There is no attribute in this block.")
      ))
   
      (alert "There is no attribute in this block.")
  )
)


;| ;;
LECTURE DE CHAQUE ATTRIBUTS ;;
|;
(defun extract_egatt ()
(setq ebaL1 nil)
(setq ega2 (entget (car ega1)))
(setq ega2 (entget (entnext (dxf -1 ega2))))
(setq eb1 (dxf 1 ega2))
  (while eb1
    (progn
 
     (setq ebaL1 (append ebaL1 (list eb1)))     
     (setq ega2 (entget (entnext (dxf -1 ega2))))
     (setq eb1 (dxf 1 ega2))
     );;progn
   );;while

  (ega_update)
 );;defun






;| ;;
MISE À JOUR DES BLOCS ;;
|;
(Defun ega_update ()
(setq bega (ssget "X" (list (cons 0 "INSERT") (cons 2 ega_bname))))

  (setq sscount (sslength bega))
  (setq val1 (- sscount 1))
   
(repeat sscount
   (setq egax1 (entget (ssname bega val1)));;détail de l'entité

(if (not (eq (cdar egax1) (car ega1)))
  (progn
    (setq edata egax1)
    (foreach n ebaL1         
      (setq edata (entget (entnext (dxf -1 edata))))  
  (setq el (subst (cons 1 n) (assoc 1 edata) edata))
  (entmod el)
    );;for each
    );;progn
 );;if
  (setq val1 (- val1 1))
);;repeat

(vl-cmdf "_.regen")
 
);;defun



;;radian to degree
(defun rtd (a)
(/ (* a 180) pi)
)



;| ;;
RESET VARIABLES ;;
|;
(defun reset_EGA_variables ()
(setq VarLst '(bega vla1 sscount egax1 ega1 edata edata1 ebaL1 el ega1 ega2 ))
(mapcar '(lambda (l) (set l nil)) VarLst)
)

 :wink:
Keep smile...