banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Thu 25 June 2020 10:46

rdavjina
Participant occasionnel
Date d'inscription: 22 Jan 2013
Messages: 23

[ACAD] Tracer des Lignes avec fleches en script

Bonjour,
Je travaille sur un projet routier. Et je dois limiter les zones traversées par des lignes avec des flèches aux extrémités et le type de la zone au centre de la ligne. J’ai un fichier excel avec des colonnes pour les coordonnées de début et fin de chaque ligne et une colonne pour le type de milieu traversé.
Ma question est il possible d’automatiser le traçage des lignes avec le type du milieu traversé par script ou VB ? et comment le faire ?
Une petite précision je suis débutant en script autocad et VB et j’utilise l’autocad 2013.
J'envoie en fichier attaché le fichier excel et le output que je voulais avoir en image
Merci

Dernière modification par rdavjina (Thu 25 June 2020 10:47)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#2 Sat 27 June 2020 00:32

bruno v.
Participant actif
Date d'inscription: 22 Mar 2010
Messages: 89

Re: [ACAD] Tracer des Lignes avec fleches en script

Bonjour,

Une cotation alignée, cela irait?
Si oui dans excel tu enlève tes rangées d'entête, tu ne garde que les valeurs et tu enregistre ton fichier en CSV avec comme séparateur le point vigule ";"

Ensuite dans ton dessin tu charge le lisp (tu peux aussi copier-coller directement le code en ligne de commande pour tester)
Tu tape en ligne de commande READCSV et tu pointe ton fichier "csv" et cela devrait se dessiner.

Code:

(defun c:readCSV ( / input f_open adoc obj_dim l_read x1 y1 x2 y2 value pt_start pt_end pt_text dimObj)
  (setq
    input (getfiled "Sélectionner un fichier CSV" "" "csv" 2)
    f_open (open input "r")
  )
  (setq
    adoc (vla-get-ActiveDocument (vlax-get-acad-object))
    obj_dim (vla-add (vla-get-Dimstyles adoc) "Zone")
  )
  (vla-put-activedimstyle adoc obj_dim)
  (while (setq l_read (read-line f_open))
    (setq
      x1 (atof (substr l_read 1 (vl-string-position 59 l_read)))
      l_read (substr l_read (+ 2 (vl-string-position 59 l_read)))
      y1 (atof (substr l_read 1 (vl-string-position 59 l_read)))
      l_read (substr l_read (+ 2 (vl-string-position 59 l_read)))
      x2 (atof (substr l_read 1 (vl-string-position 59 l_read)))
      l_read (substr l_read (+ 2 (vl-string-position 59 l_read)))
      y2 (atof (substr l_read 1 (vl-string-position 59 l_read)))
      l_read (substr l_read (+ 2 (vl-string-position 59 l_read)))
      value (substr l_read 1 (vl-string-position 59 l_read))
      pt_start (list x1 y1)
      pt_end (list x2 y2)
      pt_text (mapcar '* (mapcar '+ pt_start pt_end) '(0.5 0.5))
      dimObj (vla-AddDimAligned (vla-get-modelspace adoc) (vlax-3d-point pt_start) (vlax-3d-point pt_end) (vlax-3d-point pt_text))
    )
    (vla-put-TextOverride dimObj value)
    (vla-put-TextRotation dimObj (angle pt_start pt_end))
    (vla-put-ArrowheadSize dimObj 0.5)
    (vla-put-TextHeight dimObj 1.0)
    (vla-put-ExtLine1Suppress dimObj :vlax-true)
    (vla-put-ExtLine2Suppress dimObj :vlax-true)
    ;(vla-put-DimLineInside dimObj :vlax-true)
    (vla-Update dimObj)
  )
  (close f_open)
  (prin1)
)

Dernière modification par bruno v. (Sat 27 June 2020 00:46)

Hors ligne

 

#3 Sat 27 June 2020 10:35

rdavjina
Participant occasionnel
Date d'inscription: 22 Jan 2013
Messages: 23

Re: [ACAD] Tracer des Lignes avec fleches en script

Merci Bruno V.
Je vais essayer. Merci

Hors ligne

 

#4 Sat 27 June 2020 10:45

rdavjina
Participant occasionnel
Date d'inscription: 22 Jan 2013
Messages: 23

Re: [ACAD] Tracer des Lignes avec fleches en script

Bonjour Bruno V.
J essaye d'utiliser votre code mais malheureusement je n'ai jamais pratiqué Lisp.
A vrai dire je suis nul en Lisp donc je n'arrive pas à tracer à partir de votre code.
Est ce que vous pouvez me donner une petite manip pour démarrer ça en Lisp ?
Merci d'avance

Hors ligne

 

#5 Sat 27 June 2020 12:20

bruno v.
Participant actif
Date d'inscription: 22 Mar 2010
Messages: 89

Re: [ACAD] Tracer des Lignes avec fleches en script

Je viens de réaliser que vous êtes sous 2013, d'ailleurs c'est bien une version full, pas LT?

Si c'est une version pleine, tapez (vl-load-com) dans la ligne de commande car cette fonction n'est pas chargé automatiquement dans les anciennes versions et je l'ai omise (cette commande peut être intégrée au code par la suite)

Après comme je l'ai déjà dit, dans un premier temps (pour voir si ça fonctionne), vous copier le code et rien que le code (dans la balise de code du forum, de la première parenthèse à la dernière) et vous le collez directement dans la ligne de commande d'Autocad (là où vous tapez les commandes manuellement au clavier), vous faites entrée et normalement C:READCSV devrait apparaître, cela veut dire que le code est bien chargé.
Dès lors une nouvelle commande (pour la session en cours est disponible, c'est la commande READCSV qui exécutera le code.

Il est possible qu'il y ait un message d'erreur (je ne me souvient plus si la 2013 supporte le langage (vla-)...)
Après il est possible d'écrire le code avec des fonction (entmake) qui elles seront reconnues, mais l'écriture est moins facile!

NB:Si c'est un dessin vierge (pour faire un test), faites un zoom étendu après la commande readcsv pour voir le résultat.
Si ça fonctionne, je vous invite à consulter: https://cadxp.com/topic/14323-charger-un-lisp/

Hors ligne

 

#6 Sat 27 June 2020 14:03

rdavjina
Participant occasionnel
Date d'inscription: 22 Jan 2013
Messages: 23

Re: [ACAD] Tracer des Lignes avec fleches en script

waooh. Ça marche très bien bruno v et merci beaucoup vous m'aidez énormément.  Mais j'ai encore trois question :
1 - Je travaille sur un projet routier de centaine de kilomètre. est ce que le code est limité (c'est à dire la ligne dans le csv) si je insère encore des points pour créer des lignes?
2 - Est ce que je peux modifier la dimension de la flèche?  Si oui, comment va le faire?
3 -De même pour le texte, pour modifier taille, police etc.?
Merci encore bruno v pour votre aide

Hors ligne

 

#7 Sat 27 June 2020 14:24

bruno v.
Participant actif
Date d'inscription: 22 Mar 2010
Messages: 89

Re: [ACAD] Tracer des Lignes avec fleches en script

rdavjina a écrit:

waooh. Ça marche très bien bruno v et merci beaucoup vous m'aidez énormément.  Mais j'ai encore trois question :
1 - Je travaille sur un projet routier de centaine de kilomètre. est ce que le code est limité (c'est à dire la ligne dans le csv) si je insère encore des points pour créer des lignes?
2 - Est ce que je peux modifier la dimension de la flèche?  Si oui, comment va le faire?
3 -De même pour le texte, pour modifier taille, police etc.?
Merci encore bruno v pour votre aide


1- Non, pas limite dans la taille du CSV (hormis que cela prendra plus de temps à le lire) par contre la structure est figée dans les colonnes lues (doit être la même que votre fichier excel original). Après il faudrait modifier le code si d'autres colonnes doivent être lues et savoir le type (réel, entier, chaine)

2 & 3 - Dans le code:
    (vla-put-ArrowheadSize dimObj 0.5); c'est la taille de la flèche, mettez la valeur en réel que vous désirez
    (vla-put-TextHeight dimObj 1.0) ; c'est la hauteur du texte, idem que ci-dessus

Pour le style de police, le plus simple est d'aller dans les styles de cotation et de modifier le style "zone" que le code à créer, quitte à faire une mise à jour des cotations déjà crées par le code auparavant.

PS: Si vous modifier le CSV déjà importé en rajoutant des lignes et que vous le faites relire, il va créer des DOUBLONS.

Alors soit vous effacez ceux déjà réalisés et relisez le fichier intégralement, soit vous créer un autre fichier CSV de la même structure en colonne avec vos nouveaux points et vous le faite lire par la routine pour les rajouter à votre dessin. Vous pouvez créer autant de csv que vous voulez, du moment qu'il ne comporte pas des lignes déjà importées. Ceci pour la propreté du dessin car graphiquement les doublons ne se voient pas.

Dernière modification par bruno v. (Sat 27 June 2020 14:38)

Hors ligne

 

#8 Sun 28 June 2020 07:54

rdavjina
Participant occasionnel
Date d'inscription: 22 Jan 2013
Messages: 23

Re: [ACAD] Tracer des Lignes avec fleches en script

Je vous remercie encore Bruno V. pour votre aide et pour votre réponse très claire.   
Pour moi il est le temps d'apprendre le Lisp en autodidacte.
Et pour bien commencer, est ce que vous connaissez de(s) site(s) pour bien débuter en Lisp ? 
ou des cours de base téléchargeables ?

Hors ligne

 

#9 Mon 29 June 2020 16:31

bruno v.
Participant actif
Date d'inscription: 22 Mar 2010
Messages: 89

Re: [ACAD] Tracer des Lignes avec fleches en script

Si l'anglais ne vous pose pas de problème, il y a une référence internationale (avec des liens vers d'autre sites):
https://www.afralisp.net/

Autrement en Français, vous pouvez visiter les tutoriels de Gilles Chanteau:
https://gilecad.azurewebsites.net/Tutorials.aspx

Un site récent en construction de Didier Aveline
https://www.da-code.fr/

Plus anciens il y a aussi les cahiers de Dominique Vaquand
https://dovaq.fr/LCA/

Avec ça, il y a déjà quoi faire!

Hors ligne

 

#10 Tue 30 June 2020 16:23

rdavjina
Participant occasionnel
Date d'inscription: 22 Jan 2013
Messages: 23

Re: [ACAD] Tracer des Lignes avec fleches en script

Merci beaucoup Bruno V.

Hors ligne

 

Pied de page des forums

Powered by FluxBB