Aller au contenu

decalage de texte de cote


Messages recommandés

Posté(e)

je viens de penser au lisp de bonuscad qui me permet de d'enlever les zeros de ces meme cote

 

(defun c:mcot ( / js n ent obj_vla)

(setq js

(ssget "_X"

(list

(cons 0 "DIMENSION")

(cons 67 (if (eq (getvar "CVPORT") 2) 0 1))

(cons 410 (if (eq (getvar "CVPORT") 2) "Model" (getvar "CTAB")))

)

)

)

(cond

(js

(vl-load-com)

(setq n -1)

(repeat (sslength js)

(setq ent (ssname js (setq n (1+ n))))

(setq obj_vla (vlax-ename->vla-object ent))

(if (< (vla-get-Measurement obj_vla) 0.30) ;ici je choisi la taille maxi des cotes gérées

(progn

(vla-put-LinearScaleFactor obj_vla 100)

(vla-put-PrimaryUnitsPrecision obj_vla 0);ce doit etre par la que dois rajouter le deplacement

(vla-put-SuppressLeadingZeros obj_vla -1);mais je vois pas comment

)

)

)

)

)

(prin1)

)

 

j'aurai du poster sa dans le forum de lisp :P

Posté(e)

y aurai t'il une astuces pour les decaler tous d'un coup?

 

Si j'ai bien compris, pourquoi ne pas passer par la fenêtre des Propriétés, Position du texte X ou Position du texte Y.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

non giles

 

car les cotes ne sont pas toutes parralleles

mais cela me donne une idée

 

il ya surement un

 

(vla-put-.......... obj_vla qui correspond au position du texte

 

il faudrai lui incrementer une valeur selon la rotation de la cote

 

je suis aller voir dans la jungle de l'aide du develloper

dans le section ActiveX and VBA reference......... :exclam:

 

meme si on connait a little bite the english c'est dur de si retrouvé

 

 

Posté(e)

Salut,

 

Pour récupérer les propriétés d'un objet en vlisp, c'est souvent plus évident qu'avec les listes retournées par entget.

 

Il faut d'abord transformer le nom d'entité acquis avec (car (entsel), (entlast) ou (ssname (ssget) n) en vla-object :

 

(setq obj (vlax-ename->vla-object ent))

 

En faisant un (vlax-dump-object obj) tu pourras voir toutes les propriétés accessible pour l'objet. tu peux récupérer ces propriétes aves un (vla-get-property obj) ou les modifier avec un (vla-put-property obj [arg ...])

 

Si tu fais (vlax-dump-object obj T) tu auras aussi toutes les "méthodes" applicables à l'objet avec un (vla-method [arg...])

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Je suis pas très fort en vla, c'est mes premier pas, certainement à retoucher.

Je suis reparti du lisp précédent....

 

Déjà revoir dim_rot pour faire un choix sur + ou - pi/2

 

((lambda ( / js d n ent obj_vla pos_ac dim_rot new_pos)
(setq js
	(ssget
		(list
			(cons 0 "DIMENSION")
			(cons 67 (if (eq (getvar "CVPORT") 2) 0 1))
			(cons 410 (if (eq (getvar "CVPORT") 2) "Model" (getvar "CTAB")))
		)
	)
)
(cond
	(js
		(vl-load-com)
		(initget 1)
		(setq d (getdist "\nDonner la valeur de déplacement du texte de cote: "))
		(setq n -1)
		(repeat (sslength js)
			(setq
				ent (ssname js (setq n (1+ n)))
				obj_vla (vlax-ename->vla-object ent)
			)
			(setq
				pos_ac (vlax-safearray->list (vlax-variant-value (vla-get-TextPosition obj_vla)))
				dim_rot (+ (vla-get-TextRotation obj_vla) (/ pi 2))
				new_pos (polar pos_ac dim_rot d)
			)
			(vla-put-TextPosition obj_vla 
				(vlax-make-variant
					(vlax-safearray-fill
						(vlax-make-safearray vlax-vbdouble (cons 0 (1- (length new_pos))))
						new_pos
					)
				)
			)
		)
	)
)
(prin1)
))

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Salut vla-Bonuscad,

 

Depuis que j'ai découvert les (vlax-get ... ) (vlax-put ...) et (vlax-invoke ...) je m'embète beaucoup moins à transformer les variants en listes et vice-versa, voir ici.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Merci de m'avoir remémoré le post :exclam:

 

Je l'avais déjà parcouru en diagonale, mais ce coup ci je l'ai gardé sous le coude pour pouvoir m'y référencer.

 

J'ai du mal avec le style du vlax, beaucoup de chose obscures ...., mai ça viendra comme ca viendra. :P

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

(vla-put-TextMovement obj_vla 2)

 

dans la boucle (repeat ??

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

coucou roucoucou Fraid,

 

Plutôt que de bidouiller ! ;)

 

Essayes tout simplement d'utiliser l'option Remplissage du texte "arrière plan" dans l'onglet TEXTE des styles de cote... ;)

 

attention cette option peut-être gênante pour les versions antérieures à partir de la 2004

 

Christian

 

 

Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...

cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)

Posté(e)

merci Rebcao

 

t'est matinal!

 

Encore un truc que je connaissais pas

Mais cela ne va pas plaire au client d'avoir c'est cloisons coupées par les texte de cotes

et de plus il veulent les dessin au format 2000 pour pouvoir l'utilisé avec un autre logiciel

 

le lisp de bonuscad me semble une bonne piste mais je n'arrive pas a le modifié pour que le deplacement se face en x et non en y

 

je pense que c'est par la

(setq

pos_ac (vlax-safearray->list (vlax-variant-value (vla-get-TextPosition obj_vla)))

dim_rot (+ (vla-get-TextRotation obj_vla) (/ pi 2))

new_pos (polar pos_ac dim_rot d)

 

:calim:

Posté(e)

Salut Fraid,

 

Je me suis permis de modifier le code de Bonuscad. Le déplacement des textes cotes s'y faisait par rapport à la perpendiculaire de l'angle de rotation du texte :

(+ (vla-get-TextRotation obj_vla) (/ pi 2))

 

Je propose un déplacement défini par 2 points, du premier vers le deuxième, in dépendant de la rotation du texte :

 

((lambda (/ js d n ent obj_vla pos_ac p1 p2 dep new_pos)
  (vla-StartUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)))
  (setq js
  (ssget
    (list
      (cons 0 "DIMENSION")
      (cons 67
	    (if	(eq (getvar "CVPORT") 2)
	      0
	      1
	    )
      )
      (cons 410
	    (if	(eq (getvar "CVPORT") 2)
	      "Model"
	      (getvar "CTAB")
	    )
      )
    )
  )
  )
  (cond
    (js
     (vl-load-com)
     (initget 1)
     (setq
p1 (getpoint
     "\nSpécifiez le déplacement des cotes, premier point: "
   )
     )
     (initget 1)
     (setq p2 (getpoint p1 "\nDeuxième point: "))
     (setq dep (mapcar '- p2 p1))
     (setq n -1)
     (repeat (sslength js)
(setq
  ent	  (ssname js (setq n (1+ n)))
  obj_vla (vlax-ename->vla-object ent)
)
(setq
  pos_ac  (vlax-get obj_vla 'TextPosition)
  new_pos (mapcar '+ pos_ac dep)
)
(vlax-put obj_vla 'TextPosition new_pos)
(vla-put-TextMovement obj_vla 0) 
     )
    )
  )
  (vla-EndUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)))
  (prin1)
)
)

 

Edit : avec les cotes continues les lignes de cotes ne suivaient pas le texte, j'ajoute une ligne aucode ci-dessus :

(vla-put-TextMovement obj_vla 0)

ainsi que'un groupe d'annulation.

 

[Edité le 10/8/2006 par (gile)]

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Merci Gilles d'avoir continué le fil

 

Le déplacement des textes cotes s'y faisait par rapport à la perpendiculaire de l'angle de rotation du texte

 

Oui j'étais parti sur cette optique,

car les cotes ne sont pas toutes parralleles

 

Fraid il serait bien d'ettayer tes souhaits par des images (avant/après), cela serait plus simple pour comprendre ce que tu veux faire exactement.

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

c'est resolu mais j'envoi les images comeme

 

Avant

http://www.ouestcad.com/cotesavant.jpg

 

Aprés

 

http://www.ouestcad.com/cotesapres.jpg

 

 

je suis aller dans la FAQ

je test[Edité le 10/8/2006 par Fraid][Edité le 10/8/2006 par Fraid]

 

say est j'ai reussi

je pensait que l'on ecrivait du html

 

 

[Edité le 10/8/2006 par Fraid]

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité