Aller au contenu

Création Attribut et Paramètres annotatifs


rom1_am

Messages recommandés

Bonjour,

 

En créant une définition de bloc et ses attributs par programmation, je souhaiterais aussi paramétrer sur la définition de l'attribut les 2 options suivantes que l'on retrouve dans la boîte de dialogue 'Style de texte':

- Annotatif = vrai

=> - Faire correspondre l'orientation du texte à la présentation = vrai

- Hauteur du texte sur le papier = x,00

 

Je ne trouve pas quelles sont les propriétés de la définition d'attribut pour renseigner ces paramètres.

J'ai également essayer d'appliquer un style de texte existant ayant déjà ces paramètres à la définition d'attribut, mais ces paramètres ne sont pas repris correctement sur le bloc qui est créé.

 

Ci-dessous, le code de la fonction.

Merci de votre aide

       public static ObjectId AddAttributeDefinition(
           this BlockTableRecord btr,
           Point3d position,
           string value,
           string tag,
           string prompt,
           ObjectId style,
           bool invisible,
           string layer = "0",
           bool annotative = false)
       {
           ObjectId result = ObjectId.Null;
           Database db = btr.Database;
           using (Transaction tr = db.TransactionManager.StartTransaction())
           {
               AttributeDefinition attDef =
                   new AttributeDefinition(position, value, tag, prompt, style);
               attDef.Invisible = invisible;
               attDef.Layer = layer;
               if (annotative)
               {
                   attDef.Annotative = AnnotativeStates.True;
                   
               }
               result = btr.AppendEntity(attDef);
               tr.AddNewlyCreatedDBObject(attDef, true);
               tr.Commit();
           }
           return result;
       }

_______________________________

R.A.

Développeur AutoCAD C#.net

www.danialu.fr

Lien vers le commentaire
Partager sur d’autres sites

Il y a certaines données liées à l'annotativité qui sont stockées dans les données étendues. C'est peut être là qu'il faut regarder : http://adndevblog.typepad.com/autocad/2012/07/identifying-whether-dim-style-is-annotative-or-not.html

Maxence DELANNOY

Développement de compléments aux logiciels Autodesk : AutoCAD, Revit, Inventor, Vault, Navisworks... et autres logiciels de CAO

WIIP - http://wiip.fr

Lien vers le commentaire
Partager sur d’autres sites

Merci, j'ai fouillé dans les xdata mais je n'ai rien trouvé.

 

A priori, je pense avoir résolu le problème en ajoutant l'instruction 'SetFromStyle':

attDef.Annotative = AnnotativeStates.True;
attDef.SetFromStyle();

 

Il faut que je teste un peu plus mais ça a l'air d'être bon.

 

EDIT: c'est bon, cela a bien résolu le problème.

Modifié par rom1_am

_______________________________

R.A.

Développeur AutoCAD C#.net

www.danialu.fr

Lien vers le commentaire
Partager sur d’autres sites

Salut Romain,

 

J'arrive un peu tard, mais si tu veux ne pas dépendre des paramètres d'un style de texte (avec un style non annotatif par exemple), tu peux utiliser SetPaperOrientation() :

 

        public static ObjectId AddAttributeDefinition(
           this BlockTableRecord btr,
           Point3d position,
           string value,
           string tag,
           string prompt,
           ObjectId style,
           bool invisible,
           string layer = "0",
           bool annotative = false,
           bool paperOrient = false)
       {
           ObjectId result = ObjectId.Null;
           Database db = btr.Database;
           using (Transaction tr = db.TransactionManager.StartTransaction())
           {
               AttributeDefinition attDef =
                               new AttributeDefinition(position, value, tag, prompt, style);
               attDef.Invisible = invisible;
               attDef.Layer = layer;
               if (annotative)
               {
                   attDef.Annotative = AnnotativeStates.True;
                   attDef.SetPaperOrientation(paperOrient);
               }
               result = btr.AppendEntity(attDef);
               tr.AddNewlyCreatedDBObject(attDef, true);
               tr.Commit();
           }
           return result;
       }

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

Lien vers le commentaire
Partager sur d’autres sites

Salut Romain,

 

En fait, souvent j'utilise l'Intellisense "à l'intuition". Par exemple, si tu tapes "attDef.paper", l'Intellisense te propose toutes les méthodes et propriétés qui contiennent "paper".

PaperOrientation.png

Ensuite je regarde les docs, et bien sûr, je teste.

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

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é