stugeol Posté(e) le 25 octobre 2016 Posté(e) le 25 octobre 2016 Bonjour, Voici ce que je veut faire :Selectionner une ligne de repére multipleRécupérer les coordonnées d'insertion de la ligne de repère multiple (p1)Récupérer l'indexe de la ligne de repère multiple (txt1) Selectionner une seconde ligne de repére multipleRécupérer les coordonnées d'insertion de la ligne de repère multiple (p2)Faire la différence des Y : dy = (Yp2- Yp1)Ajouter dy à txt1, txt1 est une altitude.remplacer la valeur de l'index de la 2nd ligne de repère multiple par dy+txt1 Après queleque recherche sur le net j'ai trouvé que :l'index est associé au code DXF 91Le point d'insertion est associé au code DXF 110 Voici mon code : (defun C:LMMR (/ p1 p2 dy txt1 en1 en2 ed1 ed2 txt1 txt2) (setq en1 (cadr (entsel "\n Selectionnez l'objet source"))) (setq en2 (cadr (entsel "\n Selectionnez l'objet à modifier"))) (setq ed1 (entget en1)) (setq ed2 (entget en2)) (setq p1 (assoc 110 ed1)) (setq p2 (assoc 110 ed2)) (setq dy (- (cadr p2) (cadr p1))) (setq Y (atof (cadr(assoc 91 ed1)))) (setq txt1 (rtos (+ Y dy) 2 3)) (setq ed2 (subst (cons 91 txt1) (assoc 91 ed2) ed2)) (entmod ed2) ) normalement devrai se trouver dans en1 et en2 le nom des entités séléctionnées ed1 et ed2 la liste DXF des entités selectionnée p1 et p2 les points d'insertions Ca ne fonctionne pas.Où sont mes erreurs? Quel serait les correction à apporter? Petit à petit on devient moins petit
(gile) Posté(e) le 25 octobre 2016 Posté(e) le 25 octobre 2016 Salut, Tu devrais avoir des messages d'erreur pour te mettre sur la piste. Tu peux aussi faire un pas à pas, soit en mettant un point d'arrêt au début du code ; soit tout simplement en évaluant successivement chaque expression dans la console. Que retourne : (cadr (entsel "\n Selectionnez l'objet source")) ?Que retourne : (assoc 91 ed1) ?Que retourne : (cadr (assoc 91 ed1)) ? Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
stugeol Posté(e) le 25 octobre 2016 Auteur Posté(e) le 25 octobre 2016 Bonjour Gile,Merci pour les pistes.Je viens de résoudre mes problèmes, et voici une solution : (defun C:LMMR (/ ) (setq en1 (car (entsel "\n Selectionnez l'objet source"))) (setq en2 (car (entsel "\n Selectionnez l'objet à modifier"))) (setq ed1 (entget en1)) (setq ed2 (entget en2)) (setq txt1 (cdr (assoc 304 ed1))) (setq txt2 (cdr (assoc 304 ed2))) (setq y1 (cadr (cdr (assoc 110 (entget en1))))) (setq y2 (cadr (cdr (assoc 110 (entget en2))))) (setq deltay (- y2 y1)) (setq txt1 (+ (atof txt1) deltay)) (setq txt2 (rtos txt1 2 3)) (setq ed2 (subst (cons 304 txt2) (assoc 304 ed2) ed2)) (entmod ed2) ) Cordialement.A Bientôt... Petit à petit on devient moins petit
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