Invité HAYA82 Posté(e) le 9 mai 2011 Posté(e) le 9 mai 2011 Bonsoir, J'ai voulu utiliser l'une de vos routines et l'adapter à mon besoin La routine de départ permet de selectionner les entités (polylines, cercles...) dans une plolyline qui est définie par selection (pointage) Mon souhait est de la modifierpour quelle puisse seletionner par exemple l'entité (polyline) n d'un filtre de selection , de seletionner les entité dans cette polyline et après exécutet une commande sur ce jeu de selection.pour à la fin arriver à faire une boucle ou la routine selectionne tous les polylines appartenant à un calqua exp "carroyage" et effacer les entités dans chaqune de ces polylines J'ai essayé de modifier la routine comme c'est présenté ci-après mais j'ai un mesage d'erreur qui m'indique qu'il ya trop d'arguments Pourriez-vous m'aider svp (defun SelByObj (ent opt fltr / obj dist n lst prec dist p_lst ss) (vl-load-com) (if (= (type ent) 'ENAME) (setq obj (vlax-ename->vla-object ent)) (setq obj ent ent (vlax-vla-object->ename ent) ) ) (cond ((member (vla-get-ObjectName obj) '("AcDbCircle" "AcDbEllipse")) (setq dist (/ (vlax-curve-getDistAtParam obj (vlax-curve-getEndParam obj) ) 50 ) n 0 ) (repeat 50 (setq lst (cons (trans (vlax-curve-getPointAtDist obj (* dist (setq n (1+ n)))) 0 1 ) lst ) ) ) ) ((and (= (vla-get-ObjectName obj) "AcDbPolyline") (= (vla-get-Closed obj) :vlax-true) ) (setq p_lst (vl-remove-if-not '(lambda (x) (or (= (car x) 10) (= (car x) 42) ) ) (setq ent1 (ssget "X" (list (cons 8 "carroyage") (cons 0 "LWPOLYLINE")))) (setq ent (ssname ent1 0)) ) ) (while p_lst (setq lst (cons (trans (append (cdr (assoc 10 p_lst)) (list (cdr (assoc 38 ent))) ) ent 1 ) lst ) ) (if (/= 0 (cdadr p_lst)) (progn (setq prec (1+ (fix (* 25 (sqrt (abs (cdadr p_lst)))))) dist (/ (- (if (cdaddr p_lst) (vlax-curve-getDistAtPoint obj (trans (cdaddr p_lst) ent 0) ) (vlax-curve-getDistAtParam obj (vlax-curve-getEndParam obj) ) ) (vlax-curve-getDistAtPoint obj (trans (cdar p_lst) ent 0) ) ) prec ) n 0 ) (repeat (1- prec) (setq lst (cons (trans (vlax-curve-getPointAtDist obj (+ (vlax-curve-getDistAtPoint obj (trans (cdar p_lst) ent 0) ) (* dist (setq n (1+ n))) ) ) 0 1 ) lst ) ) ) ) ) (setq p_lst (cddr p_lst)) ) ) ) (cond (lst (vla-ZoomExtents (vlax-get-acad-object)) (setq ss (ssget (strcat "_" opt) lst fltr)) (vla-ZoomPrevious (vlax-get-acad-object)) ss ) ) ) (defun c:ssof (/ ss ) (and (or (and (setq ss (cadr(ssgetfirst) )) (= 1 (sslength ss)) ) (and (sssetfirst nil nil) (setq ss (ssget "_:S:E" (list '(-4 . " '(0 . "CIRCLE") '(-4 . " '(0 . "ELLIPSE") '(41 . 0.0) (cons 42 (* 2 pi)) '(-4 . "AND>") '(-4 . " '(0 . "LWPOLYLINE") '(-4 . "&") '(70 . 1) '(-4 . "AND>") '(-4 . "OR>") ) ) ) ) ) (sssetfirst nil (SelByObj (ssname ss 0) "Wp" nil) ) ) (princ) (command "_erase" ss) ) [Edité le 9/5/2011 par HAYA82] [Edité le 9/5/2011 par HAYA82]
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