Aller au contenu

Expression de champ ?


Messages recommandés

Posté(e)

Bonjour,

Quelqu'un pourait-il m'expliquer le code de l'expression d'un champ et me décrire les variables utilisées ou m'orienter vers de la documentation je vous en remercie par avance.

Un exemple d'expression :

%<\AcObjProp Object(%<\_ObjId 2128502352>%).Length \f "%lu2%pr2">%

Petit à petit on devient moins petit

Posté(e)

Salut,

 

Vaste question.

En gros,

 

%% sont des balises (comme en HTML ou XML) qui permettent les imbrications de données.

 

\AcObjProp la première expression après la balise ouvrante est la catégorie de champ (\AcObjProp = champ de propriété 'Objet' dans ton exemple)

 

\_ObjId dans le cas d'un champ 'Objet', il faut un pointeur sur l'objet (entité) concerné. La valeur est l'identifiant de l'objet (ObectId).

 

Length la propriété de l'objet pour ce champ (ici la longueur)

 

\f les options de formatage du texte de champ, elles varient suivant la propriété :

 

%lu format des unités de longueur (CF LUNITS)

 

%pr format de la précision (CF LUPREC)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Ou peut on trouver la liste des catégorie de champ et leurs propriétées?

La valeurs de \_ObjId suit elle une hierarchie selon les imbrications?

Petit à petit on devient moins petit

Posté(e)

Ou peut on trouver la liste des catégorie de champ et leurs propriétées?

Je ne sais pas, personnellement je me contente de lire le code dans la boite de dialogue.

 

La valeurs de \_ObjId suit elle une hierarchie selon les imbrications?

La valeur de \_ObjId correspond à la propriété ObjectId de l'entité. Cette propriété n'est accessible que par programmation.

 

Si tu disais un peu plus précisément ce que tu cherches à faire, il serait peut-être plus facile de t'aider...

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

C'est suite à mon bloc dynamique, aprés divers essait, je me suis apercu que le comportement du champ qui à pour valeur des constantes d'objet, suit une sorte de hierachie, et j'amerais jouer avec le pointeur objet.

Par exemple, je prends une ligne de repére multiple, et un point, je transforme le tous en objet. Dans l'editeur de bloc, dans le texte multiligne du repère multible j'associe un champ correspondant à la valeur de la coordonnées Z de mon point.

Quand j'insére le bloc sur un somet de polyligne d'élévation 300. La valeurs du champ dans le texte multiligne est nulle (Valeur de la coordonnée Z du point dans le bloc). Quand j'explose le bloc elle prend la valeur 300.

Je fais un second bloc avec une polyligne, et un paramètres linéaires d1. Quand j'insére ce bloc sur un somet de polyligne d'élévation 300, et que je regénère le dessin, la valeur du champ dans le texte multiple prend la valeur 300.

Je retrouve ce phénomène quand je veux utiliser des formules utilisant des valeurs correspondant à des constantes d'objet.

Je voudrais donc contraindre les valeurs des constantes d'objet à prendre la valeur des objet dans le dessin et non dans le bloc.

 

Petit à petit on devient moins petit

Posté(e)

stugeol,

 

Ton problème n'est pas un problème d'imbrication dans l'expression du champ mais de l'objet vers lequel pointe ton champ.

Si tu définis ton champ dans un bloc, le champ pointe vers le point dans la définition du bloc et retourne les coordonnées du point dans cette définition.

Quand tu insères le bloc dans l'espace objet, le champ pointe toujours vers point dans la définition du bloc (autrement dit, affiche les coordonnées du point dans l'éditeur de bloc).

Si tu décompose la référence de bloc, le champ pointe maintenant sur le point dans l'espace objet.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

lili2006,

 

Il s'agit encore de la différence entre "définition de bloc" et "référence de bloc".

 

Dans l'éditeur de bloc, on est dans la définition du bloc, chaque entité y a ses coordonnées définies par rapport au système de coordonnées de cette définition (avec le 0,0,0 au point d'insertion).

Si on crée un champ objet dans cette définition de bloc qui pointe vers un point (nodal) en 0,0 et qui affiche ses coordonnées, quand on insère le bloc dans l'espace objet du dessin on crée de nouveaux objets qui ne sont que des références à la définition du bloc.

Dans chaque référence les objets sont "figés" les uns par rapport aux autres (excepté les attributs) et on ne peut que modifier l'ensemble de la référence (échelles, rotation, etc...). Il en est de même pour le champ, qui pointe toujours sur le même point en 0,0 dans la définition du bloc et qui affichera donc toujours ces coordonnées.

 

Si on décompose une référence du bloc, les entités appartiennent désormais à l'espace objet (en fait elles sont copiées depuis la définition vers l'espace objet) et là le champ pointe vers un point de l'espace objet et affiche les coordonnées de ce point dans le système de coordonnées de l'espace objet.

 

En espérant avoir été plus clair...

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Bonjour à toutes et tous,

 

En espérant avoir été plus clair...

 

Non non, c'était très clair, c'est juste qu'il faut que je travaille plus en profondeur :

la différence entre "définition de bloc" et "référence de bloc".
,............

 

Donc, à l'insertion, il faut décomposer le bloc ?

 

Ou bien encore faire un bloc imbriqué pour que juste le champ se mettent à jour ?

 

J'ai le même soucis ici !

 

 

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)

Donc, à l'insertion, il faut décomposer le bloc ?

C'est une solution.

 

Ou bien encore faire un bloc imbriqué pour que juste le champ se mettent à jour ?

Non, c'est déjà parce que le champ pointe sur un objet appartenant au bloc inséré dans l'espace objet (premier niveau d'imbrication) qu'il ne reflète pas les coordonnées de l'espace objet. Augmenter les niveaux imbrications n'arrangerait rien.

 

Une autre solution serait de créer le champ et le point directement dans l'EO (au besoin en faire un groupe) et copier ces objets là où on aurait inséré le bloc.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Re,

 

Ou bien encore faire un bloc imbriqué pour que juste le champ se mettent à jour ?

 

Je me suis mal exprimé. Je voulais dire qu'à la décomposition on conserverait tout de même le bloc puisque seul le champ ferait parti de l'imbrication de niveau 1.

 

et copier ces objets là où on aurait inséré le bloc.

 

Peux-tu développer un peu STP ?

 

Merci d'avance,

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

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é