Aller au contenu

propiété des blocs dynamiques


zebulon_

Messages recommandés

Bonjour,

 

je me suis un peu cassé la tête sur le sujet. Du coup je vous transmet ce qu'il en est sorti.

 

Pour commencer, j'ai fouillé dans les exemples fournis par autocad et j'ai pris :

c:\program files\Autocad 2007\sample\dynamic blocks\Architectural - Metric.dwg

 

A l'intérieur, il y a un bloc nommé :

Arbres - Métrique

 

que j'ai inséré dans un fichier.

 

(setq e (entlast))

(setq e (vlax-ename->vla-object e))

 

puis, pour voir ce que la variable e à dans le ventre

(vlax-dump-object e)

 

ce qui m'affiche

; IAcadBlockReference: Interface AutoCAD Block Reference

; Valeurs de propriétés:

; Application (RO) = #

; Document (RO) = #

; EffectiveName (RO) = "Arbres - Métrique"

; Handle (RO) = "943"

; HasAttributes (RO) = 0

; HasExtensionDictionary (RO) = 0

; Hyperlinks (RO) = #

; InsertionPoint = (9664.44 1374.54 0.0)

; InsUnits (RO) = "Millimètres"

; InsUnitsFactor (RO) = 1.0

; IsDynamicBlock (RO) = -1

; Layer = "0"

; Linetype = "ByLayer"

; LinetypeScale = 1.0

; Lineweight = -1

; Material = "ByLayer"

; Name = "Arbres - Métrique"

; Normal = (0.0 0.0 1.0)

; ObjectID (RO) = 2130306584

; ObjectName (RO) = "AcDbBlockReference"

; OwnerID (RO) = 2119204088

; PlotStyleName = "ByLayer"

; Rotation = 0.0

; TrueColor = #

; Visible = -1

; XEffectiveScaleFactor = 1.0

; XScaleFactor = 1.0

; YEffectiveScaleFactor = 1.0

; YScaleFactor = 1.0

; ZEffectiveScaleFactor = 1.0

; ZScaleFactor = 1.0

T

 

Mais, a priori, rien qui permettrait de bricoler les paramètres du bloc dynamique

 

Allons voir plus loin :

(setq dbp (vla-getdynamicblockproperties e))

qui nous renvoie un variant

 

puis :

(setq dbp (vlax-variant-value dbp))

pour avoir une safearray

 

ensuite :

(setq dbp (vlax-safearray->list dbp))

qui nous donne

(#< VLA-OBJECT IAcadDynamicBlockReferenceProperty 203a1024>)

 

ça commence à devenir intéressant puisqu'on vient de trouver la liste des paramètres du bloc dynamique. En l'occurrence, il n'y a qu'un seul paramètre, qu'on peut extraire avec car. Sinon, s'il y a plusieurs paramètres, on peut envisager d'utiliser un foreach pour les passer en revue.

 

Donc, je prend le premier élément de la liste

(setq bp (car dbp))

puis j'en fais un dump

(vlax-dump-object bp)

; IAcadDynamicBlockReferenceProperty: Interface Propriétés de blocs dynamiques

d'AutoCAD

; Valeurs de propriétés:

; AllowedValues (RO) = ("Palmier (vue en plan)" "Palmier (élévation)"

"Arbuste (vue en plan)" "Arbuste (élévation)" "Type 1 A feuillage persistant

(vue en plan)" "Type 1 A feuillage persistant (élévation)" ... )

; Description (RO) = "Sélectionnez la vue et le type d'arbre à afficher"

; PropertyName (RO) = "Type (vue)"

; ReadOnly (RO) = 0

; Show (RO) = -1

; UnitsType (RO) = 0

; Value = "Palmier (vue en plan)"

T

 

Il y a l'air d'y avoir tout en stock :

la liste des valeurs admises par exemple :

(setq ListeAdmis (vlax-safearray->list (vlax-variant-value (vla-get-AllowedValues bp))))

 

c'est une liste de variants, dont on peut récupérer les valeurs "en clair" en faisant

(setq ListeAdmis (mapcar 'vlax-variant-value ListeAdmis))

 

et on récupère une belle liste de ce style

("Palmier (vue en plan)" "Palmier (élévation)" "Arbuste (vue en plan)" "Arbuste (élévation)" "Type 1 A feuillage persistant (vue en plan)" "Type 1 A feuillage persistant (élévation)" "Type 2 A feuillage caduc (vue en plan)" "Type 2 A feuillage caduc (élévation)" "Type 2 A feuillage persistant (vue en plan)"

"Type 2 A feuillage persistant (élévation)" "Type 3 A feuillage persistant (vue en plan)" "Type 3 A feuillage persistant (élévation)")

 

Maintenant, je voudrais changer la visualisation de ce bloc dynamique qui, par défaut, est "Palmier (vue en plan)". On retrouve cette info dans la propriété Value, qu'il suffit de changer en utilisant une des valeurs de la liste ci dessus :

 

(vla-put-value bp "Type 3 A feuillage persistant (élévation)")

Et l'affichage change. Magnifique non ? :)

 

Voilà pour le paramètre de visibilité d'un bloc dynamique. Pour les autres paramètres, c'est a peu près pareil avec d'autres noms de propriétés.

 

Bon amusement

Amicalement

Zebulon_

  • Upvote 2

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Lien vers le commentaire
Partager sur d’autres sites

Bon amusement

Amicalement

Zebulon_

 

Merci beaucoup Zebulon

Merci pour toutes ces nuits que je vais sûrement blanchir à essayer de pousser un peu plus la porte que tu viens d'entr'ouvrir...

Et le pire, c'est que je suis sur que çà va tout de même m'amuser.....

 

Merci encore

Lien vers le commentaire
Partager sur d’autres sites

Merci pour toutes ces nuits que je vais sûrement blanchir à essayer de pousser un peu plus la porte que tu viens d'entr'ouvrir...

 

posté à 00:18... :exclam: tu ne dors jamais ? (mais bon, comme CadXp est encore à l'heure d'hiver, il devait être 23:18). Le monde appartient à ceux qui se lèvent tôt, pas à ceux qui se couchent tard.

 

Au fait, ça n'a rien à voir avec le sujet, mais le AD de Didier-AD, ça a à voir quelque chose avec AD-COF, AD-FER et AD-TOPO de la société Progiscad ou travaille un certain François DUHEM ?

 

Je ne les connais pas spécialement, mais je me suis un peu intéressé à AD-FER et à Armacad, comme il m'arrive de devoir ferrailler quelques ouvrages.

 

Amicalement

Zebulon_

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Lien vers le commentaire
Partager sur d’autres sites

Le monde appartient à ceux qui se lèvent tôt, pas à ceux qui se couchent tard.

Je n'ai pas envie que le monde m'appartienne. Et puis, développer la nuit, quand tout est calme, quand le téléphone ne sonne pas....

Au fait, ça n'a rien à voir avec le sujet, mais le AD de Didier-AD, ça a à voir quelque chose avec AD-COF, AD-FER et AD-TOPO de la société Progiscad ou travaille un certain François DUHEM ?

Damned, je suis fait !

Francois est mon fils au sens génétique du terme (enfin c'est ce que me dit sa mère et au vu de la passion qu'il a pour le développement, je veux bien la croire)

ADFER est mon bébé au départ au sens informatique du terme. mais je ne fais pas partie de Progiscad

 

ne vas surtout pas crier tout çà sur les toits (ou les forums).

 

cordialement

 

 

Lien vers le commentaire
Partager sur d’autres sites

  • 3 ans après...

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é