Aller au contenu

Dessiner cadre/rectangle + Nom des Images insérées ?


lecrabe

Messages recommandés

Hello

 

SORRY mais je suis "très" demandeur ce soir !

Je pensais avoir mais à priori je n'ai pas ?!

 

Soit N images insérées dans un DWG...

 

Svp je désire dessiner les N rectangles des N emprises de chaque image insérée

PLUS au centre le nom complet de l'image (ou fichier) concernée...

 

D'abord, est ce possible ?

 

En fait ce que l'on voit quand AutoCAD ne peut pas "atteindre" les Images !

 

Le Top: poser une question...

Que voulez vous traiter: Images, DWG, DGN, PDF, DWF, TOUS !!!

 

Mais je ne sais pas si peut récupérer la Bounding Box d'une XREF manquante (dwg, image, pdf, etc) ?!

 

Le Top du Top: question "que le nom+extension" ou chemin COMPLET + Nom + Extension ...

 

Merci, Bye, lecrabe

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir Patrick,

 

Voici une routine pour noter le nom des images.

(defun c:ecrire_nom_d_images (/ js_images space mtxt nbr i acad_image_en_cours)
	(vl-load-com)
	(setq viewsize (getvar "VIEWSIZE"))
	(or *acad* (setq *acad* (vlax-get-acad-object)))
	(or *acdoc* (setq *acdoc* (vla-get-ActiveDocument *acad*)))
	(setq recnum 0)

	(setq js_images (ssget '((0 . "IMAGE"))))
	(if js_images
		(progn
			(setq space
				(if (= 1 (getvar 'cvport))
					(vla-get-PaperSpace *acdoc*)
					(vla-get-ModelSpace *acdoc*)
				)
			)
		(setq nbr (sslength js_images))
		(setq i 0)
		(while (<= i (- nbr 1))
			(setq acad_image_en_cours (ssname js_images i))
			(setq vla_image_en_cours (vlax-ename->vla-object acad_image_en_cours))
			(setq calque_image (vla-get-Layer vla_image_en_cours))
			(setq pt_origine (cdr (assoc 10 (entget acad_image_en_cours))))
			(setq hauteur_image (vla-get-ImageHeight vla_image_en_cours))
			(setq largeur_image (vla-get-ImageWidth vla_image_en_cours))
			(setq new_x (+ (nth 0 pt_origine) (/ largeur_image 2)))
			(setq new_y (+ (nth 1 pt_origine) (/ hauteur_image 2)))
			(setq new_z 0.0)
			(setq pt_centroide
				(list
				new_x
				new_y
				new_z
				)
			)
			(setq nom_fichier_image (vla-get-Name vla_image_en_cours))

			;(setq nom_fichier_image_complet (vla-get-ImageFile vla_image_en_cours))
			;(setq nom_fichier_image (vl-filename-base nom_fichier_image_complet))
			;(command "point" pt_centroide)

			(setq obj_mtxt
				(vla-addMText
					space
					(vlax-3d-point pt_centroide)
					0.
					nom_fichier_image
				);fin vla-addMText
			);fin setq obj_mtxt

			(vla-put-AttachmentPoint obj_mtxt acAttachmentPointMiddleCenter)
			(vla-put-InsertionPoint obj_mtxt (vlax-3d-point pt_centroide))
			(vla-put-Height obj_mtxt (/ hauteur_image 10.0))
			(vla-put-Layer obj_mtxt calque_image)

			(setq i (+ i 1))
			); fin while
		);fin 1er progn
	); fin if
	(princ)
);fin defun ecrire_nom_d_images

 

Bonne soirée,

 

Fabcad Le Rennais Métropolitain

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Je ne vais pas répondre directement à ton besoin, mais te proposer une autre solution que j'utilise.

Avec les routines suivantes je peut attacher des images géo-référencées sans me soucier de trouver le nom exact.

Il suffit que je survole la zone (dans le système géo-référencé) et il m'affiche le nom de l'image concernée, je n'ai plus qu'a cliquer pour attacher l'image correspondante.

Je l'ai fait pour le SCAN25 et la BD-ORTHO.

Bien sur il faudra adapter les chemins réseau et les préfixes des images (celle fournies de fonctionnent que pour mon département)

 

Si tu as besoin de plus éclaircissement...?

 

(defun trunc_scan (xr / ia)
(setq ia (itoa (fix (/ xr 10000.0))))
(strcat
	(cond
		((< (strlen ia) 3) "0")
		((< (strlen ia) 2) "00")
		(T "")
	)
	(strcat ia "0")
)
)
(defun c:SCAN25 ( / ent_text dxf_ent key img_name folder)
;	(setvar "LIMCHECK" 0)
;	(setvar "LIMMIN" '(760000.0 6345000.0))
;	(setvar "LIMMAX" '(855000.0 6485000.0))
(setq ent_text
	(entmakex
		(list
			(cons 0 "MTEXT")
			(cons 100 "AcDbEntity")
			(cons 100 "AcDbMText")
			(cons 1 "")
			(cons 10 (trans (getvar "VIEWCTR") 0 1))
			(cons 40 (/ (getvar "VIEWSIZE") 75.0));
			(cons 50 (- 0 (getvar "VIEWTWIST")))
			(cons 62 250)
			(cons 71 7)
			(cons 72 5)
			(cons 90 1)
			(cons 63 255)
			(cons 45 1.5)
		)
	)
	dxf_ent (entget ent_text)
)
(while (and (setq key (grread T 4 0)) (/= (car key) 3))
	(cond
		((eq (car key) 5)
			(setq
				img_name (strcat "SC25_TOUR_" (trunc_scan (caadr key)) "_" (itoa (+ (atoi (trunc_scan (cadadr key))) 10)) "_L93.tif")
				dxf_ent (subst (cons 10 (trans (cadr key) 1 0)) (assoc 10 dxf_ent) dxf_ent)
				dxf_ent (subst (cons 1 (strcat "{\\fArial;" img_name "}" )) (assoc 1 dxf_ent) dxf_ent)
				dxf_ent (subst (cons 40 (/ (getvar "VIEWSIZE") 75.0)) (assoc 40 dxf_ent) dxf_ent)
			)
			(entmod dxf_ent)
		)
	)
)
(cond
	((eq (car key) 3)
		(entdel ent_text)
		(setq folder "K:\\4-SCAN\\1-SCAN25\\SC25_TOUR_TIF_LAMB93_DEP07\\")
		(if (findfile (strcat folder img_name))
			(progn
				(princ (strcat "\nCharge l'image: " (strcat folder img_name)))
				(setvar "FILEDIA" 0)
				(setvar "CMDECHO" 0)
				(command "_MAPIINSERT" (strcat folder img_name) "_no")
				(sssetfirst nil (ssget "_L"))
				(ai_draworder "_back")
				(setvar "FILEDIA" 1)
				(setvar "CMDECHO" 1)
			)
			(princ (strcat "\nL'image " img_name " est introuvable!"))
		)
	)
)
(prin1)
)

 

(defun trunc_ortho (xr / ia)
(setq ia (itoa (fix (/ xr 10000.0))))
(strcat
	(cond
		((< (strlen ia) 3) "0")
		((< (strlen ia) 2) "00")
		(T "")
	)
	(if (> (- (fix (/ xr 1000)) (* 10 (fix (/ xr 10000)))) 4)
		(strcat ia "5")
		(strcat ia "0")
	)
)
)
(defun c:BD_ORTHO ( / );(ent_text dxf_ent key img_name folder)
;	(setvar "LIMCHECK" 0)
;	(setvar "LIMMIN" '(760000.0 6345000.0))
;	(setvar "LIMMAX" '(855000.0 6485000.0))
(setq ent_text
	(entmakex
		(list
			(cons 0 "MTEXT")
			(cons 100 "AcDbEntity")
			(cons 100 "AcDbMText")
			(cons 1 "")
			(cons 10 (trans (getvar "VIEWCTR") 0 1))
			(cons 40 (/ (getvar "VIEWSIZE") 75.0));
			(cons 50 (- 0 (getvar "VIEWTWIST")))
			(cons 62 250)
			(cons 71 7)
			(cons 72 5)
			(cons 90 1)
			(cons 63 255)
			(cons 45 1.5)
		)
	)
	dxf_ent (entget ent_text)
)
(while (and (setq key (grread T 4 0)) (/= (car key) 3))
	(cond
		((eq (car key) 5)
			(setq
				img_name (strcat "07-2014-" (trunc_ortho (caadr key)) "-" (itoa (+ (atoi (trunc_ortho (cadadr key))) 5)) "-LA93-0M50.ecw")
				dxf_ent (subst (cons 10 (trans (cadr key) 1 0)) (assoc 10 dxf_ent) dxf_ent)
				dxf_ent (subst (cons 1 (strcat "{\\fArial;" img_name "}" )) (assoc 1 dxf_ent) dxf_ent)
				dxf_ent (subst (cons 40 (/ (getvar "VIEWSIZE") 75.0)) (assoc 40 dxf_ent) dxf_ent)
			)
			(entmod dxf_ent)
		)
	)
)
(cond
	((eq (car key) 3)
		(entdel ent_text)
		(setq folder "K:\\1-BDORTHO\\ORTHO-2014\\BDO_RVB_0M50_ECW_LAMB93_D07-2014\\")
		(if (findfile (strcat folder img_name))
			(progn
				(princ (strcat "\nCharge l'image: " (strcat folder img_name)))
				(setvar "FILEDIA" 0)
				(setvar "CMDECHO" 0)
				(command "_MAPIINSERT" (strcat folder img_name) "_no")
				(sssetfirst nil (ssget "_L"))
				(ai_draworder "_back")
				(setvar "FILEDIA" 1)
				(setvar "CMDECHO" 1)
			)
			(princ (strcat "\nL'image " img_name " est introuvable!"))
		)
	)
)
(prin1)
)

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

Hello Fabrice + Bruno

 

Fabrice: IMPEC ta routine, j'ai fait une Micro-Modif

et en ajoutant une routine Bounding_Box de Gilles, j'ai tout ce que je desirais !

 

Bruno: Interessant aussi tes routines mais differents !

 

MERCI (Fabrice + Bruno + Gilles), Bonnes Fetes et surtout LA SANTE, bye, lecrabe

Autodesk Expert Elite Team

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é