Selection d'attributs par fenetre dans bloc dynamique avec visibilité.

Selection d'attributs par fenetre dans bloc dynamique avec visibilité.

fmaniere
Explorer Explorer
802 Views
5 Replies
Message 1 of 6

Selection d'attributs par fenetre dans bloc dynamique avec visibilité.

fmaniere
Explorer
Explorer

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

0 Likes
803 Views
5 Replies
Replies (5)
Message 2 of 6

pbejse
Mentor
Mentor

@fmaniere wrote:

Bonjour,

 

 

Does anyone have the method to filter / remove these attributes that are not visible on the screen?

....

;;; selection d'attribut par windows
(defun catchwindow2 ( / Inside-p _HiLow of blks atlist )(vl-load-com)
;;;        ] ;;;  
(defun Inside-p (a b c)
;;;  ;;;
;;; ;;;
...

Merci pour votre aide


Yes. that is easy.

 

The code looks very familiar but without..

 

;;; [ what originally was in this spot ] ;;;  
...
0 Likes
Message 3 of 6

fmaniere
Explorer
Explorer

Bonjour pbejse

Avec l'original, désolé de vous avoir gommé.

;;; selection d'attribut par windows
(defun catchwindow2 ( / Inside-p _HiLow of blks atlist )(vl-load-com)
;;;     pbe Oct 17 2012    ;;;  
(defun Inside-p (a b c)
;;; http://mathforum.org/library/drmath/view/54386.html ;;;
;;; (.5)(x1*y2 - y1*x2 -x0*y2 + y0*x2 + x0*y1 - y0*x1)    ;;;

 

La routine fonctionne bien mais elle sélectionne aussi les attributs invisible d'un paramètre d'invisibilité d'un bloc dynamique. Quel moyen pour les filtrer?

Merci

0 Likes
Message 4 of 6

pbejse
Mentor
Mentor

Can you post 1 sample drawing?

 

0 Likes
Message 5 of 6

fmaniere
Explorer
Explorer

Bonjour,

In my bloc I have a visibilty parameters "AVEC" or "SANS DESTINATION".

See the NCOX_OUT bloc in attach sample.

 

Merci

0 Likes
Message 6 of 6

fmaniere
Explorer
Explorer

Bonjour,

Avez-vous eu le fichier en exemple?

Et avez-vous des idées sur le moyen de filtrer?

Merci

0 Likes