TAIKI Posté(e) le 7 mai 2014 Posté(e) le 7 mai 2014 Bonjour, Je suis nouveau sur le forum, je rencontre un problème que je pense pourrait être résolu en lisp. Je voudrais modifier le lisp de Gile spécial sélection pour y ajouter la possibilité de sélectionné tous les blocs se trouvant sur une polyligne (bloc tcpoint créer avec instopo) Pour pousser plus loin la même action, mais sur toutes les polylignes se trouvant dans le même calque. Encore plus loin déplacer ces blocs dans le même calque que les polylignes. J'aimerais le faire moi-même, mais je viens tout juste de me décider de lire l'introduction a autolisp de Gile, alors au passage si vous pouvez me donner quelque bonne adresse pour débuter. Merci à tous
TAIKI Posté(e) le 11 mai 2014 Auteur Posté(e) le 11 mai 2014 Bonjour, Alors voila j'ai trouver ce code qui fait appel à listpol de Gille: defun c:test (/ fence) (setq fence (listpol (car (entsel "\nSelectionnez le polyligne: ")))) (sssetfirst nil (ssget "_F" fence '((0 . "INSERT")))) ) ;;; listpol by Gille Chanteau ;;;; Returns the vertices list of any type of polyline (WCS coordinates) ;;;; ;;;; Argument ;;;; en, a polyline (ename or vla-object) ; (defun listpol (en / i p l) (setq i (if (vlax-curve-IsClosed en) (vlax-curve-getEndParam en) (+ (vlax-curve-getEndParam en) 1) ) ) (while (setq p (vlax-curve-getPointAtParam en (setq i (1- i)))) (setq l (cons (trans p 0 1 ) l)) )) je voudrais pouvoir effectuer cette opération sur la totalité des polyligne d'un calque ou y intégré le code suivant:(or (setq js (ssget "_I")) (setq js (ssget "_P")) ) (cond (js (sssetfirst nil js) (initget "Existant Nouveau _Existent New") (if (eq (getkword "\nTraiter jeu de sélection [Existant/Nouveau] <Existant>: ") "New") (progn (sssetfirst nil nil) (setq js (ssadd) js (ssget))) ) ) (T (setq js (ssget))) ) merci pour votre aide.
bonuscad Posté(e) le 12 mai 2014 Posté(e) le 12 mai 2014 Bonjour En faisant ta fonction TEST comme ceci: (defun c:test ( / js js_all n fence js_ins nb) (princ "\nSélectionnez les polylignes: ") (setq js (ssget '((0 . "LWPOLYLINE"))) js_all (ssadd)) (cond (js (repeat (setq n (sslength js)) (setq fence (listpol (ssname js (setq n (1- n)))) js_ins (ssget "_F" fence '((0 . "INSERT"))) ) (cond (js_ins (repeat (setq nb (sslength js_ins)) (ssadd (ssname js_ins (setq nb (1- nb))) js_all) ) ) ) ) (sssetfirst nil js_all) ) ) ) ;;; listpol by Gille Chanteau ; ;;; Returns the vertices list of any type of polyline (WCS coordinates) ; ;;; ; ;;; Argument ; ;;; en, a polyline (ename or vla-object) ; (defun listpol (en / i p l) (setq i (if (vlax-curve-IsClosed en) (vlax-curve-getEndParam en) (+ (vlax-curve-getEndParam en) 1) ) ) (while (setq p (vlax-curve-getPointAtParam en (setq i (1- i)))) (setq l (cons (trans p 0 1 ) l)) ) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
TAIKI Posté(e) le 13 mai 2014 Auteur Posté(e) le 13 mai 2014 j'ai essayé une nouvelle approche mais ça ne fonctionne pas; (defun c:test (/ js fence ss i pl)(or (setq js (ssget "_I")) (setq js (ssget "_P")) ) (cond (js (sssetfirst nil js) (initget "Existant Nouveau _Existent New") (if (eq (getkword "\nTraiter jeu de sélection [Existant/Nouveau] <Existant>: ") "New") (progn (sssetfirst nil nil) (setq js (ssadd) js (ssget))) ) ) (T (setq js (ssget))) ) (cond (js(setq fence (listpol(ssname js (setq n (1- n))))) setq ss (ssget "_F" fence '((0 . "INSERT")))) (repeat (setq i (sslength ss)) (setq pl (cons (cdr (assoc 10 (entget (ssname ss (setq i (1- i)))))) pl)) ) ) ) ;;; listpol by Gille Chanteau ;;;; Returns the vertices list of any type of polyline (WCS coordinates) ;;;; ;;;; Argument ;;;; en, a polyline (ename or vla-object) ; (defun listpol (en / i p l) (setq i (if (vlax-curve-IsClosed en) (vlax-curve-getEndParam en) (+ (vlax-curve-getEndParam en) 1) ) ) (while (setq p (vlax-curve-getPointAtParam en (setq i (1- i)))) (setq l (cons (trans p 0 1 ) l)) ))
bonuscad Posté(e) le 16 mai 2014 Posté(e) le 16 mai 2014 Pour inclure la sélection Implicite ou Précédente, ce n'est pas bien difficile a intégrer au code! Je me suis aussi aperçu que tu as aussi sollicité de l'aide sur des forum anglophone, ce qui n'a pas motivé une réponse rapide de ma part et ce qui me fais penser que tu ne cherche pas à construire mais avoir une réponse prête à l'emploi. Bon voici malgré tout la petite modification incluse dans le code complet. (defun c:test ( / js js_all n fence js_ins nb) (princ "\nSélectionnez les polylignes: ") (or (setq js (ssget "_I" '((0 . "LWPOLYLINE")))) (setq js (ssget "_P" '((0 . "LWPOLYLINE")))) ) (cond (js (sssetfirst nil js) (initget "Existant Nouveau _Existent New") (if (eq (getkword "\nTraiter jeu de sélection [Existant/Nouveau] <Existant>: ") "New") (progn (sssetfirst nil nil) (setq js (ssadd) js (ssget))) ) ) (T (setq js (ssget '((0 . "LWPOLYLINE")))) ) ) (setq js_all (ssadd)) (cond (js (repeat (setq n (sslength js)) (setq fence (listpol (ssname js (setq n (1- n)))) js_ins (ssget "_F" fence '((0 . "INSERT"))) ) (cond (js_ins (repeat (setq nb (sslength js_ins)) (ssadd (ssname js_ins (setq nb (1- nb))) js_all) ) ) ) ) (sssetfirst nil js_all) ) ) (prin1) ) ;;; listpol by Gille Chanteau ; ;;; Returns the vertices list of any type of polyline (WCS coordinates) ; ;;; ; ;;; Argument ; ;;; en, a polyline (ename or vla-object) ; (defun listpol (en / i p l) (setq i (if (vlax-curve-IsClosed en) (vlax-curve-getEndParam en) (+ (vlax-curve-getEndParam en) 1) ) ) (while (setq p (vlax-curve-getPointAtParam en (setq i (1- i)))) (setq l (cons (trans p 0 1 ) l)) ) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
TAIKI Posté(e) le 16 mai 2014 Auteur Posté(e) le 16 mai 2014 Merci pour le code modifier. Je ne cherche pas de code tout prêt, mais des informations pour apprendre à coder, effectivement j'ai posé un sujet sur un forum anglophone, mais je n'ai toujours pas la solution. La personne qui m'aide à coder une version différente de ton code (sélectionne le bloc uniquement par son point d'insertion) me donne la marche à suivre et des informations sur mes erreurs. Je souhaite vraiment apprendre, tous les soirs je travaille dessus avec le guide du développeur d' autodesk et l'introduction de Gile. Pour finir ton code m'a deja servi mais mon but, comme expliqué plus haut est de le faire moi meme avec les condition qe j'ai fixer. En tout cas merci, j'espere ne pas t'avoir froissé et pouvoir un jour beneficié de tes connaissances.
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