Aller au contenu

gestion de conflit objets/textes


fabcad

Messages recommandés

Bonjour les super programmeurs,

 

Pourrait-on créer une fonction qui permettrait de déplacer automatiquement des textes, des multi-textes ou des attributs de blocs visibles si leur cadre s'intersecte avec un objet.

De les mettre là ou il y a de la place...

 

merci pour vos bouts de programmes.

 

fabcad

Lien vers le commentaire
Partager sur d’autres sites

 

Hello Fabrice

 

Ce que tu demandes est "très complexe" et en général il existe des développements spécifiques pour réaliser ce genre de choses sur les logiciels de SIG Bureatique ...

 

Par contre si quelqu'un réussit à nous faire "un petit qq chose" de satisfaisant pour AutoCAD (et donc aussi pour MAP & CIVIL), je suis PRENEUR comme toi !!! :) :D :cool:

 

Le Decapode

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

Je connais pas encore MAP ...

 

Mais voici un extrait d'une routine que je me suis faite pour l'insertion d'un bloc avec des attributs

 

Cela me permet de fixer mon point d'insertion en choississant entre les 4 quadrants et de placer correctement ma ligne de repère dans la zone qui me convient le mieux.

 

Bien sur ici, cela n'insère rien, ca dessine seulement l'encombrement virtuel de mon bloc, mais si cela t'interresse....

 

((lambda ( / )
    (while (null (setq ent (entsel "\nChoisir une ligne: ")))) 
    (setq dxf_line (entget (car ent)))
    (foreach n	(list (list (cdr (assoc 10 dxf_line))) (list (cdr (assoc 11 dxf_line))))
(setq pt1 (car n) pt2 (car n))
(while (equal pt2 pt1)
	(setq pt2
		((lambda ( / key pt p1 p2 p3 p4 alpha)
			(princ "\nPosition de l'annotation du PR: ")
			(while (and (setq key (grread T 4 0)) (/= (car key) 3))
				(cond
					((eq (car key) 5)
						(redraw)
						(setq pt (cadr key))
						(setq alpha (angle pt1 pt))
						(cond 
							((and (>= alpha 0.0) (< alpha (/ pi 2)))
								(setq
									p1 pt
									p2 (list (+ (car pt) 605) (cadr pt))
									p3 (list (+ (car pt) 605) (+ (cadr pt) 430))
									p4 (list (car pt) (+ (cadr pt) 430))
									pt_w p1
								)
							)
							((and (>= alpha (/ pi 2)) (< alpha pi))
								(setq
									p1 pt
									p2 (list (car pt) (+ (cadr pt) 430))
									p3 (list (- (car pt) 605) (+ (cadr pt) 430))
									p4 (list (- (car pt) 605) (cadr pt))
									pt_w p4
								)
							)
							((and (>= alpha pi) (< alpha (/ (* 3 pi) 2)))
								(setq
									p1 pt
									p2 (list (- (car pt) 605) (cadr pt))
									p3 (list (- (car pt) 605) (- (cadr pt) 430))
									p4 (list (car pt) (- (cadr pt) 430))
									pt_w p3
								)
							)
							(T
								(setq
									p1 pt
									p2 (list (car pt) (- (cadr pt) 430))
									p3 (list (+ (car pt) 605) (- (cadr pt) 430))
									p4 (list (+ (car pt) 605) (cadr pt))
									pt_w p2
								)
							)
						)
						(grdraw pt1 p1 1)
						(grdraw p1 p2 7)
						(grdraw p2 p3 7)
						(grdraw p3 p4 7)
						(grdraw p4 p1 7)
					)
				)
			)
			(redraw)
			(cadr key)
		))
	)
	(if (equal pt2 pt1)
		(princ "\nLa position est confondue avec l'extrèmité du CD!")
	)
)
    )
))

 

NB: concu pour une petite échelle, environ 1/100000

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

Lien vers le commentaire
Partager sur d’autres sites

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é