Aller au contenu

Info block


dfbiagio

Messages recommandés

Bonjour à tous,

Comment peut-on en VL extraire les informations comme la suivante:

(setq Objet (entget (car (entsel))))

Select object: ((-1 . <Entity name: 7ffffb2d390>) (0 . "INSERT") (330 . <Entity

name: 7ffffb03a30>) (5 . "33F61") (100 . "AcDbEntity") (67 . 0) (410 . "Model")

(8 . "0") (62 . 1) (100 . "AcDbBlockReference") (2 . "TUYAU-110") (10 474.803

761.156 0.0) (41 . 1.0) (42 . 1.0) (43 . 1.0) (50 . 0.825059) (70 . 0) (71 . 0)

(44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0))

 

J'ai dans ce bloc dynamique une variable que j'ai appelé distance1 que je n'arrive pas à extraire.

Merci d'avance.

Lien vers le commentaire
Partager sur d’autres sites

hello

 

 

voila un lisp avec des explications pour etre plus clair

 

bon week end

 

Phil

 

 

(defun c:infobloc1 ()
 (prompt "\nCLIQUER SUR LE BLOC : POUR RECUPERER L INFO")
 (setq bl1 (ssget (list (cons 0 "insert"))));; on sélectionne un bloc
(foreach prop (vlax-invoke (vlax-ename->vla-object (cdr (assoc -1 (entget (ssname bl1 0)))))
                            'getdynamicblockproperties
               );;; on regarde toutes les propriétées dynamiques
   (if (= (vla-get-propertyname prop) "distance1");; si une propriétée dnamique a le nom "distance1"
        (PROGN
          (setq valeuredeprop (vla-get-value prop));; on regarde pour info comment c est agencé
          (setq valeurextraite (vlax-variant-value (vla-get-value prop)));; on extrait la valeur de la propriété
          )
         )
     )
 valeuredeprop
 valeurextraite
)

Autodesk Architecture 2023 sous windows 11 64

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Lien vers le commentaire
Partager sur d’autres sites

Salut

 

(setq blo (vlax-ename->vla-object (car (entsel)))) ; Sélection du bloc --> #<VLA-OBJECT IAcadBlockReference 000000002cd2e258>
(setq dyn (vlax-invoke blo 'getdynamicblockproperties)) ; Liste des propriétés dynamiques du bloc --> (#<VLA-OBJECT IAcadDynamicBlockReferenceProperty 000000002ce43db8> #<VLA-OBJECT IAcadDynamicBlockReferenceProperty 000000002ce44db8> #<VLA-OBJECT IAcadDynamicBlockReferenceProperty 000000002ce44e38> #<VLA-OBJECT IAcadDynamicBlockReferenceProperty 000000002ce44e78>)

(mapcar 'vlax-dump-object dyn) ; Lister les données dynamiques du bloc

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

Command: infobloc1

 

Select object: ; IAcadDynamicBlockReferenceProperty: AutoCAD Dynamic Block

Property Interface

; Property values:

; AllowedValues (RO) = nil

; Description (RO) = ""

; PropertyName (RO) = "Distance1"

; ReadOnly (RO) = 0

; Show (RO) = -1

; UnitsType (RO) = 2

; Value = 273.781

; IAcadDynamicBlockReferenceProperty: AutoCAD Dynamic Block Property Interface

; Property values:

; AllowedValues (RO) = nil

; Description (RO) = ""

; PropertyName (RO) = "Origin"

; ReadOnly (RO) = -1

; Show (RO) = 0

; UnitsType (RO) = 0

; Value = (-3.74051e-016 0.0)

; IAcadDynamicBlockReferenceProperty: AutoCAD Dynamic Block Property Interface

; Property values:

; AllowedValues (RO) = nil

; Description (RO) = ""

; PropertyName (RO) = "Angle1"

; ReadOnly (RO) = 0

; Show (RO) = -1

; UnitsType (RO) = 1

; Value = 4.71239

; IAcadDynamicBlockReferenceProperty: AutoCAD Dynamic Block Property Interface

; Property values:

; AllowedValues (RO) = nil

; Description (RO) = ""

; PropertyName (RO) = "Origin"

; ReadOnly (RO) = -1

; Show (RO) = 0

; UnitsType (RO) = 0

; Value = (-3.74051e-016 0.0)

(T T T T)

 

Voici ce que j'obtiens. C'est magnifique, mais je ne sais toujours pas comment faire pour placer la valeur de distance1 dans une variable.

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir,

 

J'ai fait un petit essai, tu peux récupérer la valeur avec

(vlax-variant-value (vla-get-value (car dyn)))

en le mettant après

(setq dyn (vlax-invoke blo 'getdynamicblockproperties))

 

Cordialement,

GJulien

Oui, car c'est la 1ere valeur.

Maintenant, si on veut quelque chose de plus générique

(vlax-dump-object (car (vl-remove-if-not '(lambda(x)(eq (vla-get-propertyname x) "Distance1")) dyn)))

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

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é