fabichou Posté(e) le 19 janvier 2011 Posté(e) le 19 janvier 2011 bonjour à tous Je recherche un lisp pour faire un métré par type de ligne, j'ai trouvé un lisp mais il ne marche pas (metre_tl.lsp)Est ce que quelqu'un aurait ça dans ses tablettes?Merci de vos réponses
speedy Posté(e) le 19 janvier 2011 Posté(e) le 19 janvier 2011 Bonjour à toutes et à tousEst ce que Long_line puisse faire affaire, les lisp de Gilehttp://www.cadxp.com/XForum+viewthread-fid-115-tid-14737-page-1.html @+ Michel a
fabichou Posté(e) le 19 janvier 2011 Auteur Posté(e) le 19 janvier 2011 Bonjour speedy non Long_line prend le calque en entier, moi j'ai differents type de ligne qui correspondent à des diametres de tuyau, donc il me faudrait 1 lisp qui differencie les types de ligne. Dans le temps j'avais récupéré 1 lisp qui différencié les lignes par couleur...
Invité Yamtdm_21 Posté(e) le 19 janvier 2011 Posté(e) le 19 janvier 2011 bonjour, J'ai un lisp pour faire des metres. il ne fait pas la différence sur les types de lignes mais sur le nom des calques. Bref si tu as 10 diamètre de tuyaux différents, il te suffit de créer un calque par diamètre. Résultat le lisp génère un ficher "metre.csv" directement sur mon disque D. Pour chaque nom de calque le lisp de donne la surface, la longueur et le nombre d'objet.
bonuscad Posté(e) le 19 janvier 2011 Posté(e) le 19 janvier 2011 j'ai trouvé un lisp mais il ne marche pas (metre_tl.lsp) Si tu poste le contenu, on pourrait peut être le rectifier. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
speedy Posté(e) le 20 janvier 2011 Posté(e) le 20 janvier 2011 Bonjour Brunoçà doit être celui-la de lisp : http://www.g-eaux.com/powerclic/download/metre_tl.lsp pour fabichou , mes anciennes méthodes, c'était de mettre chaque diamètre dans un calque comme Yamtdm, par epaisseur de lignes ou par types de lignes.et ensuite j'utilise un filtre de mon choix pour exporter les infos en txt. @+ Michel a
bonuscad Posté(e) le 20 janvier 2011 Posté(e) le 20 janvier 2011 Tu utilises la commande FILTER que tu règles sur le type de ligne que tu veux. Tu peux rajouter des filtres supplémentaires si tu le désire comme le calque, la couleur etc... Une fois tes éléments filtrées (gripés), tu te sers de cumul_measure en validant l'option de jeu de sélection "Existant" de la routine Ou si tu préfères faire un tableau récapitulatif avec des champs, à la place tu utilises Metre2Cell&Field dans le même principe. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
(gile) Posté(e) le 20 janvier 2011 Posté(e) le 20 janvier 2011 Salut, Une proposition en LISP. Comme tu ne précises pas s'il s'agit de type de ligne forcé par entité ou des types de ligne de calque, le LISP regroupe les entité en type de ligne forcé "TOTO" avec celles sur les calques ayant un type de ligne "TOTO". Les lignes et les polylignes sont traitées, le résultat est écrit dans un fichier CSV dans le répertoire du dessin avec le séparateur (virgule ou point-virgule) courant, sur 5 colonnes : type de ligne, nombre de lignes, longueur des lignes, nombre de polylignes, longueur des polylignes.Le fichier s'affiche avec le bloc-note, mais tu peux l'ouvrir avec Excel ou Open Office. (defun c:metre (/ ss lt lst sub sep filename file) (vl-load-com) (or *acad* (setq *acad* (vlax-get-acad-object))) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument *acad*))) (or *layers* (setq *layers* (vla-get-Layers *acdoc*))) (defun GetLineType (o / lt) (setq lt (vla-get-LineType o)) (cond ((= lt "ByLayer") (vla-get-LineType (vla-item *layers* (vla-get-Layer o))) ) ((= lt "ByBlock") "Continuous") (lt) ) ) (princ "\nSélectionnez les objets ou valider pour tous.") (if (or (ssget '((0 . "LINE,LWPOLYLINE"))) (ssget "_X" (list '(0 . "LINE,LWPOLYLINE") (cons 410 (getvar 'ctab)))) ) (progn (vlax-for o (setq ss (vla-get-ActiveSelectionSet *acdoc*)) (setq lt (strcase (GetLineType o)) lst (if (setq sub (assoc lt lst)) (subst (if (= (vla-get-ObjectName o) "AcDbLine") (vl-list* (car sub) (1+ (cadr sub)) (+ (vla-get-Length o) (caddr sub)) (cdddr sub)) (list (car sub) (cadr sub) (caddr sub) (1+ (cadddr sub)) (+ (vla-get-Length o) (last sub)) ) ) sub lst ) (cons (if (= (vla-get-ObjectName o) "AcDbLine") (list lt 1 (vla-get-Length o) 0 0) (list lt 0 0 1 (vla-get-Length o)) ) lst ) ) ) ) (vla-Delete ss) (setq sep (vl-registry-read "HKEY_CURRENT_USER\\Control Panel\\International" "sList") filename (strcat (getvar 'dwgprefix) (vl-filename-base (getvar 'dwgname)) "_metre.csv") file (open filename "w") ) (write-line (strcat "Type de ligne" sep "Lignes" sep "Longueur" sep "Polylignes" sep "Longueur") file ) (foreach l lst (write-line (strcat (car l) sep (itoa (cadr l)) sep (rtos (caddr l)) sep (itoa (cadddr l)) sep (rtos (last l)) ) file ) ) (close file) (startapp "notepad" filename) ) ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
fabichou Posté(e) le 20 janvier 2011 Auteur Posté(e) le 20 janvier 2011 Bonjour à tous Je viens d'essayer le lisp de gile, il me convient très bien merci gile Je réponds à speedy qui préconise de mettre chaque type de ligne sur 1 calque, je ne peux pas car je travaille avec plusieurs batiments et plusieurs niveaux merci quand mêmele lisp dont je parlais (metre_tl.lsp) c'était bien celui de powerclic mais je crois qu'il faut télécharger le logiciel pour qu'il fonctionne.... Bon encore un grand merci à tous
bexkivr Posté(e) le 2 février 2011 Posté(e) le 2 février 2011 Merci aussi Gile. Je pensait que Covadis faisait bien l'affaire dans ce cas, mais en fait non.http://www.cadxp.com/sujetXForum-31106.htm
bexkivr Posté(e) le 4 février 2011 Posté(e) le 4 février 2011 Est-ce que c'est possible d'ajouter dans le lisp l’épaisseur des lignes ?(donc avoir un métré par type de ligne ET par épaisseur ?)Excuse-moi si je demande trop :(
(gile) Posté(e) le 4 février 2011 Posté(e) le 4 février 2011 Est-ce que c'est possible d'ajouter dans le lisp l’épaisseur des lignes ?(donc avoir un métré par type de ligne ET par épaisseur ?)Excuse-moi si je demande trop :( Voilà :(defun c:metre (/ GetLineWeight GetLineType ss lt lst sub sep filename file) (vl-load-com) (or *acad* (setq *acad* (vlax-get-acad-object))) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument *acad*))) (or *layers* (setq *layers* (vla-get-Layers *acdoc*))) (defun GetLineWeight (o / lw) (if ( (if (= -3 (setq lw (vla-get-LineWeight (vla-item *layers* (vla-get-Layer o))))) "défaut" (itoa lw) ) (itoa lw) ) ) (defun GetLineType (o / lt) (setq lt (vla-get-LineType o)) (cond ((= lt "ByLayer") (strcat (vla-get-LineType (vla-item *layers* (vla-get-Layer o))) "_" (GetLineWeight o) ) ) ((= lt "ByBlock") (strcat "Continuous" "_" (GetLineWeight o)) ) ((strcat lt "_" (GetLineWeight o))) ) ) (princ "\nSélectionnez les objets ou valider pour tous.") (if (or (ssget '((0 . "LINE,LWPOLYLINE"))) (ssget "_X" (list '(0 . "LINE,LWPOLYLINE") (cons 410 (getvar 'ctab)))) ) (progn (vlax-for o (setq ss (vla-get-ActiveSelectionSet *acdoc*)) (setq lt (strcase (GetLineType o)) lst (if (setq sub (assoc lt lst)) (subst (if (= (vla-get-ObjectName o) "AcDbLine") (vl-list* (car sub) (1+ (cadr sub)) (+ (vla-get-Length o) (caddr sub)) (cdddr sub)) (list (car sub) (cadr sub) (caddr sub) (1+ (cadddr sub)) (+ (vla-get-Length o) (last sub)) ) ) sub lst ) (cons (if (= (vla-get-ObjectName o) "AcDbLine") (list lt 1 (vla-get-Length o) 0 0) (list lt 0 0 1 (vla-get-Length o)) ) lst ) ) ) ) (vla-Delete ss) (setq sep (vl-registry-read "HKEY_CURRENT_USER\\Control Panel\\International" "sList") filename (strcat (getvar 'dwgprefix) (vl-filename-base (getvar 'dwgname)) "_metre.csv") file (open filename "w") ) (write-line (strcat "Type de ligne" sep "Lignes" sep "Longueur" sep "Polylignes" sep "Longueur") file ) (foreach l lst (write-line (strcat (car l) sep (itoa (cadr l)) sep (rtos (caddr l)) sep (itoa (cadddr l)) sep (rtos (last l)) ) file ) ) (close file) (startapp "notepad" filename) ) ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
bexkivr Posté(e) le 4 février 2011 Posté(e) le 4 février 2011 Oups, désolé, je voulais dire Largeur. Donc j'imagine que ce n'est pas GetLineWeight, mais GetLine?????
autospeed Posté(e) le 21 février 2011 Posté(e) le 21 février 2011 Pour les métrés par types de ligne , vous pouvez aussi utiliser la version de démo d'autospeed.Il suffit de copier vos entités dans le dessins autospeed.dwg puis de taper MLC ( lignes) ou MPC ( métré des polylignes par calques) http://www.autospeed.biz Auteur du logiciel AutospeedAuteur de la théorie du site www.kheops.bizAuteur de nombreux livres
seb97320 Posté(e) le 16 mars 2011 Posté(e) le 16 mars 2011 Bonjour, Je suis également intéressé par ce lisp qui permets de faire des métrés (ou sélection) en tenant compte de la largeur des polylignes. est ce que je dois remplacer simplement "getlineweight" par "getline", pour avoir un lisp qui fonctionne avec les largeurs de polylignes ????axlxex est ce que ca marche ?? Merci déjà pour ces lisp !!!
seb97320 Posté(e) le 16 mars 2011 Posté(e) le 16 mars 2011 re bonjour, Pourrait-on ajouter ajouter la largeur de polyligne dans la boite de dialogue des lisp "ssmatch" et "matchset" ? Si qq un sait faire....merci d'avance
(gile) Posté(e) le 16 mars 2011 Posté(e) le 16 mars 2011 Donc j'imagine que ce n'est pas GetLineWeight, mais GetLine????? est ce que je dois remplacer simplement "getlineweight" par "getline" Si c'était si simple... (defun c:metre (/ GetLineType ss lt lst sub sep filename file) (vl-load-com) (or *acad* (setq *acad* (vlax-get-acad-object))) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument *acad*))) (or *layers* (setq *layers* (vla-get-Layers *acdoc*))) (defun GetLineType (o / lt wid) (setq lt (vla-get-LineType o) lt (cond ((= lt "ByLayer") (vla-get-LineType (vla-item *layers* (vla-get-Layer o))) ) ((= lt "ByBlock") "Continuous") (lt) ) ) (if (= (vla-get-ObjectName o) "AcDbPolyline") (setq wid (vl-catch-all-apply 'vla-get-ConstantWidth (list o)) lt (if (vl-catch-all-error-p wid) (strcat lt "_variable") (strcat lt "_" (rtos wid)) ) ) ) lt ) (princ "\nSélectionnez les objets ou valider pour tous.") (if (or (ssget '((0 . "LINE,LWPOLYLINE"))) (ssget "_X" (list '(0 . "LINE,LWPOLYLINE") (cons 410 (getvar 'ctab)))) ) (progn (vlax-for o (setq ss (vla-get-ActiveSelectionSet *acdoc*)) (setq lt (strcase (GetLineType o)) lst (if (setq sub (assoc lt lst)) (subst (if (= (vla-get-ObjectName o) "AcDbLine") (vl-list* (car sub) (1+ (cadr sub)) (+ (vla-get-Length o) (caddr sub)) (cdddr sub)) (list (car sub) (cadr sub) (caddr sub) (1+ (cadddr sub)) (+ (vla-get-Length o) (last sub)) ) ) sub lst ) (cons (if (= (vla-get-ObjectName o) "AcDbLine") (list lt 1 (vla-get-Length o) 0 0) (list lt 0 0 1 (vla-get-Length o)) ) lst ) ) ) ) (vla-Delete ss) (setq sep (vl-registry-read "HKEY_CURRENT_USER\\Control Panel\\International" "sList") filename (strcat (getvar 'dwgprefix) (vl-filename-base (getvar 'dwgname)) "_metre.csv") file (open filename "w") ) (write-line (strcat "Type de ligne" sep "Lignes" sep "Longueur" sep "Polylignes" sep "Longueur") file ) (foreach l lst (write-line (strcat (car l) sep (itoa (cadr l)) sep (rtos (caddr l)) sep (itoa (cadddr l)) sep (rtos (last l)) ) file ) ) (close file) (startapp "notepad" filename) ) ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
seb97320 Posté(e) le 17 mars 2011 Posté(e) le 17 mars 2011 Merci Gile ..... Cette routine fonctionne à merveille
seb97320 Posté(e) le 18 mars 2011 Posté(e) le 18 mars 2011 bonjour, Sinon est ce que c'est possible d'ajouter la largeur de la polyligne comme propriété dans les lisp SSmatch et Matchset ??? je travail exclusivement avec la largeur de polyligne et non son épâisseur. Merci....
autospeed Posté(e) le 22 mars 2011 Posté(e) le 22 mars 2011 La version de démo d'autospeed disponible sur http://www.autospeed.biz fait aussi le métré par épaisseurs de lignes et l'exportation des résultats sous excel. Auteur du logiciel AutospeedAuteur de la théorie du site www.kheops.bizAuteur de nombreux livres
seb97320 Posté(e) le 22 mars 2011 Posté(e) le 22 mars 2011 Comme je l'ai expliqué je ne travail pas avec les épaisseurs de polyligne mais avec les largeurs qui elles se mettent à l'échelle. Pour les métrés le lisp de Gile fonctionne....c juste que pour les lisp ssmatch et matchset,(les sélection rapide d'entités et les propriétés rapide), la propriété largeur serait génial, car il faut toujours que change la largeur avec "LA" et c un peu lourd....et puis pour les sélection, quand j'ai besoin de sélectionner toutes les polylignes d'une largeur donnée, je suis obligé de le faire à la main.Voilà..... Si qq un veut bien ajouter cette propriété à ces deux lisp.....je lui en serait reconnaissant.....Moi je ne maîtrise pas du tout ce truc....mais je vais peu être mis mettre.....
seb97320 Posté(e) le 22 mars 2011 Posté(e) le 22 mars 2011 Comme je l'ai expliqué je ne travail pas avec les épaisseurs de polyligne mais avec les largeurs qui elles se mettent à l'échelle. Pour les métrés le lisp de Gile fonctionne....c juste que pour les lisp ssmatch et matchset,(les sélection rapide d'entités et les propriétés rapide), la propriété largeur serait génial, car il faut toujours que change la largeur avec "LA" et c un peu lourd....et puis pour les sélection, quand j'ai besoin de sélectionner toutes les polylignes d'une largeur donnée, je suis obligé de le faire à la main.Voilà..... Si qq un veut bien ajouter cette propriété à ces deux lisp.....je lui en serait reconnaissant.....Moi je ne maîtrise pas du tout ce truc....mais je vais peu être mis mettre.....
seb97320 Posté(e) le 22 mars 2011 Posté(e) le 22 mars 2011 Désolé pour le boublon.....je croyais que le message n'avait pas été pris en compte
(gile) Posté(e) le 22 mars 2011 Posté(e) le 22 mars 2011 Salut, Personnellement, je ne peux plus publier de modifications de ces routines par correction envers ceux qui m'ont payé pour les adapter et les intégrer à leur applicatif.Mais leur code en l'état étant public, je ne peux empêcher quiconque de le faire s'il en a envie... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lecrabe Posté(e) le 22 mars 2011 Posté(e) le 22 mars 2011 Hello Gilles SVP de quelles routines parles tu ? Les Lisp SSmatch et Matchset ??? Le Decapode Autodesk Expert Elite Team
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