Selection d'attributs par fenetre dans bloc dynamique avec visibilité.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Bonjour,
J'ai une macro qui renseigne automatiquement des attributs par sélection de fenêtre ou capture à l'écran.
Mon problème est que les attributs des blocs dynamique qui sont dans un paramètre de visibilité à OFF sont aussi sélectionnés.
Quelqu'un à t-il la méthode pour filtrer/supprimer ces attributs qui ne sont pas visible à l'écran?
Extrait de mon code ci-dessous (issu de différentes source du net et arrangé pour mon utilisation)
;;; selection d'attribut par windows
(defun catchwindow2 ( / Inside-p _HiLow of blks atlist )(vl-load-com)
;;; ;;;
(defun Inside-p (a b c)
;;; ;;;
;;; ;;;
(* (- (+ (+ (- (- (* (car b) (cadr c)) (* (cadr b) (car c)))
(* (car a) (cadr c))
) (* (cadr a) (car c))
) (* (car a) (cadr b))
) (* (cadr a) (car b))
) 0.5)
)
(defun _HiLow (lev lev2 lst)
(list (apply lev (mapcar 'car lst))
(apply lev2 (mapcar 'cadr lst))
))
(setq atlist nil)
;(while (progn (princ "\nSelect Objects: ")
(if
;(and
;(setq fc (getpoint))(setq oc (getcorner fc " Specify opposite corner:"))
(setq blks (ssget "C" fc oc '((0 . "INSERT")(66 . 1))))
😉
(progn
(setq pts (list (_hilow 'min 'min (setq lst (list fc oc)))
(_hilow 'max 'min lst)(_hilow 'max 'max lst)
(_hilow 'min 'max lst)))
(repeat (sslength blks)
(setq at_ (entnext (setq prnt (ssname blks 0))))
(while (not (eq (setq etyp (cdr (assoc 0 (setq e (entget at_))))) "SEQEND"))
(setq titi (cdr (assoc 8 e)))
(setq toto(cdr (assoc 70 (tblsearch "layer" titi))) )
(if (= toto 0) (progn
(if (eq etyp "ATTRIB") (progn
(setq pt (cdr (assoc 10 e)))
(if (not (vl-some '(lambda (k) (minusp k))
(mapcar '(lambda (j)
(Inside-p (car j) (cadr j) pt))
(mapcar '(lambda (q w)
(list q w) ) pts
(append (cdr pts) (list (car pts)))
))))
(setq atlist (cons (list at_ prnt) atlist))
;box (DrawBox (entget at_)) )
)
)
)
))
(setq at_ (entnext at_))
)
(ssdel prnt blks)
)))
😉
😉
atlist
)
Merci pour votre aide