Aller au contenu

Messages recommandés

Posté(e)

bonjour

 

je voudrais recuperer une propriété personnalisée du dessin pour m'en servir comme variable (presque constante quand meme ) dans un lisp

 

"zeroREF" par exemple

 

ici http://www.cadxp.com/sujetXForum-28879.htm j'ai trouvé ca

(vlax-dump-object (vla-get-summaryinfo (vla-get-activedocument (vlax-get-acad-object))) T)

 

mais ou dois je mettre le "zeroREF" dans cette ligne

 

toto = zeroREF(personnalisé)

 

(setq toto (vlax-dump-object (vla-get-summaryinfo (vla-get-activedocument (vlax-get-acad-object))) T)

 

merci

 

phil

 

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

Bonjour,

 

Une routine trouvée sur internet

 

http://www.cadtutor.net/forum/showthread.php?32034-Drawing-Properties

 

(defun GetInfo(Key / sInf cPrp pVal)
 (vl-load-com)
 (setq sInf(vla-get-SummaryInfo
      (vla-get-ActiveDocument
        (vlax-get-acad-object))))
 (if(vl-catch-all-error-p
       (vl-catch-all-apply 'vla-GetCustomByKey
	   (list sInf Key 'pVal)))
     (princ(strcat "\n*** ERROR. Key '" Key "' not fouund! "))
     (princ(strcat "\n" Key " = " pVal))
   )
 (princ)
 )

www.le-metal.net, sur la métallerie
Posté(e)

Salut

 

Tout dépend de quelle clé tu as besoin

Par exemple, tu lances la commande _dwgprops et tu mets dans le titre "Mon_Titre"

 

Un

(vlax-dump-object (vla-get-summaryinfo (vla-get-activedocument (vlax-get-acad-object))) T)

permet de voir l'ensemble des clés

Donc, un

(vla-get-title (vla-get-summaryinfo (vla-get-activedocument (vlax-get-acad-object))))

me retourne "Mon_Titre"

 

Pour forcer la valeur, un

(vla-put-title (vla-get-summaryinfo (vla-get-activedocument (vlax-get-acad-object))) "Tu es le meilleur")

 

Et pour vérifier que la valeur voulue est bien écrite, on lance la commande _dwgprops et je retrouve mon superbe titre ;)

 

@+

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)

hello

 

merci pour les reponse

 

mais (vla-get-title ....) recupere le titre dans l'onglet résumé

 

dans _dwgprops il y a 4 onglets

"général, résumé, statitiques" avec des noms de valeurs fixes -

 

et l'onglet

"personnaliser" avec des nom de valeurs à personnaliser justement

ce sont ses données la que je voudrais récuperer

 

 

nom : datep1 valeur : le 25/12/2010

nom : datep2 valeur : le 31/01/2011

nom : zeroref valeur : 125.62

 

 

récuperer : le 25/12/2010

ou 125.62

 

a+

 

phil

 

 

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

Salut,

 

As tu regardé les méthodes applicables à l'objet SummaryInfo avec l'expression donnée par Patrick_35 : (vlax-dum-object ...) et/ou dans l'aide aux développeurs (ActiveX and VBA Reference) ?

 

 

(vla-get-CustomByKey (vla-GetSummaryInfo (vla-get-ActiveDocument (vlax-get-acad-object))) "datep1" 'toto)

Affecte la valeur de la propriété personnalisée "datep1" à la variable toto.

 

Mais si aucune propriété nommée "datep1" n'existe, l'expression ci dessus provoquera une erreur.

Le code donné par Titifonky permet d'éviter l'interruption du code si cette erreur survient et renvoie un message.

 

Personnellement j'utilise plutôt cette tournure qui retourne la valeur ou nil si elle n'existe pas :

 

(defun gc:GetCustomByKey (key / val)
 (vl-catch-all-apply
   '(lambda ()
      (vla-GetCustomByKey
 (vla-get-SummaryInfo (vla-get-ActiveDocument (vlax-get-acad-object)))
 key
 'val
      )
    )
 )
 val
)

 

(setq toto (gc:GetCustomByKey "datep1"))

 

 

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

Posté(e)

hello

 

merci gile et les autres pour vos réponses

 

 As tu regardé les méthodes applicables à l'objet SummaryInfo avec l'expression donnée par Patrick_35 :
(vlax-dum-object ...) et/ou dans l'aide aux développeurs (ActiveX and VBA Reference) ?

 

oui j'ai essaye de chercher par moi meme

 

mais comme j'ai du installer internet explorer beta 9

 

j'ai bien lancer une recherche de "vla-GetSummaryInfo" avec l'aide autocad il y a deux jours mais ca tourne encore si tu vois ce que je veux dire

 

l'aide autocad n'en est plus une il ne trouve rien de rien, gros BUGGGGG

 

a+

phil

 

 

 

[Edité le 9/12/2010 par PHILPHIL]

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

Salut,

 

L'aide pour trouver les méthodes et propriétés applicables aux objets COM était dans l'aide aux développeurs à la rubrique ActiveX and VBA Reference (le VBA d'AutoCAD est basé sur cette même interface). Cette rubrique a disparu de l'aide avec la version 2011 (à récupérer sur une version antérieure).

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

  • 3 mois après...
Posté(e)

Bonjour la liste,

Un bout de code par Frank Whaley trouvé sur le groupe de discussion Autodesk.

;; dwgprops.lsp
;;
;; This code demonstrates extraction and insertion of Drawing
;; Properties from LISP. Two functions are provided:
;; '(dp-get)' for extracting Properties to global variables, and
;; '(dp-put)' for inserting Properties from those same global
;; variables. Items that are updated by the save reactor are
;; also shown.
;;

(defun c:dp-get (/ xlist val)
;; shorthand for extraction
(defun val (code)
(cdr (assoc code xlist))
)

;; pick Xrecord from NOD
(setq xlist (dictsearch (namedobjdict) "DWGPROPS"))

;; extract values to global variables
(setq dp:Title (val 2)
dp:Subject (val 3)
dp:Author (val 4)
dp:Comments (val 6)
dp:Keywords (val 7)
dp:LastSavedBy (val 8)
dp:RevisionNo (val 9)
dp:Cust0 (val 300)
dp:Cust1 (val 301)
dp:Cust2 (val 302)
dp:Cust3 (val 303)
dp:Cust4 (val 304)
dp:Cust5 (val 305)
dp:Cust6 (val 306)
dp:Cust7 (val 307)
dp:Cust8 (val 308)
dp:Cust9 (val 309)
)
xlist
)

(defun dp-put (/ xlist safeStr)
;; safe string
(defun safeStr (v)
(if (= 'STR (type v)) v "")
)

;; remove any existing Properties
(dictremove (namedobjdict) "DWGPROPS")

;; make data list
(setq xlist
(list
'(0 . "XRECORD")
'(100 . "AcDbXrecord")
'(1 . "DWGPROPS COOKIE")
(cons 2 (safeStr dp:Title))
(cons 3 (safeStr dp:Subject))
(cons 4 (safeStr dp:Author))
(cons 6 (safeStr dp:Comments))
(cons 7 (safeStr dp:Keywords))
(cons 8 (getvar "loginname"))
(cons 9 (safeStr dp:RevisionNo))
(cons 300 (safeStr dp:Cust0))
(cons 301 (safeStr dp:Cust1))
(cons 302 (safeStr dp:Cust2))
(cons 303 (safeStr dp:Cust3))
(cons 304 (safeStr dp:Cust4))
(cons 305 (safeStr dp:Cust5))
(cons 306 (safeStr dp:Cust6))
(cons 307 (safeStr dp:Cust7))
(cons 308 (safeStr dp:Cust8))
(cons 309 (safeStr dp:Cust9))
(cons 40 (getvar "TDINDWG"))
(cons 41 (getvar "TDCREATE"))
(cons 42 (getvar "TDUPDATE"))
)
)

;; make Xrecord and add to NOD
(dictadd (namedobjdict) "DWGPROPS" (entmakex xlist))
)

;; END of dwgprops.lsp

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é