bonuscad Posté(e) le 21 février 2009 Posté(e) le 21 février 2009 Bonsoir, J'espère qu'un lispeur ou VBAiste va pouvoir me solutionner mon problème, car je bloque complet :casstet: Bon but: Créer un tableau avec des champs pour faire un métré de longueur d'objet. Voici en premier lieu une routine qui fonctionne mais qui ne travaille pas avec les champs (c'est pour bien faire voir le résultat escompté) (vl-load-com) (defun c:Length2Cell ( / js) (setq lst_length nil lst_id-obj nil lst_id-lay nil lst_id-col nil lst_id-ltyp nil lst_id-wei nil) (or (setq js (ssget "_I")) (setq js (ssget "_P")) ) (cond (js (sssetfirst nil js) (initget "Existant Nouveau _Existent New") (if (eq (getkword "\nTraiter jeu de sélection [Existant/Nouveau] : ") "New") (progn (sssetfirst nil nil) (setq js (ssadd) js (ssget))) ) ) (T (setq js (ssget))) ) (cond (js (repeat (setq n (sslength js)) (setq ename (vlax-ename->vla-object (ssname js (setq n (1- n))))) (foreach n (list 'Length 'ArcLength 'Circumference) (if (vlax-property-available-p ename n) (progn (setq do_it T lst_length (cons (vlax-get-property ename n) lst_length) lst_id-obj (cons (substr (vlax-get-property ename 'ObjectName) 5) lst_id-obj) lst_id-lay (cons (vlax-get-property ename 'Layer) lst_id-lay) lst_id-col (cons (cond ((eq (vlax-get-property (vlax-get-property ename 'TrueColor) 'ColorMethod) 195) (itoa (vlax-get-property (vlax-get-property ename 'TrueColor) 'ColorIndex)) ) ((eq (vlax-get-property (vlax-get-property ename 'TrueColor) 'ColorMethod) 194) (if (eq (vlax-get-property (vlax-get-property ename 'TrueColor) 'ColorName) "") (strcat "R=" (itoa (vlax-get-property (vlax-get-property ename 'TrueColor) 'Red)) ",G=" (itoa (vlax-get-property (vlax-get-property ename 'TrueColor) 'Green)) ",B=" (itoa (vlax-get-property (vlax-get-property ename 'TrueColor) 'Blue)) ) (vlax-get-property (vlax-get-property ename 'TrueColor) 'ColorName) ) ) ((eq (vlax-get-property (vlax-get-property ename 'TrueColor) 'ColorMethod) 193) "ByBlock" ) ((eq (vlax-get-property (vlax-get-property ename 'TrueColor) 'ColorMethod) 192) "ByLayer" ) ) lst_id-col ) lst_id-ltyp (cons (vlax-get-property ename 'Linetype) lst_id-ltyp) lst_id-wei (cons (cond ((eq (vlax-get-property ename 'Lineweight) -1) "ByLayer" ) ((eq (vlax-get-property ename 'Lineweight) -2) "ByBlock" ) ((eq (vlax-get-property ename 'Lineweight) -3) "ByLwDefault" ) (T (itoa (vlax-get-property ename 'Lineweight))) ) lst_id-wei ) ) ) ) ) ) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (= 1 (getvar "CVPORT")) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ) (cond ((null (tblsearch "LAYER" "Tableaux-Métrés")) (vla-add (vla-get-layers AcDoc) "Tableaux-Métrés") ) ) (cond ((null (tblsearch "STYLE" "Texte-Métré")) (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-Métré")) (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) ; ) ; ) ) ) (setq oldim (getvar "dimzin") oldlay (getvar "clayer") nb (length lst_length) ) (setvar "dimzin" 0) (setvar "clayer" "Tableaux-Métrés") (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 ins_pt_cell) (+ 3 nb) 6 (+ h_t (* h_t 0.25)) w_c) (setq ename_cell (vlax-ename->vla-object (entlast)) n_row (+ 2 nb) n_column -1) (vla-SetCellValue ename_cell 0 0 (vlax-make-variant "Tableau Récapitulatif de Métré" 8)) (vla-SetCellTextStyle ename_cell 0 0 "Texte-Métré") (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_id-obj '("Type d'objet")) (append lst_id-lay '("Sur le calque")) (append lst_id-col '("De couleur")) (append lst_id-ltyp'("Type de ligne")) (append lst_id-wei '("Epaisseur de ligne")) (append (mapcar 'rtos lst_length) '("Longueurs")) ) (mapcar '(lambda (el) (vla-SetCellValue ename_cell n_row (setq n_column (1+ n_column)) (vlax-make-variant el 8)) (vla-SetCellTextStyle ename_cell n_row n_column "Texte-Métré") (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) ) (setvar "dimzin" oldim) (setvar "clayer" oldlay) ) (T (princ "\nSélection vide!") ) ) (prin1) ) Voici le second avec en rouge la partie que je voudrais résoudre pour que, je pense, le lisp devienne fonctionnel. (vl-load-com) (defun c:Length2Cell&Field ( / js) (setq lst_length nil lst_id-obj nil lst_id-lay nil lst_id-col nil lst_id-ltyp nil lst_id-wei nil) (or (setq js (ssget "_I")) (setq js (ssget "_P")) ) (cond (js (sssetfirst nil js) (initget "Existant Nouveau _Existent New") (if (eq (getkword "\nTraiter jeu de sélection [Existant/Nouveau] : ") "New") (progn (sssetfirst nil nil) (setq js (ssadd) js (ssget))) ) ) (T (setq js (ssget))) ) (cond (js (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (= 1 (getvar "CVPORT")) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ) (cond ((null (tblsearch "LAYER" "Tableaux-Métrés")) (vla-add (vla-get-layers AcDoc) "Tableaux-Métrés") ) ) (cond ((null (tblsearch "STYLE" "Texte-Métré")) (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-Métré")) (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) ; ) ; ) ) ) (setq oldim (getvar "dimzin") oldlay (getvar "clayer") nb (length lst_length) ) (setvar "dimzin" 0) (setvar "clayer" "Tableaux-Métrés") (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 ins_pt_cell) (+ 3 nb) 6 (+ h_t (* h_t 0.25)) w_c) (setq ename_cell (vlax-ename->vla-object (entlast)) n_row (+ 2 nb) n_column -1) (vla-SetCellValue ename_cell 0 0 (vlax-make-variant "Tableau Récapitulatif de Métré" 8)) (vla-SetCellTextStyle ename_cell 0 0 "Texte-Métré") (vla-SetCellTextHeight ename_cell 0 0 (vlax-make-variant h_t 5)) (vla-SetCellAlignment ename_cell 0 0 5) (repeat (setq n (sslength js)) (setq ename (vlax-ename->vla-object (ssname js (setq n (1- n))))) (foreach measure (list 'Length 'ArcLength 'Circumference) (if (vlax-property-available-p ename measure) (progn (foreach el '( ">%).ObjectName \\f \"%tc4\">%" ">%).Layer \\f \"%tc4\">%" ">%).TrueColor \\f \"%tc4\">%" ">%).Linetype \\f \"%tc4\">%" ">%).Lineweight \\f \"%.2f mm%lw1\">%" ">%).Length \\f \"%lu6\">%" ) (vla-SetCellValue ename_cell n_row (setq n_column (1+ n_column)) (vlax-make-variant (strcat "%<\\AcObjProp Object(%<\\_ObjId " (itoa (vla-get-ObjectID ename)) el) 8) ) [color=red] ;(vla-SetFieldId ename_cell n_row n_column "QUOI METTRE") [/color] (vla-SetCellTextStyle ename_cell n_row n_column "Texte-Métré") (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) ) ) (setq n_row (1- n_row) n_column -1) ) ) ) ) (setvar "dimzin" oldim) (setvar "clayer" oldlay) ) (T (princ "\nSélection vide!") ) ) (prin1) ) Où pourrais-je piocher ce "FielID", car quand j'édite mon champ, bien que la syntaxe soit exacte il n'est pas reconnu comme tel. (dans la boite de dialogue d'édition il est recensé comme "inconnu")Manuellement j'ai créer le même champ, puis j'ai utilisé (vla-GetFieldId .......) qui ma retourné un nombre entier.J'ai appliqué ce nombre entier avec (vla-SetFieldId ...) à d'autre cellules créé par le lisp, ET LA LES CHAMPS SONT APPARUS ???? Ce qui m'a fait pensé que l'expression était la solution.Je tiens à préciser que lors de l'enregistrement automatique il m'a indiqué une erreur sur un enregistrement en double avec en retour le numéro de maintien.En faisant un (entget (handent "XXX")), j'ai pu voir que cela concernait les "FIELD".Donc j'en déduit que le nombre entier ne peut être qu'unique pour un champ par cellule. Où est la solution, je suis perdu et si prêt du but....! [Edité le 21/2/2009 par bonuscad] Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
(gile) Posté(e) le 21 février 2009 Posté(e) le 21 février 2009 Salut bonuscad, Super routine !J'ai fait quelques essais (en laissant la ligne rouge commentée) et n'ai eu aucun problème.Les cellules sont automatiquement remplies avec des champs et je n'ai pas de problème pour éditer ces champs (double clic dans une cellule, sélection du champ, menu contextuel, Modifier le champ). J'ai essayé (vla-GetFieldId ename_cell n m) et j'ai bien eu, à chaque fois, un entier en retour. http://img9.imageshack.us/img9/5227/champ.png PS : juste un infime détail : j'ai remplacé 1 par 0 dans : (if (eq n_row 1) (vla-SetCellAlignment ename_cell n_row n_column 5) (vla-SetCellAlignment ename_cell n_row n_column 6) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
thry0 Posté(e) le 21 février 2009 Posté(e) le 21 février 2009 Bjr, On ne peut sélectionner apparemment que 2 objets ... ?Sur une 2007, si on sélectionne les objets par une fenêtreou une capture création du tableau, avec uniquement 2 entités ...Pour "Length2Cell&Field"Sinon les champs se mettent bien à jour après modif des entités
bonuscad Posté(e) le 21 février 2009 Auteur Posté(e) le 21 février 2009 J'ai fait quelques essais (en laissant la ligne rouge commentée) et n'ai eu aucun problème. Ravi pour toi, mais moi j'ai beau réessayer, toujours pareil.... Je n'obtiens que des dièses ! :mad: Cependant, effectivement si je rentre simplement dans l'édition des champs et qu'ensuite je fais un "regen", le champs édité prend sa valeur ??? :o Ceci je l'ai constaté sur Map 2009 (au boulot) et une 2008 basique.En tout cas merci pour ton test, cela me permet de croire que la solution n'est pas loin. PS : juste un infime détail : j'ai remplacé 1 par 0 Oui cela vient, que je n'ai pas encore intégré les libellés des colonnes. ;) On ne peut sélectionner apparemment que 2 objets ... ? La routine n'est encore qu'une ébauche, je ne me suis pas encore penché sur le pourquoi. Merci pour vos retours. PS: Sur quelle version, vos tests? Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
(gile) Posté(e) le 21 février 2009 Posté(e) le 21 février 2009 Sur quelle version, vos tests? AutoCAD 2007 Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 21 février 2009 Posté(e) le 21 février 2009 Bonjour à toutes et tous, Sur une V2008 pleine, Je suis également obligé de mettre à jour les champs "manuellement" => http://images4.hiboox.com/images/0809/80a8b971b008e9fd592308c6aca631c4.jpg Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 21 février 2009 Posté(e) le 21 février 2009 Si c'est une question de mise à jour, peut-être qu'un (vla-update ...) judicieusement placé... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
bonuscad Posté(e) le 23 février 2009 Auteur Posté(e) le 23 février 2009 Si c'est une question de mise à jour, peut-être qu'un (vla-update ...) judicieusement placé... Et non, essayé, ainsi que d'autres actions:(vla-RegenerateTableSuppressed...(vla-recomputetableblock....(vla-ResetCellValue.... Pas moyen, je désespère :( (gile) pourrais tu me donner le retour sur une 2007 où ça fonctionne de :(vlax-dump-object (vla-GetExtensionDictionary ename_cell) T) Peut être cela pourrait me mettre sur une piste par comparaison ... Merci. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Patrick_35 Posté(e) le 23 février 2009 Posté(e) le 23 février 2009 Bonjour Bonus:J'ai exactement le même problème sur un de mes lisp.Un regen suffit pour que tout rentre dans l'ordre. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
lili2006 Posté(e) le 23 février 2009 Posté(e) le 23 février 2009 Bonjour à toutes et tous, Sur une V2008 pleine, le regen n'a aucune influence,... Test sur une v2008 => (vlax-dump-object (vla-GetExtensionDictionary ename_cell) T) Commande: rgREGEN Régénération du modèle.Commande: (vlax-dump-object (vla-GetExtensionDictionary ename_cell) T); IAcadDictionary: Un objet incorporant de stockage et de récupération des objets; Valeurs de propriétés:; Application (RO) = #; Count (RO) = 0; Document (RO) = #; Handle (RO) = "2F1EF"; HasExtensionDictionary (RO) = 0; Name = AutoCAD.Application: Non valable; ObjectID (RO) = 2117275064; ObjectName (RO) = "AcDbDictionary"; OwnerID (RO) = 2118749656; Méthodes prises en charge:; AddObject (2); AddXRecord (1); Delete (); GetExtensionDictionary (); GetName (1); GetObject (1); GetXData (3); Item (1); Remove (1); Rename (2); Replace (2); SetXData (2)T Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 23 février 2009 Posté(e) le 23 février 2009 Salut, Commande: (vlax-dump-object (vla-GetExtensionDictionary ename_cell) T); IAcadDictionary: Un objet incorporant de stockage et de récupération des objets; Valeurs de propriétés:; Application (RO) = #; Count (RO) = 0; Document (RO) = #; Handle (RO) = "2941"; HasExtensionDictionary (RO) = 0; Name = AutoCAD.Application: Non valable; ObjectID (RO) = 2126815240; ObjectName (RO) = "AcDbDictionary"; OwnerID (RO) = 2130318960; Méthodes prises en charge:; AddObject (2); AddXRecord (1); Delete (); GetExtensionDictionary (); GetName (1); GetObject (1); GetXData (3); Item (1); Remove (1); Rename (2); Replace (2); SetXData (2)T Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lovecraft Posté(e) le 23 février 2009 Posté(e) le 23 février 2009 Bonsoir, Je pense que j'ai le meme probleme que toi bonuscad. j'utilise map 2009 ; Valeurs de propriétés:; Application (RO) = #; Count (RO) = 0; Document (RO) = #; Handle (RO) = "968"; HasExtensionDictionary (RO) = 0; Name = AutoCAD.Application: Non valable; ObjectID (RO) = 2129724736; ObjectName (RO) = "AcDbDictionary"; OwnerID (RO) = 2129671520; Méthodes prises en charge:; AddObject (2); AddXRecord (1); Delete (); GetExtensionDictionary (); GetName (1); GetObject (1); GetXData (3); Item (1); Remove (1); Rename (2); Replace (2); SetXData (2)T @plus http://www.youtube.com/user/CADMINATOR?feature=mhee
(gile) Posté(e) le 23 février 2009 Posté(e) le 23 février 2009 Une suggestion : remplacer vla-SetCellValue par vla-SetText (les 2 fonctionnent chez moi). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lovecraft Posté(e) le 23 février 2009 Posté(e) le 23 février 2009 Bonsoir, Que dire..... ben que ça fonctionne en effectuant le changement que Gile propose.Le Maitre a parlé ;) Merci pour bonuscad ;) @plus LB http://www.youtube.com/user/CADMINATOR?feature=mhee
bonuscad Posté(e) le 23 février 2009 Auteur Posté(e) le 23 février 2009 remplacer vla-SetCellValue par vla-SetText I'am happy :P C'est la solution.... J'ai ajuster le code et fait quelque essais.Sur des jeux de sélections conséquent, le temps de réponse peut être relativement long: les tableaux dynamiques sont gourmand en ressource, donc à utiliser avec parcimonie et distinction. NB: Lors de la création d'un nouveaux jeux de sélection, vous pouvez utiliser 'Filter en transparence. Pensez a bien faire des sélection valide (avant ou pendant), bien que les objet non-conforme soit écartés car cela créera malgré tout des lignes supplémentaires vides dans le tableau. (vl-load-com) (defun c:Length2Cell&Field ( / js AcDoc Space all_path end_pos id_path fonts_path file_shx nw_style oldim oldlay ins_pt_cell h_t w_c ename_cell n_row n_column n ename tmp_file dcl_file Id_obj q_lay q_col q_ltyp q_weig n_column lst_idcolumn do_it dcl_id nb_c) (or (setq js (ssget "_I")) (setq js (ssget "_P")) ) (cond (js (sssetfirst nil js) (initget "Existant Nouveau _Existent New") (if (eq (getkword "\nTraiter jeu de sélection [Existant/Nouveau] [b]<[/b]Existant[b]>[/b]: ") "New") (progn (sssetfirst nil nil) (setq js (ssadd) js (ssget))) ) ) (T (setq js (ssget))) ) (cond (js (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (= 1 (getvar "CVPORT")) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ) (cond ((null (tblsearch "LAYER" "Tableaux-Métrés")) (vla-add (vla-get-layers AcDoc) "Tableaux-Métrés") ) ) (cond ((null (tblsearch "STYLE" "Texte-Métré")) (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-Métré")) (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) ) ) ) ) (setq oldim (getvar "dimzin") oldlay (getvar "clayer") ) (setvar "dimzin" 0) (setvar "clayer" "Tableaux-Métrés") (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 [b]<[/b]" (rtos (getvar "textsize")) "[b]>[/b]: "))) (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: ")) (setq tmp_file (vl-filename-mktemp "metre.dcl") dcl_file (open tmp_file "w") ) (write-line "Length2CellField : dialog { label = \"Choix des colonnes à inscrire\"; : column { : toggle { label = \"Identification des objets\"; mnemonic = \"I\"; key = \"Id_obj\"; } : toggle { label = \"caLque de l'objet\"; mnemonic = \"L\"; key = \"q_lay\"; } : toggle { label = \"Couleur de l'objet\"; mnemonic = \"C\"; key = \"q_col\"; } : toggle { label = \"Type de ligne de l'objet\"; mnemonic = \"T\"; key = \"q_ltyp\"; } : toggle { label = \"Epaisseur de ligne de l'objet\"; mnemonic = \"E\"; key = \"q_weig\"; } } ok_cancel_err; }" dcl_file ) (close dcl_file) (setq Id_obj "0" q_lay "1" q_col "0" q_ltyp "0" q_weig "0" n_column 1 lst_idcolumn '("Longueur") do_it '((strcat "[b]>[/b]%)." typ_measure " \\f \"%lu6\"[b]>[/b]%"))) (setq dcl_id (load_dialog tmp_file)) (setq what_next 2) (while ([b]<[/b] 1 what_next) (if (not (new_dialog "Length2CellField" dcl_id)) (exit)) (set_tile "Id_obj" Id_obj) (set_tile "q_lay" q_lay) (set_tile "q_col" q_col) (set_tile "q_ltyp" q_ltyp) (set_tile "q_weig" q_weig) (set_tile "error" "") (action_tile "Id_obj" "(setq Id_obj $value)") (action_tile "q_lay" "(setq q_lay $value)") (action_tile "q_col" "(setq q_col $value)") (action_tile "q_ltyp" "(setq q_ltyp $value)") (action_tile "q_weig" "(setq q_weig $value)") (action_tile "accept" "(done_dialog 1)") (action_tile "cancel" "(done_dialog 0)") (setq what_next (start_dialog)) ) (unload_dialog dcl_id) (vl-file-delete tmp_file) (foreach z '(q_weig q_ltyp q_col q_lay Id_obj) (if (not (zerop (atoi (eval Z)))) (setq n_column (1+ n_column) lst_idcolumn (cons (cond ((eq z 'ID_OBJ) "ID Objet") ((eq z 'Q_LAY) "Calque") ((eq z 'Q_COL) "Couleur") ((eq z 'Q_LTYP) "Type Ligne") ((eq z 'Q_WEIG) "Epaisseur Ligne") ) lst_idcolumn ) do_it (cons (cond ((eq z 'ID_OBJ) "[b]>[/b]%).ObjectName \\f \"%tc4\"[b]>[/b]%") ((eq z 'Q_LAY) "[b]>[/b]%).Layer \\f \"%tc4\"[b]>[/b]%") ((eq z 'Q_COL) "[b]>[/b]%).TrueColor \\f \"%tc4\"[b]>[/b]%") ((eq z 'Q_LTYP) "[b]>[/b]%).Linetype \\f \"%tc4\"[b]>[/b]%") ((eq z 'Q_WEIG) "[b]>[/b]%).Lineweight \\f \"%.2f mm%lw1\"[b]>[/b]%") ) do_it ) ) ) ) (setq ename_cell (vla-addTable Space (vlax-3d-point ins_pt_cell) (+ 3 (sslength js)) n_column (+ h_t (* h_t 0.25)) w_c)) (setq n_row 2 n_column -1) (vla-SetText ename_cell 0 0 "Tableau Récapitulatif de Métré") (vla-SetCellTextStyle ename_cell 0 0 "Texte-Métré") (vla-SetCellTextHeight ename_cell 0 0 (vlax-make-variant h_t 5)) (vla-SetCellAlignment ename_cell 0 0 5) (foreach string lst_idcolumn (vla-SetText ename_cell 1 (setq n_column (1+ n_column)) string) (vla-SetCellTextStyle ename_cell 1 n_column "Texte-Métré") (vla-SetCellTextHeight ename_cell 1 n_column (vlax-make-variant h_t 5)) (vla-SetCellAlignment ename_cell 1 n_column 5) ) (setq n_column -1) (repeat (setq n (sslength js)) (setq ename (vlax-ename-[b]>[/b]vla-object (ssname js (setq n (1- n))))) (foreach typ_measure '("Length" "ArcLength" "Circumference") (if (vlax-property-available-p ename (read typ_measure)) (progn (foreach el do_it (vla-SetText ename_cell n_row (setq n_column (1+ n_column)) (strcat "%[b]<[/b]\\AcObjProp Object(%[b]<[/b]\\_ObjId " (itoa (vla-get-ObjectID ename)) (eval el)) ) (vla-SetCellTextStyle ename_cell n_row n_column "Texte-Métré") (vla-SetCellTextHeight ename_cell n_row n_column (vlax-make-variant h_t 5)) (vla-SetCellAlignment ename_cell n_row n_column 6) ) (setq n_row (1+ n_row) n_column -1) ) ) ) ) (setq n_column (1- (length lst_idcolumn))) (cond ((zerop n_column) (setq nb_c "A")) ((eq n_column 1) (setq nb_c "B")) ((eq n_column 2) (setq nb_c "C")) ((eq n_column 3) (setq nb_c "D")) ((eq n_column 4) (setq nb_c "E")) ((eq n_column 5) (setq nb_c "F")) ) (vla-SetText ename_cell n_row n_column (strcat "Total= " "%[b]<[/b]\\AcExpr (Sum(" nb_c "3:" nb_c (itoa n_row) ")) \\f \"%lu6\"[b]>[/b]%") ) (vla-SetCellTextStyle ename_cell n_row (1- (length lst_idcolumn)) "Texte-Métré") (vla-SetCellTextHeight ename_cell n_row (1- (length lst_idcolumn)) (vlax-make-variant h_t 5)) (vla-SetCellAlignment ename_cell n_row (1- (length lst_idcolumn)) 6) (vlax-release-object ename_cell) (vlax-release-object Space) (setvar "dimzin" oldim) (setvar "clayer" oldlay) ) (T (princ "\nSélection vide!") ) ) (prin1) ) [Edité le 24/2/2009 par bonuscad] Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
(gile) Posté(e) le 23 février 2009 Posté(e) le 23 février 2009 I'am happy So am I ! Glad it helps.* ;) *Moi aussi ! Content de t'avoir aidé. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
bonuscad Posté(e) le 23 février 2009 Auteur Posté(e) le 23 février 2009 Et Droopy est tellement heureux, ;) qu'il va plancher sur une boite de dialogue qui permettra de cocher que les colonnes que l'on veut écrire car il n'est pas forcément nécessaire de toutes les avoir. Et j'essayerai aussi de faire les surfaces (ça c'est un peu moins sur, un clone de cette routine sera peut être plus simple) A voir! lorsque j'aurai un peu de temps. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
lili2006 Posté(e) le 24 février 2009 Posté(e) le 24 février 2009 Bonjour à toutes et tous, L'affichage se superpose chez moi et j'ai un décalage des écritures dans les cellules,... http://images2.hiboox.com/images/0909/d33f611bb47aeacc57f8c94cbf82e8d7.jpg Le fichier test Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
bonuscad Posté(e) le 24 février 2009 Auteur Posté(e) le 24 février 2009 Salut lili2006, Sur ma 2009 je n'ai aucun souci d'alignement avec ton fichier. Mais il faut dire que la fonte utilisée pour le style "Texte-Métré" est "@extfont2.shx" et comme je n'ai pas cette fonte, elle a été substitué par la fonte par défaut. Essayes donc avec une autre fonte (peut être plus standard) !! Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
lili2006 Posté(e) le 24 février 2009 Posté(e) le 24 février 2009 Re, Salut bonuscad, J'y ai pensé aussi alors j'ai refait un test sur le même fichier et là, j'ai planté AutoCAD !! :o Je reteste sur un autre fichier et là, tout se passe bien hormis le total en dehors du tableau,... http://images4.hiboox.com/images/0909/7e76a546e0b89cf15bc4f9aeeaa4875b.jpg Outil très intéressant en tout cas,.. Merci encore pour ce partage, :P Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
lili2006 Posté(e) le 24 février 2009 Posté(e) le 24 février 2009 Re, Autre remarque => Lorsque l'on explose le tableau et que l'on rentre dans l'éditeur de texte, plus rien !Idem si l'on passe par les propriétés pour changer la ht de texte par exemple,... Ce ne sont que des remarques qui peuvent t'intéresser car à priori, on a pas intérêt à exploser le tableau,... ;) Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
bonuscad Posté(e) le 24 février 2009 Auteur Posté(e) le 24 février 2009 Lili2006, Je n'arrive pas à reproduire tes problèmes, que ce soit sur une 2008 ou Map2009, tout se passe bien. :exclam: J'ai édité le code à la réponse n°14 pour y intégrer une boite de dialogue à fin de choisir les colonnes que l'on veut inscrire dans le tableau. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
lili2006 Posté(e) le 24 février 2009 Posté(e) le 24 février 2009 Re, Super !! :D J'ai cependant (V2008) toujours un pb de centrage des textes, voire même de cellules cette fois,... !! ??? http://images1.hiboox.com/images/0909/ce6b4ee86449fb20221e52abd6524f91.jpg Et chez toi, ça donne quoi ? Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
lili2006 Posté(e) le 25 février 2009 Posté(e) le 25 février 2009 Bonjour à toutes et tous, Sur une v2009 Civil 3D, pas de pb !! Bizarre, non ? C'est ma 2008 qu'à un pb, ,,???? http://images2.hiboox.com/images/0909/d20297751bf458ac50426d6828fee7e8.jpg Sur ma 2008 => ?????? http://images1.hiboox.com/images/0909/a23182dbbb9b8f4e19b49b78760e4c79.jpg Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
bonuscad Posté(e) le 25 février 2009 Auteur Posté(e) le 25 février 2009 C'est ma 2008 qu'à un pb, ,,???? T'ptêt bien! Tu es un trop bon testeur, à force tu as peut être des conflits dans ta config. Essayes de te recréer un nouveau profil sous ta 2008 pour voir si tu conserve ce problème... En tout cas sous 2008 ou 2009 pour moi pas problème, (gile) à dit que sous 2007 c'était bon aussi. Allez une image de ma part (Vous pourrez voir comme ça que j'ai fais la même chose pour les surfaces)Pour l'instant c'est un clone du 1er, je verrais si je peux fusionner en une seule routine. http://images0.hiboox.com/images/0909/ff25b5a70a79dd171158fdde478d3bf8.png Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
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