#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)
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
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