(gile) Posté(e) le 1 mai 2021 Posté(e) le 1 mai 2021 1 minute ago, DenisHen said: Ben moi non plus ... Dans la Console, c'est OK, dans AutoCAD, rien... Rien, si tu fais la même chose à la ligne de commande ? (dans tous les cas, j'ai toujours recommandé d'utiliser l'éditeur pour développer en LISP). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Olivier Eckmann Posté(e) le 1 mai 2021 Posté(e) le 1 mai 2021 Bonjour, La fonction (vlax-ename-> vla-object ename) s'écrit sans l'espace entre le signe > et le mot vla-object Donc ton code fonctionne très bien une fois l'espace enlevé (setq ename (car (entsel "\nSelectionner un contour : "))) (setq aire (vlax-get-property (vlax-ename->vla-object ename) 'area)) (princ "\nAire=") (princ aire) Olivier
DenisHen Posté(e) le 1 mai 2021 Posté(e) le 1 mai 2021 Bonsoir à tous. Bien vu Olivier, c'était bien là que résidait le problème, maintenant, ça fonctionne parfaitement... Merci à vous deux pour votre aide... Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Curlygoth Posté(e) le 1 mai 2021 Posté(e) le 1 mai 2021 propriété .Area en VBA ;-) Dim returnObj As AcadEntity ThisDrawing.Utility.GetEntity returnObj, basePnt, "Selectionné un objet" Msgbox "Surface de la polyligne : " & returnObj.Area Mon site Web (en cours de construction) : Site DA-CODE de @didier
Olivier Eckmann Posté(e) le 1 mai 2021 Posté(e) le 1 mai 2021 @DenisHen En même temps, quand tu lances ton code initial, dans la "console visual lisp" tu récupères le message ; erreur: no function definition: VLAX-ENAME-> Ca peut aider à trouver d'où vient le problème.🙂 Olivier
DenisHen Posté(e) le 1 mai 2021 Posté(e) le 1 mai 2021 Je n'ai pas eu ce message, c'est bien là qu'est le problème... Comme tu peux le voir dans mes messages... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
(gile) Posté(e) le 1 mai 2021 Posté(e) le 1 mai 2021 Je me permet un petit rappel avec ce screencast à propos de la procédure pour trouver d'où vient l'erreur avec les fonctions de débogage de l'éditeur VLIDE. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 2 mai 2021 Posté(e) le 2 mai 2021 Bonjour à toutes et tous, Je me permet de "dévier" un peu le post d'origine pour demander à @bonuscad, suite à cette réponse si il n'avait pas fait non plus la même routine pour les périmètres en champ ? Il me semble bien que si, que j'avais même testé mais impossible de retrouver le post en question... Merci d'avance, Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Olivier Eckmann Posté(e) le 2 mai 2021 Posté(e) le 2 mai 2021 @DenisHen en complément du screencast de @(gile) je t'ai fait un screencast avec ton code erroné pour voir où apparait l'erreur. https://autode.sk/3t69AD6 Olivier
DenisHen Posté(e) le 2 mai 2021 Posté(e) le 2 mai 2021 Salut didier. Je trouve que c'est une super idée. J'ai hâte de voir ces pages... Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
(gile) Posté(e) le 2 mai 2021 Posté(e) le 2 mai 2021 Dans le screencast de @Olivier Eckmann , on peut voir l'erreur dès que le code est collé dans la fenêtre de l'éditeur grâce à la coloration syntaxique. Les fonctions natives doivent apparaître en bleu, si ce n'est pas le cas, c'est qu'il y a une faute d'orthographe dans le nom de la fonction. PS : je pense que ton message ci-dessus n'est pas dans le bon sujet... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 2 mai 2021 Posté(e) le 2 mai 2021 On 30/04/2021 at 22:58, DenisHen said: Bonjour à la communauté. Je cherche à faire un peu la même chose. Mais juste cliquer une polyligne pour n'avoir que sa surface... J'ai vu le super truc qu'à fait (gile) avec TotalArea, mais je n'ai pas besoin de tant. Je ne sélectionne qu'une et unique polyligne à la fois et n'ai pas besoin de bloc, juste un texte unique. J'ai commencé un code que je ne posterais pas, car encore à l'état de brouillon... Si quelqu'un à la solution de récupérer l'aire d'une polyligne après sa sélection, je suis preneur. Bonne soirée à toutes et à tous. Denis... Je réalise un truc tout à coup. C'est bien le même @DenisHenqui a répondu à ce message ? Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
bonuscad Posté(e) le 2 mai 2021 Posté(e) le 2 mai 2021 Quote Je me permet de "dévier" un peu le post d'origine pour demander à @bonuscad, suite à cette réponse si il n'avait pas fait non plus la même routine pour les périmètres en champ ? Il me semble bien que si, que j'avais même testé mais impossible de retrouver le post en question... Merci d'avance, lili2006, je ne sais pas à quelle routine tu fais allusion, j'en ai publié tant et plus... Celle que je pense serait celle-ci, bien qu'elle fasse le cumul (en aire ou longueur), elle peut être utilisée pour un objet unique. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
DenisHen Posté(e) le 7 mai 2021 Posté(e) le 7 mai 2021 On 02/05/2021 at 20:55, (gile) said: Je réalise un truc tout à coup. C'est bien le même @DenisHenqui a répondu à ce message ? Salut (gile), oui, c'est bien moi, mais je fais tellement de petits bouts de codes pour tellement de gens que je ne me souvenais pas de celui-ci. Par contre, j'applaudis ta mémoire, franchement, j'aimerais avoir la même... Le principal "problème" est : pourquoi je n'ai pas retrouvé ce poste avant ma question...? Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
drault Posté(e) le 8 mai 2021 Posté(e) le 8 mai 2021 Sauf erreur ou incompréhension de ma part, TotalArea ne prend pas en compte les cloisons compris dans la PO, du coup, cela devient pbtique quand on a différent type de surface à calculer.
(gile) Posté(e) le 8 mai 2021 Posté(e) le 8 mai 2021 TotalArea prend en compte l'aire de l'objet sélectionné (polyligne, région, hachure, mpolygon, ...). Le LISP ne sait pas ce qu'est "une cloison". Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
didier Posté(e) le 8 mai 2021 Posté(e) le 8 mai 2021 Bonjour @drault Ce n'est pas la première fois que je lis PO dans vos messages sans savoir de quoi il est question. Ce serait bien d'expliciter ou d'utiliser le vocabulaire AutoCAD commun à tous. J'ai cru comprendre qu'il s'agissait de sélection d'un point pour tracer un contour, mais les lettres utilisées P et O me font douter. Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
drault Posté(e) le 9 mai 2021 Posté(e) le 9 mai 2021 14 hours ago, (gile) said: TotalArea prend en compte l'aire de l'objet sélectionné (polyligne, région, hachure, mpolygon, ...). Le LISP ne sait pas ce qu'est "une cloison". Effectivement, merci. Peu utilisateur de région, je reconnaissais pas cette commande. Je vais voir ce qu'elle permet. 13 hours ago, didier said: Bonjour @drault Ce n'est pas la première fois que je lis PO dans vos messages sans savoir de quoi il est question. Ce serait bien d'expliciter ou d'utiliser le vocabulaire AutoCAD commun à tous. J'ai cru comprendre qu'il s'agissait de sélection d'un point pour tracer un contour, mais les lettres utilisées P et O me font douter. Amicalement PO pour le raccourci natif d'Autocad, tout du moins, tous ceux que j'ai utilisé jusqu'à maintenant mais peut-être faudrait-il, effectivement, que je revienne à un langage plus usité de tous.
didier Posté(e) le 9 mai 2021 Posté(e) le 9 mai 2021 Bonjour @drault Ah ! D'accord une polyligne, franchement j'y étais pas. Ok le raccourci est bel et bien PO, mais là dans les discussions j'avais pas capté du tout qu'on parlait de l'entité polyligne. Ce post est assez confus maintenant, ce serait bien d'en ouvrir un neuf avec une pièce jointe pour qu'on reparte dur de bonnes bases. Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
lili2006 Posté(e) le 9 mai 2021 Posté(e) le 9 mai 2021 Bonjour à toutes et tous, Salut @bonuscad, Quote Celle que je pense serait celle-ci, bien qu'elle fasse le cumul (en aire ou longueur), elle peut être utilisée pour un objet unique. C'est sur, tu en a publié tellement,.. Je me rappelle avoir échangé sur le post de la routine en question,.. Je viens de tester "cumul_measure2field", pas mal du tout ! Elle semble ne pas fonctionner sur les blocs dyns après étirement mais pour moi ce n'est pas un pb,.. Merci de ta réponse Bonuscad,🙃 Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
bonuscad Posté(e) le 9 mai 2021 Posté(e) le 9 mai 2021 Quote En réponse en mp faite par @drault J'ai donc amélioré le lisp proposé dans ce fil. Il permet dorénavant de choisir son unité de départ supposé du dessin, de faire une conversion du résultat dans une autre unité et de choisir la précision du résultat. Par exemple on a réalisé un dessin en mm mais on souhaite avoir le résultat de la surface en cm² (sans changer l'unité de départ) avec une précision de 6 chiffres après la virgule. Ces paramètres restent valables tant qu'on reste dans la boucle du choix d'un objet fermé, si on relance la procédure il faudra redéfinir les options. Je suis resté dans le système métrique uniquement. (vl-load-com) (defun c:surf_curve-closed ( / AcDoc Space unite u_source u_target factor prec js nw_obj ename ent_text dxf_ent key) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (= 1 (getvar "CVPORT")) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ) (initget "KM M CM MM") (setq unite (getkword "\nChoisir l'unité source utilisé dans le dessin [KM/M/CM/MM] <M>: ")) (if (not unite) (setq unite "M")) (setq u_source (cond ((eq unite "KM") "sq_km") ((eq unite "M") "sq_m") ((eq unite "CM") "sq_cm") ((eq unite "MM") "sq_mm") ) ) (initget "KM M CM MM") (setq unite (getkword "\nChoisir l'unité cible à utiliser pour le résultat [KM/M/CM/MM] <M>: ")) (if (not unite) (setq unite "M")) (setq u_target (cond ((eq unite "KM") "sq_km") ((eq unite "M") "sq_m") ((eq unite "CM") "sq_cm") ((eq unite "MM") "sq_mm") ) ) (setq factor (cvunit 1 u_source u_target)) (initget "0 1 2 3 4 5 6 7 8") (setq prec (getkword "\nPrécision du résultat [0/1/2/3/4/5/6/7/8] <2>: ")) (if (not prec) (setq prec "2")) (princ "\nSélectionnez un objet fermé") (while (setq js (ssget "_+.:E:S" '( (-4 . "<OR") (-4 . "<AND") (0 . "*POLYLINE") (-4 . "<AND") (-4 . "<NOT") (-4 . "&") (70 . 120) (-4 . "NOT>") (-4 . "&") (70 . 1) (-4 . "AND>") (-4 . "AND>") (0 . "CIRCLE") (-4 . "<AND") (0 . "SPLINE") (-4 . "&") (70 . 1) (-4 . "AND>") (-4 . "<AND") (0 . "ELLIPSE") (41 . 0.0) (42 . 6.283185307179586) (-4 . "AND>") (-4 . "OR>") ) ) ) (if (zerop (getvar "USERR1")) (setvar "USERR1" (/ (getvar "VIEWSIZE") 75.0))) (setq nw_obj (vla-addMtext Space (vlax-3d-point (trans (getvar "VIEWCTR") 1 0)) 0.0 (strcat "S="(rtos (* factor (vlax-get-property (setq ename (vlax-ename->vla-object (ssname js 0))) "Area")) 2 (atoi prec)) (strcase unite T) "²") ) ) (mapcar '(lambda (pr val) (vlax-put nw_obj pr val) ) (list 'AttachmentPoint 'Height 'DrawingDirection 'StyleName 'Layer 'Rotation 'BackgroundFill 'Color) (list 1 (getvar "USERR1") 5 (getvar "TEXTSTYLE") (getvar "CLAYER") 0.0 -1 250) ) (setq ent_text (entlast) dxf_ent (entget ent_text) dxf_ent (subst (cons 90 1) (assoc 90 dxf_ent) dxf_ent) dxf_ent (subst (cons 63 255) (assoc 63 dxf_ent) dxf_ent) ) (entmod dxf_ent) (while (and (setq key (grread T 4 0)) (/= (car key) 3)) (cond ((eq (car key) 5) (setq dxf_ent (subst (cons 10 (trans (cadr key) 1 0)) (assoc 10 dxf_ent) dxf_ent)) (entmod dxf_ent) ) ) ) (vlax-put (vlax-ename->vla-object (entlast)) 'TextString (strcat "{\\fArial|b0|i0|c0|p34;" "%<\\AcObjProp.16.2 Object(%<\\_ObjId " (itoa (vla-get-ObjectID ename)) ">%).Area \\f \"%lu2%pr" prec "%ps[S=," (strcase unite T) "²]\%ct8[" (rtos factor 2 12) "]\">%" ) ) ) (prin1) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Steven Posté(e) le 14 mai 2021 Posté(e) le 14 mai 2021 On 08/05/2021 at 18:30, drault said: Sauf erreur ou incompréhension de ma part, TotalArea ne prend pas en compte les cloisons compris dans la PO, du coup, cela devient pbtique quand on a différent type de surface à calculer. Il semblerait que tu souhaites déduire la surface des cloisons qui seraient à l'intérieur d'un local. C'est bien çà ? AutoCAD est un logiciel de dessin technique (DAO) et non un logiciel de conception (CAO). Sur AutoCAD, lorsqu'on dessine des lignes ou des polylignes pour "symboliser" des cloisons ou murs, ou n'importe quoi d'autre, AutoCAD ne sait pas que ce que représentent les lignes ou les poylignes. Pour lui, ce sont des additions de lignes ou de polylignes. Si tu souhaites avoir des objets reconnus en tant que murs, cloisons ou autre, il faut te diriger vers un logiciel de CAO. Si tu préfères rester dans un environnement Autocadien, alors AutoCAD Architecture te conviendrait plus mais il faudra que tu penses à travailler un peu différemment que sur AutoCAD car même si dans AutoCAD Architecture, il y a AutoCAD, il n'en reste pas moins que si tu souhaites travailler avec les objets AEC d'AutoCAD Architecture, il ne faudra pas essayer de ne faire que de l'AutoCAD, sinon, tu ne pourras pas utiliser le logiciel en tant que tel. Aussi, tu n'auras plus besoins de Totalarea du fait qu'AutoCAD Architecture pourra indiquer les surfaces, et les modifier dynamiquement. Si le fait de changer d'environnement de travail et de travailler différemment que sur AutoCAD ne te dérange pas, alors peut-être devrais-tu de diriger vers Revit. Si tu as déjà une licence AutoCAD, tu peux t'installer et essayer AutoCAD Architecure sans surcoût du fait que qu'AutoCAD Architecure fait partie des Toolset. Si tu n'as qu'une licence AutoCAD et que tu souhaiterais passer à Revit, alors il y a aura un surcoût pout éccéder la Collection AEC. 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.
drault Posté(e) le 14 mai 2021 Posté(e) le 14 mai 2021 Steven, merci pour le point, très utile pour recadrer le regard porté sur la portée de mon travail. Je travaille principalement pour des cabinets qui utilisent autocad. J'ai suivi une formation REVIT mais pas utile pour le moment Actuellement autocad map 3d, donc j'essaie toujours de garder en tête un usage entre les différents logiciels autocadien. Du coup, je modifie ma question précédente, car j'ai vu que total area reconnait les hachures, donc ça me va, du moment où je marche par type de surface (carrez etc...) selon des calques.
Steven Posté(e) le 14 mai 2021 Posté(e) le 14 mai 2021 Si tu préfères rester dans un univers Autocadien, j'avais fait une vidéo pour montrer un exemple de ce qu'on peut faire avec AutoCAD Architecure et le calcul de surfaces. Peut-être que ça pourrait t'intéresser. 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.
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