DomLearn Posté(e) le 14 décembre 2009 Posté(e) le 14 décembre 2009 Comme je le précise dans le sujet, je suis à la recherche d'un programme lisp, VBA ou autre qui permettrait de repositionner des entités Autocad tel que Texte, Attribut ... sur le pas de grille de résolution donné, soi le point d'accrochage d'un Objet sur le point le plus près du Pas de Résolution d'une Grille. Le but est donc de remettre sur le pas de Grille des entités Autocad qui se trouvent n'importe ou dans l'espace (Résolution corrompu suite à désactivation du Mode d'Accrochage - Touche F9)Ca doit bien exister (?) ... mes recherches sont veines :( Merci d'Avance :)
didier Posté(e) le 14 décembre 2009 Posté(e) le 14 décembre 2009 coucou ce qui serait pratique c'est d'avoir un fichieravec des exemples d'entités à transformer. en attendant je regarde comment faire... amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
DomLearn Posté(e) le 15 décembre 2009 Auteur Posté(e) le 15 décembre 2009 Bon finalement j'ai trouvé des choses interressantes dans les sujets :- "lisp pour accrocher extremites à une grille"- "lisp de rêve"... qui permettent de raccrocher des entités Autocad sur le pas de Grille Résol.Dommage que pour les blocs avec Attributs, ceux-ci ne suivent pas le déplacement ... soi toutes les entités faisant parti du bloc , du point d'insertion du bloc sur le pas de Grille le plus proche. Le lisp aurait été vraiment à la perfection. Mais c'est déjà super quand vous reçevez des dwg sans résol. Merci à gile, bonuscad, blizard, ... et dis donc Didier, va voir t'avais fait des commentaires toi aussi, tu avais donc tremper dedans. Dom :)
(gile) Posté(e) le 15 décembre 2009 Posté(e) le 15 décembre 2009 Dommage que pour les blocs avec Attributs, ceux-ci ne suivent pas le déplacement ... BATTMAN ou ATTSYNC (c'était dit dans un des sujets cités) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Cadmin Posté(e) le 15 décembre 2009 Posté(e) le 15 décembre 2009 Hugh! Fil déplacé dans AutoCAD Liste de souhaits. C'est bientôt Noël d'accord mais qd même.
Patrick_35 Posté(e) le 15 décembre 2009 Posté(e) le 15 décembre 2009 Salut Ben, c'est noël :D (defun c:aro(/ bl doc ent pas_x pas_y round) ;;; ROUND (gile) ;;; Arrondit à la valeur la plus proche en fonction de prec ;;; (round pi 0.01) -> 3.14 ;;; (round pi 1e-5) -> 3.14159 ;;; (round 5456.50 1) -> 5457 ;;; (round 5456.50 100.0) -> 5500.0 (defun round (num prec) (if (zerop (setq prec (abs prec))) num (* prec (fix ((if (minusp num) - +) (/ num prec) 0.5))) ) ) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (setq pas_x (car (getvar "gridunit")) pas_y (cadr (getvar "gridunit")) ) (vlax-for bl (vla-get-blocks doc) (and (eq (vla-get-islayout bl) :vlax-true) (vlax-for ent bl (cond ((member (vla-get-objectname ent) '("AcDbArc" "AcDbEllipse" "AcDbLine")) (setq pt1 (vlax-get ent 'startpoint)) (vlax-put ent 'startpoint (list (round (car pt1) pas_x) (round (cadr pt1) pas_y) (caddr pt1) ) ) (setq pt1 (vlax-get ent 'endpoint)) (vlax-put ent 'endpoint (list (round (car pt1) pas_x) (round (cadr pt1) pas_y) (caddr pt1) ) ) ) ((eq (vla-get-objectname ent) "AcDbSpline") (setq pt1 (vlax-get ent 'starttangent)) (vlax-put ent 'starttangent (list (round (car pt1) pas_x) (round (cadr pt1) pas_y) (caddr pt1) ) ) (setq pt1 (vlax-get ent 'endtangent)) (vlax-put ent 'endtangent (list (round (car pt1) pas_x) (round (cadr pt1) pas_y) (caddr pt1) ) ) ) ((eq (vla-get-objectname ent) "AcDbCircle") (setq pt1 (vlax-get ent 'center)) (vlax-put ent 'center (list (round (car pt1) pas_x) (round (cadr pt1) pas_y) (caddr pt1) ) ) ) ((eq (vla-get-objectname ent) "AcDbPolyline") (vlax-put ent 'coordinates (mapcar '(lambda(a / b) (if b (progn (setq b nil) (round a pas_y) ) (progn (setq b T) (round a pas_x) ) ) ) (vlax-get ent 'coordinates) ) ) ) ((member (vla-get-objectname ent) '("AcDbBlockReference" "AcDbText" "AcDbMText")) (setq pt1 (vlax-get ent 'insertionpoint)) (vlax-put ent 'insertionpoint (list (round (car pt1) pas_x) (round (cadr pt1) pas_y) (caddr pt1) ) ) ) ) ) ) ) (vla-endundomark doc) (princ) ) @+ [Edité le 15/12/2009 par Patrick_35] Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
DomLearn Posté(e) le 16 décembre 2009 Auteur Posté(e) le 16 décembre 2009 Merci pour le rappel concernant la commande ATTSYNC (que j'utilise souvent en plus) ou BATTMAN (Très pratique aussi) Heu .. suis pas un expert en Lisp :P C'est quoi celui-ci ... de Patrick_35 ... et comment on le lance A quoi il sert?A recadrer les cercles ? :exclam: Quand je le démarre la commande, ça me donne : Commande: aro; erreur: no function definition: VLAX-GET-ACAD-OBJECT ... j'ai oublié quelque chose ? :o
(gile) Posté(e) le 16 décembre 2009 Posté(e) le 16 décembre 2009 Salut, Ajoute (vl-load-com) juste avant : ;;; ROUND (gile) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
DomLearn Posté(e) le 16 décembre 2009 Auteur Posté(e) le 16 décembre 2009 ??? J'ai bien intercalé la ligne comme ci après : (defun c:aro(/ bl doc ent pas_x pas_y round)(vl-load-com) ;;; ROUND (gile)... etc Mais cette fois rien ne se passe (?)Voilà ce que j'obtiens : Commande: aro Commande: :(
Patrick_35 Posté(e) le 16 décembre 2009 Posté(e) le 16 décembre 2009 Le lisp a recalé toutes les coordonnées par rapport à la grilleSi la grille est de 0,0 alors rien ne bouge @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
DomLearn Posté(e) le 16 décembre 2009 Auteur Posté(e) le 16 décembre 2009 Superbe ... finalement on a tous les outils pour recadrer des dessins mal conçus.En effet c'est Noêl ... Le Top ...Merci à tous :red:
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