Aller au contenu

Messages recommandés

Posté(e)

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

Posté(e)

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)

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.

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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ême

le 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

  • 2 semaines après...
Posté(e)

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 :(

Posté(e)
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

  • 3 semaines après...
  • 4 semaines après...
Posté(e)

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 !!!

Posté(e)

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

Posté(e)

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

Posté(e)

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....

Posté(e)

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.....

Posté(e)

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.....

Posté(e)

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

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é