abricot Posté(e) le 4 mai 2020 Posté(e) le 4 mai 2020 Bonjour à tous je suis nouveau venu. Je cherche un LISP de calcul de surfaces qui afficherait la surface d'une polyligne fermée séléctionné du style on la sélectionne puis on choisit le centre et après ça inscrit la surface dans cette polyligne. Est ce possible? Citer
lecrabe Posté(e) le 4 mai 2020 Posté(e) le 4 mai 2020 Hello 1) Comme d'habitude une excellente routine de notre Grand Maitre Gilles fera l'affaire ! 2) Je suppose que tu travailles en Metres et que tu desires le resultat avec 1 decimale et le suffixe M2 !?Cela peut se changer facilement ... LA SANTE (Stay Safe), Bye, lecrabe "triste"Automne 2020, la retraite ;; ;; PolyArea par GC - 03/03/2018 ;; ;; Micro-Modif par Patrice B. ;; ;; ------------------------------------------------------------------------------------- ;; SVP changer la Variable System TEXTSIZE AVANT d'executer la Routine ! ;; Car la routine utilise la valeur de TEXTSIZE comme Hauteur de MTEXT par defaut ... ;; ------------------------------------------------------------------------------------- ;; ;; J'ai revu les codes, le probleme venait de la methode utilisee pour placer le texte/champ sur le barycentre de la polyligne. ;; Cette methode ne fonctionnait qu'avec des polylignes. ;; ;; J'ai change cela. Le texte est desormais place au centre de la boundingbox de l'entite. ;; J'ai aussi revu les filtres de selection qui ne devraient pas etre tout à fait les memes pour l'aire et la longueur. ;; ;; Pour l'aire, je te laisse choisir entre uniquement les objets fermes, ou pas. ;; ;; Pour les longueurs, les champs sont differents pour les cercles (Circumference), les regions et mpolygons (Perimeter) ;; et n'existent pas pour les ELLIPSEs et SPLINEs, j'ai donc remplace le champ par un MTEXT simple qui affiche la longueur. ;; ;; %<\AcObjProp Object(%<\_ObjId 1181647088>%).Area \f "%lu2">% ;; %<\AcObjProp Object(%<\_ObjId 1181647088>%).Length \f "%lu2">% ;; %<\AcObjProp Object(%<\_ObjId 1181647088>%).Perimeter \f "%lu2">% ;; %<\AcObjProp Object(%<\_ObjId 1181647088>%).Circumference \f "%lu2">% ;; ;; Liste sur ELLIPSE --> Aire & Circonference ?? ;; Liste sur SPLINE --> Aire & Circonference ?? ;; ;; --- Interrogation Entite/Objet en Lisp --- ;; (entget (car (entsel)) '("*")) ;; (defun c:PolyArea (/ *error* filter ss acSpace minPt maxPt pt id str txt) (vl-load-com) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object)))) (or *util* (setq *util* (vla-get-Utility *acdoc*))) (defun *error* (msg) (and msg (/= msg "Fonction annulée") (/= msg "Function cancelled") (princ (strcat "Erreur: " msg)) ) (vla-EndUndomark *acdoc*) (princ) ) ;; entités fermées ;| (setq filter (list '(-4 . "<OR") '(0 . "CIRCLE,MPOLYGON,REGION") '(-4 . "<AND") '(0 . "ELLIPSE") '(41 . 0.0) (cons 42 (* 2 pi)) '(-4 . "AND>") '(-4 . "<AND") '(0 . "LWPOLYLINE") '(-4 . "&") '(70 . 1) '(-4 . "AND>") '(-4 . "<AND") '(0 . "POLYLINE") '(-4 . "&") '(70 . 1) '(-4 . "<NOT") '(-4 . "&") '(70 . 120) '(-4 . "NOT>") '(-4 . "AND>") '(-4 . "<AND") '(0 . "SPLINE") '(-4 . "&") '(70 . 9) '(-4 . "AND>") '(-4 . "OR>") ) ) |; ;; entités fermées ou ouvertes (setq filter (list '(-4 . "<OR") '(0 . "ARC,CIRCLE,LWPOLYLINE,MPOLYGON,REGION,ELLIPSE") '(-4 . "<AND") '(0 . "POLYLINE") '(-4 . "<NOT") '(-4 . "&") '(70 . 120) '(-4 . "NOT>") '(-4 . "AND>") '(-4 . "<AND") '(0 . "SPLINE") '(-4 . "&") '(70 . 8) '(-4 . "AND>") '(-4 . "OR>")) ) (prompt "Hauteur courante de MTEXT - Voir la Variable System TEXTSIZE ... \n" ) (prompt "\nPOLYAREA traite: ARC,CIRCLE,ELLIPSE,POLYLINE 2D,ELLIPSE,SPLINE,MPOLYGON,REGION \nSelectionnez les objets ou Entree pour tous ") (if (or (ssget filter) (ssget "_X" (cons (cons 410 (getvar 'ctab)) filter)) ) (progn (vla-StartUndomark *acdoc*) (setq acSpace (vla-get-Block (vla-get-ActiveLayout *acdoc*))) (vlax-for obj (setq ss (vla-get-ActiveSelectionSet *acdoc*)) (vla-GetBoundingBox obj 'minPt 'maxPt) (setq pt (mapcar '(lambda (x1 x2) (/ (+ x1 x2) 2.)) (vlax-safearray->list minPt) (vlax-safearray->list maxPt) ) id (vla-GetObjectIdString *util* obj :vlax-false) str (strcat "%<\\AcObjProp Object(%<\\_ObjId " id ">%).Area \\f \"%lu2%pr1%ps[,m²]%\">%" ) txt (vla-addMText acSpace (vlax-3d-point pt) 0. str) ) (vla-put-AttachmentPoint txt acAttachmentPointMiddleCenter) (vla-put-insertionPoint txt (vlax-3d-point pt)) ) (vla-Delete ss) ) ) (*error* nil) ) Citer Autodesk Expert Elite Team
Big666 Posté(e) le 4 mai 2020 Posté(e) le 4 mai 2020 bonjour.j'ai exactement ce qu'il te faux .un lisp qui en sélectionnant une poly ligne te donne la surface de la pièce tu remplis le nom de la pièces via une boite dclce lisp est a l'origine de Gille Chanteau il s'appelle Pline_bloc la boite dcl Getname a c'est deux fichier il faux un blocs que moi j'ai renommé SF comme surface j'ai aussi renommé le lips.mais je suis en confinement et je te retourne tout ça le plus vite possible ou recherche sur le net gille chanteau ou interroge Gille chanteau sur ce site dans la rubrique LISP Citer Nous vivons tous dans le ventre d'un chien géantTout le monde le sait mais personne ne dit rien du tout ultra Vomit
abricot Posté(e) le 4 mai 2020 Auteur Posté(e) le 4 mai 2020 Merci pour vos réponses. Désolé Je suis tout nul. je sais charger un lisp mais je ne sais pas le créer Citer
Big666 Posté(e) le 4 mai 2020 Posté(e) le 4 mai 2020 Merci pour vos réponses. Désolé Je suis tout nul. je sais charger un lisp mais je ne sais pas le créer Citer Nous vivons tous dans le ventre d'un chien géantTout le monde le sait mais personne ne dit rien du tout ultra Vomit
Big666 Posté(e) le 4 mai 2020 Posté(e) le 4 mai 2020 en pièces jointe Citer Nous vivons tous dans le ventre d'un chien géantTout le monde le sait mais personne ne dit rien du tout ultra Vomit
abricot Posté(e) le 4 mai 2020 Auteur Posté(e) le 4 mai 2020 Ah ca yé j'ai collé les codes tous bizarres dans le machin et ça me met la surface.C'est giga gros dans mes pieces (rires forts) Citer
abricot Posté(e) le 4 mai 2020 Auteur Posté(e) le 4 mai 2020 J'ai pigé il faut faire textsizePff ça va me simplifier la vie merci Citer
Invité Yann38 Posté(e) le 19 octobre 2022 Posté(e) le 19 octobre 2022 Bonjour à tous, Je travaille en mm, mais j'aimerais avoir une surface en m2. Quelle modification apporter au LISP ? Merci à vous. Citer
Invité Yann38 Posté(e) le 19 octobre 2022 Posté(e) le 19 octobre 2022 Pour l'instant, cela me donne : 1071472.5m² Citer
(gile) Posté(e) le 19 octobre 2022 Posté(e) le 19 octobre 2022 @Yann38, il faut changer le format du champ. Remplacer : ">%).Area \\f \"%lu2%pr1%ps[,m²]%\">%" par : ">%).Area \\f \"%lu2%pr2%ps[,m²]%ct8[1.0E-6]\">%" Citer Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Invité Yann38 Posté(e) le 19 octobre 2022 Posté(e) le 19 octobre 2022 Bonjour Gile, J'ai juste modifié le m² par m2, sinon, avec mon style de texte, j'ai m² . Si je peux me permettre, serait-il possible de demander à l'utilisateur, la densité du matériau et son épaisseur pour afficher le poids de la pièce ? Le poids = la surface en m2 x la densité x par l'épaisseur en mm. Sur l'affichage, nous aurions : Surface => 1.29 m2 Densité => 8 Épaisseur => 4 mm Poids => 80 kg Merci pour votre aide. Citer
Invité Yann38 Posté(e) le 19 octobre 2022 Posté(e) le 19 octobre 2022 Poids => 41.28 kg pas 80... Citer
Invité Rremolo Posté(e) le 4 juillet 2023 Posté(e) le 4 juillet 2023 Bonjour, Merci pour ce lisp. Je souhaiterais savoir s'il était possible d'avoir le même lisp, mais qui modifie le texte (la surface) en même temps qu'on modifie la polyligne ? Car, je travail sur des plans qui pourrait être mis à jour. Merci d'avance. Citer
(gile) Posté(e) le 4 juillet 2023 Posté(e) le 4 juillet 2023 Le "texte" est un champ dynamique, il suffit de régénérer (ou METTREAJOURCHAMP) pour que le texte reflète le changement. Citer Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Invité Rremolo Posté(e) le 4 juillet 2023 Posté(e) le 4 juillet 2023 Il y a 2 heures, (gile) a dit : Le "texte" est un champ dynamique, il suffit de régénérer (ou METTREAJOURCHAMP) pour que le texte reflète le changement. Merci beaucoup. Est-il possible d'enlever l'arrière plan du texte (gris) ? Citer
(gile) Posté(e) le 4 juillet 2023 Posté(e) le 4 juillet 2023 L'arrière plan n'est pas imprimé, mais on peut ne l'afficher en modifiant la valeur de la variable FIELDDISPLAY. Citer Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Invité Rremolo Posté(e) le 4 juillet 2023 Posté(e) le 4 juillet 2023 Il y a 5 heures, (gile) a dit : Le "texte" est un champ dynamique, il suffit de régénérer (ou METTREAJOURCHAMP) pour que le texte reflète le changement. Merci beaucoup. Dernière question. Je cherche un Lisp qui calcule et qui affiche tout comme ce Lisp la surface d'une pièce qui peut être dessinée par plusieurs lignes différentes. Exemple, une pièce dont il y a des cloisons, des murs, etc. Je ne sais pas si je m'exprime bien. Mais en claire, un Lisp qui peut calculer et afficher en texte des surfaces sur des plan d'archis. Cordialement, Rremolo Citer
Rremolo Posté(e) le 4 juillet 2023 Posté(e) le 4 juillet 2023 Pardon, j'ai crée un post ici pour la suite de ma question : Citer
Messages recommandés