找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1445|回复: 4

[求助] [求助]:怎么增加图元属性

[复制链接]
发表于 2007-9-21 11:58:19 | 显示全部楼层 |阅读模式

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

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

×
比如一条线增加一个编号属性.然后用提取组码的形式识别编号.
请问怎么实现!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2007-9-24 16:04:27 | 显示全部楼层
用"regapp" 、"entmod"和"entget"命令。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2007-9-24 18:52:33 | 显示全部楼层
对于上面的方法,本人能力有限啊,不知道程序怎么写,所以在网上摘了些资料,自己试写了一段,但........还请高手指点.
资料如下:

摘要 本文详细分析了AutoCAD12.0版扩展实体数据的组织结构及存取方法,并结合应用给出了有关程序代码。


引言

  AutoCAD作为国际上最流行的CAD绘图软件在国内的应用日益广泛。自11.0版本以后,Autodesk公司在AutoCAD引入了扩展实体数据的概念,为广大用户提供了更强的二次开发功能。借助扩展实体数据,用户可以很方便地在图形实体中按不同的需求分门别类地存取不同的非图形数据,如设计人员关心产品的材料、重量,而财务人员则关心产品的成本、价格等。众所周知,利用"块"属性可以存取非图形数据,而且这也是在AutoCAD 11.0版本以前用户能够在图形中存取非图形数据的唯一方法,但现在通过扩展实体数据,非图形数据的存取将变得更加灵活、方便。事实上 ,AutoCAD 12.0 ASE正是利用图形中位于"ACADASE"图层的POLYLINE扩展实体数据来保存图形实体与外部数据库之间的连接关系。本文拟对AutoCAD 12.0版扩展实体数据的结构作详细的分析,并结合实际应用介绍有关的程序代码,与各位同仁切磋。

1 扩展实体数据的结构

  AutoCAD扩展实体数据是在常规的图形数据基础上增加的按一系列分类代码组合而成的数据块,它与常规实体数据一起构成内容更加广泛的实体数据。由于不同的应用场合要求存取不同的数据,因此扩展实体数据按应用类型分组,形式如下:

  (-3 ("AppName" (代码.数据) (…) ) ("AppName"(代码.数据) (…)) (…)))

其中,-3表示扩展数据开始;

  AppName是最大长度为31字节的字符串,为已经登记的应用类型名;

代码及对应的数据类型见下表:

举例如下:

((-1.) (0."TEXT") (5."2F") (67.0) (8."0") (10 172.586 246.388 0.0) (40.32.729) (1."5") (50.0.0) (41.1.0) (51.0.0) (7."STANDARD") (71.0) (72.0) (11 0.0 0.0 0.0) (210 0.0 0.0 1.0) (73.0) (-3 ("DESIGN" (1000."16Mn") (1040.32.45)) ("PRICE" (1040.123.45) (1040.321.54))))

  这是一个"TEXT"类型的图形实体,它包含"DESIGN"和"PRICE"两个应用类型的扩展数据。其中,(-1.)…(73.0)是常规实体数据,(-3 (…))就是扩展实体数据,而扩展数据中("DESIGN" (1000."16Mn") (1040.32.45))是属于"DESIGN"应用类型的数据块,("PRICE"(1040.123.45) (1040.321.54))则是属于"PRICE"应用类型的数据块。更具体地说,属于"DESIGN"应用类型的数据有两个,分别是字符串"16Mn"和实数"32.45";属于"PRICE"应用类型的数据是两个实数,分别是"123.45"和"321.54"。

  由此可见,应用类型名是存取扩展实体数据的主要依据。在使用前应先行登记。应用类型名可由用户任意定义,其最大长度为31个字符。登记应用类型名的AutoLISP程序代码如下:

  (regapp "AppName")

  如果登记成功,该应用类型名就被增加到APPID符号表,并保存在图形文件中。AutoCAD自动登记的应用类型名为"ACAD"。

  从上面的例子还可以看到,扩展实体数据与常规实体数据有所不同,在扩展实体数据块中,同样代码的数据可以出现多次,每组数据的次序和含义则由应用程序自行约定。

  需要注意的是,AutoCAD分配给每个图形实体的扩展数据空间最大为16K字节。下面的函数可查询指定图形实体的扩展数据自由空间大小(以字节为单位):

  (xdroom entname)

  下面的函数可计算出指定扩展数据块的大小(以字节为单位):

  (xdsize xdata)

2 存取扩展实体数据的程序设计

  在AutoCAD命令中,除AME(高级造型)、ASE(数据库管理)命令对扩展实体数据进行操作外,其它绘图命令一般不生成扩展实体数据。更多的情况是用户的AutoLISP或ADS应用程序生成、修改和检索扩展实体数据。
为该序号(即为AutoCAD"TEXT"类型的图形实体)的扩展数据存储,这样用户只要选择某一序号就可以立即检索出与该序号对应的零部件的相关信息,并可任意修改。随后还可由程序自动按顺序提取图纸中所有的零部件信息,并作为清单按规定的格式保存到文件中或输出到打印机


--------------------------------------------------------------------------------------------
本人试写的程序:

(defun c:ice ()
(regapp "DESIGN")
(regapp "PRICE")
   (while
        (= (setq EL (entsel "\n请点选实体:")) NIL)
    )
    ;;设置 ent 为图元的数据关联表
    (setq ed (entget (car EL)))
                              ; ; ; 图元名en的数据关联表存ed
    (setq ed
          (cons (-3 ("DESIGN" (1000 . "16Mn") (1040 . "32.45")) ("PRICE" (1040 . 123.45) (1040 . 321.54)))) ed)
     )          ; ; ;
    (entmod ed) ; ; ; 修改图元en在图形中的图层

)

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 04:30 , Processed in 0.203416 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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