找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1683|回复: 8

[LISP程序]:请高手帮帮我,关于XRecord的

[复制链接]
发表于 2004-11-19 22:29:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
“JPG”文件显示上面有一个快是“地藉基本属性”下面的是“地藉扩展属性”

“地藉基本属性”是在实体的扩展数据里面没错,可是“地藉扩展属性”像“区号”等都是在扩展记录里面,而且是以“southdiji”命名的字典,我用上面的方法试了,查不出来,用ENTGET直接去360组得到的,麻烦在帮我看看咯 ,我不知道怎么修改,直接这样更新"XRECORD")实体没用。
真的急用。谢谢

这是实体的360组
((-1 . <Entity name: 4008d2b8>) (0 . "DICTIONARY") (330 .
<Entity name: 4008cd88>) (5 . "8D7") (100 . "AcDbDictionary") (280 . 1) (281 .
1) (3 . "SOUTHDIJI") (360 . <Entity name: 4008d2c0>))

这就是属性
((-1 . <Entity name: 4008d2c0>) (0 . "XRECORD") (5 . "8D8") (102
. "{ACAD_REACTORS") (330 . <Entity name: 4008d2b8>) (102 . "}") (330 . <Entity
name: 4008d2b8>) (100 . "AcDbXrecord") (280 . 1) (1 . "01") (1 . "") (1 . "")
(1 . "") (1 . "") (1 . "") (1 . "") (1 . "") (1 . "") (1 . "") (1 . "") (1 .
"") (1 . "") (1 . "") (1 . "") (1 . "") (1 . "") (1 . "") (1 . "") (1 . "") (1
. "") (1 . "") (1 . "") (40 . 144.169) (40 . 0.0) (40 . 0.0) (70 . 1) (70 . 1)
(70 . 1) (70 . 1))

(1 . "01")就是区号
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-11-20 00:08:11 | 显示全部楼层
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-11-20 00:43:16 | 显示全部楼层
太穷了,得想办法赚钱了,呵呵~~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-11-21 09:54:49 | 显示全部楼层
别这样啊,我问了很久了,怎么没人能真正看下我的数据吗?
扩展记录是在实体上的,字典里面根本没有
你们写的方法根本就查不到,也修改不了
麻烦你们试一下
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-11-21 23:31:47 | 显示全部楼层
最初由 小狼 发布
[B]别这样啊,我问了很久了,怎么没人能真正看下我的数据吗?
扩展记录是在实体上的,字典里面根本没有
你们写的方法根本就查不到,也修改不了
麻烦你们试一下 [/B]

[iframe h=600]http://www.cadian.com/board_qna/content.asp?idx=6376&page=3&mcate=B[/iframe]


[iframe h=600]http://www.xoutside.com/CAD/chair/lisp/num65/011129--65.htm[/iframe]


  1. (vl-load-com)
  2. (if (not *acadx*)
  3.   (setq        *acadx*
  4.          (vla-getInterfaceObject
  5.            (vlax-get-acad-object)
  6.            "AcadX.Application"
  7.          )
  8.   )
  9. )
  10. (defun GetDataTip (vArgs / args Entity SubEntity ex)
  11.   (setq        args          (vlax-safeArray->list (vlax-variant-value vArgs))
  12.         Entity          (car args)
  13.         SubEntity (cadr args)
  14.   )
  15.   (if (vl-catch-all-error-p
  16.         (setq ex (vl-catch-all-apply
  17.                    'dict-obj-get
  18.                    (list SubEntity "kht1")
  19.                  )
  20.         )
  21.       )
  22.     (strcat "? ?????? ?? ??? ????.\n")
  23.     (strcat
  24.       "???"
  25.       (vlax-invoke-method
  26.         *acadx*
  27.         'GetDXFName
  28.         SubEntity
  29.       )
  30.       "???!!"
  31.       "\n????1 : "
  32.       (car ex)
  33.       "\n"
  34.       "\n????2 : "
  35.       (cadr ex)
  36.       "\n"
  37.       "\n??? ***? ??? ???."
  38.     )
  39.   )
  40. )
  41. (defun dict-obj-get (obj       RecordName           /             acadObject
  42.                      acadDocument         obj           dicts     dict
  43.                      xrec      typ         dat
  44.                     )
  45.   (vl-load-com)
  46.   (setq dict (vla-getextensionDictionary obj))
  47.   (setq xrec (VLA-AddXRecord DICT RecordName))
  48.   (vla-getxrecorddata xrec 'typ 'dat)
  49.   (setq typ (vlax-safearray->list typ))
  50.   (setq dat (vlax-safearray->list dat))
  51.   (mapcar 'vlax-variant-value dat)
  52. )
  53. (defun TipActive (UseChk /)
  54.   (command "vbastmt"
  55.            (strcat "thisdrawing.datatip.active = "
  56.                    (if UseChk
  57.                      "True"
  58.                      "False"
  59.                    )
  60.            )
  61.   )
  62. )
  63. (defun vlax-TipActive (UseChk / datatip)
  64.   (setq datatip (vlax-get-property *acadx* 'datatip))
  65.   (vlax-put-property
  66.     datatip
  67.     'active
  68.     (if        UseChk
  69.       :vlax-true
  70.       :vlax-false
  71.     )
  72.   )
  73. )
  74. (defun TipDelay        (Time /)
  75.   (if (< time 10)
  76.     (setq time "10")
  77.     (setq time (itoa (fix time)))
  78.   )
  79.   (command "vbastmt"
  80.            (strcat "thisdrawing.datatip.ShowDelay = " time)
  81.   )
  82. )
  83. (defun vlax-TipDelay (Time / datatip)
  84.   (if (< time 10)
  85.     (setq time 10)
  86.     (setq time (fix time))
  87.   )
  88.   (setq datatip (vlax-get-property *acadx* 'datatip))
  89.   (vlax-put-property datatip 'ShowDelay time)
  90. )
  91. (defun kht:list->variantArray (ptsList datatype / arraySpace sArray)
  92.   (setq        arraySpace
  93.          (vlax-make-safearray
  94.            (eval datatype)
  95.            (cons 0
  96.                  (- (length ptsList) 1)
  97.            )
  98.          )
  99.   )
  100.   (setq sArray (vlax-safearray-fill arraySpace ptsList))
  101.   (vlax-make-variant sArray)
  102. )

  103. (defun kht:list->intlist (lis / n)
  104.   (setq n 0)
  105.   (mapcar '(lambda (x) (setq n (1+ n))) lis)
  106. )

  107. (defun dict-set-get
  108.        (lis / acadObject acadDocument dicts dict xrec typ dat)
  109.   (vl-load-com)

  110.   (setq acadObject (vlax-get-acad-object))
  111.   (setq acadDocument (vla-get-ActiveDocument acadObject))
  112.   (setq dicts (vla-get-Dictionaries acadDocument))
  113.   (setq dict (vlax-invoke dicts "ADD" "mydict"))
  114.   (setq xrec (VLA-AddXRecord DICT "kht1"))

  115.   (vla-SetXRecordData
  116.     xrec
  117.     (kht:list->variantArray
  118.       (kht:list->intlist lis)
  119.       'vlax-vbinteger
  120.     )
  121.     (kht:list->variantArray lis 'vlax-vbvariant)
  122.   )

  123.   (vla-getxrecorddata xrec 'typ 'dat)
  124.   (setq typ (vlax-safearray->list typ))
  125.   (setq dat (vlax-safearray->list dat))
  126.   (mapcar 'vlax-variant-value dat)
  127. )
  128. (defun kht:list->variantArray (ptsList datatype / arraySpace sArray)
  129.   (setq        arraySpace
  130.          (vlax-make-safearray
  131.            (eval datatype)
  132.            (cons 0
  133.                  (- (length ptsList) 1)
  134.            )
  135.          )
  136.   )
  137.   (setq sArray (vlax-safearray-fill arraySpace ptsList))
  138.   (vlax-make-variant sArray)
  139. )
  140. ;; ? (kht:list->intlist '("as" "sfds" "fdsf")) => (1 2 3)
  141. (defun kht:list->intlist (lis / n)
  142.   (setq n 0)
  143.   (mapcar '(lambda (x) (setq n (1+ n))) lis)
  144. )

  145. (defun dict-set-get
  146.        (lis / acadObject acadDocument dicts dict xrec typ dat)
  147.   (vl-load-com)

  148.   (setq acadObject (vlax-get-acad-object))
  149.   (setq acadDocument (vla-get-ActiveDocument acadObject))
  150.   (setq dicts (vla-get-Dictionaries acadDocument))
  151.   (setq dict (vlax-invoke dicts "ADD" "mydict"))
  152.   (setq xrec (VLA-AddXRecord DICT "kht1"))
  153.   (vla-SetXRecordData
  154.     xrec
  155.     ;; SetXRecordData ? type ?? integer variant ???
  156.     ;; ?(list)? variant ??? ?????.
  157.     ;; kht:list->variantArray ??? ???? ???? ??? ???? ?????.
  158.     (kht:list->variantArray
  159.       (kht:list->intlist lis)
  160.       'vlax-vbinteger
  161.     )
  162.     (kht:list->variantArray lis 'vlax-vbvariant)
  163.   )
  164.   (vla-getxrecorddata xrec 'typ 'dat)
  165.   (setq typ (vlax-safearray->list typ))
  166.   (setq dat (vlax-safearray->list dat))
  167.   (mapcar 'vlax-variant-value dat)
  168. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-11-22 21:01:41 | 显示全部楼层
(if (not *acadx*)
  (setq        *acadx*
         (vla-getInterfaceObject
           (vlax-get-acad-object)
           "AcadX.Application"
         )
  )
)
; error: Automation Error. Problem in loading application
是为什么啊?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-11-23 07:54:31 | 显示全部楼层
AcadX.Application是外掛程序,現在要收錢了!
Tony Tanzillo作者
http://www.caddzone.com
AcadXTabs: MDI Document Tabs for AutoCAD 2004/2005
http://www.acadxtabs.com
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-11-24 23:57:49 | 显示全部楼层

  1. (defun c:test (/ e el dict dename)
  2.   (if
  3.     (and (setq el (entget (car (entsel))))
  4.          (setq dict (cdr (assoc 360 el)))
  5.          (= (cdr (assoc 0 (setq dename (entget dict)))) "DICTIONARY")
  6.          (= (cdr
  7.               (assoc 0
  8.                      (setq xrec (dictsearch dict (cdr (assoc 3 dename))))
  9.               )
  10.             )
  11.             "XRECORD"
  12.          )
  13.     )
  14.      (cddr
  15.        (member '(100 . "AcDbXrecord") xrec)
  16.      )
  17.   )
  18. )
  19. (defun c:test0 (/ e subst-n el dict xrec)
  20.   (defun subst-n (lst nlst n / i)
  21.     (setq i -1)
  22.     (if        (= (type n) 'LIST)
  23.       (mapcar '(lambda (x)
  24.                  (setq i (1+ i))
  25.                  (if (vl-position i n)
  26.                    (nth        (vl-position i n)
  27.                         nlst
  28.                    )
  29.                    x
  30.                  )
  31.                  
  32.                )
  33.               lst
  34.       )
  35.       (mapcar '(lambda (x)
  36.                  (setq i (1+ i))
  37.                  (if (= i n)
  38.                    nlst
  39.                    x
  40.                  )                 
  41.                )
  42.               lst
  43.       )
  44.     )
  45.   )   
  46.   (if
  47.     (and (setq el (entget (car (entsel))))
  48.          (setq dict (cdr (assoc 360 el)))
  49.          (= (cdr (assoc 0 (setq dename (entget dict)))) "DICTIONARY")
  50.          (= (cdr
  51.               (assoc 0
  52.                      (setq xrec
  53.                             (dictsearch dict (setq dname(cdr  (assoc 3 dename))))
  54.                      )
  55.               )
  56.             )
  57.             "XRECORD"
  58.          )
  59.     )
  60.     (progn
  61.       (dictremove dict dname)
  62.       (dictadd
  63.         dict
  64.         dname
  65.         (entmakex (cons        '(0 . "xrecord")
  66.                         (member '(100 . "AcDbXrecord") (subst-n xrec '(1 . "02") 9))
  67.                   )
  68.         )
  69.       )
  70.     )
  71.   )
  72.   (princ)
  73. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-11-28 10:24:22 | 显示全部楼层
如果实体本省没有记录,要添加字典怎么做啊?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-27 15:39 , Processed in 0.177879 second(s), 47 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表