Aller au contenu

Messages recommandés

Posté(e)

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.

Posté(e)

Bonjour à tous,

je vois que je n'ai pas de réponse à ma question. Je vais poser ma question autrement. Comment puis-je faire pour extraire la variable "distance1" de mon bloc dynamique.

Merci d'avance.

BàV.

Posté(e)

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
)

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

Après l'avoir essayé, voici ce qu'il met

 

Command: infobloc1

 

CLIQUER SUR LE BLOC : POUR RECUPERER L INFO

Select objects: 1 found

 

Select objects:

; error: no function definition: VLAX-ENAME->VLA-OBJECT

Posté(e)

Command: INFOBLOC1

CLIQUER SUR LE BLOC : POUR RECUPERER L INFO

Select objects: Specify opposite corner: 31 found

 

Select objects:

nil

 

J'ai toujours pas les valeurs de distance1 :rolleyes:

Posté(e)

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

Posté(e)

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.

Posté(e)

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

Posté(e)

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

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é