乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 97|回复: 3

[编程交流] Creating non-grapical input in

[复制链接]

2

主题

4

帖子

2

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 07:42:21 | 显示全部楼层 |阅读模式
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)
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 08:21:23 | 显示全部楼层
Consider using DWGPROPS Command, or even Sheet Set Manager
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 08:42:05 | 显示全部楼层
... More on Dictionaries and XRecords from AfraLISP:
 
http://www.afralisp.net/autolisp/tutorials/dictionaries-and-xrecords.php
回复

使用道具 举报

8

主题

159

帖子

153

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 08:47:11 | 显示全部楼层
  1. ; [DCT] ===================================================================================== ;; 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                                  ;
  1. ; =========================================================================================== ;; Dodaje slownik / Adds dictionary                                                            ;;  Root [ENAME/nil] - ENAME = slownik "rodzic" / "parent" dictionary                          ;;                     nil   = (namedobjdict) jako "rodzic" / (namedobjdict) as "parent"       ;;  Name [sTR]       - 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/nil] - ENAME = slownik "rodzic" / "parent" dictionary                         ;;                      nil   = (namedobjdict) jako "rodzic" / (namedobjdict) as "parent"      ;;  XName [sTR]       - nazwa xrecord / xrecord name                                           ;;  XData
  2. [list]      - 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/nil] - ENAME = slownik "rodzic" / "parent" dictionary                          ;;                     nil   = (namedobjdict) jako "rodzic" / (namedobjdict) as "parent"       ;;  Name [sTR]       - 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] - ENAME = slownik "rodzic" / "parent" dictionary                              ;;  Code [T/nil] - 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  [ENAME/VLA-Object] - obiekt VLA lub entycja / VLA-Object or entity name               ;;  Flag [T/nil] - 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 [ENAME] - nazwa entycji / entity name                                                ;;  Flag  [T/nil] - 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 [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/nil] - ENAME = slownik "rodzic" / "parent" dictionary                          ;;                     nil   = (namedobjdict) jako "rodzic" / (namedobjdict) as "parent"       ;;  Name [sTR]       - 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 [ENAME] - nazwa entycji xrecord / entity name xrecord                                ;;  Data  
  3. [list]  - 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 [ENAME] - nazwa entycji / entity name                                                ;;  Data  
  4. [list]  - 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  [iNT]  - klucz / key                                                                  ;;  Data
  5. [list] - 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))
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-9 21:35 , Processed in 0.454498 second(s), 60 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表