framboisette Posté(e) le 9 février 2012 Posté(e) le 9 février 2012 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 : 2Combien de types de fenetres : 1 Longueur et largeur porte 1 : 83x205Longueur 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
Patrick_35 Posté(e) le 9 février 2012 Posté(e) le 9 février 2012 Salut Les portes sont des blocs avec attributs ?Si oui, tu as LSTATT pour compter en fonction ou pas des attributs. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
framboisette Posté(e) le 9 février 2012 Auteur Posté(e) le 9 février 2012 non c'est des plans que je recois en dwg pas forcément traités avec autocad à base donc tout est en trait ligne et polilygne. Je n'exploite pas d'attributs
GEGEMATIC Posté(e) le 28 février 2012 Posté(e) le 28 février 2012 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 LongueurType Nombre lampapo 1 lampexi 1 applique 1 Total regards 61_ECL_SYM Métré du réseau : AEP-PRO_CANALISATIONS Largeur poly Typeligne Longueur0.5 ByLayer 35.350.5 ByLayer 37.36Total réseau AEP-PRO_CANALISATIONS Type Nombre Métré du réseau : AEP-PROJET Largeur poly Typeligne Longueur0 ByLayer 35.595 ByLayer 35.595 BR_ASS_PRO 35.59Total 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.frBlog: http://g-eaux.over-blog.com
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