NANARD Posté(e) le 11 novembre 2006 Partager Posté(e) le 11 novembre 2006 Est-il possible de sélectionner des entités en définissant un volume de sélection?:o Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 13 novembre 2006 Partager Posté(e) le 13 novembre 2006 Sans programmation je ne crois pas.Avec programation, il est "relativement" simple de sélectionner tous les objets dont la "bounding box" (emprise de l'objet suivant les axes X, Y et Z du SCG) est contenue dans une "boite" défine par deux coins opposés (les arrêtes de cette "boite" étant eux aussi parallèle aux axes du SCG). Sur l'image (cliquer dessus pour l'agrandir), les bounding box sont en gris, la boite de sélection en gris interrompu.http://xs309.xs.to/xs309/06461/ssbb.PNG.xs.jpg Tu peux essayer le LISP suivant (taper ssbb pour lancer la commande) (defun c:ssbb (/ p1 p2 pt1 pt2) (initget 1) (setq p1 (trans (getpoint "\nPremier coin de la boite: ") 1 0)) (initget 1) (setq p2 (trans (getpoint p1 "\nCoin opposé de la boite: ") 1 0)) (setq pt1 (apply 'mapcar (cons 'min (list p1 p2))) pt2 (apply 'mapcar (cons 'max (list p1 p2))) ) (sssetfirst nil (selbybox pt1 pt2)) (princ) ) (defun SelByBox (p1 p2) (vl-load-com) (setq ss (ssget "_X" '((410 . "Model")))) (foreach ent (mapcar 'cadr (ssnamex ss)) (vla-getBoundingBox (vlax-ename->vla-object ent) 'minpt 'maxpt) (if (or (member T (apply 'mapcar (cons 'list minpt) p1)))) (member T (apply 'mapcar (cons 'list maxpt))))) ) (ssdel ent ss) ) ) ss ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 13 novembre 2006 Partager Posté(e) le 13 novembre 2006 Pour un peu plus de souplesse et de polyvalence, le même mais par rapport au SCU courant. (defun c:ssbb (/ p1 p2 pt1 pt2) (initget 1) (setq p1 (getpoint "\nPremier coin de la boite: ")) (initget 1) (setq p2 (getpoint p1 "\nCoin opposé de la boite: ")) (setq pt1 (apply 'mapcar (cons 'min (list p1 p2))) pt2 (apply 'mapcar (cons 'max (list p1 p2))) ) (sssetfirst nil (selbybox pt1 pt2)) (princ) ) (defun SelByBox (p1 p2) (vl-load-com) (setq ss (ssget "_A" '((410 . "Model")))) (foreach ent (mapcar 'cadr (ssnamex ss)) (setq obj (vlax-ename->vla-object ent)) (vla-TransformBy obj (UCS2WCSMatrix)) (vla-getBoundingBox obj 'minpt 'maxpt) (vla-TransformBy obj (WCS2UCSMatrix)) (if (or (member T (apply 'mapcar (cons 'list minpt) p1)))) (member T (apply 'mapcar (cons 'list maxpt))))) ) (ssdel ent ss) ) ) ss ) ;; Doug C. Broad, Jr. ;; can be used with vla-transformby to ;; transform objects from the UCS to the WCS (defun UCS2WCSMatrix () (vlax-tmatrix (append (mapcar '(lambda (vector origin) (append (trans vector 1 0 t) (list origin)) ) (list '(1 0 0) '(0 1 0) '(0 0 1)) (trans '(0 0 0) 0 1) ) (list '(0 0 0 1)) ) ) ) ;; transform objects from the WCS to the UCS (defun WCS2UCSMatrix () (vlax-tmatrix (append (mapcar '(lambda (vector origin) (append (trans vector 0 1 t) (list origin)) ) (list '(1 0 0) '(0 1 0) '(0 0 1)) (trans '(0 0 0) 1 0) ) (list '(0 0 0 1)) ) ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant