Aller au contenu

Question sur l'insertion de champs.


Messages recommandés

Posté(e)

Bonjour,

Est-il possible à l'aide d'insertion de champs qu'Autocad cherche des données en dehors du dessin.

Je m'explique je sais que je peut chercher le nom du fichier du dessin et l'insérer.

J'aimerais appliquer cette méthode mais pour d'autre données (le nom du projet et la ville du projet par exemple).

 

Posté(e)

Hello

Mais tu peux definir des Proprietes personnalisees sur ton DWG et les afficher en tant que CHAMP dynamique ...

Je te conseille de les nommer comme cela : 1_ALPHA , 1_BRAVO, 1_DATE, 1_VERSION, 1_PROJETEUR, 2_xxxxxx, etc

Ainsi elles apparaitront au debut de l enorme ascenseur des Proprietes !

C Tip-Top et cela se remet a jour PARTOUT : Onglet OBJET et TOUTES les Presentations / Layouts

Bye, lecrabe

 

Autodesk Expert Elite Team

Posté(e)

Hello

MAIS il te faut 2 Lisp indispensables de notre grand Maitre Gilles !!

-- Exporter en CSV ces Proprietes personnalisees

-- Importer ces Proprietes personnalisees dans le DWG courant depuis un autre DWG

Ca t interesse ?

Bye, lecrabe

 

Autodesk Expert Elite Team

Posté(e)

Une autre question en parallèle, est ce qu'il est possible de 'figer' des valeurs de champs.

Si je prends pour exemple le champs "Nom du document", pas de soucis dans le dessin originel.

Mais si j'insère ce dessin en tant que Xréf dans un autre, le champ "Nom du document" se met à jour pour refléter le nom du dessin dans lequel il a été inséré.

Posté(e)

Hello

Et donc voici 2 routines indispensables de notre Grand Maitre Gilles pour les Proprietes personnalisees !

-- "DWGProps2CSV" pour exporter en CSV (donc apres Excel) les Proprietes personnalisees ...

-- "IMP_PROP_DWG" pour importer les Proprietes personnalisees dans le DWG courant depuis un autre DWG ...

Bye, lecrabe

 

-- "DWGProps2CSV" --

 

 
;; 
;; https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/lisp-to-extract-data-from-dwgprops-and-place-in-excel/m-p/9071687
;; 
;; Routine: DWGProps2CSV par GC
;; 
;; Le fichier CSV genere est AU MEME Endroit que le DWG xxxxxx ...
;; avec un Nom = xxxxxx_SummaryInfo.csv
;; 

;; 
;; --- Interrogation Entite/Objet en Lisp ---
;; (entget (car (entsel)) '("*"))
;; 

(defun c:DWGProps2CSV (/ doc info filename sep file i prop val)
  (setq doc      (vla-get-ActiveDocument (vlax-get-acad-object))
        info     (vla-get-SummaryInfo doc)
        filename (strcat (getvar 'dwgprefix) (vl-filename-base (getvar 'dwgname)) "_SummaryInfo.csv")
        sep      (vl-registry-read "HKEY_CURRENT_USER\\Control Panel\\International" "sList")
        file     (open filename "w")
  )
  (foreach prop '("Title" "Subject" "Author" "Keywords" "Comments" "HyperlinkBase" "LastSavedBy" "RevisionNumber")
    (write-line (strcat prop sep (vlax-get info prop)) file)
  )
  (setq i 0)
  (repeat (vla-NumCustomInfo info)
    (vla-GetCustomByIndex info i 'prop 'val)
    (write-line (strcat prop sep val) file)
    (setq i (1+ i))
  )
  (close file)
)

 

-- "IMP_PROP_DWG" --

 

 
;; 
;; https://forums.autodesk.com/t5/autocad-tous-produits-francais/comment-copier-les-proprietes-d-un-dessin-dans-un-autre-dessin/m-p/4574327#M38811
;; 
;; Routine: IMP_PROP_DWG par GC
;; 
;; Voir la commande:  PROPDESS / _DWGPROPS
;; 
;; Copier les proprietes personnalisees d'un DWG/DWT dans le DWG courant ...
;; 
;; Ci-dessous le code de la routine IMP_PROP_DWG correctement formaté.
;; 
;; À copier dans un éditeur de texte (bloc-note) et à enregistrer avec l'extension .lsp (et pas .lisp).
;; 
;; Pour de plus amples explications sur le chargement et l'utilisations de routine LISP voir ici :
;; 
;; http://cadxp.com/topic/14323-charger-un-lisp/
;; 
 
(vl-load-com) 

;; IMP_PROP (gile)
;; Importe dans le dessin courant les propriétés personnalisées d'un fichier (dwg ou dwt)

(defun c:Imp_Prop_DWG (/ target filename doc odbx source)
  (or *acdoc*
      (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object)))
  )
  (setq target (vla-get-SummaryInfo *acdoc*))
  (if
    (setq filename (getfiled "Choisir le fichier source"
                             (getvar 'dwgprefix)
                             "dwg;dwt"
                             0
                   )
    )
     (progn
       (if
         (not
           (and
             (setq
               doc (GetItem
                     (vla-get-Documents (vlax-get-acad-object))
                     (strcat (vl-filename-base filename) ".dwg")
                   )
             )
             (= filename (vla-get-FullName doc))
           )
         )
          (setq doc  (OpenDrawingDBX filename)
                odbx T
          )
       )
       (setq source (vla-get-SummaryInfo doc)
             n      -1
       )
       (foreach p
                '(Author Comments HyperlinkBase KeyWords Subject Title)
         (if (/= "" (setq prop (vlax-get source p)))
           (vlax-put target p prop)
         )
       )
       (repeat (vla-NumCustomInfo source)
         (vla-GetCustomByIndex source (setq n (1+ n)) 'key 'val)
         (vla-AddCustomInfo target key val)
       )
       (and odbx (vlax-release-object doc))
     )
  )
  (princ)
)

;;; Accéder à un dessin fermé

(defun OpenDrawingDBX (filename / objdbx release)
  (setq objdbx
         (vlax-create-object
           (if (< (setq release (atoi (getvar "ACADVER"))) 16)
             "ObjectDBX.AxDbDocument"
             (strcat "ObjectDBX.AxDbDocument." (itoa release))
           )
         )
  )
  (vla-open objdbx filename)
  objdbx
)

;;; GetItem (gile)
;;; Retourne le vla-object de l'item s'il est présent dans la collection
;;;
;;; Arguments
;;; col : la collection (vla-object)
;;; name : le nom de l'objet (string) ou son indice (entier)
;;;
;;; Retour : le vla-object ou nil

(defun GetItem (col name / obj)
  (vl-catch-all-apply
    (function (lambda () (setq obj (vla-item col name))))
  )
  obj
)

 

Autodesk Expert Elite Team

Posté(e)

Merci bien, je vais tester tout ça.

Une autre question en parallèle, est ce qu'il est possible de 'figer' des valeurs de champs.

Si je prends pour exemple le champs "Nom du document", pas de soucis dans le dessin originel.

Mais si j'insère ce dessin en tant que Xréf dans un autre, le champ "Nom du document" se met à jour pour refléter le nom du dessin dans lequel il a été inséré.

Posté(e)

Hello

NON on ne peut pas figer les valeurs des champs dynamiques

Si tu veux avoir des valeurs "fixes" tu fais un Decomposer / Exploser du champ dynamique et tu obtiendras un TEXT classique

Bye, lecrabe

 

Autodesk Expert Elite Team

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • 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é