seafishII Posté(e) le 18 juin 2009 Posté(e) le 18 juin 2009 merci, tu m'as fais gagner pas mal de temps. je débute aussi en lispOn doit pas avoir la meme definition du mot débuter. j'ai pas encore regardé tab-cablage. Pour ma part, je suis sur mes blocs dynamiques ( Fc, rmbt, grille et, coffret ccr....) avec attributs pour faire mes devis avec l'extraction des données.enfin c'est une autre histoire...
seafishII Posté(e) le 19 juin 2009 Posté(e) le 19 juin 2009 Bonjour,probleme avec tab-cablage:voila ce que j'obtiens TAB_CABLESélection d'une polyligne comme modèle pour désignation du calque à traiter.Choix des objets: *Annuler*Choix des objets:; erreur: type d'argument incorrect: stringp nilAs tu le meme souci?
didicools Posté(e) le 22 juin 2009 Auteur Posté(e) le 22 juin 2009 C'est peu etre pas la dernière version qu'il y a sur les messages précedent, je te met la dernière version qui va bien avec la dernière version de CABLAGE que tu as dans le message daté du 15/6/2009 TAB_CABLE: (vl-load-com) (defun c:Tab_Cable ( / js AcDoc Space nb lst_layer lst_typ lst_1br lst_2br key_usr lst_length lst_length2 all_path j end_pos id_path fonts_path file_shx nw_style n obj dxf_ent ename elist xd_list e_data oldim oldlay ins_pt_cell h_t w_c ename_cell n_row n_column) (princ "\nSélection d'une polyligne comme modèle pour désignation du calque à traiter.") (while (null (setq js (ssget "_+.:E:S" '((0 . "LWPOLYLINE") (-3 ("RESEAU_CABLAGE")))))) (princ "\nSélection vide, ou n''est pas une polyligne valable!") ) (setq js (ssget "_X" (list '(0 . "LWPOLYLINE") '(-3 ("RESEAU_CABLAGE")) (assoc 8 (entget (ssname js 0))) ) ) ) (cond (js (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (= 1 (getvar "CVPORT")) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) nb 0 lst_layer '() lst_typ '() lst_1br '() lst_2br '() lst_length '() lst_length2 '() ) (cond ((null (tblsearch "LAYER" "Tableau-Reseaux-Cables")) (vla-add (vla-get-layers AcDoc) "Tableau-Reseaux-Cables") ) ) (cond ((null (tblsearch "STYLE" "Texte-Cell")) (setq all_path (getenv "ACAD") j 0) (while (setq end_pos (vl-string-position (ascii ";") all_path)) (setq id_path (substr all_path 1 end_pos)) (if (wcmatch (strcase id_path) "*FONTS*") (setq fonts_path (strcat id_path "\\")) ) (setq all_path (substr all_path (+ 2 end_pos))) ) (setq file_shx (getfiled "Selectionnez un fichier de police" fonts_path "shx" 8)) (if (not file_shx) (setq file_shx "txt.shx") ) (setq nw_style (vla-add (vla-get-textstyles AcDoc) "Texte-Cell")) (mapcar '(lambda (pr val) (vlax-put nw_style pr val) ) (list 'FontFile 'Height 'ObliqueAngle 'Width 'TextGenerationFlag) (list file_shx 0.0 (/ (* 15.0 pi) 180) 1.0 0.0) ) (command "_.ddunits" (while (not (zerop (getvar "cmdactive"))) (command pause) ) ) ) ) (repeat (setq n (sslength js)) (setq obj (ssname js (setq n (1- n))) dxf_ent (entget obj) ename (vlax-ename->vla-object obj) elist (entget obj (list "RESEAU_CABLAGE")) xd_list (cdr (assoc -3 elist)) e_data (mapcar 'cdr (cdr (car xd_list))) lst_layer (cons (cdr (assoc 8 dxf_ent)) lst_layer) lst_typ (cons (cadr e_data) lst_typ) lst_1br (cons (cadddr (cdr e_data)) lst_1br) lst_2br (cons (caddr e_data) lst_2br) key_usr (strcat (cond ((eq (cadddr (cdr e_data)) "poteauEP") "3") ((eq (cadddr (cdr e_data)) "poteauBT") "4") ((eq (cadddr (cdr e_data)) "Poste") "5") ((eq (cadddr (cdr e_data)) "Candelabre") "6") ((eq (cadddr (cdr e_data)) "Boite") "7") ((eq (cadddr (cdr e_data)) "boRne") "8") ((eq (cadddr (cdr e_data)) "COffret") "9") ((eq (cadddr (cdr e_data)) "Armoire") "G") ) (cond ((eq (caddr e_data) "poteauEP") "3") ((eq (caddr e_data) "poteauBT") "4") ((eq (caddr e_data) "Poste") "5") ((eq (caddr e_data) "Candelabre") "6") ((eq (caddr e_data) "Boite") "7") ((eq (caddr e_data) "boRne") "8") ((eq (caddr e_data) "COffret") "9") ((eq (caddr e_data) "Armoire") "G") ) ) lst_length (cons (strcat "%<\\AcExpr " "%<\\AcExpr (" (rtos (vlax-ldata-get "cablage" (substr key_usr 1 1))) " + " (rtos (vlax-ldata-get "cablage" (substr key_usr 2 1))) " + " "%<\\AcObjProp Object(%<\\_ObjId " (itoa (vla-get-ObjectID ename)) ">%).Length>%)>% * 1.04 \\f \"%lu6\">%" ) lst_length ) lst_length2 (cons (strcat "%<\\AcExpr " "%<\\AcExpr (" "%<\\AcObjProp Object(%<\\_ObjId " (itoa (vla-get-ObjectID ename)) ">%).Length>%)>% * 1.04 \\f \"%lu6\">%" ) lst_length2 ) nb (1+ nb) ) ) (setq oldim (getvar "dimzin") oldlay (getvar "clayer")) (setvar "dimzin" 0) (setvar "clayer" "Tableau-Reseaux-Cables") (initget 9) (setq ins_pt_cell (getpoint "\nPoint d'insertion haut gauche du tableau: ")) (initget 6) (setq h_t (getdist ins_pt_cell (strcat "\nHauteur du texte <" (rtos (getvar "textsize")) ">: "))) (if (null h_t) (setq h_t (getvar "textsize")) (setvar "textsize" h_t)) (initget 7) (setq w_c (getdist ins_pt_cell "\nLargeur des cellules: ")) (vla-addTable Space (vlax-3d-point (trans ins_pt_cell 1 0)) (+ 3 nb) 5 (+ h_t (* h_t 0.25)) w_c) (setq ename_cell (vlax-ename->vla-object (entlast)) n_row (1+ nb) n_column -1) (vla-rotate ename_cell (vlax-3d-point (trans ins_pt_cell 1 0)) (angle '(0.0 0.0 0.0) (getvar "UCSXDIR"))) (vla-SetCellValue ename_cell 0 0 (vlax-make-variant "TABEAU RECAPITULATIF DE METRE" 8)) (vla-SetCellTextStyle ename_cell 0 0 "Texte-Cell") (vla-SetCellTextHeight ename_cell 0 0 (vlax-make-variant h_t 5)) (vla-SetCellAlignment ename_cell 0 0 5) (foreach n (mapcar'list (append lst_layer '("Calque")) ;; (append lst_typ '("Type de cablage")) (append lst_1br '("1er Raccordement par")) (append lst_2br '("2ème Raccordement par")) (append lst_length '("Longueurs de cable")) (append lst_length2 '("Longueurs de cable2")) ) (mapcar '(lambda (el) (vla-SetText ename_cell n_row (setq n_column (1+ n_column)) el) (vla-SetCellTextStyle ename_cell n_row n_column "Texte-Cell") (vla-SetCellTextHeight ename_cell n_row n_column (vlax-make-variant h_t 5)) (if (eq n_row 1) (vla-SetCellAlignment ename_cell n_row n_column 5) (vla-SetCellAlignment ename_cell n_row n_column 6) ) ) n ) (setq n_row (1- n_row) n_column -1) ) (vla-SetText ename_cell (+ 2 nb) 3 (strcat "Total= " "%<\\AcExpr (Sum(D3:D" (itoa (+ 2 nb)) ")) \\f \"%lu6\">%") ) (vla-SetCellTextStyle ename_cell (+ 2 nb) 3 "Texte-Cell") (vla-SetCellTextHeight ename_cell (+ 2 nb) 3 (vlax-make-variant h_t 5)) (vla-SetCellAlignment ename_cell (+ 2 nb) 3 6) (setq n_row (1- n_row) n_column -1) (vla-SetText ename_cell (+ 2 nb) 4 (strcat "Total= " "%<\\AcExpr (Sum(E3:E" (itoa (+ 2 nb)) ")) \\f \"%lu6\">%") ) (vla-SetCellTextStyle ename_cell (+ 2 nb) 4 "Texte-Cell") (vla-SetCellTextHeight ename_cell (+ 2 nb) 4 (vlax-make-variant h_t 5)) (vla-SetCellAlignment ename_cell (+ 2 nb) 4 6) (vlax-release-object ename_cell) (vlax-release-object Space) (setvar "dimzin" oldim) (setvar "clayer" oldlay) ) (T (princ "\nAucune LWPOLYLINE trouvé avec l'application RESEAU_CABLAGE")) ) (prin1) )
seafishII Posté(e) le 25 juin 2009 Posté(e) le 25 juin 2009 bonjour,merci didicools et tous ceux qui ont oeuvrés.J'ai essayé les deux lips sur un projet d'eclairage public, c'est efficace.
bonuscad Posté(e) le 25 juin 2009 Posté(e) le 25 juin 2009 le "key_usr (strcat "10" key_usr)))" ne fonctionne pas, si je remplace le "10" par un "G", ou une letre quelconque, ca fonctionne. mais pourquoi ? il accepte pas qu'on met 2 caractère peu etre ? Désolé, j'avais "zappé" ta demande, mais le up de seafishII a rafraichi le sujet. Pour te répondre:(setq key_usr (strcat "X" key_usr)) est dans une boucle (repeat 2En fait pour les deux extrémités de la polyligne, je stocke le type de cablage sur UN caractère concaténer au précédent caractère unique. Au final cette variable ne doit contenir que 2 caractères (avec "10" tu la mettais à 3 ou 4: si même type de branchement à chaque extrémités)Ceux-ci sont extrait pour le champ dynamique par la suite (substr key_usr 1 1) et (substr key_usr 2 1) Ta solution d'employer un caractère Alpha pour étendre le codage au delà de 9 est donc correcte. Par contre une petite remarque sur (initget "poteauEP poteauBT Poste Candelabre Boite BOrne COffret Armoire") Tu risque d'avoir des surprise sur l'interprétation du mot-clé, par exemple "BO" (BOrne) peut être interprété aussi pour "Boite". Pousse un peu plus loin les majuscules quand des mots-clé commencent de manière identique. Par exemple: (initget "poteauEP poteauBT Poste CAndelabre BOIte BORne COffret Armoire") (setq key_cab (getkword "\nBranchement pour cette extrémité sur [poteauEP/poteauBT/Poste/CAndelabre/BOIte/BORne/COffret/Armoire]? : ")) J'espère avoir eclairci ta demande ;) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
didicools Posté(e) le 26 juin 2009 Auteur Posté(e) le 26 juin 2009 Merci bonuscad, Je comprend mieux pourquoi ca fontionné pas! Merci encore pour ton aide et ta patience !!
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