Fraid Posté(e) le 9 août 2006 Posté(e) le 9 août 2006 bonjour, A chaque fois que je cote un batiment je perd un temps precieux a decaler le texte cotes se trouvant a cheval sur une cloison. y aurai t'il une astuces pour les decaler tous d'un coup? https://github.com/Fraiddd
Fraid Posté(e) le 9 août 2006 Auteur Posté(e) le 9 août 2006 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 https://github.com/Fraiddd
(gile) Posté(e) le 9 août 2006 Posté(e) le 9 août 2006 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
Fraid Posté(e) le 9 août 2006 Auteur Posté(e) le 9 août 2006 non giles car les cotes ne sont pas toutes parrallelesmais 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 develloperdans le section ActiveX and VBA reference......... :exclam: meme si on connait a little bite the english c'est dur de si retrouvé https://github.com/Fraiddd
(gile) Posté(e) le 9 août 2006 Posté(e) le 9 août 2006 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
bonuscad Posté(e) le 9 août 2006 Posté(e) le 9 août 2006 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
(gile) Posté(e) le 9 août 2006 Posté(e) le 9 août 2006 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
bonuscad Posté(e) le 9 août 2006 Posté(e) le 9 août 2006 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
Fraid Posté(e) le 9 août 2006 Auteur Posté(e) le 9 août 2006 merci bonuscad ton lisp fonctionnemais il faudrait que la variable _aidimtextmove soit a 0 pour evité des trait de rappel et je ne sais pas ou inserer cela dans ton lisp avec un setvar? https://github.com/Fraiddd
bonuscad Posté(e) le 9 août 2006 Posté(e) le 9 août 2006 Après (vl-load-com) peut être une bonne place! Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Fraid Posté(e) le 9 août 2006 Auteur Posté(e) le 9 août 2006 :( sa marche pas Choix des objets: paramètre de la variable AutoCAD rejeté: "aidimtextmove" 2 c'est pas zero mais 2 pour bouger le texte seul :P https://github.com/Fraiddd
bonuscad Posté(e) le 9 août 2006 Posté(e) le 9 août 2006 (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
Fraid Posté(e) le 9 août 2006 Auteur Posté(e) le 9 août 2006 je l'ai mis entre les 2 setqet sa marche sauf que j'avais tester sur des cotes en biais et verticalesur les horysontale il sont decalé vers le haut alors qu'il devrait l'etre sur un coté :P https://github.com/Fraiddd
rebcao Posté(e) le 10 août 2006 Posté(e) le 10 août 2006 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 @)
Fraid Posté(e) le 10 août 2006 Auteur Posté(e) le 10 août 2006 merci Rebcao t'est matinal! Encore un truc que je connaissais pasMais cela ne va pas plaire au client d'avoir c'est cloisons coupées par les texte de coteset 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(setqpos_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: https://github.com/Fraiddd
(gile) Posté(e) le 10 août 2006 Posté(e) le 10 août 2006 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
Fraid Posté(e) le 10 août 2006 Auteur Posté(e) le 10 août 2006 merci Gilles :D en inserant (vla-put-TextMovement obj_vla 2)sa marche impeccable https://github.com/Fraiddd
bonuscad Posté(e) le 10 août 2006 Posté(e) le 10 août 2006 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
Fraid Posté(e) le 10 août 2006 Auteur Posté(e) le 10 août 2006 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 FAQje test[Edité le 10/8/2006 par Fraid][Edité le 10/8/2006 par Fraid] say est j'ai reussije pensait que l'on ecrivait du html [Edité le 10/8/2006 par Fraid] 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