Aller au contenu

Gestion des champs dynamiques


phil_vsd

Messages recommandés

Bonjour tous,

 

Je voudrai savoir, car j'ai cherché et je n'ai pas trouvé, si l'on peut insérer et piloter, soit par VBA soit par du Lisp, les champs dynamiques dans un objet "texte" ou "mtexte".

Exemple d'application : je clique sur une surface, puis apparait un texte avec un champs lié à la polyligne qui renseignerait sur son aire.

 

Merci à vous !

"La ligne droite est le plus court chemin entre deux points, à condition que les deux points soient bien en face l'un de l'autre" P. Desproges.

Lien vers le commentaire
Partager sur d’autres sites

Merci Gile et Patrick 35

 

Pas mal ce lisp ça me motive pour apprendre le lisp, va falloir que je me mette un coup de pied au cul, mais un gros alors parce que cette syntaxe... on est pas copain elle et moi !

"La ligne droite est le plus court chemin entre deux points, à condition que les deux points soient bien en face l'un de l'autre" P. Desproges.

Lien vers le commentaire
Partager sur d’autres sites

Re,

 

cette syntaxe... on est pas copain elle et moi !

pareil pour moi, avec VB/VBA

 

 

Une autre façon, en utilisant les champs plutôt que les réacteurs avec lesquels je ne suis pas familier du tout.

 

Le LISP place le texte sur le centre de gravité de la polyligne.

 

On peut changer le suffixe, " mm²", suivant l'unité courante.

 

;;; Pline_area Place un texte avec champ "Aire" sur le centre de
;;; gravité de la polyligne fermées sélectionnée.

(defun c:pline_area (/ ss obj txt Space reg pt)
 (while (not
   (setq
     ss	(ssget "_:S:E" '((0 . "LWPOLYLINE") (-4 . "&") (70 . 1)))
   )
 )
 )
 (setq	obj   (vlax-ename->vla-object (ssname ss 0))
txt   (strcat "Aire = "
	      "%		      (itoa (vla-get-ObjectID obj))
	      ">%).Area \\f \"%lu6%qf1\">%"
	      " mm²" [color=#3366FF]; Suffixe à changer suivant l'unité utilisée[/color]
      )
Space (if (= (getvar "CVPORT") 1)
	(vla-get-PaperSpace
	  (vla-get-activedocument (vlax-get-acad-object))
	)
	(vla-get-ModelSpace
	  (vla-get-activedocument (vlax-get-acad-object))
	)
      )
reg   (vlax-invoke Space 'addRegion (list obj))
pt    (trans (vlax-get (car reg) 'Centroid) 1 0)
mtext
      (vla-addMtext
	Space
	(vlax-3d-point pt)
	(getvar "TEXTSIZE")
	txt
      )
 )
 (vla-put-width mtext 0.0)
 (vla-put-AttachmentPoint
   mtext
   acAttachmentPointMiddleCenter
 )
 (vla-put-InsertionPoint mtext (vlax-3d-point pt))
 (vla-delete (car reg))
 (princ)
) 

 

[Edité le 3/9/2006 par (gile)]

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

Lien vers le commentaire
Partager sur d’autres sites

Gile tu es un chef !

 

Y'a pas de doute tu maîtrise le lisp. Ta routine est exacetement ce que je recherche à faire, je vais la décortiquer pour l'adapter. Ensuite les champs seront copiés dans un tableau pour une addition de surfaces d'appartement. Maintenant que je sais que les champs sont pilotables en lisp c'est super motivant, surtout quand on se base sur une routine déjà existante.

 

J'ai acheté le livre "Programmer Autocad" c'est pas mal mais il y a des fautes de frappes dans les routines et parfois ça ne marche pas... Comme je ne les détecte pas au premier coup d'oeil, je traîne un peu, je me pose des questions.

 

En attendant je vais continuer à pomper des routines dans les forums et à implorer votre pitié de temps en temps... :P

 

A très bientôt !

"La ligne droite est le plus court chemin entre deux points, à condition que les deux points soient bien en face l'un de l'autre" P. Desproges.

Lien vers le commentaire
Partager sur d’autres sites

En attendant je vais continuer à pomper des routines dans les forums

Salut, elles sont principalement en lisp voir vlisp, alors si tu souhaites t'y mettre, bienvenue au club ;)

 

ps: le vlisp et le vba se ressemblent beaucoup et on arrive en vlisp à jouer avec les ActiveX

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

Salut tous !

 

Le lisp ? Je vais m'y mettre... Piano piano... Mais promis je vais m'y mettre. Je pense que c'est le second palier dans la carrière d'un dessinateur. En ce moment je décortique les lisps mais je devrai commencer par des lisps plus simples, pour m'imprégner de la syntaxe.

 

A ++

"La ligne droite est le plus court chemin entre deux points, à condition que les deux points soient bien en face l'un de l'autre" P. Desproges.

Lien vers le commentaire
Partager sur d’autres sites

Un petit conseil pour la syntaxe, sert toi de l'éditeur VisualLISP, formatage, couleurs différentes pour les fonctions, le chaines, les réels et les entiers, double clic pour l'appariement des paranthèses, double clic pour sélectionner une fonction et accés direct à l'aide (icône au point d'interrogation) ...

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

Lien vers le commentaire
Partager sur d’autres sites

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é