Aller au contenu

Messages recommandés

Posté(e)

Salut à tous,

 

je démarre gentiment le LISP et j'ai un souci d'entrée, dû au manque de connaissances.

 

Je veux, après avoir cliqué un pt avec la fonction ID (et donc j'ai ses coordonnées), réécrire la coordonnée X sur un texte existant, et Y sur un autre texte existant. Je pensais que ceci marcherait...

 

^C^C_change;\;;;;;;$m=$(rtos,$(getvar,@));

 

mais non, alors j'ai essayé ça...

 

^C^C_change;\;;;;;;$m=$(rtos,$(getvar,lastpoint));

 

mais non plus, pourriez-vous m'aider svp ?

 

Merci

Posté(e)

Salut,

Ne voudrais-tu pas plûtot le faire entièrement en lisp ?

(parceque le mélange caractère spéciaux, diesel et lisp n'est pas mon fort....)

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Les champs ???????

 

je sais même pas ce que c'est, je commence vraiment, c'est à dire j'ai commencé il y a 2 jours ! Donc s'il y a un truc simple, je suis preneur !

 

Merci

Posté(e)

En attendant voici une possibilité en macro diesel:

 

Si la cordonnée correspond au point d'insertion du texte

 

pour la coordonnée x

 

^C^Cchanger;ins;\;;;;;$m=$(rtos,$(index,0,$(getvar,lastpoint)));

 

et pour la coordonnée y

 

^C^Cchanger;ins;\;$m=$(rtos,$(index,1,$(getvar,lastpoint)));

 

si ce n'est pas le cas il faut dabord enregister les coordonnées du point dans une variable (USERS1)

 

ce qui donnerait:

 

Bouton 1 (identification du point)

 

^Cid;\^CMODIFVAR;USERS1;$M=$(getvar,lastpoint);

 

Boutton 2 (modification des textes x puis y)

 

^C^C^Cchanger;\;;;;;;$m=$(rtos,$(index,0,$(getvar,users1)));^C^Cchanger;\;;;;;;$m=$(rtos,$(index,1,$(getvar,users1)));

 

meilleures salutations

Posté(e)

Salut,

 

Un exemple en LISP.

 

(defun c:test (/ pt text1 elst1 text2 elst2)

 (and ;_ la routine s'arrête si une des expressions suivante retourne nil

   ;; choisir un point
   (setq pt (getpoint "\nSpécifiez un point: "))

   ;; sélectionner le texte "X"
   (setq text1 (car (entsel "\nSélectionnez le texte pour la coordonnée X: ")))

   ;; liste des données dxf de l'objet sélectionné
   (setq elst1 (entget text1))

   ;; vérifier qu'il s'agit bien d'un texte (ou mtexte)
   (wcmatch (cdr (assoc 0 elst1)) "*TEXT")

   ;; modifier la valeur du texte
   (entmod (subst (cons 1 (rtos (car pt)))
	   (assoc 1 elst1)
	   elst1
    )
   )

   ;; idem pour le second texte
   (setq text2 (car (entsel "\nSélectionnez le texte pour la coordonnée Y: ")))
   (setq elst2 (entget text2))
   (wcmatch (cdr (assoc 0 elst2)) "*TEXT")
   (entmod (subst (cons 1 (rtos (cadr pt)))
	   (assoc 1 elst2)
	   elst2
    )
   )
 )
 (princ)
)

(princ "TEST chargé. Entrer test pour lancer la commande.")
(princ) 

 

[Edité le 24/7/2007 par (gile)]

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

 

Bouton 1 (identification du point)

 

^Cid;\^CMODIFVAR;USERS1;$M=$(getvar,lastpoint);

 

Boutton 2 (modification des textes x puis y)

 

^C^C^Cchanger;\;;;;;;$m=$(rtos,$(index,0,$(getvar,users1)));^C^Cchanger;\;;;;;;$m=$(rtos,$(index,1,$(getvar,users1)));

 

 

Presque super ! Ca fonctionne pour le x mais pas pour le y !? Je vois pas trop d'où ça peut venir mais comme je débute et que je suis encore nul... Vous verrez mieux l'erreur que moi ! Alors où qu'elle est l'erreur ???

 

Merci

Posté(e)
Presque super ! Ca fonctionne pour le x mais pas pour le y !? Je vois pas trop d'où ça peut venir mais comme je débute et que je suis encore nul... Vous verrez mieux l'erreur que moi ! Alors où qu'elle est l'erreur ???

 

apparemment il y un [espace] qui c'est glissé dans le passage à la ligne ;; ;;;;

en le supprimant cela devrait aussi fonctionner pour les y

 

meilleures salutations

Posté(e)

à jeanmi66

 

On doit utiliser en deux boutons car quand on lance l'évaluation diesel par $M= l'évaluation se fait sur toute la chaîne

 

et lors de la saisie du texte la valeur de "lastpoint" change il faut enregistrer les coordonnées dans une variable avant et relancer une deuxième évaluation

 

pour ma part pour plus de fonctionnalité j'utilises les menus curseurs pour la deuxième évaluation.

 

Ceci dit ce n'est pas forcément impossible de la faire en un seul bouton mais c'est plus long à mettre au point et il n' y a pas de garantie mais dans certains cas j'y suis arrivé...

 

donc si on peut utiliser le lisp c'est pour moi plus compliqué du point de vue syntaxe mais plus simple d'utilisation...

 

pour ma part je préfères travailler en LT....

 

Salutations

 

Posté(e)

Je comprends ce que tu veux dire. C'est peut-être parceque je débute mais j'ai vraiment envie de savoir ce qui va pas dans cette macro !

 

Je l'ai fait en 2 bouttons, apparemment, le 1er fonctionne, pas le second. Mis à part l'espace, tu vois autre chose qui pourrait coincer ?

Posté(e)

à jeanmi66

 

Comme déjà expliqué les macros ont étés élaborées sous autocad LT et retranscrites pour autocad FULL

 

j'ai refait des test sur la deuxième macro et du premier coup cela fonctionne mais après des essais plus poussés je constate que

la manière d'utiliser les accobj peut influencer le résultat (pour définir des point de coordonnées j'ai dessiné des croix et si j'utilise la commande id en tapant l'accrochage int. cela ne fonctionnait pas/plus)

d'après mes test si on ajoute un . devant les commandes le déroulement de la macro est meilleure du moins sur la version adt2004.

 

 

BOUTON 1

 

^C^C.id;\^CMODIFVAR;USERS1;$M=$(getvar,lastpoint);

 

BOUTON 2

 

^C^C.changer;\;;;;;;$m=$(rtos,$(index,0,$(getvar,users1)));^C^C.changer;\;;;;;;$m=$(rtos,$(index,1,$(getvar,users1)));

 

 

En espérant que ce sera la bonne...

 

Avec mes meilleures salutations

 

NB de toute façon en version FULL si le lisp marche bien c'est la meilleure solution....

Posté(e)

PS si c'est pour une version LT il est clair que ces macros ne fonctionneront pas

 

dans ce cas :

 

BOUTON 1

 

^C^C.id;\^C SETENV;USERS1;$M=$(getvar,lastpoint);

 

BOUTON 2

 

^C^C.changer;\;;;;;;$m=$(rtos,$(index,0,$(getenv,users1)));^C^C.changer;\;;;;;;$m=$(rtos,$(index,1,$(getenv,users1)));

 

 

Posté(e)

iiiiiiiiiiiiiiiiiiiiiiiiiiiiiii Haaaaaaaaaaaaaaaaaaa !!!

 

Ca marche à présent, bravo DNALOR !

 

Mais encore une question: pourquoi dis-tu qu'il vaut mieux utiliser le LISP ? Question de stabilité, de qualité... ?

 

Merci

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é