Aller au contenu

Lisp reseaux PIC Etudiant genie civil


Messages recommandés

Posté(e)
Bonsoir,
Je souhaite réaliser des réseaux pour un projet de 3e année en Génie-Civil, mon lisp fonctionne jusqu'à que le commande polyligne
commence c'est-à-dire au début.
Malgré de nombreux tests je n'arrive pas à faire fonctionner la commande polyligne en voulant choisir ma largeur.
Et du coup je ne sais pas si le reste fonctionne aussi.
Je suis sur AutoCAD 2023 ...
Quelqu'un à la possibilité de m'aider ?
(defun c:tracer_reseau ()
  (setvar "cmdecho" 0)

(setq res (getstring "\nQuel réseau veux-tu tracer ? [EP/EU/AEP/HTA/BTA] : ")); Choisir le calque
(cond
  ((= res "EP") (command "-calque" "CH" "Rsx_humides_EP"))
  ((= res "EU") (command "-calque" "CH" "Rsx_humides_EU"))
  ((= res "AEP") (command "-calque" "CH" "Rsx_humides_AEP"))
  ((= res "HTA") (command "-calque" "CH" "Rsx_secs_HTA"))
  ((= res "BTA") (command "-calque" "CH" "Rsx_secs_BTA"))
 )
  
; Déssiner la polyligne avec le choix de diametre libre
  (setq diameter 
      (cond
        ((= diameter "0.1") 0.1 0.1)
        ((= diameter "0.15") 0.15 0.15)
        ((= diameter "0.2") 0.2 0.2)
        ;(T 0.1)  ;; Valeur par défaut si aucun cas ne correspond
      )
  )
  (setq pt1 (getpoint "\nQuel est le point de départ du réseau : ")); Point de départ
  (setq listres nil); création d'une liste des points
  (setq listres (cons pt1 listres))  ; Ajouter le premier point à la liste
  
         (command "_PLINE" pt1 "LA" diameter )
         
  (while (setq pt2 (getpoint pt1 "\nSpécifiez le prochain point ou appuyez sur Entrée pour terminer : "))
    (setq listres (cons pt2 listres))  ; Ajouter chaque point à la liste
    (setq pt1 pt2) ; Mettre à jour p1 pour le prochain segment
    ;(setq longueur (+ longueur (distance pt1 pt2))); Calculer la longueur          
  )
    (setq listres (reverse listres)); Redéfinir chaque point au début de liste
  
 ;(command "_PLINE" "W" diameter ); commecer le tracé
  (foreach pt listres(command pt)) ; Ajouter chaque point à la polyligne
  (command "")  ; Fin de commande la polyligne
  
   ; Calculer le milieu de la polyligne
   ;(setq milieu (vlax-curve-getpointatparam res (/ (vlax-curve-getendparam res) 2)))
  
   ; Affichage de la longueur totale du réseau tracé
  (princ (strcat "\nLongueur totale du réseau : " (rtos longueur 2 3) " m"))
  
  (cond
    ((= res "EP") (command "-calque" "CH" "Rsx_humides_EP_texte"))
    ((= res "EU") (command "-calque" "CH" "Rsx_humides_EU_texte"))
    ((= res "AEP") (command "-calque" "CH" "Rsx_humides_AEP_texte"))
    ((= res "HTA") (command "-calque" "CH" "Rsx_secs_HTA_texte"))
    ((= res "BTA") (command "-calque" "CH" "Rsx_secs_BTA_texte"))
   )
  
  ; Insérer le texte de la longueur au milieu de la polyligne
  (command "_text" "J" "M" 0.7 0 (strcat "Longueur : " (rtos longueur 2 3) " unités"))
  ; Ajout du texte avec le nom du réseau et le diamètre
  (setq text (strcat network-name " - " (rtos diameter 2 2) "m"))
  (command "_text" "J" "M" 0.7 0 text) 
  
   ; Demande à l'utilisateur s'il veut dessiner une autre polyligne
   (if (/= (getstring "\nVoulez-vous dessiner un autre réseau ? (o/n) : ") "o")
      (setq continue nil)
    )
  
  (setvar "cmdecho" 1)
  (princ)
)
 
Posté(e)

Bonjour

Je vais attendre que vous ayez un compte en bonne et due forme pour répondre.

En tant que débutant, vous devriez commencer avec des entités simples.
La polyligne est un peu plus complexe, en particulier pour trouver son milieu.

Dans l'attente d'une inscription dans les règles…

Amicalement

 

  • Upvote 1

Éternel débutant…
Mon site perso : Programmer dans AutoCAD

 

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • 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é