Aller au contenu

Lisp pour indiquer longueur polyligne


Messages recommandés

Posté(e)

Bonjour,

 

Je souhaiterai avoir un lisp qui, en cliquant sur une polyligne, et en cliquant après à coté, place une ligne comprenant la longueur de la polyligne en m. (je travaille sur des formats en mm)

 

et ce texte doit avoir la même couleur que la polyligne?

 

Est ce possible ?

 

En vous remerciant par avance ;)

Posté(e)

Sans passer par un lisp, tu peux créer un texte avec champ.

Tu sélectionnes le type d'objet ( polyligne ) , puis la longueur et un préfixe.

Ce champ est lié à ta polyligne, si tu modifies la longueur, le texte changera.

Posté(e)

Merci,

 

Toutefois, pour une polyligne, ca peut aller, mais j'ai plusieurs plans avec environs 50 à 100 polylignes à mesurer.

D'où mon souhait qu'en deux clics je puisse afficher la longueur en mètre chaque polyligne.

 

Un peu comme le lisp "Totalarea" de Gile ou Patrick

 

 

[EDIT] La réponse est quelque peu dans ma question. Je viens juste de tester le lisp "Totalperim" de Gile.

 

Mais si il y a une petite amélioration avec l'application des couleurs sur le texte en correspondance avec la polyligne, mon bonheur sera maximal. B)

Posté(e)

Salut,

 

Tu as TotalPerim sur cette page qui fonctionne comme TotalArea.

 

Sinon, beaucoup plus simple, le LISP suivant fonctionne avec les paramètres de texte courants:

 

(defun c:fredel (/ pline)
 (and
   (setq pline (car (entsel "\nSélectionnez une polyligne: ")))
   (= (getpropertyvalue pline "LocalizedName") "Polyligne")
   (command "_.text" pause "" "" (rtos (/ (getpropertyvalue pline "Length") 1000.)))
 )
 (princ)
)

  • Upvote 1

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

Posté(e)

Hello Gile,

 

En fait j'ai utilisé totalperim qui fonctionne bien.

 

Je teste aussi le lisp et je vois que j'ai un problème avec la taille du texte. Est-il possible de le paramétrer? j'utilise en général une taille 50 en arial

 

et la couleur du texte doit être en "dubloc"

 

T'en remerciant pour le lisp ;)

Posté(e)

Hello

 

SANS reflechir, tu changes eventuellement la variable TEXTSIZE

AVANT de lancer la micro-routine Lisp de Gilles !?

 

Bye, lecrabe

Autodesk Expert Elite Team

Posté(e)

:mellow:

 

J'ai tellement pris l'habitude de piocher des textes existants, puis de les modifier, sans les créer que j'ai oublié qu'il y avait cette variable.

  • 11 mois après...
Posté(e)

Salut,

 

Tu as TotalPerim sur cette page qui fonctionne comme TotalArea.

 

Sinon, beaucoup plus simple, le LISP suivant fonctionne avec les paramètres de texte courants:

 

(defun c:fredel (/ pline)
 (and
   (setq pline (car (entsel "\nSélectionnez une polyligne: ")))
   (= (getpropertyvalue pline "LocalizedName") "Polyligne")
   (command "_.text" pause "" "" (rtos (/ (getpropertyvalue pline "Length") 1000.)))
 )
 (princ)
)

 

Bonjour,

 

Tout d'abord un grand merci pour ce lisp super simple d'utilisation!

Je me permet de m'incruster dans la conversation pour savoir s'il serait possible de sélectionner l'ensemble des polylignes dont on souhaite afficher la longueur et que la valeur s'affiche au milieu de chaque polyligne ? (Ou a gauche, a droite ... ça n'a pas d'importance :))

 

Cordialement

Posté(e)

Je m'incruste aussi

 

( and (setq ..) (= (getpropertyvalue pline "LocalizedName") "Polyligne")

le setq je comprend encore que, mais le =, que vient il faire là?

Je dis encore que pour le setq car setq renvoie nil s'il échoue mais s'il réussi il renvoie la valeur de la variable (?) que vient faire une valeur de variable dans un test booléen?

 

 

 

 

 

 

Posté(e)

Salut.

 

J'en profite pour m'incruster aussi... ;)

 

que vient faire une valeur de variable dans un test booléen?

Connaissant Maître (gile), ça doit être un contrôle pour vérifier si c'est bien une polyligne de sélectionnée...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

(defun c:fredel (/ pline)
 (and
   (setq pline (car (entsel "\nSélectionnez une polyligne: ")))   ; s'il n'y a pas de sélection, on sort
   (= (getpropertyvalue pline "LocalizedName") "Polyligne")       ; si la propriété "LocalizedName" de pline n'est pas "Polyligne", on sort    
   (command "_.text" pause "" "" (rtos (/ (getpropertyvalue pline "Length") 1000.)))
 )
 (princ)
)

 

La fonction 'and' utilise une ce qu'on appelle une évaluation short circuit, c'est à dire qu'à la première expression qui retourne nil, l'évaluation s'arrête et and renvoie nil.

L'expression (setq ...) affecte à 'pline' la valeur retournée par (car (entsel ...)) et retourne cette valeur, Si aucun objet n'a été sélectionné cette valeur est nil, on sort.

L'expression (= ...) évalue si 'pline' est bien une polyligne, si ce n'est pas le cas, on sort.

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

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é