Aller au contenu

Un attribut qui affiche l\'altimétrie du point d\'insertion ?


Messages recommandés

Posté(e)

Tout est dans le titre : j'essaie de définir un attribut qui affiche automatiquement la valeur en Z du point d'insertion, mais j'ai beau essayer, je n'y arrive pas.

Quelqu'un pourrait-il m'aider ? (ça existe d'ailleurs sûrement déjà)

 

Merci !

Posté(e)

Bjr à tous,

 

Essayes de voir du coté des champs si tu connais ...

Tu crées ton bloc puis tu lui affectes un attribut qui aura pour valeur la position en Z de ton bloc.

Si pas suffisamment clair, revenir à la charge ... ;)

Posté(e)

Merci pour ta réponse.

 

J'ai essayé avec un champ. J'y arrive très bien pour ce qui est de récupérer sous forme d'un texte la surface d'une polyligne, mais pas pour récupérer en texte la valeur en Z du point d'insertion....

Posté(e)

Salut

 

Un lisp vite fait qui créé un champ Z de tous les blocs depuis l'attribut sélectionné.

 

(defun c:altz(/ att blo doc loc nom obj pos nombl)

 (defun nombl(bl)
   (if (vlax-property-available-p bl 'effectivename)
     (vla-get-effectivename bl)
     (vla-get-name bl)
   )
 )

 (vl-load-com)
 (setq doc (vla-get-activedocument (vlax-get-acad-object)))
 (vla-startundomark doc)
 (and	(setq att (nentsel))
(setq att (vlax-ename->vla-object (car att)))
(eq (vla-get-objectname att) "AcDbAttribute")
   (progn
     (setq nom (nombl (setq blo (vla-objectidtoobject (vla-get-database att) (vla-get-ownerid att))))
    pos 0
     )
     (while (setq obj (nth pos (vlax-invoke blo 'getattributes)))
(and (eq (vla-get-objectid obj) (vla-get-objectid att))
  (setq loc pos)
)
(setq pos (1+ pos))
     )
     (ssget "x" (list (cons 0 "insert") (cons 2 (strcat "`**," nom))))
     (vlax-for blo (setq sel (vla-get-activeselectionset doc))
(and (eq nom (nombl blo))
  (vla-put-textstring (nth loc (vlax-invoke blo 'getattributes))
		      (strcat "%<\\AcObjProp Object(%<\\_ObjId "
			      (itoa (vla-get-objectid blo))
			      ">%).InsertionPoint \\f \"%lu6%pt4\">%"
		      )
  )
)
     )
     (vla-delete sel)
     (vla-regen doc acallviewports)
   )
 )
 (vla-endundomark doc)
 (princ)
)

 

@+

 

[Edité le 20/7/2010 par Patrick_35]

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

Posté(e)
De mémoire, INSERTION - CHAMP - OBJET (click sur ton bloc) - POSITION et ne cocher que la valeur en Z et ça doit suffire je crois ...

 

...malheureusement, ça marche pô chez moi...?

Mystère.

Posté(e)

@ Patrick_35

 

Merci pour ton LISP.

 

Malheureusement, je retombe sur un autre problème que je recontre avec certains LISP et certaines commandes : j'obtiens un message d'erreur " error: no function definition: VLAX-GET-ACAD-OBJECT "

 

Y aurait pas moyen d'adapter ton LISP pour qu'il n'emploie pas ces bidules-machin à base de VLAX-truc que mon ordi n'aime pas ?

Posté(e)

Malheureusement, je retombe sur un autre problème que je recontre avec certains LISP et certaines commandes : j'obtiens un message d'erreur " error: no function definition: VLAX-GET-ACAD-OBJECT "

J'ai encore oublié le (vl-load-com) :(

C'est corrigée dans le lisp

 

Y aurait pas moyen d'adapter ton LISP pour qu'il n'emploie pas ces bidules-machin à base de VLAX-truc que mon ordi n'aime pas ?

Avoir par exemple dans ton AutoCAD.LSP (chargé avec chaque dessin) une ligne contenant l'expression

(vl-load-com)

C'est ce que j'ai fais sur mon poste, et c'est pour cela qu'il m'arrive trop régulièrement de l'oublier dans les lisps que je diffuse.

 

@+

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

Posté(e)

Bonjour,

 

pour le champ, dans l'éditeur de bloc, créer l'attribut, puis dans la valeur par défaut, cliquer sur le bouton au bout de la ligne (Insert field).

Dans le dialogue suivant, choisir la catégorie OBJETS, puis pour le noms de champs choisir ESPACERESERVEBLOC et dans la prorpiété, sélectionner POSITION et ne cocher que Z

 

Olivier

 

Support Technique Covadis

Posté(e)

Bonjour à tous,

 

Lorsque l'on a récupéré la valeur Z, peut on la formatée pour qu'elle s'affiche en mètre dans le bloc dyn sachant que le dessin est en millimètre. Peut-être un formule mais quelle est la syntaxe?

 

Merci d'avance

Posté(e)

Merci pour toutes vos contributions.

Je n'ai pas eu le temps de les exploiter à fond (d'autant que je travaille sur une version en anglais, donc il faut que je trouve l'équivalent des commandes en anglais).

Si quelqu'un a réussi à créer un attribut qui marche, peut-il le mettre en ligne ?

 

Merci !

Posté(e)

Bjr à tous,

 

Pour llefevre , regarde du coté des formules à l'intérieur des champs.

C'est possible en affectant un facteur de conversion de 0.001 pour ton cas précis.

Même manip, bloc à attribut, champ en lieu et place de l'attribut puis choisir formule

et insérer un champ avec le coef modificateur voulu.

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é