Aller au contenu

LISP & DXF


GOLUM69

Messages recommandés

Bonsoir a tous, je revient vers vous car j'ai encore un petit problème que je n'arrive pas a résoudre. Je voudrais créer un programme permettant de créer des zones de stockages pour un plan d'installation de chantier.

 

Le programme consisterais à demander à l'utilisateur de sélectionner plusieurs points sur le plan puis une fois qu'il appui sur return, la polyligne se ferme. (car dans mon début de programme, ci après, quand je met "c" a la fin de la commande cela ne fonctionne pas) puis de récupérer l'aire de la polyligne crée et de l'afficher en texte, centré au milieu de la zone.

 

J'ai malheureusement de très grosses lacunes en codes DXF, je ne sais pas trop les manipulés. C'est pour quoi j'implore grandement votre aide !!! :( :( :(

 

VOICI LE DEBUT DE MON CODE (tout pourri :( ) :

 

(defun c:ZoneStockage()

 

(setq pt(getpoint "\nPoint d'origine: "))

(command "polylign" pt "la" 0 0 "c")

(while pt

(setq pt (getpoint "\nPoint suivant(Return pour FIN): "))

(command pt))

)

Lien vers le commentaire
Partager sur d’autres sites

Salut.

 

Je te propose ça :

;;; ********************
;;; Prog pour Golum69   
;;; ********************
(defun c:ZoneStockage ( / p )
 (setq p (getpoint))
 (command "_pline" p (while p (command (setq p (getpoint "\nPoint suivant (Return pour FIN) : " p)))))
 (command "pedit" (entlast) "c" "")
 (princ)
) ;_ Fin de defun

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)

Lien vers le commentaire
Partager sur d’autres sites

(command "_.pline"
 (while (not (zerop (getvar "cmdactive")))
   (command pause)
 )
)

 

pour utiliser la commande _pline avec toutes ses possibilités, pas simplement entrer le point suivant...

 

Merci beaucoup DenisHen !! et dis moi saurais tu comment faire pour récupérer l'aire de la polyligne et que cela affiche l'aire en texte selon le point ou l'on clique ? Thanks you d'avance ..

je suggère l'utilisation d'un champ

 

Amicalement

Vincent

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Lien vers le commentaire
Partager sur d’autres sites

+1 avec Vincent.

 

Il serait judicieux de placer un champs plutôt qu'un texte, mais ça, je ne sais pas faire en lisp...

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)

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...

Salut!

 

J'ai repris le code de DenisHen, et j'ai ajouté la création du champ.

 

;;; ********************
;;; Prog pour Golum69   
;;; ********************
(vl-load-com)
(defun c:ZoneStockage ( / p zst id aire)
 (setq p (getpoint))
 (command "_pline" p (while p (command (setq p (getpoint "\nPoint suivant (Return pour FIN) : " p))))) ;créer la polyligne
 (setq zst (entlast))							; stoker la polyligne
 (command "pedit" zst "c" "")
 (setq	id (vla-get-ObjectID (vlax-ename->vla-object zst))		; isoler l'ID de la polyligne
aire (strcat "%<\\AcObjProp Object(%<\\_ObjId " (itoa id) ">%).Area \\f \"%lu2\">%")) ; stoke le texte pour créer un champ contenant l'aire
 (command "-TEXTE" (getpoint) "4" "100g" (strcat "Aire de Stockage : " aire " m2"))
 (princ)
) ;_ Fin de defun

 

Dit nous si c'est ce que tu cherchais!

Lispeur débutant!
Autocad Map3D 2023
Covadis-Autopist 18.0C

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é