Neo83 Posté(e) le 13 décembre 2010 Partager Posté(e) le 13 décembre 2010 Bonjour à toutes et à tous.Dans un sujet de Bonuscad j’ai trouvé le lisp pline&field qui donne dans un champ le numéro d’une pièce et son aire dans un champ.J’ai modifié ce lisp (je ne suis pas programmeur) pour qu’il prenne du texte dans le numéro de la pièce et donne un nombre sans unité pour la surface. Voici les modifications :(itoa (vla-get-ObjectID (vlax-ename->vla-object obj))) ">%).Area \\f \"%lu2%pr2%ps["(getstring "\n Nom du Local : ")"\n""\,]\">%") Mon problème est le suivant :Le résultat de ce lisp est un champ avec le nom de la pièce et son aire le tout dans un mtext sur deux lignes centrées.J’aimerai que ce mtext soit composé deux champs distincts sur deux lignes centrées.Ceci me permettra de prendre le champ NOM DU LOCAL pour le mettre dans un tableau de surface dans le dessin, ainsi que le champ SURFACE en vue de l’additionner dans ce tableau. Pour information voici le lisp en question au complet : (defun c:surf2 ( / obj AcDoc Space nw_style pt) (command "_.pline" (while (not (zerop (getvar "cmdactive"))) (command pause) ) ) (setq obj (entlast) 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" "Id-Surfaces")) (vlax-put (vla-add (vla-get-layers AcDoc) "Id-Surfaces") 'color 96) ) ) (cond ((null (tblsearch "STYLE" "Romand20")) (setq nw_style (vla-add (vla-get-textstyles AcDoc) "Romand20")) (vlax-put nw_style 'fontfile "romand.shx") (vlax-put nw_style 'height 0.0) (vlax-put nw_style 'obliqueangle (/ (* 15.0 pi) 180)) (vlax-put nw_style 'width 1.0) (vlax-put nw_style 'textgenerationflag 0.0) ) ) (initget 9) (setq pt (getpoint "\nPoint d'insertion du champ: ")) (initget 1) (setq nw_obj (vla-addMtext Space (vlax-3d-point (trans pt 1 0)) 0.0 (strcat "%<\\AcObjProp.16.2 Object(%<\\_ObjId " (itoa (vla-get-ObjectID (vlax-ename->vla-object obj))) ">%).Area \\f \"%lu2%pr2%ps["(getstring "\n Nom du Local : ")"\n""\,]\">%m²") ) ) (vlax-put nw_obj 'AttachmentPoint 5) (vlax-put nw_obj 'Height 0.15) (vlax-put nw_obj 'DrawingDirection 5) (vlax-put nw_obj 'InsertionPoint (trans pt 1 0)) (vlax-put nw_obj 'StyleName "TEXTE") (vlax-put nw_obj 'Layer "Id-Surfaces") (prin1)) Merci à tous. Sans nous, les machines ne sont rien Lien vers le commentaire Partager sur d’autres sites More sharing options...
bonuscad Posté(e) le 14 décembre 2010 Partager Posté(e) le 14 décembre 2010 Bonjour, Ceci me permettra de prendre le champ NOM DU LOCAL pour le mettre dans un tableau de surface dans le dessin, ainsi que le champ SURFACE en vue de l’additionner dans ce tableau. Pour pouvoir faire cela, je pense que je tournerais vers les (ldata) d'objets. Exemple: (vlax-ldata-put (vlax-ename->vla-object obj) "SURF2" (getstring T "\nNom du Local : ")) Cela te permettra pour ton tableau de récupérer la chaine associé à la polyligne et d'identifier son affectation. Pour moi cela me semble le moyen le plus sûr pour identifier les polylignes, mais cela demande une adaptation du lisp cité ainsi que la création d'un autre pour faire le tableau récapitulatif. D'attaque pour faire cela ? Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius Lien vers le commentaire Partager sur d’autres sites More sharing options...
Neo83 Posté(e) le 14 décembre 2010 Auteur Partager Posté(e) le 14 décembre 2010 Merci Bonuscad pour ta réponse. Pour faire mon tableau, pas de soucis. Je le fais à la main. Je fais un copier/coller des champs aire et nom du local. Je sais bien que c'est archaïque mais ne sachant pas écrire en lisp, je me débrouille autrement.A l'inverse prendre un LISP et le modifier légèrement est plus ou moins dans mes cordes.Je vais donc essayer de coller au bon endroit ta modification.J'y vais, je me lance. Merci encore. Sans nous, les machines ne sont rien Lien vers le commentaire Partager sur d’autres sites More sharing options...
Neo83 Posté(e) le 14 décembre 2010 Auteur Partager Posté(e) le 14 décembre 2010 Alors, alors, J'ai mis ta modif en surlignée dans le lisp suivant.J'ai bien mes deux champs. Tout est parfait.A la fin de la procédure j'ai un message suivant:AutoCAD.Application: Clé introuvable. Cela ne change rien au résultat qui est parfait pour moi. (defun c:su ( / obj AcDoc Space nw_style pt) (command "_.pline" (while (not (zerop (getvar "cmdactive"))) (command pause) ) ) (setq obj (entlast) 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" "Id-Surfaces")) (vlax-put (vla-add (vla-get-layers AcDoc) "Id-Surfaces") 'color 96) ) ) (cond ((null (tblsearch "STYLE" "Romand20")) (setq nw_style (vla-add (vla-get-textstyles AcDoc) "Romand20")) (vlax-put nw_style 'fontfile "romand.shx") (vlax-put nw_style 'height 0.0) (vlax-put nw_style 'obliqueangle (/ (* 15.0 pi) 180)) (vlax-put nw_style 'width 1.0) (vlax-put nw_style 'textgenerationflag 0.0) ) ) (initget 9) (setq pt (getpoint "\nPoint d'insertion du champ: ")) (initget 1) (setq nw_obj (vla-addMtext Space (vlax-3d-point (trans pt 1 0)) 0.0 (strcat "%<\\AcObjProp.16.2 Object(%<\\_ObjId " (itoa (vla-get-ObjectID (vlax-ename->vla-object obj))) ">%).Area \\f \"%lu2%pr2%ps["[surligneur](vlax-ldata-put (vlax-ename->vla-object obj) "SURF2" (getstring T "\nNom du Local : "))"[/surligneur]\n""\,]\">%m²") ) ) (vlax-put nw_obj 'AttachmentPoint 5) (vlax-put nw_obj 'Height 0.15) (vlax-put nw_obj 'DrawingDirection 5) (vlax-put nw_obj 'InsertionPoint (trans pt 1 0)) (vlax-put nw_obj 'StyleName "TEXTE") (vlax-put nw_obj 'Layer "Id-Surfaces") (prin1)) Pour la réalisation de mon tableau en auto, ce sera sûrement dans une autre vie!Merci, merci, merci. Sans nous, les machines ne sont rien Lien vers le commentaire Partager sur d’autres sites More sharing options...
bonuscad Posté(e) le 14 décembre 2010 Partager Posté(e) le 14 décembre 2010 Ma suggestion venait surtout pour faire un tableau par la suite. prendre un LISP et le modifier légèrement est plus ou moins dans mes cordes. Très bien, alors je te propose ce qui suit et libre à toi de modifier Le 1er code (defun c:surf2 ( / obj AcDoc Space nw_style vla_obj pt) (command "_.pline" (while (not (zerop (getvar "cmdactive"))) (command pause) ) ) (setq obj (entlast) 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" "Id-Surfaces")) (vlax-put (vla-add (vla-get-layers AcDoc) "Id-Surfaces") 'color 96) ) ) (cond ((null (tblsearch "STYLE" "Romand20")) (setq nw_style (vla-add (vla-get-textstyles AcDoc) "Romand20")) (vlax-put nw_style 'fontfile "romand.shx") (vlax-put nw_style 'height 0.0) (vlax-put nw_style 'obliqueangle (/ (* 15.0 pi) 180)) (vlax-put nw_style 'width 1.0) (vlax-put nw_style 'textgenerationflag 0.0) ) ) (vlax-ldata-put (setq vla_obj (vlax-ename->vla-object obj)) "SURF2" (getstring T "\nNom du Local : ")) (initget 9) (setq pt (getpoint "\nPoint d'insertion du champ: ")) (initget 1) (setq nw_obj (vla-addMtext Space (vlax-3d-point (trans pt 1 0)) 0.0 (strcat (vlax-ldata-get vla_obj "SURF2") "\\P%<\\AcObjProp.16.2 Object(%<\\_ObjId " (itoa (vla-get-ObjectID vla_obj)) ">%).Area \\f \"%lu2%pr2%ps[,²]\">%" ) ) ) (vlax-put nw_obj 'AttachmentPoint 5) (vlax-put nw_obj 'Height 2.0) (vlax-put nw_obj 'DrawingDirection 5) (vlax-put nw_obj 'InsertionPoint (trans pt 1 0)) (vlax-put nw_obj 'StyleName "Romand20") (vlax-put nw_obj 'Layer "Id-Surfaces") (prin1) ) Et le 2ème code (ne prend que les polylignes de ta sélection qui ont des ldata, pas de risque d'erreurs) (defun c:recap_surf2 ( / js js_sel n obj vla_obj oldim oldlay AcDoc Space nw_style ins_pt_cell h_t w_c ename_cell n_row n_column) (setq js (ssget '((0 . "LWPOLYLINE")))) (setq js_sel (ssadd)) (repeat (setq n (sslength js)) (setq obj (ssname js (setq n (1- n)))) (if (vlax-ldata-get (setq vla_obj (vlax-ename->vla-object obj)) "SURF2") (ssadd obj js_sel) ) ) (cond (js_sel (setq oldim (getvar "dimzin") oldlay (getvar "clayer") ) (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" "Romand20")) (setq nw_style (vla-add (vla-get-textstyles AcDoc) "Romand20")) (vlax-put nw_style 'fontfile "romand.shx") (vlax-put nw_style 'height 0.0) (vlax-put nw_style 'obliqueangle (/ (* 15.0 pi) 180)) (vlax-put nw_style 'width 1.0) (vlax-put nw_style 'textgenerationflag 0.0) ) ) (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: ")) (setq ename_cell (vla-addTable Space (vlax-3d-point (trans ins_pt_cell 1 0)) (+ 3 (sslength js_sel)) 2 (+ 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 "Romand20") (vla-SetCellTextHeight ename_cell 0 0 (vlax-make-variant h_t 5)) (vla-SetCellAlignment ename_cell 0 0 5) (foreach string '("Libellé de la pièce" "Surface de la pièce") (vla-SetText ename_cell 1 (setq n_column (1+ n_column)) string) (vla-SetCellTextStyle ename_cell 1 n_column "Romand20") (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_sel)) (setq ename (vlax-ename->vla-object (ssname js_sel (setq n (1- n))))) (if (vlax-property-available-p ename 'Area) (progn (vla-SetText ename_cell n_row (setq n_column (1+ n_column)) (vlax-ldata-get ename "SURF2") ) (vla-SetCellTextStyle ename_cell n_row n_column "Romand20") (vla-SetCellTextHeight ename_cell n_row n_column (vlax-make-variant h_t 5)) (vla-SetCellAlignment ename_cell n_row n_column 6) (vla-SetText ename_cell n_row (setq n_column (1+ n_column)) (strcat "%<\\AcObjProp Object(%<\\_ObjId " (itoa (vla-get-ObjectID ename)) ">%).Area \\f \"%lu2%pr2%ps>%") ) (vla-SetCellTextStyle ename_cell n_row n_column "Romand20") (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) (vla-SetText ename_cell n_row n_column (strcat "Total= " "%<\\AcExpr (Sum(B3:B" (itoa n_row) ")) \\f \"%lu6\">%") ) (vla-SetCellTextStyle ename_cell n_row (1- (length lst_idcolumn)) "Romand20") (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!") ) ) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius Lien vers le commentaire Partager sur d’autres sites More sharing options...
Neo83 Posté(e) le 14 décembre 2010 Auteur Partager Posté(e) le 14 décembre 2010 Ah, MERCI beaucoup un fois de plus. Mon ordinateur devient intelligent! Il fait des tableaux!! Les champs surface change et sont dynamiques. C'est un gain de temps formidable. Le soucis est que si je renomme un local, le nom de ce local dans le tableau ne change pas; ceci même si je refais le tableau. Ca oblige à effacer les polylignes et à refaire le tableau. Est-ce que j'utilise tes lisp correctement? Il faut savoir que mes Dieux du bureau me change TOUT LE TEMPS les noms des locaux. En ajoutant un bureau par exemple danc le 1 passe en 2, le 2 en 3... Le travail quoi! En tous cas, tu viens de me faire gagner du stress en moins. (Compliquée ma phrase?) Sans nous, les machines ne sont rien Lien vers le commentaire Partager sur d’autres sites More sharing options...
bonuscad Posté(e) le 14 décembre 2010 Partager Posté(e) le 14 décembre 2010 Est-ce que j'utilise tes lisp correctement? Oui. Il faut savoir que mes Dieux du bureau me change TOUT LE TEMPS les noms des locaux avec (vlax-ldata-put (vlax-ename->vla-object (car (entsel))) "SURF2" (getstring T "\nNom du Local : ")) tu peux mettre à jour la donnée dans ta polyligne.Tu efface le tableau et tu le recréer (c'est rapide), il prendra les nouvelles affectations. Pour les surfaces inscrites dans les polylignes, il faudrait écrire un p'tit lisp qui mette à jour. Je te laisse chercher un peu... Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius Lien vers le commentaire Partager sur d’autres sites More sharing options...
Neo83 Posté(e) le 14 décembre 2010 Auteur Partager Posté(e) le 14 décembre 2010 Je me penche sur le problème dès demain matin. Je dois te dire que c'est très compliqué pour moi. Je ne sais même pas dans quel lisp où insérer la ligne de commande dont tu me parles, mais je vais faire des essais.Ces programmes sont dèjà un progrès énorme pour moi.Merci m'sieur. :) Sans nous, les machines ne sont rien Lien vers le commentaire Partager sur d’autres sites More sharing options...
bonuscad Posté(e) le 15 décembre 2010 Partager Posté(e) le 15 décembre 2010 Un bout de code qui devrait te permettre de changer une affectation déjà effectuée, ou créer une affectation à une polyligne déjà dessiné sans affectation. Pour le tableau, le plus simple est de le refaire... Le code (pas trop testé, je te laisse choisir le nom de la fonction à la place de (lambda) ) ((lambda ( / js obj vla_obj obj_id AcDoc Space js_mt n en pt_ins nw_obj) (princ "\nSélectionner une polyligne pour une nouvelle affectation.") (while (null (setq js (ssget "_+.:E:S" '((0 . "LWPOLYLINE"))))) (princ "\nCe n'est pas un objet valable!") ) (setq obj (ssname js 0) vla_obj (vlax-ename->vla-object obj) obj_id (vlax-get-property vla_obj 'ObjectID) 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" "Id-Surfaces")) (vlax-put (vla-add (vla-get-layers AcDoc) "Id-Surfaces") 'color 96) ) ) (cond ((null (tblsearch "STYLE" "Romand20")) (setq nw_style (vla-add (vla-get-textstyles AcDoc) "Romand20")) (vlax-put nw_style 'fontfile "romand.shx") (vlax-put nw_style 'height 0.0) (vlax-put nw_style 'obliqueangle (/ (* 15.0 pi) 180)) (vlax-put nw_style 'width 1.0) (vlax-put nw_style 'textgenerationflag 0.0) ) ) (if (vlax-ldata-get vla_obj "SURF2") (setq js_mt (ssget "_X" (list '(0 . "MTEXT") (cons 1 (strcat (vlax-ldata-get vla_obj "SURF2") "*"))))) ) (vlax-ldata-put vla_obj "SURF2" (getstring T "\nNom du Local : ")) (if js_mt (setq n (sslength js_mt)) (setq n 1)) (repeat n (if js_mt (progn (setq pt_ins (trans (cdr (assoc 10 (entget (setq en (ssname js_mt (setq n (1- n))))))) 0 1)) (entdel en) ) (progn (initget 9) (setq pt_ins (getpoint "\nPoint d'insertion du champ: ")) ) ) (setq nw_obj (vla-addMtext Space (vlax-3d-point (trans pt_ins 1 0)) 0.0 (strcat (vlax-ldata-get vla_obj "SURF2") "\\P%<\\AcObjProp.16.2 Object(%<\\_ObjId " (itoa obj_id) ">%).Area \\f \"%lu2%pr2%ps[,²]\">%" ) ) ) (vlax-put nw_obj 'AttachmentPoint 5) (vlax-put nw_obj 'Height 2.0) (vlax-put nw_obj 'DrawingDirection 5) (vlax-put nw_obj 'InsertionPoint (trans pt_ins 1 0)) (vlax-put nw_obj 'StyleName "Romand20") (vlax-put nw_obj 'Layer "Id-Surfaces") ) )) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius Lien vers le commentaire Partager sur d’autres sites More sharing options...
Neo83 Posté(e) le 15 décembre 2010 Auteur Partager Posté(e) le 15 décembre 2010 Merci à toi. Ton code fonctionne très bien.Par contre je suis largué pour l'utiliser en tant que commande à part entière.J'ai essayé d'insérer c:reafec () après la première parenthèse. Le lisp se charge mais ne fonctionne plus sous cette forme. j'ai essayé d'insérer c:reafec () au tout début et d'ajouter une parenthèse à la fin, mais rien ne fonctionne.Dois-je insérer "lambda" dans le premier lisp surf2? :casstet: La solution que j'ai, est de faire glisser le lisp dans mon dessin pour pouvoir réaffecter les nouveaux noms.Je peux tout de même faire suivant mes besoins et c'est bien l'essentiel pour moi.Je t'avais prévenu, je modifie un peu en comprenant des choses simples, je suis tout de même vite dépassé! :P Sans nous, les machines ne sont rien Lien vers le commentaire Partager sur d’autres sites More sharing options...
Neo83 Posté(e) le 15 décembre 2010 Auteur Partager Posté(e) le 15 décembre 2010 Encore moiJe viens juste de faire ceci:((defun c:recap ( / js obj vla_obj obj_id AcDoc Space js_mt n en pt_ins nw_obj)... Cela indique un message d'erreur suivant: (LOAD "C:/Documents and Settings/fpaniconi/Bureau/15.lsp") ; erreur: fonction incorrecte: C:RECAP, mais cela fonctionne! Sans nous, les machines ne sont rien Lien vers le commentaire Partager sur d’autres sites More sharing options...
bonuscad Posté(e) le 15 décembre 2010 Partager Posté(e) le 15 décembre 2010 Pour changer en fonction permanente, tu substitue: ((lambda ( / .....) ..... ))en(defun c:MACOMMANDE ( / ....) .....) Note bien que j'ai enlever une paire de parenthèses qui étaient affectée à (lambda). Lambda est une fonction anonyme qui ne s'exécute qu'une seule fois lors de son chargement. Après son exécution elle n'existe plus en mémoire au contraire d'une fonction (defun). Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius Lien vers le commentaire Partager sur d’autres sites More sharing options...
Neo83 Posté(e) le 16 décembre 2010 Auteur Partager Posté(e) le 16 décembre 2010 D'accord! :) La première parenthèse et la dernière parenthèse...Maintenant je vais pouvoir triturer tout ça. Changer le style de texte, les hauteurs... :D En tous cas encore un grand merci, ...j'ai l'impression de me répéter. Une dernière question: Connais tu les hautes instances de ce site? J'ai demandé comment de venir donateur pour ce site et personne ne m'a répondu. Peux tu relayer ma question aux personnes concernées? :euro: D'avance merci à toi. Sans nous, les machines ne sont rien Lien vers le commentaire Partager sur d’autres sites More sharing options...
lili2006 Posté(e) le 16 décembre 2010 Partager Posté(e) le 16 décembre 2010 Bonjour à toutes et tous, J'ai demandé comment de venir donateur pour ce site et personne ne m'a répondu. Peux tu relayer ma question aux personnes concernées? Je t'avais répondu suite à ta demande par MP, ;) Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
Neo83 Posté(e) le 16 décembre 2010 Auteur Partager Posté(e) le 16 décembre 2010 Bonjour lili2006,J'ai envoyé un courriel au service administratif suite à ta réponse, mais depuis pas de nouvelle. Je me suis dit que je n'avais pas fait ce qu'il fallait...Si j'ai fait ce qu'il fallait, j'attends la réponse. Sans nous, les machines ne sont rien Lien vers le commentaire Partager sur d’autres sites More sharing options...
lili2006 Posté(e) le 16 décembre 2010 Partager Posté(e) le 16 décembre 2010 Re, Salut Neo83, J'avais fait la même demande que toi il y à quelques années et j'ai laissé tomber pour les mêmes raisons que toi,... Donc, à mon petit niveau, j'essaie de faire vivre ce forum en tentant des réponses à certaines questions et aussi poster sans hésitation mes propres pbs ou questions,... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
Neo83 Posté(e) le 16 décembre 2010 Auteur Partager Posté(e) le 16 décembre 2010 C'est dommage.Je me sens redevable et c'est la seule manière que j'ai pour rendre à nouveau les services que l'on me rend au travers de ce site. Tu as compris que je ne peux rétribuer en LISP donc j'essaye de le faire en EURO.Voilà 20 ans que je dessine sur AutoCAD sans formation. J'en ai bien plus appris en quelques mois de connexion à votre contact que dans toutes les sociétés que j'ai traversées.Ma motivation est là. Sans nous, les machines ne sont rien Lien vers le commentaire Partager sur d’autres sites More sharing options...
bonuscad Posté(e) le 23 décembre 2010 Partager Posté(e) le 23 décembre 2010 Je rectifie le code donné en réponse 8. Ce dernier fait un contrôle avec l'ID de l'objet source.Cette version sera plus sure que l'ancienne qui aurait pu faire des modifs sur d'autre Mtext ayant le même label. (defun c:MAJ_SURF2 ( / js obj vla_obj obj_id AcDoc Space js_mt n en txt_fld pt_ins nw_obj) (princ "\nSélectionner Une polyligne pour nouvelle affectation.") (while (null (setq js (ssget "_+.:E:S" '((0 . "LWPOLYLINE"))))) (princ "\nCe n'est pas un objet valable!") ) (setq obj (ssname js 0) vla_obj (vlax-ename->vla-object obj) obj_id (vlax-get-property vla_obj 'ObjectID) 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" "Id-Surfaces")) (vlax-put (vla-add (vla-get-layers AcDoc) "Id-Surfaces") 'color 96) ) ) (cond ((null (tblsearch "STYLE" "Romand20")) (setq nw_style (vla-add (vla-get-textstyles AcDoc) "Romand20")) (vlax-put nw_style 'fontfile "romand.shx") (vlax-put nw_style 'height 0.0) (vlax-put nw_style 'obliqueangle (/ (* 15.0 pi) 180)) (vlax-put nw_style 'width 1.0) (vlax-put nw_style 'textgenerationflag 0.0) ) ) (if (vlax-ldata-get vla_obj "SURF2") (setq js_mt (ssget "_X" (list '(0 . "MTEXT") (cons 1 (strcat (vlax-ldata-get vla_obj "SURF2") "*"))))) ) (vlax-ldata-put vla_obj "SURF2" (getstring T "\nNom du Local : ")) (if js_mt (setq n (sslength js_mt)) (setq n 1)) (repeat n (if js_mt (progn (setq en (ssname js_mt (setq n (1- n))) txt_fld (vla-fieldcode (vlax-ename->vla-object en)) ) (if (eq (atoi (substr txt_fld (+ (vl-string-search "_ObjId" txt_fld) 8) 11)) obj_id) (progn (setq pt_ins (trans (cdr (assoc 10 (entget en))) 0 1)) (entdel en) ) ) ) (progn (initget 9) (setq pt_ins (getpoint "\nPoint d'insertion du champ: ")) ) ) (setq nw_obj (vla-addMtext Space (vlax-3d-point (trans pt_ins 1 0)) 0.0 (strcat (vlax-ldata-get vla_obj "SURF2") "\\P%<\\AcObjProp.16.2 Object(%<\\_ObjId " (itoa obj_id) ">%).Area \\f \"%lu2%pr2%ps[,²]\">%" ) ) ) (vlax-put nw_obj 'AttachmentPoint 5) (vlax-put nw_obj 'Height 2.0) (vlax-put nw_obj 'DrawingDirection 5) (vlax-put nw_obj 'InsertionPoint (trans pt_ins 1 0)) (vlax-put nw_obj 'StyleName "Romand20") (vlax-put nw_obj 'Layer "Id-Surfaces") ) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius Lien vers le commentaire Partager sur d’autres sites More sharing options...
Neo83 Posté(e) le 23 décembre 2010 Auteur Partager Posté(e) le 23 décembre 2010 Eh bien oui, je réponds encore :yltype: , je ne suis pas encore en vacances! :calim: Merci à toi pour cette mise à jour... Ma vie est plus simple depuis tes lisp! :) Bonnes fêtes... :present: :present: :present: :present: :present: :present: :present: Sans nous, les machines ne sont rien Lien vers le commentaire Partager sur d’autres sites More sharing options...
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