audrey67 Posté(e) le 18 février 2011 Posté(e) le 18 février 2011 bonjour j ai un dessin avec un reseau AEPon me demande de faire un tableau avec le -nom de la rue le Ø du reseau de cette rue et la longueur du reseau de cette rueexemplerue de la republique Ø100 Fonte longueur 521mlcomment faire sans reprendre tout le dessin en mesurant car j ai 500rue!!!!!!!!!!!peut on en cliquant sur le reseau d une rue mettre les valeurs automatiquement dans le tableau excel dans la bonne ligne merci pour votre aide
lili2006 Posté(e) le 18 février 2011 Posté(e) le 18 février 2011 Bonsoir à toutes et tous, peut on en cliquant sur le reseau d une rue mettre les valeurs automatiquement dans le tableau excel dans la bonne ligne Faut tout de même pas rêver,... :o :cool: :P Non, par contre un bloc avec attributs : - nom de la rue- Ø du reseau - longueur du réseau Ensuite, une fois ce bloc inséré et renseigné, les outils attout et attin des express tools peuvent faire ce que tu veux,.. Éventuellement, rajoute une étiquette N° et rempli les diverses infos de tes attributs directement depuis Excel après avoir fait un "attout" de tes blocs,... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
bryce Posté(e) le 18 février 2011 Posté(e) le 18 février 2011 Bonjour, Ils sont dessinés comment ces réseaux (ligns, polylignes, une polyligne par rue...) ?Les diamètres sont indiqués comment actuellement ? Avec des textes AutoCAD ? Si tu veux de l'aide, il faudrait donner plus de détails, et si possible poster un extrait de dessin. ;) Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
audrey67 Posté(e) le 19 février 2011 Auteur Posté(e) le 19 février 2011 les reseais sont dessines en polyligne qui est dans le calques du diametre de la condutele texte est un texte autocad normal
lili2006 Posté(e) le 19 février 2011 Posté(e) le 19 février 2011 Bonjour à toutes et tous, Pour le dessin en question, un prog spécifique semble incontournable, mais qui sait,... Sans passer par de prog spécifique et pour le prochain besoin du même style, tu peux utiliser une polyligne "bloc" avec attribut champ "longueur" pour la longueur du réseau et un attribut champ diamètre c'est à dire le nom du calque si j'ai bien compris et un attribut à renseigner "Nom de la rue",... Tu pourras alors récupérer ces infos sous Excel avec l'extraction des attributs ou "attout" des express tool,.. Un exemple pour un calque "Diam 315", par exemple (à adapter) J'ai centré l'info de distance sur la polyligne et le Diamètre, donc le nom du calque, en départ de polyligne ainsi que le nom de la rue. Tu peux bien entendu te servir de cet exemple pour l'adapter à tes besoins, si le principe te convient,.. http://img.ahst.fr/data/images/polydyn.jpg Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
chris_mtp Posté(e) le 19 février 2011 Posté(e) le 19 février 2011 Voici une première ébauche mais si tu veux un lisp plus complet, il faudrait éclaircir concrètement ta demande, Ce lisp ne marche que pour des polylignes 2D simples, non optimisés et avec des noms de rues sous forme de texte (defun c:aep1 (/ ss file i ent txt txt1 diam ldxf_10 len) (prompt "\nSélectionner les polylignes à lister dans fichier .xls") (setq ss (ssget '((0 . "LWPOLYLINE")))) (if (= ss nil) (progn (prompt "\nPas de polylignes sélectionnés") (exit) ) (progn (setq file (open "C:/TMP/Reseau_AEP.xls" "w")) (write-line (strcat "Nom Rue" "\t" "ØAEP" "\t" "Longueur Conduite") file) (setq i 0) (repeat (sslength ss) (setq ent (ssname ss i)) (setq txt1 (car (entsel (strcat "\nSélectionner le nom de la rue de la conduite n° " (itoa (1+ i)))))) (setq txt (cdr (assoc 1 (entget txt1)))) (setq diam (cdr (assoc 8 (entget ent)))) (setq ldxf_10 (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget ent)))) (setq len (vlax-curve-getDistAtParam ent (- (length ldxf_10) 1))) (write-line (strcat txt "\t" diam "\t" (rtos len 2 5)) file) (setq i (+ i 1)) ) (close file) (OpenExcel "C:/TMP/Reseau_AEP.xls" nil t) ) ) (prin1) ) De plus, il te faut pour le faire marcher la OpenExcel que Gile à merveillement réalisé que tu pourras trouver ici http:// http://www.cadxp.com/XForum+print-fid-141-tid-17416.html John
audrey67 Posté(e) le 21 février 2011 Auteur Posté(e) le 21 février 2011 merci chris_mtpil me mets ce message; erreur: type d'argument incorrect: streamp nilje n'arrive pas a mettre le openexcelpeux tu m'aider merci d avance
bryce Posté(e) le 21 février 2011 Posté(e) le 21 février 2011 Bonjour, Voici le lisp de chris_mtp un peu modifié :- fonction OpenExcel intégrée directement- le fichier est créé automatiquement dans le dossier temporaire de Windows, quel qu'il soit (plutôt que dans C:/TMP >> erreur si le répertoire n'existe pas). ;;------------------------------------------------------------------------------- ;; OpenExcel - Ouvre une feuille Excel ;; Arguments : 3 ;; ExcelFile$ = Nom de fichier excel ou nil pour une nouvelle feuille ;; SheetName$ = Nom de la feuille ou nil pour non spécifié ;; Visible = T pour visible ou nil pour cachée ;; Exemples de syntaxe : ;; (OpenExcel "C:\\Temp\\Temp.xls" "Feuil2" t) = Ouvre C:\Temp\Temp.xls sur la Feuille2 en session visible ;; (OpenExcel "C:\\Temp\\Temp.xls" nil nil) = Ouvre C:\Temp\Temp.xls sur la feuille courante ;; (OpenExcel nil "Parts List" nil) = Ouvre un nouveau classeur et crée une feuille "Parts List" en session cachée ;;------------------------------------------------------------------------------- (defun OpenExcel (ExcelFile$ SheetName$ Visible / Sheet$ Sheets@ Worksheet) (if (= (type ExcelFile$) 'STR) (if (findfile ExcelFile$) (setq *ExcelFile$ ExcelFile$) (progn (alert (strcat "FichierExcel " ExcelFile$ " non trouvé.")) (exit) ) ) (setq *ExcelFile$ "") ) (gc) (if (setq *ExcelApp% (vlax-get-object "Excel.Application")) (progn (alert "Fermeture de toutes les feuilles.") (vlax-release-object *ExcelApp%) (gc) ) ) (setq *ExcelApp% (vlax-get-or-create-object "Excel.Application")) (if ExcelFile$ (if (findfile ExcelFile$) (vlax-invoke-method (vlax-get-property *ExcelApp% 'WorkBooks) 'Open ExcelFile$ ) (vlax-invoke-method (vlax-get-property *ExcelApp% 'WorkBooks) 'Add ) ) (vlax-invoke-method (vlax-get-property *ExcelApp% 'WorkBooks) 'Add ) ) (if Visible (vla-put-visible *ExcelApp% :vlax-true) ) (if (= (type SheetName$) 'STR) (progn (vlax-for Sheet$ (vlax-get-property *ExcelApp% "Sheets") (setq Sheets@ (append Sheets@ (list (vlax-get-property Sheet$ "Name")))) ) (if (member SheetName$ Sheets@) (vlax-for Worksheet (vlax-get-property *ExcelApp% "Sheets") (if (= (vlax-get-property Worksheet "Name") SheetName$) (vlax-invoke-method Worksheet "Activate") ) ) (vlax-put-property (vlax-invoke-method (vlax-get-property *ExcelApp% "Sheets") "Add" ) "Name" SheetName$ ) ) ) ) (princ) ) (defun c:aep1 (/ ss file i ent txt txt1 diam ldxf_10 len) (vl-load-com) (prompt "\nSélectionner les polylignes à lister dans fichier .xls") (setq ss (ssget '((0 . "LWPOLYLINE")))) (if (= ss nil) (progn (prompt "\nPas de polylignes sélectionnés") (exit) ) (progn (setq xls (vl-filename-mktemp "Reseau_AEP.xls")) (setq file (open xls "w")) (write-line (strcat "Nom Rue" "\t" "ØAEP" "\t" "Longueur Conduite") file) (setq i 0) (repeat (sslength ss) (setq ent (ssname ss i)) (setq txt1 (car (entsel (strcat "\nSélectionner le nom de la rue de la conduite n° " (itoa (1+ i)))))) (setq txt (cdr (assoc 1 (entget txt1)))) (setq diam (cdr (assoc 8 (entget ent)))) (setq ldxf_10 (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget ent)))) (setq len (vlax-curve-getDistAtParam ent (- (length ldxf_10) 1))) (write-line (strcat txt "\t" diam "\t" (rtos len 2 5)) file) (setq i (+ i 1)) ) (close file) (OpenExcel xls nil t) ) ) (prin1) ) Par contre il faudra probablement changer la méthode, car pour l'instant si on choisit plusieurs polylignes à la première étape, on ne sait pas ensuite dans quel ordre choisir les textes... Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
(gile) Posté(e) le 21 février 2011 Posté(e) le 21 février 2011 Salut, Il me semble qu'il y ait quelque confusion. (setq file (open xls "w")) n'utilise pas OpenExcel mais la fonction prédéfinie open qui démarre un flux (stream) en écriture pour un fichier ASCII (.txt, .csv, ...).Avec l'extension .xls le fichier généré sera un fichier texte avec séparateur tabulation (normalement lisible par Excel).Cette façon de procéder n'est pas très orthodoxe et provoque peut-être des erreurs avec les nouvelles versions d'Excel (je ne peux pas tester). Il est préférable, mon avis,- soit de créer un fichier .csv (séparateur = point-virgule par défaut sur les versions française de Windows) et d'utiliser les fonction prédéfinies open et close ;- soit de créer un 'vrai' fichier Excel, avec OpenExcel par exemple, mais à ce moment là il faut utiliser les fonction définies dans ce LISP : OpenExcel, PutCell et CloseExcel. La première solution est plus rapide car elle ne nécessite pas le démarrage d'un processus Excel. Dans tous les cas, le problème du lien inexistant entre un texte et une polyligne reste entier. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 21 février 2011 Posté(e) le 21 février 2011 Re, Je ne suis sûr d'avoir bien compris la demande (et je crains, en proposant une solution, de mettre encore une fois le doigt dans un engrenage qui risque de m'emmener je ne sais où). Le LISP suivant demande de spécifier un fichier csv, on peut en créer un nouveau ou en choisir un existant, dans ce dernier cas, il est demandé s'il faut Remplacer le contenu du fichier ou Ajouter au contenu. Puis, le LISP demande, en boucle, de choisir un texte (nom de rue) et les polylignes correspondant à ce texte. Pour sortir de la boucle faire Entrée, Espace, clic droit à l'invite : "Sélectionnez un nom de rue: ". (defun c:audrey (/ *error* filename mode sep file line ent elst pl) (vl-load-com) (or *acad* (setq *acad* (vlax-get-acad-object))) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument *acad*))) (defun *error* (msg) (and msg (or (= msg "Fonction annulée") (princ (strcat "Erreur: " msg)) ) ) (and file (close file)) (princ) ) (if (setq filename (getfiled "Spécifiez le ficher d'extraction" (getvar 'dwgprefix) "csv" 33)) (progn (setq mode (if (findfile filename) (progn (initget 1 "Ajouter Remplacer") (if (= (getkword "\nLe fichier existe déjà, choisissez une option [Ajouter/Remplacer]: " ) "Ajouter" ) "a" "w" ) ) "w" ) sep (vl-registry-read "HKEY_CURRENT_USER\\Control Panel\\International" "sList") file (open filename mode) ) (and (= mode "w") (write-line (strcat "Nom de rue" sep "ØAEP" sep "Longueur") file)) (while (setq ent (car (entsel "\nSélectionnez un nom de rue: "))) (if (= "TEXT" (cdr (assoc 0 (setq elst (entget ent))))) (progn (setq txt (cdr (assoc 1 elst))) (princ "\nSélectionnez les réseaux pour cette rue") (if (ssget '((0 . "LWPOLYLINE"))) (progn (vlax-for pl (vla-get-ActiveSelectionSet *acdoc*) (write-line (strcat txt sep (vla-get-Layer pl) sep (rtos (vla-get-Length pl))) file ) ) ) ) ) (princ "\nL'entité sélectionnée n'est pas un texte.") ) ) ) ) (*error* nil) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
audrey67 Posté(e) le 22 février 2011 Auteur Posté(e) le 22 février 2011 grand merci a gilc'est exactement ce qu 'il me fallait merci merci merci :D :cool: :D :D
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