zebulon_ Posté(e) le 16 avril 2007 Posté(e) le 16 avril 2007 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.0T 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 amusementAmicalementZebulon_ 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)
(gile) Posté(e) le 16 avril 2007 Posté(e) le 16 avril 2007 Très intéressant, merci beaucoup ;) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Didier-AD Posté(e) le 17 avril 2007 Posté(e) le 17 avril 2007 Bon amusementAmicalementZebulon_ 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
zebulon_ Posté(e) le 18 avril 2007 Auteur Posté(e) le 18 avril 2007 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. AmicalementZebulon_ 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)
Didier-AD Posté(e) le 25 avril 2007 Posté(e) le 25 avril 2007 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
Messages recommandé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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant