P Raja 发表于 2022-7-6 07:42:21

Creating non-grapical input in

Hi all...i would like to keep a record of non-graphical information's into a drawing. i would like to keep the records of drawing like
*Project number
*customer name &
*Revision number as a non graphical data inside the autocad.
i found that we can use "dictadd" to store data's inside a drawing and can retrieve from it at any time...
can anyone help me? how can i add a data by using "dictadd" and also advise how can i edit the stored data? (ex. incase i do revision 2, i need to change the revision number value)

BlackBox 发表于 2022-7-6 08:21:23

Consider using DWGPROPS Command, or even Sheet Set Manager

BlackBox 发表于 2022-7-6 08:42:05

... More on Dictionaries and XRecords from AfraLISP:
 
http://www.afralisp.net/autolisp/tutorials/dictionaries-and-xrecords.php

Guest kruuger 发表于 2022-7-6 08:47:11

; ===================================================================================== ;; cd:DCT_AddDict          - Dodaje slownik / Adds the dictionary                              ;; cd:DCT_AddXrecord       - Dodaje Xrecord / Adds the Xrecord                                 ;; cd:DCT_GetDict          - Pobiera slownik / Gets a dictionary                               ;; cd:DCT_GetDictList      - Pobiera liste slownikow / Gets a list of dictionaries             ;; cd:DCT_GetExtDict       - Pobiera/Tworzy ExtensionDict. / Gets/Creates an ExtensionDict.    ;; cd:DCT_GetExtDictVLA    - Pobiera/Tworzy ExtensionDict. / Gets/Creates an ExtensionDict.    ;; cd:DCT_GetXrecord       - Pobiera Xrecord / Gets Xrecord                                    ;; cd:DCT_RemoveDict       - Usuwa slownik / Removes the dictionary                            ;; cd:DCT_ReplaceXrecord   - Podmienia Xrecord / Replace Xrecord                               ;; cd:DCT_SetXrecordVLA    - Zmienia Xrecord / Change Xrecord                                  ;
; =========================================================================================== ;; Dodaje slownik / Adds dictionary                                                            ;;Root - ENAME = slownik "rodzic" / "parent" dictionary                        ;;                     nil   = (namedobjdict) jako "rodzic" / (namedobjdict) as "parent"       ;;Name        - nazwa slownika / name of the dictionary                                 ;; ------------------------------------------------------------------------------------------- ;; (cd:DCT_AddDict (namedobjdict) "NAZWA")                                                   ;; =========================================================================================== ;(defun cd:DCT_AddDict (Root Name) (dictadd (if (not Root) (namedobjdict) Root) Name   (entmakex (append '((0 . "DICTIONARY")(100 . "AcDbDictionary")))) )); =========================================================================================== ;; Dodaje Xrecord / Adds the Xrecord                                                         ;;Root - ENAME = slownik "rodzic" / "parent" dictionary                         ;;                      nil   = (namedobjdict) jako "rodzic" / (namedobjdict) as "parent"      ;;XName        - nazwa xrecord / xrecord name                                           ;;XData
      - dane xrecord / xrecord data                                          ;; ------------------------------------------------------------------------------------------- ;; (cd:DCT_AddXrecord (cd:DCT_GetDict (namedobjdict) "NAZWA") "NAZWA-SUB1" '((1 . "ABC")))   ;; =========================================================================================== ;(defun cd:DCT_AddXrecord (Root XName XData) (dictadd (if (not Root) (namedobjdict) Root) XName   (entmakex (append '((0 . "XRECORD")(100 . "AcDbXrecord")) XData)) )); =========================================================================================== ;; Pobiera slownik / Gets a dictionary                                                         ;;Root - ENAME = slownik "rodzic" / "parent" dictionary                        ;;                     nil   = (namedobjdict) jako "rodzic" / (namedobjdict) as "parent"       ;;Name        - nazwa slownika / name of the dictionary                                 ;; ------------------------------------------------------------------------------------------- ;; (cd:DCT_GetDict (namedobjdict) "NAZWA")                                                   ;; =========================================================================================== ;(defun cd:DCT_GetDict (Root Name) (cdr (assoc -1 (dictsearch (if (not Root) (namedobjdict) Root) Name)))); =========================================================================================== ;; Pobiera liste slownikow "rodzica" / Gets a list of "parent" dictionaries                  ;;Root - ENAME = slownik "rodzic" / "parent" dictionary                              ;;Code - T   = zwraca / returns -> (( . ) ... )                  ;;               nil = zwraca / returns -> (... )                      ;; ------------------------------------------------------------------------------------------- ;; (cd:DCT_GetDictList (cd:DCT_GetDict (namedobjdict) "NAZWA") T)                              ;; =========================================================================================== ;(defun cd:DCT_GetDictList (Root Code / dt tmp res) (if Root   (if Code   (progn       (setq dt (entget Root))       (while         (setq dt (member (setq tmp (assoc 3 dt)) dt))         (setq res (cons (cons (cdr tmp) (cdadr dt)) res)               dt (cdr dt)         )       )       (setq res (reverse res))   )   (setq res (cd:DXF_massoc 3 (entget Root)))   ) ) res); =========================================================================================== ;; Pobiera/Tworzy ExtensionDictionary obiektu / Gets/Creates an ExtensionDictionary of object;;Obj - obiekt VLA lub entycja / VLA-Object or entity name               ;;Flag - T   = tworzy / creates                                                      ;;               nil = pobiera jesli istnieje / gets if exist                              ;; ------------------------------------------------------------------------------------------- ;; (cd:DCT_GetExtDictVLA (car (entsel)) T)                                                   ;; =========================================================================================== ;(defun cd:DCT_GetExtDictVLA (Obj Flag / res) (if (= (type Obj) (quote ENAME))   (setq Obj (vlax-ename->vla-object Obj)) ) (if   (setq res   (if (= :vlax-true (vla-get-HasExtensionDictionary Obj))       (vla-GetExtensionDictionary Obj)       (if Flag (vla-GetExtensionDictionary Obj))   )   )   (vlax-vla-object->ename res) )); =========================================================================================== ;; Pobiera/Tworzy ExtensionDictionary obiektu / Gets/Creates an ExtensionDictionary of object;;Ename - nazwa entycji / entity name                                                ;;Flag - T   = tworzy / creates                                                   ;;                  nil = pobiera jesli istnieje / gets if exist                               ;; ------------------------------------------------------------------------------------------- ;; (cd:DCT_GetExtDict (car (entsel)) T)                                                      ;; =========================================================================================== ;(defun cd:DCT_GetExtDict (Ename Flag / res he ta) (if   (and   (= (type Ename) (quote ENAME))      (setq dt (entget Ename))   )   (if (not (setq res (cdr (assoc 360 (member '(102 . "{ACAD_XDICTIONARY") dt)))))   (if Flag       (progn         (setq res (entmakex (append '((0 . "DICTIONARY") (100 . "AcDbDictionary"))))               he (reverse (member (assoc 5 dt) (reverse dt)))               ta (cdr (member (assoc 5 dt) dt))         )         (entmod         (append             he             (list               '(102 . "{ACAD_XDICTIONARY")               (cons 360 res)            '(102 . "}")             )             ta         )         )       )   )   ) ) res); =========================================================================================== ;; Pobiera Xrecord / Gets Xrecord                                                            ;;Ename - nazwa entycji / entity name                                                ;; ------------------------------------------------------------------------------------------- ;; (cd:DCT_GetXrecord (cdar (cd:DCT_GetDictList (cd:DCT_GetDict (namedobjdict) "NAZWA") T)))   ;; =========================================================================================== ;(defun cd:DCT_GetXRecord (Ename / dt) (cdr (member (assoc 280 (setq dt (entget Ename))) dt))); =========================================================================================== ;; Usuwa slownik / Removes the dictionary                                                      ;;Root - ENAME = slownik "rodzic" / "parent" dictionary                        ;;                     nil   = (namedobjdict) jako "rodzic" / (namedobjdict) as "parent"       ;;Name        - nazwa slownika / name of the dictionary                                 ;; ------------------------------------------------------------------------------------------- ;; (cd:DCT_RemoveDict (namedobjdict) "NAZWA")                                                ;; =========================================================================================== ;(defun cd:DCT_RemoveDict (Root Name) (dictremove (if (not Root) (namedobjdict) Root) Name)); =========================================================================================== ;; Podmienia Xrecord / Replace Xrecord                                                         ;;Ename - nazwa entycji xrecord / entity name xrecord                              ;;Data
- lista par kropkowych / list of dotted pairs                              ;; ------------------------------------------------------------------------------------------- ;; (cd:DCT_ReplaceXrecord                                                                      ;;   (cdar (cd:DCT_GetDictList (cd:DCT_GetDict (namedobjdict) "NAZWA") T))                     ;;   (list (cons 1 "NEW") (cons 341 (car (entsel)))))                                          ;; =========================================================================================== ;(defun cd:DCT_ReplaceXrecord (Ename Data / en root name) (setq root (cdr (assoc 330 (entget Ename)))       name (cdr            (assoc                Ename                (mapcar                  (function                  (lambda (%)                      (cons (cdr %) (car %))                  )                  )                  (cd:DCT_GetDictList root T)                )            )            ) ) (if (cd:DCT_RemoveDict root name)   (progn   (setq en (cd:DCT_AddXrecord root name Data))   (cd:DCT_GetXRecord en)   ) )); =========================================================================================== ;; Zmienia Xrecord / Change Xrecord                                                            ;;Ename - nazwa entycji / entity name                                                ;;Data
- lista par kropkowych / list of dotted pairs                              ;; ------------------------------------------------------------------------------------------- ;; (cd:DCT_SetXrecordVLA                                                                     ;;   (cdar (cd:DCT_GetDictList (cd:DCT_GetDict (namedobjdict) "NAZWA") T))                     ;;   (list (cons 1 "NEW123") (cons 341 (car (entsel)))))                                       ;; =========================================================================================== ;(defun cd:DCT_SetXrecordVLA (Ename Data / n) (setq n (1- (length Data))) (vla-SetXRecordData   (vlax-ename->vla-object Ename)   (vlax-make-variant   (vlax-safearray-fill       (vlax-make-safearray         vlax-vbInteger         (cons 0 n)       )       (mapcar (quote car) Data)   )   )   (vlax-make-variant   (vlax-safearray-fill       (vlax-make-safearray         vlax-vbVariant         (cons 0 n)       )       (mapcar         (function         (lambda (% / %1)             (setq %1 (type %))             (cond               ( (= %1 (quote ENAME)) (vlax-ename->vla-object %))               ( (= %1 (quote LIST)) (vlax-3d-point %))               (T %)             )         )         )         (mapcar (quote cdr) Data)       )   )   ) ) (cd:DCT_GetXRecord Ename)); =========================================================================================== ;; Zwraca wartosc danego klucza z listy asocjacyjnej /                                       ;; Returns the value of a key from assoc list                                                ;;Key- klucz / key                                                                  ;;Data
- lista par kropkowych / list of dotted pairs                                  ;; ------------------------------------------------------------------------------------------- ;; (cd:DXF_Massoc 10 (entget (car (entsel))))                                                ;; =========================================================================================== ;(defun cd:DXF_Massoc (Key Data / res tmp) (while   (setq Data (member (setq tmp (assoc Key Data)) Data))   (setq res (cons (cdr tmp) res)         Data (cdr Data)   ) ) (reverse res))
页: [1]
查看完整版本: Creating non-grapical input in