Aller au contenu

Messages recommandés

Posté(e)

Bonjour, en fait j'ai déjà le début de mon programme,qui additionne des poly lignes selon un calque choisi (je mètre des cloisons et doublages), j'aimerai ensuite qu'il me demande le nombre d'ouverture de porte et fenêtres différentes, leur dimensions et leur nombre afin de les déduire en surface selon une hauteur donnée. Je ne suis pas du tout une pro en lisp et je sais pas si le site serait capable de m'aider à ce point.

Exemple:

Apres avoir additioné les polylignes et lignes d'un calque donné:

Combien de types de portes : 2

Combien de types de fenetres : 1

 

Longueur et largeur porte 1 : 83x205

Longueur et largeur porte 2 : 93x205

 

Longueur et largeur fenetre 1: 120x60

 

Nombre de portes 1 :

Nombres de portes 2:

Nombre de fenetres 1:

 

Hauteur:

 

La surface est de ....

 

Ci joint le programme qui ajoute des polylignes

 

Pouvez vous m'aider?

lisp longueur.LSP

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

bonjour,

j'ai ce vieux lisp qui mélange le tri par calque, largeur et type de lignes, et qui compte également les blocs, puis qui écrit tout ça dans un fichier csv, qui s'ouvre, si tout se passe bien, avec OpenOffice.

Il faut donc qu'openoffice soit installé.

il faut également que Powerclic soit installé

Installer PowerClic

 

la sélection se fait individuellement par calque, car le but de ce metré était de metrer à part des zones particulières

 

Le résultat est de type:

 

Métré du réseau : 61_ECL_SYM

Largeur poly Typeligne Longueur

Type Nombre

lampapo 1

lampexi 1

applique 1

Total regards 61_ECL_SYM

 

Métré du réseau : AEP-PRO_CANALISATIONS

Largeur poly Typeligne Longueur

0.5 ByLayer 35.35

0.5 ByLayer 37.36

Total réseau AEP-PRO_CANALISATIONS

 

Type Nombre

Métré du réseau : AEP-PROJET

Largeur poly Typeligne Longueur

0 ByLayer 35.59

5 ByLayer 35.59

5 BR_ASS_PRO 35.59

Total réseau AEP-PROJET

 

Il faut donc travailler le metré manuellement, pour fair ses totaux et ses sous-totaux.

 

Vous pouvez préselectionner, via des masques, les calques qui vous interressent pour le metré:

(progn
 (setq calques-metre-reso (PW_WCMATCH_LIST lcalqs "*_res"))
 (setq calques-metre-reso (append calques-metre-reso (PW_WCMATCH_LIST lcalqs "*_canalisations")))
   )

 

Voici le code :

;;**************************************************************************
;;§/Poly/Ecrit le métré au format csv des réseaux choisits, basé sur la largeur de polyligne et le type de ligne/ none
;;fait également un décompte des blocs
;;la sélection est manuelle, pour chaque calque
;;
(defun c:EcritMetreCsv_largeur_TL (/ lResName l sel dist tuy f l_long l_sym lcalqs)
 ;;réseaux à métrer
 (setq lcalqs (pw_list_tabl "LAYER"))
 (if (not calques-metre-reso)
   (progn
 (setq calques-metre-reso (PW_WCMATCH_LIST lcalqs "*_res"))
 (setq calques-metre-reso (append calques-metre-reso (PW_WCMATCH_LIST lcalqs "*_canalisations")))
   )
 )
 
 
 (setq	calques-metre-reso
 (pw_s_lchaines3
   "Choisissez les réseaux dont écrire le métré rapport à la largeur de polylignes : "
   lcalqs
   T
   calques-metre-reso
 )
 )
 ;;fichier csv
 (setq nchem (getvar "dwgprefix"))
 (setq ndess (cadr (pw_scie_fich (getvar "dwgname"))))
 ;;(setq nchem (car (pw_scie_fich (getvar "dwgname"))))
 (setq	fich (getfiled "Fichier csv de métré  réseau à écrire : "
	       (strcat nchem ndess "_largeur.csv")
	       "csv"
	       1
     )
 )
 (setq f (open fich "w"))
 (foreach reso	calques-metre-reso
   (setq l_long nil)
   ;;; Métré des tuyaux
   (write-line (strcat "Métré du réseau : " reso) f)
   (write-line "Largeur poly,Typeligne,Longueur" f)
   ;;liste des noeuds '(("nom1" '(x y)) ..)
				;(setq lnodPos (apply 'append (cov_listreseau_nodposname l)))
   ;;liste des noeuds '(("nom1" '(ldata1))..)
				;(setq lnodData (cov_listreseau_noddata l))
   (setq ca reso)
   (prompt (strcat "\nSélectionnez les polylignes du calque " ca " : "))
   (if	(setq sel (ssget  (list '(0 . "LWPOLYLINE")
			   (cons 8 ca)
			   '(-4 . "<NOT")
			   '(67 . 1)
			   '(-4 . "NOT>")
			   )
		 ))
     (progn (foreach epol (pw_listsel sel)
	 (setq cc-lastent epol)
		(setq long (vla-get-length (setq opol (pw_to_object epol))))
	   (setq tl (vla-get-linetype opol))
		;;(setq width (cdr (assoc 40 (entget epol))))
   (if (vlax-property-available-p opol 'ConstantWidth )
     (setq width (vla-get-ConstantWidth opol))
     (setq width 0)
   )
		(setq l_long (cons (list width tl long) l_long))
	 
       
     )
     (setq l_long l_long)
     ;;(setq l_long (pw_regroup_assoc l_long))
     (foreach tuy l_long
       (setq diam (car tuy))
       (setq tl (cadr tuy))
       (setq long (caddr tuy))
       ;;(setq longtot (apply '+ (cddr tuy)))
       (write-line
	 (strcat (rtos diam 2 2) "," tl "," (rtos long 2 2))
	 f
       )
     )
     (write-line (strcat "Total réseau," reso) f)
     (write-line "," f)
     )
   )
   ;;;métrés symboles
   (setq l_sym nil)
   (write-line "Type,Nombre" f)
   (prompt (strcat "\nSélectionnez les symboles du calque " ca " : "))
   (if	(setq sel (ssget "x" (list '(0 . "INSERT") (cons 8 ca) '(67 . 0))))
     (progn (foreach ereg (pw_listsel sel)
            (setq cc-lastent ereg)
	        (setq name (cdr (assoc 2 (setq eg (entget ereg)))))
		(setq l_sym (cons (list name 1) l_sym))
	 
       
     )
     (setq l_sym (pw_regroup_assoc l_sym))
     (foreach sym l_sym
       (setq name (car sym))
       (setq nbtot (apply '+ (cdr sym)))
       (write-line
	 (strcat name "," (itoa nbtot))
	 f
       )
     )
     (write-line (strcat "Total regards," reso) f)
     (write-line "," f)
     )
   )


   
 )
 (close f)
 (OpenCsvWithoOOsCalc fich)
 ;;(startapp  "C:\\Program Files\\OpenOffice.org 2.4\\program\\scalc.exe" fich)
)

----------------------------------------------------------------------

Site: https://www.g-eaux.fr

Blog: http://g-eaux.over-blog.com

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é