Jump to content

INTERVENTION SUR TEXTMULT DE DIMENSION ( DES COTES )


Recommended Posts

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

Autodesk Architecture 2019 sous windows 10 64

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Link to post
Share on other sites

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

Edited by Fraid

...plus je sais où je suis, moins je sais où je vais....

Extrait d'une double interview simultanée d'une particule élémentaire.

Link to post
Share on other sites

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

Link to post
Share on other sites

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... 

...plus je sais où je suis, moins je sais où je vais....

Extrait d'une double interview simultanée d'une particule élémentaire.

Link to post
Share on other sites

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 -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Link to post
Share on other sites

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

 

Link to post
Share on other sites

Bonjour Gile, merci, tu as l'oeil, cela fait des années que j'utilise cette fonction copiée/collée...

 

...plus je sais où je suis, moins je sais où je vais....

Extrait d'une double interview simultanée d'une particule élémentaire.

Link to post
Share on other sites

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)
          )
        )
    )
)

 

...plus je sais où je suis, moins je sais où je vais....

Extrait d'une double interview simultanée d'une particule élémentaire.

Link to post
Share on other sites

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...) !

 

Link to post
Share on other sites

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 !!!

...plus je sais où je suis, moins je sais où je vais....

Extrait d'une double interview simultanée d'une particule élémentaire.

Link to post
Share on other sites

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

Autodesk Architecture 2019 sous windows 10 64

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Link to post
Share on other sites

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

Autodesk Architecture 2019 sous windows 10 64

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Link to post
Share on other sites

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

...plus je sais où je suis, moins je sais où je vais....

Extrait d'une double interview simultanée d'une particule élémentaire.

Link to post
Share on other sites

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

Autodesk Architecture 2019 sous windows 10 64

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Link to post
Share on other sites

pas mieux, 2015, du coup je ne peux pas ouvrir ton fichier

...plus je sais où je suis, moins je sais où je vais....

Extrait d'une double interview simultanée d'une particule élémentaire.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...