Aller au contenu

Messages recommandés

Posté(e)

Bonjour,

 

Voici ce que je veut faire :

Selectionner une ligne de repére multiple

Ré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 multiple

Ré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 91

Le 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

Posté(e)

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

Posté(e)

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

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité