Serge1591 Posté(e) le 28 mai 2007 Posté(e) le 28 mai 2007 Bonjour. Je recherche une routine ou un LISP qui me permettra a calculer l'aire d'une surface quelconque en cliquant à l'intérieur de celle-ci ou en sélectionnant les lignes qui la compose. Le résultat trouvé pourrais apparaître au bout du curseur pour être positionné dans le dessin par un nouveau clic de souris. Merci à tous.
Didier-AD Posté(e) le 28 mai 2007 Posté(e) le 28 mai 2007 Salut, vite fait, çà fait ce que tu demandes ; au premier lancement il te sera demandé la hauteur souhaitée pour le texte. (defun c:surf( / pt e surf) (setq pt (getpoint "\n point à l'intérieur de la zone")) (if (setq e (bpoly pt)) (progn (setq surf (vlax-get (vlax-ename->vla-object e) "area")) (entdel e) (if (not $$htxt) (setq $$htxt (getdist pt "\nhauteur du texte"))) (command "_text" pt $$htxt 0 (rtos surf 2 3)) (command "_move" (entlast) "" pt pause) ) ) )
dainese Posté(e) le 29 mai 2007 Posté(e) le 29 mai 2007 BonjourJe commence en lisp et la fonction que tu viens de créer m'interresse.mais j'ai un message d'erreur Commande: surf point à l'intérieur de la zone; erreur: no function definition: VLAX-ENAME->VLA-OBJECTM'y suis je mal pris ?? Autoc@dement
Serge1591 Posté(e) le 29 mai 2007 Auteur Posté(e) le 29 mai 2007 Bonjour Didier AD. Ça fonctionne très bien. Merci. Je travaille en milimètre, donc mes unités de mesure sont aussi en milimètre. Mais si je voudrais la surface en mètre carré (m2), peux-t'on avoir une option qui divise le résultat par 1 000 000 ? Peut-on ajouté aussi l'unité de mesure au resultat (example: m2) Merci. [Edité le 29/5/2007 par Serge1591]
(gile) Posté(e) le 29 mai 2007 Posté(e) le 29 mai 2007 Salut, remplace : (command "_text" pt $$htxt 0 (rtos surf 2 3)) par : (command "_text" pt $$htxt 0 (strcat (rtos (/ surf 1e-6) 2 3) "m2")) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Didier-AD Posté(e) le 29 mai 2007 Posté(e) le 29 mai 2007 ; erreur: no function definition: VLAX-ENAME->VLA-OBJECTM'y suis je mal pris ?? désolé, il faut avoir chargé les objets com, comme ils sont chargés automatiquement chez moi, j'ai oublié il faut ajouter la ligne ci dessous avant ou après la fonction (ou la taper au clavier)(vl-load-com) (vl-load-com) (defun c:surf( / pt e surf) (setq pt (getpoint "\n point à l'intérieur de la zone")) (if (setq e (bpoly pt)) (progn (setq surf (vlax-get (vlax-ename->vla-object e) "area")) (entdel e) (if (not $$htxt) (setq $$htxt (getdist pt "\nhauteur du texte"))) (command "_text" pt $$htxt 0 (rtos surf 2 3)) (command "_move" (entlast) "" pt pause) ) ) )
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant