PHILPHIL Posté(e) le 16 avril 2021 Posté(e) le 16 avril 2021 bonjour j'ai récupérer des fichiers REVIT ou ARCHICAD sur toutes les cotations, la largeur totale de la regle du texte ( quand on double clique dessus ) de cote est énorme (le "width" du textmult de la cotation est énorme.) sur certaines il y a un meme un masque de texte, ce qui fait que quand les cotes sont sur l'avant plan, ca m occulte une partie des entités dessin. OUI JE N'ai qu'a mettre les cotations en arriere plan, mais ca ne régle pas efficacement le problème pour autant, et pour les suivants. avez vous un lisp ou bout de lisp , ou vous intervenez sur le textmult de la cotation que je puisse changer le "width" du textmult en 0 de toutes les cotations ? merci Phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
Fraid Posté(e) le 16 avril 2021 Posté(e) le 16 avril 2021 (modifié) Bonjour, Peut tu faire un dump sur une des cotes? (defun c:dump nil (vlax-dump-object (vlax-ename->vla-object (car (entsel))) T) (textscr) (princ) ) ou nous partager un dwg avec les différentes cotes si il y a en a plusieurs Modifié le 16 avril 2021 par Fraid https://github.com/Fraiddd
Luna Posté(e) le 16 avril 2021 Posté(e) le 16 avril 2021 Coucou, N'est-il pas possible de supprimer l'arrière-plan depuis la palette de propriété "Texte>Couleur de remplissage>Aucune" en sélectionnant toutes les côtes problématique d'un seul coup ? Bisous, Luna
Fraid Posté(e) le 16 avril 2021 Posté(e) le 16 avril 2021 Bonjour, Luna, On peut faire plein de suppositions, notamment changer l'éventuel Style de texte ou de cote... tant qu'on a pas plus d'info... https://github.com/Fraiddd
(gile) Posté(e) le 16 avril 2021 Posté(e) le 16 avril 2021 Salut, la routine suivante passe la largeur du MText de la cote passé en argument à 0 (il faut chercher le MText dans le bloc anonyme (*D...) de la côte. (defun dimTextWidthTo0 (dim / blk break ent dxf) (setq blk (tblsearch "block" (cdr (assoc 2 (entget dim)))) ent (cdr (assoc -2 blk)) ) (while (and ent (not break)) (if (= (cdr (assoc 0 (setq dxf (entget ent)))) "MTEXT") (progn (entmod (subst '(41 . 0.0) (assoc 41 dxf) dxf)) (setq break T) ) (setq ent (entnext ent)) ) ) ) PS @Fraid vlax-release-object n'est pas utile avec les objets AutoCAD. On l'utilise pour "libérer" les objets externes créés ou obtenus avec vlax-get-object, vlax-create-object ou vlax-get-or-create-object (ex : application Excel). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Luna Posté(e) le 16 avril 2021 Posté(e) le 16 avril 2021 Ma remarque est uniquement pour supprimer son histoire de 3 hours ago, PHILPHIL said: sur certaines il y a un meme un masque de texte, ce qui fait que quand les cotes sont sur l'avant plan, ca m occulte une partie des entités dessin. en supprimant le masque d'arrière-plan depuis la palette de propriétés (ce qui évite de programmer un LISP pour cela). Ensuite pour l'histoire de la règle, cette largeur de MTEXT est contenue dans le code DXF 41 d'une entité MTEXT; cf. ci-dessous la sélection de la SubEntity d'une DIMENSION correspondant au texte de cote : Commande: (explore-dxf (entget (car (nentsel)) '("*")) 0 nil nil) Choix de l'objet: Explore DXF in progress from "MTEXT" (<Nom d'entité: a0175f50>) : | (-1 . <Nom d'entité: a0175f50>) | (0 . "MTEXT") | (330 . <Nom d'entité: a0175a20>) | (5 . "2AD") | (100 . "AcDbEntity") | (67 . 0) | (8 . "0") | (62 . 0) | (440 . 16777216) | (48 . 0.1) | (100 . "AcDbMText") | (10 1.0 0.226536 0.0) | (40 . 0.1) | (41 . 10.8658) | (46 . 0.0) | (71 . 5) | (72 . 1) | (1 . "\\A1;2.000") | (7 . "Standard") | (210 0.0 0.0 1.0) | (11 1.0 0.0 0.0) | (42 . 0.338813) | (43 . 0.102115) | (50 . 0.0) | (73 . 1) | (44 . 1.0) | (90 . 3) | (63 . 9) | (421 . 13158600) | (45 . 1.25) | (441 . 0) | End of exploration... Donc par exemple on remarque ici que le code DXF 41 n'est pas à 0.0 Pour accéder à cette entité, ce n'est pas faisable directement depuis la liste DXF de l'objet DIMENSION. Pour cela il faut considérer la cote comme une référence de bloc donc tu peux essayer d'accéder au MTEXT ainsi : (defun c:SetDimWidth0 (/ jsel i name ent entlist) (if (setq jsel (ssget '((0 . "DIMENSION")))) (progn (repeat (setq i (sslength jsel)) (setq name (ssname jsel (setq i (1- i))) entlist (tblsearch "BLOCK" (cdr (assoc 2 (entget name)))) ent (cdr (assoc -2 entlist)) ) (while ent (if (and (= "MTEXT" (cdr (assoc 0 (entget ent)))) (entmod (subst '(41 . 0.0) (assoc 41 (entget ent)) (entget ent) ) ) (entupd ent) ) (setq ent nil) (setq ent (entnext ent)) ) ) ) (command "_REGENALL") ) ) (princ) ) Finalement (gile) a été plus rapide (et concis), cependant en testant le programme le MTEXT ne se met pas à jour via (entupd) donc un coup de REGEN et c'est bon. :3 Bisous, Luna
Fraid Posté(e) le 16 avril 2021 Posté(e) le 16 avril 2021 Bonjour Gile, merci, tu as l'oeil, cela fait des années que j'utilise cette fonction copiée/collée... https://github.com/Fraiddd
Fraid Posté(e) le 16 avril 2021 Posté(e) le 16 avril 2021 en supposant que tes cotes on un style différent que Standard, un ptit truc qui te met toutes tes cote en style standard (je résous souvent mes problème de cotes en appliquant un style) si le standard ne te plais pas, tu peux ammener une cote qui va bien et appliqué son Style (tu remplace Standard par le nom du Style) (vl-load-com) (defun c:cotestand nil (vlax-for obj (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))) (if (and (wcmatch (vla-get-objectname obj) "*Dimension") (/= (vla-get-stylename obj) "Standard")) (progn (vla-put-stylename obj "Standard") (vla-Update Obj) ) ) ) ) https://github.com/Fraiddd
Jobar21 Posté(e) le 16 avril 2021 Posté(e) le 16 avril 2021 Bonjour, Sans passer par tous ces fonctions LISP, il existe la petite fonction de base d'Autocad SLECTSIMILAR... Cette fonction est assez bien paramétrable et permet de sélectionner un grand nombre d’entité d'un seul coup et selon des critères assez précis (Calque, Couleur, Type et Style d'objet...) !
Fraid Posté(e) le 16 avril 2021 Posté(e) le 16 avril 2021 Le plus simple, c'est en théorie la solution que propose Luna, à travers la palette de propriétés. on sélectionne tout, puis on choisi les cotes. Mais il peut y avoir plusieurs sortes de cotes, alignées, angulaires, .... puis la quantité de propriétés à changer Les cotes font partie des objets complexes d'Autocad, il y a beaucoup de cas possible, surtout venant d'un autre logiciel ... sans un exemple précis, on ne peut qu' émettre des suppositions. aller PHILPHIL, répond nous !!! https://github.com/Fraiddd
PHILPHIL Posté(e) le 19 avril 2021 Auteur Posté(e) le 19 avril 2021 hello merci pour vos réponses, je regarde ca merci pour les lisp une version lisp est plus rapide, et pas besoin de se poser de questions, surtout que ce genre de chose peut revenir j'ai mis un exemple des milliers de cotes qu'il peut y avoir. et un "dump" Commande: IN SELECTIONNER UNE ENTITE POUR INFO NENTSEL.; IAcadMText: Interface AutoCAD Mtext (texte multiple) ; Valeurs de propriétés: ; Application (RO) = #<VLA-OBJECT IAcadApplication 00007ff7f6354e50> ; AttachmentPoint = 5 ; BackgroundFill = 0 ; Document (RO) = #<VLA-OBJECT IAcadDocument 000001e9aef27d88> ; DrawingDirection = 1 ; EntityTransparency = "DuBloc" ; Handle (RO) = "9848" ; HasExtensionDictionary (RO) = 0 ; Height = 0.0875 ; Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 000001ea08b0e118> ; InsertionPoint = (26.3697 7.42976 0.0) ; Layer = "6_00 - Cotations__" ; LineSpacingDistance = 0.145833 ; LineSpacingFactor = 1.0 ; LineSpacingStyle = 1 ; Linetype = "ByLayer" ; LinetypeScale = 1.0 ; Lineweight = -1 ; Material = "ByLayer" ; Normal = (0.0 0.0 1.0) ; ObjectID (RO) = 74 ; ObjectName (RO) = "AcDbMText" ; OwnerID (RO) = 75 ; PlotStyleName = "ByBlock" ; Rotation = 0.0 ; StyleName = "Century Gothic_3" ; TextString = "\\A1;239" ; TrueColor = #<VLA-OBJECT IAcadAcCmColor 000001ea08b0e710> ; Visible = -1 ; Width = 245380.0 LE CALQUE DE L ENTITE EST : 6_00 - Cotations__ Fraid, merci mais je ne veux pas etre aussi destructeur en changeant le style de l'archi ca m'a permis de découvrir un truc un "\x" au lieux d'un "\p" dans le texte de cote ne donne pas la meme chose, intéressant pour moi qui met le texte de cote au dessus et non pas au centre, pour la cotation des baies Commande: IE SELECTIONNER UNE ENTITE POUR INFO ENTSEL.; IAcadDimRotated: Interface AutoCAD Rotated Dimension ; Valeurs de propriétés: ; AltRoundDistance = 0.0 ; AltSubUnitsFactor = 100.0 ; AltSubUnitsSuffix = "" ; AltSuppressLeadingZeros = 0 ; AltSuppressTrailingZeros = 0 ; AltSuppressZeroFeet = -1 ; AltSuppressZeroInches = -1 ; AltTextPrefix = "" ; AltTextSuffix = "" ; AltTolerancePrecision = 2 ; AltToleranceSuppressLeadingZeros = 0 ; AltToleranceSuppressTrailingZeros = 0 ; AltToleranceSuppressZeroFeet = -1 ; AltToleranceSuppressZeroInches = -1 ; AltUnits = 0 ; AltUnitsFormat = 2 ; AltUnitsPrecision = 2 ; AltUnitsScale = 25.4 ; Application (RO) = #<VLA-OBJECT IAcadApplication 00007ff7f6354e50> ; Arrowhead1Block = "Oblique" ; Arrowhead1Type = 5 ; Arrowhead2Block = "Oblique" ; Arrowhead2Type = 5 ; ArrowheadSize = 0.164042 ; DecimalSeparator = "." ; DimConstrDesc = Une exception s’est produite ; DimConstrExpression = Une exception s’est produite ; DimConstrForm = 0 ; DimConstrName = Une exception s’est produite ; DimConstrReference = 0 ; DimConstrValue = Une exception s’est produite ; DimensionLineColor = 0 ; DimensionLineExtend = 0.246063 ; DimensionLinetype = "DuBloc" ; DimensionLineWeight = -2 ; DimLine1Suppress = 0 ; DimLine2Suppress = 0 ; DimLineInside = 0 ; DimTxtDirection = 0 ; Document (RO) = #<VLA-OBJECT IAcadDocument 000001e9aef27d88> ; EntityTransparency = "DuCalque" ; ExtensionLineColor = 0 ; ExtensionLineExtend = 0.328084 ; ExtensionLineOffset = 0.0625 ; ExtensionLineWeight = -2 ; ExtLine1Linetype = "DuBloc" ; ExtLine1Suppress = 0 ; ExtLine2Linetype = "DuBloc" ; ExtLine2Suppress = 0 ; ExtLineFixedLen = 1.5 ; ExtLineFixedLenSuppress = -1 ; Fit = 3 ; ForceLineInside = -1 ; FractionFormat = 0 ; Handle (RO) = "90E2" ; HasExtensionDictionary (RO) = 0 ; HorizontalTextPosition = 0 ; Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 000001e9ea97ac28> ; Layer = "6_00 - Cotations__" ; LinearScaleFactor = 100.0 ; Linetype = "ByLayer" ; LinetypeScale = 1.0 ; Lineweight = -1 ; Material = "ByLayer" ; Measurement (RO) = 150.0 ; Normal = (0.0 0.0 1.0) ; ObjectID (RO) = 72 ; ObjectName (RO) = "AcDbRotatedDimension" ; OwnerID (RO) = 70 ; PlotStyleName = "ByLayer" ; PrimaryUnitsPrecision = 0 ; Rotation = 0.0 ; RoundDistance = 0.0 ; ScaleFactor = 0.3048 ; StyleName = "Cote_intérieure_100_AT_3" ; SubUnitsFactor = 100.0 ; SubUnitsSuffix = "" ; SuppressLeadingZeros = 0 ; SuppressTrailingZeros = -1 ; SuppressZeroFeet = -1 ; SuppressZeroInches = -1 ; TextColor = 0 ; TextFill = 0 ; TextFillColor = 0 ; TextGap = 0.0328084 ; TextHeight = 0.0783126 ; TextInside = -1 ; TextInsideAlign = 0 ; TextMovement = 0 ; TextOutsideAlign = 0 ; TextOverride = "<>\\Xallège BA 100Ht" ; TextPosition = (25.0847 10.1896 0.0) ; TextPrefix = "" ; TextRotation = 0.0 ; TextStyle = "Century Gothic_1" ; TextSuffix = "x147Ht" ; ToleranceDisplay = 0 ; ToleranceHeightScale = 1.0 ; ToleranceJustification = 1 ; ToleranceLowerLimit = 0.0 ; TolerancePrecision = 4 ; ToleranceSuppressLeadingZeros = 0 ; ToleranceSuppressTrailingZeros = 0 ; ToleranceSuppressZeroFeet = -1 ; ToleranceSuppressZeroInches = -1 ; ToleranceUpperLimit = 0.0 ; TrueColor = #<VLA-OBJECT IAcadAcCmColor 000001e9ea97a260> ; UnitsFormat = 2 ; VerticalTextPosition = 1 ; Visible = -1 LE CALQUE DE L ENTITE EST : 6_00 - Cotations__ a+ Phil EXEMPLE COTE WIDTH.dwg FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
PHILPHIL Posté(e) le 19 avril 2021 Auteur Posté(e) le 19 avril 2021 hello je viens de tester les lisp et ca ne semble pas fonctionner sur le fichier envoyé pourtant ca parait logique faut peut etre aller attaquer le "width" directement sans passer par le code 41 dxf ? a+ Phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
Luna Posté(e) le 19 avril 2021 Posté(e) le 19 avril 2021 Coucou, As-tu REGEN ton dessin une fois fait ? La mise à jour ne se fait pas automatiquement :3 En tout cas, cela fonctionne correctement chez moi ! Bisous, Luna
Fraid Posté(e) le 19 avril 2021 Posté(e) le 19 avril 2021 Bonjour, Sans être destructeur, Tu modifie une cote manuellement, et tu crée un nouveau style que tu applique aux autre cotes. après en supprimant et renommant le style cela devrais le faire tu peux aussi modifié directement le style https://github.com/Fraiddd
PHILPHIL Posté(e) le 19 avril 2021 Auteur Posté(e) le 19 avril 2021 hello ca fonctionne sous autocad architecture 2021 ca NE fonctionnement PAS sous autocad architecture 2022 donc il doit y avoir un BUG sous la 2022 merci Phil PBO FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
Luna Posté(e) le 19 avril 2021 Posté(e) le 19 avril 2021 Ah... Alors dans ce cas je ne pourrais pas t'être d'une grande aide, je suis sur AutoCAD 2019 :3 Bisous, Luna
Fraid Posté(e) le 19 avril 2021 Posté(e) le 19 avril 2021 pas mieux, 2015, du coup je ne peux pas ouvrir ton fichier https://github.com/Fraiddd
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