fabcad Posté(e) le 15 octobre 2009 Posté(e) le 15 octobre 2009 Bonjour, J'ai souvent à déplacer des adresses de voies de la chaussée vers leurs parcelles respectives. Pour cela, je déplace tous ces objets un par un (en les orientant suivant la chaussée et en leur attribuant une justification). Voici ma proposition littérale : - Pour chaque collection d'objets texte ou mtexte,- Demander la distance de décalage (avec maintien de la valeur par défaut.- Demander en dessus ou en dessous comme option.- Puis déplacement en partant de leur point d'insertion. Merci pour vos réponses, Fabcad
Bred Posté(e) le 15 octobre 2009 Posté(e) le 15 octobre 2009 Salut,pourquoi ne pas utiliser la commande "SELECTRAP" puis ensuite tu déplaces ? Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
fabcad Posté(e) le 15 octobre 2009 Auteur Posté(e) le 15 octobre 2009 Merci Bred, Mais je ne souhaites pas que les numéros de voies prennent un autre angle ou une autre position. Merci quand même, Fabcad
didier Posté(e) le 15 octobre 2009 Posté(e) le 15 octobre 2009 coucou encore une fois je n'ai pas compris le déplacement des textes doit-il se faire perpendiculairement à la direction du segment de polyligne en face du texte ? si ce n'est pas le cas, est-ce un déplacement avec delta X ou delta Y constant ? une petite image avant après ... amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
bonuscad Posté(e) le 15 octobre 2009 Posté(e) le 15 octobre 2009 Une piste pour une construction simple d'un code qui devrait fonctionner sauf pour les textes justifiés et/ou alignés. Tu crée un jeu de sélection filtré sur les Text/MText.Si celui ci existe, tu demande le sens +PI/2 (dessus) -PI/2 (dessous) et la distance de déplacementTu rentres alors dans une boucle avec un compteur pour parcourir le jeux de sélection.Pour chaque entité, tu récupère le code DXF50 (rotation du texte) auquel tu rajoute/ retranche PI/2.Avec le point d'insertion DXF 10 du te sert de (polar (+ dxf50 (* 0.5 +/-PI)) décalage) pour obtenir le nouveau point d'insertion.Un (subst nouveau point DXF10) suivi d'un (entmod)Incrémente le compteur pour passer à la suivante et éviter une boucle infinie.... Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
fabcad Posté(e) le 16 octobre 2009 Auteur Posté(e) le 16 octobre 2009 Bonjour, Merci pour vos remarques, voici le code :Il serait simplifiable en visual LISP, mais il fonctionne ! Bonne journée, ;;; SOUS-ROUTINE ;;;------------------------------------------------------------------------ (defun traitement_du_js (js distance_de_decalage sens_deplacement / nbr obj_acad pti pti-numero) (setvar "cmdecho" 0) (setq m:err *error* *error* decale-numeros-err) ;recuperation des variables (setq var-accrobj (getvar "osmode")) (setq var-cmddia (getvar "cmddia")) (setq var-cmdecho (getvar "cmdecho")) (setvar "osmode" 0) (setvar "cmddia" 0) (setvar "cmdecho" 0) (setq nbr (sslength js)) (setq i 0) (while (<= i (- nbr 1)) ;affectation à la variable obj_acad l'objet texte en cours (setq obj_acad (ssname js i)) ;(setq obj_acad (car (entsel))) (setq liste_dxf_obj_acad (entget obj_acad)) (if (= (cdr (assoc 0 (entget obj_acad))) "TEXT") (setq pti (cdr (assoc 11 (entget obj_acad)))) (setq pti (cdr (assoc 10 (entget obj_acad)))) );fin if ;(setq pti (cdr (assoc 10 (entget obj_acad)))) (setq angle_obj_acad (cdr (assoc 50 (entget obj_acad)))) (if (equal sens_deplacement "Haut") (setq angle_deplacement (+ angle_obj_acad (/ PI 2))) (setq angle_deplacement (- angle_obj_acad (/ PI 2))) );fin if angle de deplacement (setq new_pti (polar pti angle_deplacement distance_de_decalage)) (if (= (cdr (assoc 0 (entget obj_acad))) "TEXT") (setq liste_dxf_obj_acad (subst (cons 11 new_pti) (assoc 11 liste_dxf_obj_acad) liste_dxf_obj_acad)) (setq liste_dxf_obj_acad (subst (cons 10 new_pti) (assoc 10 liste_dxf_obj_acad) liste_dxf_obj_acad)) );fin if (entmod liste_dxf_obj_acad) (setq i (+ i 1)) ); fin while ;retour a la normale des variables utilisées (setvar "cmddia" var-cmddia) (setvar "osmode" var-accrobj) (setvar "cmdecho" var-cmdecho) (setq *error* m:err m:err nil) (princ) nil ); fin defun ;;;------------------------------------------------------------------------ ; FONCTION PRINCIPALE (defun c:deplacer_adresses () (vl-load-com) (setvar "cmdecho" 0) (setq distance_de_decalage (getdist "\n Distance du déplacement : ")) (initget "Haut Bas") (setq sens_deplacement (getkword "\n Sens du déplacement [Haut/Bas] ")) (setq js (ssget)) (traitement_du_js js distance_de_decalage sens_deplacement) (setq js nil) (prompt "\n---COPYRIGHT 15/10/09 Par Fabrice DEMIEL---") nil );fin c:centroides ;;;------------------------------------------------------------------------ (prompt "\npour lancer Tapez : deplacer_adresses ")
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