Aller au contenu

VLisp Copier les Donnees Etendues (AutoCAD Architecture/MEP)


Messages recommandés

Posté(e)

bonjour

voici un LISP pour autocad architecture qui permet de copier des données étendues entre entites placer dans le meme calque que l'entite source

une définition de jeu de propriété par type d'objet est requis, sinon  le lisp va s'enmeller les pinceaux je pense.

a tester

Phil


 

;;;---------------------------------------------------------
;;;copier des données étendues d une entites a dautres
;;;---------------------------------------------------------

(defun c:copier_donnee_etendue ( / COM COMPT DIC DICO1 DICO2 DICOPARAVALUE DICOPARAVALUE1 LISTDONETEN LISTDONETEN1 NOMPROP OBJ OSM PROPERTIES2 PROPSET2 PROPSETS PSD SCHEDAPP SELINSERT TYPEOBJ VALPROP VLAOBJ )
  (setvar "cmdecho" 0)
  (setq osm (getvar "osmode"))

 (setq table1 (ssget "X" (list (cons 0 "AEC_SCHEDULE_TABLE"))))
 (if (/= table1  nil)
 (progn
 (setq compt 0)
  (setq com (sslength table1))
  (while (< compt com)
    (vlax-put-property (vlax-ename->vla-object (cdr (assoc -1 (entget (ssname table1 compt))))) 'AutoUpdate 0)
    (setq compt (1+ compt))
  )
)
  )
 
  (setq obj (entsel "CLIQUER SUR L'ENTITE DE REFERENCE : "))
  (setq vlaobj (vlax-ename->vla-object (car obj)))
  (setq typeobj  (cdr (assoc 0 (entget (car obj))))
        TYPECALK (cdr (assoc 8 (entget (car obj))))
        )
  (setq acadobj (vlax-get-acad-object))
  (setq schedapp (vla-getinterfaceobject acadobj "AecX.AecScheduleApplication.8.5"))
  (setq propsets (vlax-invoke-method schedapp 'propertysets vlaobj))
  (setq psd (dictsearch (namedobjdict) "AEC_PROPERTY_SET_DEFS"))
  (setq dico1 nil)
  (foreach ele psd
    (if (= (car ele) 3)
      (setq dico1 (cons (cdr ele) dico1))
    )
  )
  (setq dico2 nil)
  (foreach di dico1
    (if (/= (vlax-invoke-method propsets 'item di) nil)
      (setq dico2 (cons di dico2))
    )
  )
  (setq dicoparavalue nil)
  (foreach di2 dico2
    (progn (setq propset2 (vlax-invoke-method propsets 'item di2))
           (setq properties2 (vlax-get-property propset2 'properties))
           (vlax-for prop properties2
             (if (/= (vlax-get-property prop 'automatic) :vlax-true)
               (setq dicoparavalue (cons (cons (vlax-get-property prop 'name) (vlax-variant-value (vlax-get-property prop 'value)))
                                         dicoparavalue
                                   )
               )
             )
           )
    )
  )
  (setq dicoparavalue1 (vl-sort dicoparavalue (function (lambda (p1 p2) (< (car p1) (car p2))))))
  (prompt "\nSELECTIONNER LES ENTITES A MODIFIER:")
  (setq selinsert (ssget (list (cons 0 typeobj) (cons 8 typeCALK)    )))
  (setq com (sslength selinsert))
  (boitepropetendue1)
;;;  (decomptedebut)
  (setq listdoneten1 nil)
  (foreach lde listdoneten
    (foreach dpv1 dicoparavalue1
      (if (= (car dpv1) lde)
        (setq listdoneten1 (cons dpv1 listdoneten1))
      )
    )
  )
  (setvar "CURSORSIZE" 100)
  (setq compt 0)
  (setq dic (nth 0 dico2))
  (acet-ui-progress-init "AVANCEMENT" com)
  (while (< compt com)
    (foreach bidyn listdoneten1
      (progn (setq nomprop (car bidyn)
                   valprop (cdr bidyn)
             )
             (command-s "_-aecpropertydataedit" (ssname selinsert compt) "" (strcat dic ":" nomprop) valprop "")
      )
    )
    (acet-ui-progress-init (strcat "AVANCEMENT " (rtos (/ (* compt 100) (float com)) 2 2) " %") com)
    (acet-ui-progress-safe compt)
    (setq compt (1+ compt))
  )
  (acet-ui-progress-done)
(if (/= table1  nil)
 (progn
 (setq compt 0)
  (setq com (sslength table1))
  (while (< compt com)
    (vlax-put-property (vlax-ename->vla-object (cdr (assoc -1 (entget (ssname table1 compt))))) 'AutoUpdate -1)
    (setq compt (1+ compt))
  )
)
  )


 
;;;  (decomptefin)
  (setvar "osmode" osm)
)





(defun boitepropetendue1 (/ tmp file fuzz ret pn av dcl_id val)
  (setq tmp  (vl-filename-mktemp "Tmp.dcl")
        file (open tmp "w")
        ret  nil
  )
  (write-line (strcat "DynBlkProps:dialog{label=\"ENTITES A MODIFIER\";"
                      "
              :text{label=\"NOM DE L'ENTITE SOURCE : \""
                      (vl-prin1-to-string typeobj)
                      ";}
              :text{label=\"Nombre d'entites sélectionnées : "
                      (itoa com)
                      "\"; }

              :boxed_column{label=\"DONNEES ETENDUES\";"
              )
              file
  )
  (foreach pn dicoparavalue1
    (progn (if (= (numberp (cdr pn)) nil)
             (setq lab1 (strcat (car pn) "  =  " (cdr pn)))
             (setq lab1 (strcat (car pn) "  =  " (rtos (cdr pn) 2)))
           )
           (setq test33 (car pn))
           (write-line (strcat ":row{:toggle {label =" (vl-prin1-to-string lab1) ";key = \"" (car pn) "\";value=\"0\";}}")
                       file
           )
    )
  )
  (write-line ":row{:button{key=\"tout\";label=\"TOUT\";}:button{key=\"aucun\";label=\"Aucun\";}}"
              file
  )
  (write-line "}spacer;ok_cancel;}" file)
  (close file)
  (setq dcl_id (load_dialog tmp))
  (if (not (new_dialog "DynBlkProps" dcl_id))
    (exit)
  )
  (action_tile "tout" "(foreach pn dicoparavalue1 (set_tile (car pn) \"1\" ) )")
  (action_tile "aucun" "(foreach pn dicoparavalue1 (set_tile (car pn) \"0\" ))")
  (action_tile
    "accept"
    "(foreach p dicoparavalue1
(if (assoc (car p ) POP2)
(setq val (nth (atoi (get_tile (car p ))) (cdr (assoc (car p ) POP2))))
(setq val (get_tile (car p ))))

(if (and val (/= val \"\"))
(setq ret (cons (cons (car p ) val) ret)))
)
(and (not ret) (setq ret T))
(done_dialog)"
  )
  (action_tile "cancel" "(setq ret nil)")
  (start_dialog)
  (unload_dialog dcl_id)
  (vl-file-delete tmp)
  (setq listdoneten nil)
  (foreach p ret
    (if (= (atoi (cdr p)) 1)
      (setq listdoneten (cons (car p) listdoneten))
    )
  )
)

 

 

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

  • 1 an après...
Posté(e)

merci pour cet appli

bravo 

ici un complément d infos sur les donnés étendues que je n ai pas eus encore l occasion de découvrir

a quoi sa sert ?

comment ?

https://help.autodesk.com/view/ARCHDESK/2025/FRA/?guid=GUID-DEA150C9-A4F6-414F-81F1-4CCB04F8100D

a tester c est claire et sa peu rendre service

moi je suis une bille en lisp

et j essaye de comprendre les interaction entre les jeux de propriétés les classifications, les objets aec les polygones aec…les espaces, les zones

il est excellent ce logiciel 

j avais bcp utilisé Autodesk Architectural Desktop mais etait passé outre de l essentiel les liaison entre styles inteligent

j adore ce soft si meme nouveau

 

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é