Jump to content

Recommended Posts

39 minutes ago, quentinQS said:

Bonjours à tous est t'il possible de mettre automatiquement l'échelle de la présentation dans un champs texte

 

Merci D'avance

Arf.... Je ne crois pas. J'avais regardé à une époque.

Sauf peut-être la solution de Thierry.

www.cad-is.fr
Autocad Map 2018 - Covadis/Autopiste V17.0d - Mensura Genius V8
Nous n’héritons pas de la Terre de nos ancêtres, nous l’empruntons à nos enfants
Link to post
Share on other sites

Bonjour @quentinQS

La réponse est OUI, pour ce faire il va falloir créer un bloc avec attribut.

Ce bloc sera créé depuis l'espace papier
Lancer ATTDEF, répondre aux cases étiquettes et invite, puis dans "par défaut" choisir l'icône "Insérer un champ"
Dans la case de dialogue qui vient de s'ouvrir, choisir OBJET dans "Catégories"
puis dans "Type d'objet" choisir, via l'icône" la fenêtre FMULT dont on veut renseigner l'échelle.


Choisir "Échelle personnalisée" puis dans "Format" : "Utiliser le nom de l'échelle"

 

Créer le bloc classiquement ensuite avec insertion et choix des objets.

Nota : Il faut que l'échelle existe dans la liste des échelles pour cette façon de faire

Pour mettre à jour l'affichage il faut faire une REGEN, (de toute façon le lancement de l'impression lance une REGEN)

Amicalement

D6124787-5806-4A65-8171-D6FA05E24BCC.GIF

Link to post
Share on other sites

Un simple MTEXT ou TEXT n'est pas suffisant pour l'insertion d'un champs dynamique ?
De plus il faut forcément ré-attribuer la fenêtre à chaque nouvelle référence de texte car le champ est rattaché au handle si je ne me trompe pas ?

Bisous,
Luna

Link to post
Share on other sites
  • 3 weeks later...

Bonjour,

merci c'est très clair.

J'en profite, quand je fais la même chose pour le format de page de présentation, n'est il pas possible de ne garder qu'une partie de l'appellation ? ex : Iso full bleed A3 => A3 ? ou suis-je contraint de recréer/renommer format de page ?


Amicalement,

Link to post
Share on other sites

Bonjour @drault

Je ne comprends pas la question, du moins sur sa portée...
Car je ne vois pas le moyen de mettre le format en champs d'attribut, je guette les réponses en espérant être contredit.

Les seuls renseignements que j'ai trouvés sont Longueur et Largeur, à la rigueur ça peut définir le format en millimètres,
mais le Type A4 A3 ou autre je ne vois pas.

Amicalement

Link to post
Share on other sites

Coucou,

J'avoue ne pas bien comprendre la demande...Est-ce que tu parles du format d'impression (Format de papier, depuis le gestionnaire de mise en page de la présentation) ?
Si c'est de cela dont tu parles, alors vouih c'est une donnée récupérable mais isolée la valeur souhaitée ne sera pas une mince affaire...
Une explication plus claire serait la bienvenue :3

Bisous,
Luna

Link to post
Share on other sites

Avec ce bout de code, je peux récupérer le format d'impression d'une présentation, il faut ensuite injecter cette valeur où tu le souhaites (champ dynamique, attribut, texte, ...).
 

(defun getPrintFormat (name / str-reverse layout-list entlist str pos)

	(defun str-reverse (str)

		(vl-list->string (reverse (vl-string->list str)))

	)

	(if (and
		(setq layout-list (vla-collection->list 'layouts 0))
		(assoc name layout-list)
		(setq entlist (entget (cdr (assoc name layout-list))))
		(setq str (cdr (assoc 4 entlist)))
	    )
		(setq pos (1- (vl-string-position (ascii "(") str))
		      str (substr str 1 pos)
		      str (str-reverse str)
		      str (substr str 1 (vl-string-position (ascii "_") str))
		      str (str-reverse str)
		)
	)

)

Et la fonction permettant de récupérer la liste des présentations :

;--- Nom de la fonction		[]-----------------------[] vla-collection->list []-----------------------[]
;--- Date de création		> 05/03/2021
;--- Dernière modification	> 07/03/2021
;--- Auteur(e)			> Luna
;--- Version			> 1.1.0
;--- Classe			> "VlCol"

;--- But et domaine d'application													;
;	> Permet de transformer une collection VLA sous forme de liste de paires pointées avec le nom et l'ename de chaque objet	;
;	présent dans la collection. Il s'agit d'une version améliorée de la fonction (flt_tbl) car on peut accéder à davantage d'objets	;
;	contrairement aux Symbol Tables (plus limitées) mais sans l'outil de recherche pour filtrer la recherche sur un pattern.	;
;																	;
;--- Déclaration des arguments 														;
;	La fonction (vla-collection->list) possède 2 argument(s) :									;
;		¤ col	> correspond au nom de la collection affublée d'une quote (le nom d'une collection est toujours au pluriel)	;
;			(type col) = 'SUBR	| Ex. :	'materials, 'linetypes, 'blocks, 						;
;		¤ flag	> permet de définir si le nom de l'objet récupéré correspond à l'ename ou au VLA-object				;
;			(type flag) = 'BOOLEAN	| Ex. :	0 pour l'ename, 1 pour le VLA-OBJECT 						;
;																	;
;--- Retour																;
;	La fonction (vla-collection->list) renvoie la liste de paires pointées chacunes composée du nom de l'objet sous format string	;
;	et de l'ename ou VLA-Object de l'objet pour accéder à sa liste DXF ou ses propriétés.						;
;	Ex. : (vla-collection->list 'linetypes 0) renvoie										;
;		(("ByBlock" . <Nom d'entité: 3b058940>)											;
;		 ("ByLayer" . <Nom d'entité: 3b058950>)											;
;		 ("Continuous" . <Nom d'entité: 3b058960>)										;
;		 ("DASHED" . <Nom d'entité: 2300df40>))											;
;																	;
;--- Modifications apportées par rapport à la version précédente									;
;	> Simplification d'écriture de la collection (activedocument uniquement) et ajout de la variable flag pour modifier le retour.	;
;																	;

(defun vla-collection->list (col flag / lst item i)

	(if (null (vl-catch-all-error-p (setq i 0 col (vl-catch-all-apply 'vlax-get (list (vla-get-activedocument (vlax-get-acad-object)) col)))))
		(vlax-for item col
			(setq lst (cons	(cons
						(if (vlax-property-available-p item 'Name)
							(vla-get-name item)
							(strcat "Unnamed_" (itoa (setq i (1+ i))))
						)
						(cond
							((= flag 0)
								(vlax-vla-object->ename item)
							)
							(t
								item
							)
						)
					)
					lst
				  )
			)
		)
	)
	(reverse lst)

)

L'utilisation de la fonction (getPrintFormat) est simple : elle requiert un seul argument correspondant au nom de la présentation. Pour cela tu peux l'essayer via (getPrintFormat (getvar "CTAB")) en étant sur une présentation (autre que "Model" bien que chat fonctionne...).

Bisous,
Luna

Link to post
Share on other sites
Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...