litelsousa Posté(e) le 12 décembre 2018 Posté(e) le 12 décembre 2018 Bonjour, Dans l'espace papier, j'ai un texte. Dans celui-ci, je dois additionner des surfaces de hachures qui se trouvent dans une Xref. Cette Xref est inséré dans l'espace objet. Pour faire ça, je pense qu'il faudrait utiliser un champ dans ce texte, me je ne vois pas comment faire pour additionner les surfaces, qui plus est dans un Xref... Y a t-il un moyen de faire ça?
Demixav Posté(e) le 12 décembre 2018 Posté(e) le 12 décembre 2018 Salut... Pour faire l'addition, faut passer par la formule et ré-insérer des champs, aire des hachures, dans la formule!Par contre, je ne crois pas que ce soit pas possible d'aller chercher un objet dans l'espace objet, et encore moins dans une X-réf! A la sélection de l'objet, il prend la X-réf comme objet et non pas une entité dans celle ci! Un lisp peut être... Xav AutoCad Map 3D 2011 - Covadis v16.0dWindows 7 - 64b
litelsousa Posté(e) le 12 décembre 2018 Auteur Posté(e) le 12 décembre 2018 ré-insérer des champs, aire des hachures, dans la formule Mon dieu... j'ai 483 hachures, faut que je les sélectionne une par une!!!Je crois que je sélectionnerais toutes les hachures et noterais moi-même l'aire cumulée... En attendant une autre solution solution. :( :( :( Merci
Patrick_35 Posté(e) le 12 décembre 2018 Posté(e) le 12 décembre 2018 Salut Comme l'indique Demixav, tu n'as pas 50 solutions.Et pour t'éviter une addition fastidieuse, un lisp vite fait qui fait le cumul des surfaces des hachures sélectionnées. (defun c:tha(/ doc sel tot) (setq doc (vla-get-activedocument (vlax-get-acad-object)) tot 0 ) (and (ssget (list (cons 0 "HATCH"))) (progn (vlax-map-collection (setq sel (vla-get-activeselectionset doc)) '(lambda(x)(setq tot (+ tot (vla-get-area x))))) (vla-delete sel) (princ (strcat "\nTotal des surfaces des hachures : " (rtos tot))) ) ) (princ) ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
litelsousa Posté(e) le 12 décembre 2018 Auteur Posté(e) le 12 décembre 2018 Ok merci, je vais essayer ça.Mais réponse demain... départ chantier...
Demixav Posté(e) le 12 décembre 2018 Posté(e) le 12 décembre 2018 Re, Ce sont toutes les mêmes tes hachures? si c'est le cas, tu les refais sans les dissocier... tu en auras plus qu'une seule! AutoCad Map 3D 2011 - Covadis v16.0dWindows 7 - 64b
Fraid Posté(e) le 12 décembre 2018 Posté(e) le 12 décembre 2018 Bonjour, Un essai d'utilisation de l’excellente fonctions de Lee Mac En intégralité ici cela a l'air de fonctionner chez moi. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;getharea V1.0 12/12/2018;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Tappez GHA ou getharea pour lancer le lisp ;Additionne les surfaces des hachures contenues dans une XREF ;Place le champ dans le presse papier, affiche le résultat dans la console et crée une ldata (defun c:getharea (/ xref IOI OoO nomxref ) (vl-load-com) (setq IOI 0 ) (while (= IOI 0) (setq xref (entsel "\nSélectionnez une XREF: ")) (if xref (if (= (cdr (assoc 0 (entget (car xref)))) "INSERT") (setq IOI 1)) (princ "\nVeuillez Sélectionner une XREF") ) ) (setq *SURFACE* (cdr (car (LM:ODBX2 'GTHA (list (getchemin xref)) nil))) nomxref (cdr (assoc 2 (entget (car xref))))) (if *SURFACE* (progn (vlax-ldata-put "SURFACES" nomxref *SURFACE*) (SetClipBoardText (strcat "%<\AcVar.17.0 Lisp." (rtos *SURFACE*) ">%")) (princ (strcat "\nSurface totale des hachures de l'XREF " nomxref " : " (rtos *SURFACE*) " M²")) (princ) ) (progn (princ "\nAucune hachure trouvée.")(princ)) ) ) (defun GTHA ( doc / area) (setq area 0.0) (vlax-for obj (vla-get-ModelSpace doc) (if (= (vla-get-ObjectName obj) "AcDbHatch") (setq area (+ area (vla-get-Area obj))) ) ) area ) (defun LM:ODBX2 ( fun lst sav / *error* app dbx dir doc dwl err rtn vrs );de Lee mac (defun *error* ( msg ) (if (and (= 'vla-object (type dbx)) (not (vlax-object-released-p dbx))) (vlax-release-object dbx) ) (if (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*")) (princ (strcat "\nError: " msg)) ) (princ) ) (cond ( (progn (setq dbx (vl-catch-all-apply 'vla-getinterfaceobject (list (setq app (vlax-get-acad-object)) (if (< (setq vrs (atoi (getvar 'acadver))) 16) "objectdbx.axdbdocument" (strcat "objectdbx.axdbdocument." (itoa vrs)) ) ) ) ) (or (null dbx) (vl-catch-all-error-p dbx)) ) (prompt "\nUnable to interface with ObjectDBX.") ) ( t (vlax-for doc (vla-get-documents app) (setq dwl (cons (cons (strcase (vla-get-fullname doc)) doc) dwl)) ) (foreach dwg lst (if (or (setq doc (cdr (assoc (strcase dwg) dwl))) (and (not (vl-catch-all-error-p (vl-catch-all-apply 'vla-open (list dbx dwg)))) (setq doc dbx) ) ) (progn (setq rtn (cons (cons dwg (if (vl-catch-all-error-p (setq err (vl-catch-all-apply fun (list doc)))) (prompt (strcat "\n" dwg "\t" (vl-catch-all-error-message err))) err ) ) rtn ) ) (if sav (vla-saveas doc dwg)) ) (princ (strcat "\nError opening file: " (vl-filename-base dwg) ".dwg")) ) ) (if (= 'vla-object (type dbx)) (vlax-release-object dbx) ) (reverse rtn) ) ) ) (defun getchemin ( ref / xref chemin) (if (and (setq xref (car ref)) (= "INSERT" (cdr (assoc 0 (entget xref)))) (setq def (tblsearch "block" (cdr (assoc 2 (entget xref))))) (= 4 (logand 4 (cdr (assoc 70 def)))) ) (setq chemin (cdr (assoc 1 def))) ) ) (defun SetClipBoardText ( text / htmlfile );Place un texte dans le presse papier Windows.(TheSwamp) (vlax-invoke (vlax-get (vlax-get (setq htmlfile (vlax-create-object "htmlfile")) 'ParentWindow ) 'ClipBoardData ) 'SetData "Text" text ) (vlax-release-object htmlfile) ) (defun c:GHA nil (c:getharea)) tu n'a plus qu'a faire Ctrl+v et tu as ton champ.dit moi si cela fonctionne. https://github.com/Fraiddd
litelsousa Posté(e) le 14 décembre 2018 Auteur Posté(e) le 14 décembre 2018 Bonjour, Je ne dois pas faire tout juste... J'ai créé mon fichier lsp que j'insère, pas de soucis il le reconnaît.mais une fois que je lance la commande GTHA, je sélectionne l'Xref et il me dit: Erreur Automation Entrée incorrecteAucune hachure trouvée. Je ne vois pas trop où il faut faire le coller?
Fraid Posté(e) le 14 décembre 2018 Posté(e) le 14 décembre 2018 Bonjour,Pour lancer le lisp c'est GHA ou getharea https://github.com/Fraiddd
litelsousa Posté(e) le 14 décembre 2018 Auteur Posté(e) le 14 décembre 2018 Oui pardon, c'est ce que je mets, mais ça me dit toujours la même chose
Fraid Posté(e) le 14 décembre 2018 Posté(e) le 14 décembre 2018 chez moi cela fonctionne sur un Autocad 2011 et Windows 7.J'ai beau regarder si j' ai oublier une fonction, vois pas. https://github.com/Fraiddd
Fraid Posté(e) le 14 décembre 2018 Posté(e) le 14 décembre 2018 que obtient tu si tu colle ceci ?(getchemin (entsel "\nSélectionnez une XREF: ")) https://github.com/Fraiddd
litelsousa Posté(e) le 14 décembre 2018 Auteur Posté(e) le 14 décembre 2018 chez moi cela fonctionne sur un Autocad 2011 et Windows 7.J'ai beau regarder si j' ai oublier une fonction, vois pas. Ah oui ça fonctionne sur un autre fichier... merci bien J'ai testé, c'est la surface totale ou alors le nombre de hachure qui est limité. Seul petit bémol, ça donne le total général des hachures et non par calque...
Fraid Posté(e) le 14 décembre 2018 Posté(e) le 14 décembre 2018 ça donne le total général des hachures et non par calque tu ne l'avais pas dit. je vais revoir le code ce week end. Est ce toujours les mêmes calques?Y en a t'il beaucoup?a tu plusieurs xref dans le dessin? https://github.com/Fraiddd
litelsousa Posté(e) le 14 décembre 2018 Auteur Posté(e) le 14 décembre 2018 En effet, désolé. C'est un plan d'étape de travaux... il a donc beaucoup d'hachures...environ 485 hachures par Xref... J'ai plusieurs Xref (3 pour l'instant), 5 calques de hachures par Xref (les calques ont des couleurs différentes selon les Xref tout en ayant le même nom),toute les hachures sont de motif Solide. Merci beaucoup
Steven Posté(e) le 14 décembre 2018 Posté(e) le 14 décembre 2018 Salut Litelsousa, Il y a peut-être une autre solution. Tu pourrais faire une extraction de donné en insérant un tableau qui te donnera la surface totale de tes hachures dans le dessin qui appelle les autres dessins en Xref. Puis dans ta présentation, tu n'auras plus qu'a mettre le total qu'il y aura d'indiqué dans le tableau. Tableau que tu n'auras pas besoin d'imprimer ou d'afficher dans la présentation. L'avantage de cette méthode, est que si tu modifies les hachures dans les Xref, tu pourras mettre le tableau à jour sans soucis en rchargeant la ou les Xref modifiées puis en mettant les liaison de données de la table, la surface totale des hachures se mettra à jour. Tu n'auras plus qu'à la modifier dans la présentation. Steven________________________________________ Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD. Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD. En rêve; AutoCAD sous Linux.
Fraid Posté(e) le 16 décembre 2018 Posté(e) le 16 décembre 2018 Bonjour, Suis d'accord avec Steven, le tableau est inévitable.Par contre je ne vois pas comment il fait la liaison. J'ai avancé le code.Je n'aurais pas finis ce soir.par contre si tu me donne le nom des 5 calques,cela me faciliterais les choses. et voici un bout de code a charger qui te donne un aperçu du tableau (il se place au 0,0 au chargement, rien a taper). (defun tabsurf ( list-Surf / Tableau int int2 list-xref list-lay nblay ) (vl-load-com) (setq list-xref (ListeCAR2 list-Surf) list-lay (ListeCAR2 (cadr (car list-Surf))) nbxref (length list-xref) nblay (length list-lay) Tableau (vla-Addtable (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object))) (vlax-3d-point 0 0 0) (+ 3 nblay) (+ 2 nbxref) 10 66 ) int 1 ) (vla-put-VertCellMargin Tableau 3.0) (vla-put-TitleSuppressed Tableau :vlax-false) (vla-put-HeaderSuppressed Tableau :vlax-false) (vla-setText Tableau 0 0 "Surfaces par Calques") (mapcar '(lambda (lay) (setq int (+ 1 int)) (vla-setText Tableau int 0 lay) ) list-lay ) (setq int 0) (mapcar '(lambda (surf) (setq int (+ 1 int) int2 1) (vla-setText Tableau 1 int (car surf)) (mapcar '(lambda (x) (setq int2 (+ 1 int2)) (vla-setText Tableau int2 int (cdr x)) ) (cadr surf) ) ) list-Surf ) (setq int 1) (vla-setText Tableau 1 (+ 1 nbxref) "Total par calque") (repeat nblay (setq int (+ 1 int)) (vla-setText Tableau int (+ 1 nbxref) (strcat "%<\\AcExpr (Sum(" (chr 66) (itoa(+ int 1)) ":" (chr (+ 66 (- nbxref 1))) (itoa(+ int 1)) ")) \\f \"%lu2\">%" )) ) (vla-setText Tableau (+ 2 nblay) 0 "Total par xref") (setq int 0) (repeat nbxref (setq int (+ 1 int)) (vla-setText Tableau (+ 2 nblay) int (strcat "%<\\AcExpr (Sum(" (chr (+ 65 int)) "2" ":" (chr (+ 65 int)) (itoa(+ nblay 2)) ")) \\f \"%lu2\">%" )) ) ) (defun ListeCAR2 (listedListes / k°) (mapcar '(lambda (x) (setq K° (cons (car x) K°))) listedListes) (reverse K°) ) (tabsurf (list (list "XREF1" (list ( cons "Calque-1" 1102.35) ( cons "Calque-2" 2102.35) ( cons "Calque-3" 3102.35) ( cons "Calque-4" 4102.35) ( cons "Calque-5" 5102.35) ) ) (list "XREF2" (list ( cons "Calque-1" 1202.35) ( cons "Calque-2" 2202.35) ( cons "Calque-3" 3202.35) ( cons "Calque-4" 4202.35) ( cons "Calque-5" 5202.35) ) ) (list "XREF3" (list ( cons "Calque-1" 1302.35) ( cons "Calque-2" 2302.35) ( cons "Calque-3" 3302.35) ( cons "Calque-4" 4302.35) ( cons "Calque-5" 5302.35) ) ) ) ) cela te convient t'il?en tout cas merci pour cette idée de programmation, cela m'a permis d'en apprendre plus, et au delà... https://github.com/Fraiddd
litelsousa Posté(e) le 17 décembre 2018 Auteur Posté(e) le 17 décembre 2018 Hello,Merci c'est nickel.Par contre je pense qu'il faut remplacer les valeurs que tu as mises (1302.35;2302.35;3302.35...) car c'est les valeurs que ça me met?Pour les calques et le nom des Xref c'est bon j'ai vu comment il fallait faire mais pour les quantité pas.
Fraid Posté(e) le 17 décembre 2018 Posté(e) le 17 décembre 2018 Ce tableau n'est qu'un exemple de présentation.Les xref aurons leur nom d'affiché ainsi que les calques et les valeurs sont fictives.Tu pourras avoir jusqu'a 24 xref, après les champs plantes.et le nombre de calque est fixé à 5.Pourrais tu me donner le nom exacte de tes calques? pour faire la liaison, c'est plus facile. https://github.com/Fraiddd
Steven Posté(e) le 17 décembre 2018 Posté(e) le 17 décembre 2018 Bonjour, ...Par contre je ne vois pas comment il fait la liaison...Lors de la création du tableau, sur la page 1 de 7, il faut aller dans les paramètres et demander à extraire les objets dans les Xrefs Puis ensuite, à la page 2 de 7, il faut cocher hachures et décocher tout le reste, du fait qu'on ne souhaite avoir que l'aire des hachures. A la page 3 de 7, il faut cocher Aire, Calque et Nom de fichier.A la page 4 de 7, à la colonne Aire, on insère le pied de page des totaux > Somme.De ce fait, dans le tableau, on a la surface de chaque hachures, le nom du fichier sur lequel elles sont puis le nom du calque sur lequel elles sont créées.Il n'y aucune limite dans le nombre de Xrefs et de calques. Steven________________________________________ Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD. Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD. En rêve; AutoCAD sous Linux.
Fraid Posté(e) le 17 décembre 2018 Posté(e) le 17 décembre 2018 Lors de la création du tableau, sur la page 1 de 7, Je suis sur Autocad 2011 et quand je tape tableau je n'ai qu'une page... https://github.com/Fraiddd
Steven Posté(e) le 17 décembre 2018 Posté(e) le 17 décembre 2018 Je suis sur Autocad 2011 et quand je tape tableau je n'ai qu'une page... Il faut ensuite choisir A partir des données d'objets du dessin (extraction de données) ou taper dans la ligne de commande: EXTRACTDONNEES Steven________________________________________ Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD. Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD. En rêve; AutoCAD sous Linux.
litelsousa Posté(e) le 17 décembre 2018 Auteur Posté(e) le 17 décembre 2018 Re, alors les calques où sont les hachures sont:PROJ_DALLE_ETAPE 3_HACHPROJ_DALLE_ETAPE 4_HACHPROJ_DALLE_ETAPE 5_HACHPROJ_DALLE_ETAPE 6_HACHPROJ_DALLE_SPECIALE_HACH Se sont les même sur les toutes les Xref Merci bien
Fraid Posté(e) le 17 décembre 2018 Posté(e) le 17 décembre 2018 voila la nouvelle version ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;getharea V2.0 17/12/2018;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Tappez GHA ou getharea pour lancer le lisp ;Place un tableau au point 0,0 contenant les surfaces de hachures par calques/xref ;;;;;;;;;;;;;;;;;;;;;;By fraiddd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun c:getharea (/ exref xrefs listlistareaxref n listArea listareaxref ) (vl-load-com) (setq xrefs (ssget "_x" (list (cons 0 "INSERT"))) n -1 ) (if xrefs (progn (repeat (sslength xrefs) (setq exref (ssname xrefs (setq n (1+ n))) listArea (cadar (LM:ODBX2 'GTHA (list (vla-get-path (vlax-ename->vla-object exref))) nil)) listareaxref (list (cdr (assoc 2 (entget exref))) listArea) ) (if listlistareaxref (setq listlistareaxref (append listlistareaxref (list listareaxref))) (setq listlistareaxref (list listareaxref)) ) ) (if listlistareaxref (tabsurf listlistareaxref) (princ "\Xrefs incompatibles")) ) (princ "\nAucune XREF dans le dessin") ) (princ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun GTHA ( doc / lay area1 area2 area3 area4 area5 calque1 calque2 calque3 calque4 calque5 ) (setq calque1 "PROJ_DALLE_ETAPE 3_HACH" calque2 "PROJ_DALLE_ETAPE 4_HACH" calque3 "PROJ_DALLE_ETAPE 5_HACH" calque4 "PROJ_DALLE_ETAPE 6_HACH" calque5 "PROJ_DALLE_SPECIALE_HACH" area1 0.0 area2 0.0 area3 0.0 area4 0.0 area5 0.0 ) (vlax-for obj (vla-get-ModelSpace doc) (setq lay (vla-get-Layer obj)) (if (= (vla-get-ObjectName obj) "AcDbHatch") (cond ((= lay calque1)(setq area1 (+ area1 (vla-get-Area obj)))) ((= lay calque2)(setq area2 (+ area2 (vla-get-Area obj)))) ((= lay calque3)(setq area3 (+ area3 (vla-get-Area obj)))) ((= lay calque4)(setq area4 (+ area4 (vla-get-Area obj)))) ((= lay calque5)(setq area5 (+ area5 (vla-get-Area obj)))) ) ) ) (list (list (cons calque1 (rtos area1 2 4)) (cons calque2 (rtos area2 2 4)) (cons calque3 (rtos area3 2 4)) (cons calque4 (rtos area4 2 4)) (cons calque5 (rtos area5 2 4)))) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun LM:ODBX2 ( fun lst sav / *error* app dbx dir doc dwl err rtn vrs );de Lee mac (defun *error* ( msg ) (if (and (= 'vla-object (type dbx)) (not (vlax-object-released-p dbx))) (vlax-release-object dbx) ) (if (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*")) (princ (strcat "\nError: " msg)) ) (princ) ) (cond ( (progn (setq dbx (vl-catch-all-apply 'vla-getinterfaceobject (list (setq app (vlax-get-acad-object)) (if (< (setq vrs (atoi (getvar 'acadver))) 16) "objectdbx.axdbdocument" (strcat "objectdbx.axdbdocument." (itoa vrs)) ) ) ) ) (or (null dbx) (vl-catch-all-error-p dbx)) ) (prompt "\nUnable to interface with ObjectDBX.") ) ( t (vlax-for doc (vla-get-documents app) (setq dwl (cons (cons (strcase (vla-get-fullname doc)) doc) dwl)) ) (foreach dwg lst (if (or (setq doc (cdr (assoc (strcase dwg) dwl))) (and (not (vl-catch-all-error-p (vl-catch-all-apply 'vla-open (list dbx dwg)))) (setq doc dbx) ) ) (progn (setq rtn (cons (cons dwg (if (vl-catch-all-error-p (setq err (vl-catch-all-apply fun (list doc)))) (prompt (strcat "\n" dwg "\t" (vl-catch-all-error-message err))) err ) ) rtn ) ) (if sav (vla-saveas doc dwg)) ) (princ (strcat "\nError opening file: " (vl-filename-base dwg) ".dwg")) ) ) (if (= 'vla-object (type dbx)) (vlax-release-object dbx) ) (reverse rtn) ) ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun tabsurf ( list-Surf / acdoc tables enttable Tableau int int2 list-xref list-lay nbxref nblay ) (if (setq tables (ssget "_X" (list (cons 0 "ACAD_TABLE")))) (progn (setq int -1) (repeat (sslength tables) (setq enttable (ssname tables (setq int (1+ int)))) (if (= (vla-getText (vlax-ename->vla-object enttable) 0 0) "Surfaces par Calques") (vla-delete (vlax-ename->vla-object enttable)) ) ) ) ) (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object)) list-xref (ListeCAR2 list-Surf) list-lay (ListeCAR2 (cadr (car list-Surf))) nbxref (length list-xref) nblay (length list-lay) Tableau (vla-Addtable (vla-get-ModelSpace acdoc) (vlax-3d-point 0 0 0) (+ 3 nblay) (+ 2 nbxref) 10 66 ) int 1 ) (vla-put-VertCellMargin Tableau 3.0) (vla-put-TitleSuppressed Tableau :vlax-false) (vla-put-HeaderSuppressed Tableau :vlax-false) (vla-setText Tableau 0 0 "Surfaces par Calques") (mapcar '(lambda (lay) (setq int (+ 1 int)) (vla-setText Tableau int 0 lay) ) list-lay ) (setq int 0) (mapcar '(lambda (surf) (setq int (+ 1 int) int2 1) (vla-setText Tableau 1 int (car surf)) (mapcar '(lambda (x) (setq int2 (+ 1 int2)) (vla-setText Tableau int2 int (cdr x)) ) (cadr surf) ) ) list-Surf ) (setq int 1) (vla-setText Tableau 1 (+ 1 nbxref) "Totaux par calques");%<\AcExpr(Sum(B3:D3)) \f "%lu2">% %<\AcExpr (Sum(B4:D4)) \f "%lu2">% (repeat nblay (setq int (+ 1 int)) (vla-setText Tableau int (+ 1 nbxref) (strcat "%<\\AcExpr (Sum(" (chr 66) (itoa(+ int 1)) ":" (chr (+ 66 (- nbxref 1))) (itoa(+ int 1)) ")) \\f \"%lu2\">%" )) ) (vla-setText Tableau (+ 2 nblay) 0 "Totaux par xref") (setq int 0) (repeat nbxref (setq int (+ 1 int)) (vla-setText Tableau (+ 2 nblay) int (strcat "%<\\AcExpr (Sum(" (chr (+ 65 int)) "2" ":" (chr (+ 65 int)) (itoa(+ nblay 2)) ")) \\f \"%lu2\">%" )) ) (vla-ZoomWindow (vlax-get-acad-object) (vlax-3d-point 0 0 0) (vlax-3d-point 335 -100 0)) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun ListeCAR2 (listedListes / k°) (mapcar '(lambda (x) (setq K° (cons (car x) K°))) listedListes) (reverse K°) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun c:GHA nil (c:getharea)) Je vais quand même regarder l'extraction de données cela m'a l'air très intéressant. https://github.com/Fraiddd
Patrick_35 Posté(e) le 17 décembre 2018 Posté(e) le 17 décembre 2018 Salut Bravo pour ton lisp, ce n'est pas souvent que l'on voit une proposition en vlisp. :D J'aurais deux questions. 1) Pourquoi utiliser ObjectDbx alors que les xrefs sont déjà chargés et qu'on les retrouvent dans la table des blocs ?2) Pourquoi te limiter à 5 calques et de plus nommés alors qu'on peux facilement les retrouver grace à assocPar exemple(if (assoc Mon_calque lst) (setq lst (subst (list Mon_calque Mes_surfaces) (assoc Mon_calque lst) lst) (setq lst (cons (list Mon_calque Mes_surfaces) lst) ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
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