明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1878|回复: 8

[原创][转帖]难倒所有高手的难题

[复制链接]
发表于 2008-1-21 19:24 | 显示全部楼层 |阅读模式

图形属性是与图形文件相关的信息,如标题、作者、主题以及自定义属性等。使用图形属性命令可显示和设置当前图形文件的属性信息,该命令的调用方式为:
菜单:【File(文件)】→【DrawingProperties…(图形属性)】
命令行:dwgprops
调用该命令后,AutoCAD将显示“Properties(属性)”对话框,该对话框有4个选项卡,现分别介绍如下:
(1)“General(基本)”选项卡:用于显示文件类型、位置、大小、时间和属性等与磁盘文件有关的信息,其显示数据来自操作系统,如图16-3所示。

(2)“Summary(概要)”选项卡:用于设置图形标题、主题、作者、关键字、注释和超级链接基地址(如图16-4所示)。其中超级链接基地址是指插入图形中的所有相关链接的基地址。
(3)“Statistics(统计信息)”选项卡:用于显示文件创建时间、最后修改时间、最后编辑者、修订次数和总编辑时间等信息(如图16-5所示)。这些文件特性是自动维护的,并可利用它们来查找在一个指定的时期内创建或修改的图形。
(4)“Custom(自定义)”选项卡:用于指定最多10个自定义属性,每个属性包括名称和值两部分(如图16-6所示)。使用自定义属性可以在搜索时便于查找图形。
注意只有在保存图形之后,“图形属性”对话框中输入的属性才能与图形相关联。

现在我想问:能不能用visual lisp编程来实现对自定义信息的写入与修改.

如果可以的话.能不能提供个大概.比如可以用什么函数来现实!

谢谢!如我能完成一定会把原码贴上.供大家参习.

发表于 2008-1-22 08:53 | 显示全部楼层
本帖最后由 caoyin 于 2012-7-21 02:20 编辑

这样的帖子标题就是要源码吗?


  1. ;;; ┏━━━┳━━━━━━━━━━━━━━━━━━━┓
  2. ;;; ┃  T: ┃ 图形属性信息操作               ┃
  3. ;;; ┗━━━┻━━━━━━━━━━━━━━━━━━━┛
  4. ;;;  以下函数参考命令 DWGPROPS 。(vl-load-com)
  5. (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  6. ;;_________________________________________________________________________________________
  7. ;; ▓ (lt:info-summary-get)
  8. ;; [功能] 获取图形属性“概要”信息
  9. ;; [返回] 表。表元素内容依次为标题、主题、作者、关键字、注释和超链接地址
  10. (defun lt:info-summary-get (/ sInfo)
  11.   (setq sInfo (vla-get-SummaryInfo doc))
  12.   (mapcar '(lambda (x) (vlax-get sinfo X))
  13.           '(Title Subject author Keywords Comments HyperlinkBase)
  14.   )
  15. )
  16. ;;_________________________________________________________________________________________
  17. ;; ▓ (lt:info-summary-set <值列表>)
  18. ;; [功能] 设置图形属性“概要”信息
  19. ;; [参数] sumlst---值列表。表中的值依次赋给关键字标题、主题、作者、关键字、注释和超链接地址
  20. ;;                 若值为 nil 时,则不修改。为 "" 时清除原有值。其中注释的换行符为 "\r\n"。
  21. ;; [返回] 修改后的值列表。
  22. ;; [测试] (lt:info-summary-set '("朗风工具" "函数测试" "曹饮" nil "函数\r\nlt:info-summary-set" "http://www..."))
  23. (defun lt:info-summary-set (sumlst / sInfo)
  24.   (setq sInfo (vla-get-SummaryInfo doc))
  25.   (mapcar '(lambda (X Y)
  26.              (if (= (type Y) 'STR)
  27.                (vlax-put sInfo X Y)
  28.              )
  29.              (vlax-get sInfo X)
  30.            )
  31.           '(Title Subject author Keywords Comments HyperlinkBase)
  32.           sumlst
  33.   )
  34. )
  35. ;;_________________________________________________________________________________________
  36. ;; ▓ (lt:info-custom-number)
  37. ;; [功能] 获取图形属性“自定义”属性的数量
  38. (defun lt:info-custom-number (/ sInfo)
  39.   (vla-NumCustomInfo (vla-get-SummaryInfo doc))
  40. )
  41. ;;_________________________________________________________________________________________
  42. ;; ▓ (lt:info-custom-get)
  43. ;; [功能] 获取图形属性“自定义”属性列表
  44. ;; [返回] 成功->表,表形式为 ((Key0 . Val0) (Key1 . Val1) ... (KeyN . ValN));失败-> nil 。
  45. (defun lt:info-custom-get (/ sInfo i lst key val)
  46.   (setq sInfo (vla-get-SummaryInfo doc) i -1)
  47.   (repeat (vla-NumCustomInfo sInfo)
  48.     (vla-GetCustomByIndex sInfo (setq i (1+ i)) 'key 'val)
  49.     (setq lst (append lst (list (cons key val))))
  50.   )
  51.   lst
  52. )
  53. ;;_________________________________________________________________________________________
  54. ;; ▓ (lt:info-custom-set <关键字> <值>)
  55. ;; [功能] 设置或添加图形属性“自定义”属性
  56. ;; [参数] key---名称(关键字)。若不存在则在列表尾部添加
  57. ;;        val---属性值
  58. ;; [返回] 该关键字的索引值(INT),该索引范围从0到自定义属性数量-1
  59. (defun lt:info-custom-set (key val / sInfo i)
  60.   (setq sInfo (vla-get-SummaryInfo doc) i -1)
  61.   (if (vl-catch-all-apply 'vla-SetCustomByKey (list sInfo key val))
  62.     (vla-AddCustomInfo sInfo key val)
  63.   )
  64.   (while (/= key key2)
  65.     (vla-GetCustomByIndex sInfo (setq i (1+ i)) 'key2 'val)
  66.   )
  67.   i
  68. )
  69. ;;_________________________________________________________________________________________
  70. ;; ▓ (lt:info-custom-set-byIndex <索引值> <关键字> <值>)
  71. ;; [功能] 根据索引值设置图形属性“自定义”属性的关键字和值
  72. ;; [参数] index---索引值。该索引范围从0到自定义属性数量-1,如果超出范围
  73. ;;        key-----新的关键字
  74. ;;        val-----新的值
  75. ;; [返回] 成功-> T,失败-> nil。
  76. (defun lt:info-custom-set-byIndex (index key val)
  77.   (not (vl-catch-all-apply
  78.          'vla-SetCustomByIndex
  79.          (list (vla-get-SummaryInfo doc) index key val)
  80.        )
  81.   )
  82. )
  83. ;;_________________________________________________________________________________________
  84. ;; ▓ (lt:info-custom-set-byIndex <关键字或索引值>)
  85. ;; [功能] 删除图形属性“自定义”属性的关键字和值
  86. ;; [参数] key-----关键字或索引值
  87. ;; [返回] 成功-> T,失败-> nil。
  88. (defun lt:info-custom-remove (key / sInfo fun)
  89.   (setq sInfo (vla-get-SummaryInfo doc))
  90.   (if (numberp key)
  91.     (setq fun 'vla-RemoveCustomByIndex)
  92.     (setq fun 'vla-RemoveCustomByKey)
  93.   )
  94.   (not (vl-catch-all-apply fun (list sInfo key)))
  95. )
  96. ;;_________________________________________________________________________________________
  97. ;; ▓ (lt:info-custom-set-byIndex <关键字或索引值>)
  98. ;; [功能] 删除所有图形属性“自定义”属性
  99. ;; [返回] 永远返回 nil
  100. (defun lt:info-custom-removeAll (/ sInfo i)
  101.   (setq sInfo (vla-get-SummaryInfo doc))
  102.   (repeat (setq i (vla-NumCustomInfo sInfo))
  103.     (vla-RemoveCustomByIndex sInfo (setq i (1- i)))
  104.   )
  105. )
  106. ;;_________________________________________________________________________________________
  107. ;; ▓ (lt:info-LastSavedBy-get)
  108. ;; [功能] 获取图形属性“统计信息”属性的“最后编辑者”
  109. ;; [返回] “最后编辑者”属性的字符串
  110. (defun lt:info-LastSavedBy-get ()
  111.   (vla-get-lastsavedby (vla-get-SummaryInfo doc))
  112. )
  113. ;;_________________________________________________________________________________________
  114. ;; ▓ (lt:info-LastSavedBy-set <字符串>)
  115. ;; [功能] 设置图形属性“统计信息”属性的“最后编辑者”
  116. ;; [参数] name---“最后编辑者”属性的字符串
  117. ;; [返回] 成功-> T,失败-> nil。
  118. (defun lt:info-LastSavedBy-set (name)
  119.   (not (vl-catch-all-apply 'vla-put-lastsavedby
  120.                            (list (vla-get-SummaryInfo doc) name)
  121.        )
  122.   )
  123. )
  124. ;;_________________________________________________________________________________________
  125. ;; ▓ (lt:info-RevisionNumber-get)
  126. ;; [功能] 获取图形属性“统计信息”属性的“修订次数”
  127. ;; [返回] “修订次数”属性的字符串
  128. (defun lt:info-RevisionNumber-get ()
  129.   (vla-get-RevisionNumber (vla-get-SummaryInfo doc))
  130. )
  131. ;;_________________________________________________________________________________________
  132. ;; ▓ (lt:info-RevisionNumber-set <字符串或数字>)
  133. ;; [功能] 设置图形属性“统计信息”属性的“修订次数”
  134. ;; [参数] num---“修订次数”属性的字符串或数字
  135. ;; [返回] 成功-> T,失败-> nil。
  136. (defun lt:info-RevisionNumber-set (num)
  137.   (not (vl-catch-all-apply 'vla-put-RevisionNumber
  138.                            (list (vla-get-SummaryInfo doc) num)
  139.        )
  140.   )
  141. )

点评

C版就是牛和热心!!!  发表于 2012-7-18 20:57
发表于 2008-1-22 13:08 | 显示全部楼层

xing979020,不要小看明经通道!!!像你这样的标题,强烈鄙视你!

谢谢caoyin,给你当头一棒!!

发表于 2008-1-22 14:04 | 显示全部楼层

据我总结,一般半桶水或小半桶水的人才会发这样的标题。

低手和高手一般都比较谦虚

发表于 2008-1-22 14:40 | 显示全部楼层

见不懂,能说明点吗,我太菜了,

发表于 2012-7-18 18:36 | 显示全部楼层
1楼图中基本信息有一个文件修改时间,统计信息中也有一个文件修改时间,
后一个可以通过TDUUPDATE变量得到,
前一个就是存盘时间,不知道如何得到
发表于 2012-7-19 15:47 | 显示全部楼层
caoyin 发表于 2008-1-22 08:53
这样的帖子标题就是要源码吗?

问一下C版,那个函数l:strp  起什么什么作用?
发表于 2012-7-20 20:57 | 显示全部楼层
发现一个奇怪的问题,C版程序lt:info-summary-set ,须设置cmdecho为1才行。不知为什么?
发表于 2013-5-16 08:12 | 显示全部楼层
收藏着,以后肯定有用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-19 20:58 , Processed in 0.180206 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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