找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: newer

[研讨] 关于对象反应器,如何写才好?

[复制链接]

已领礼包: 488个

财富等级: 日进斗金

发表于 2013-12-24 10:29:06 | 显示全部楼层
这样不行吧
属性的好处就是图形不变,里面的文字不停变化
你为了其中的一个属性,把图块改了,那还做什么属性块?

我讲个方法:
反正是块,计算文字大小,自动改那个 插入 的X比例,
做块的时候那个框的x画成1,这样很好算

反应器只要判断是不是那个块定义就行了,拷贝粘贴也没关系.

点评

用图块的好处是当做容器了,可以把实体组织起来做个“对象”,类似自定义对象,但是可以通用。  详情 回复 发表于 2013-12-24 10:33
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2013-12-24 10:33:38 | 显示全部楼层
aeo 发表于 2013-12-24 10:29
这样不行吧
属性的好处就是图形不变,里面的文字不停变化
你为了其中的一个属性,把图块改了,那还做什么 ...

用图块的好处是当做容器了,可以把实体组织起来做个“对象”,类似自定义对象,但是可以通用。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2013-12-24 11:20:31 | 显示全部楼层
其实属性和图块是可以相对独立的,图块可以做成无属性的动态块,然后将属性附着在这个块上,再根据属性的长度来变化动态块的相关长度。
或者也可以使用无名块,根据属性的长度来构建无名块,不过这样用多了,图中的无名块和反应器也会很多,势必影响速度。
本人不懂反应器,属于光说不练的假把式,对不对也就不知道了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

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

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2013-12-24 12:13:53 | 显示全部楼层
本帖最后由 aeo 于 2013-12-24 12:20 编辑

  1. (defun c:addvlr (/ E OBJ TEXTSTRING)  
  2.          (if (and(setq e (car(nentsel "\n选择块属性:")))        
  3.                  (= "ATTRIB" (cdr (assoc 0 (entget e))))        )   
  4.           (progn      (setq obj (vlax-ename->vla-object e))            
  5.                  (vlr-pers (VLR-Object-Reactor (list obj)nil '((:vlr-modified . att-Change))))      
  6.                  (princ "\n反应器已注入!")      )   
  7.          )   
  8.       (princ)
  9. )

  10. (defun att-Change (OBJ VLROBJ PARAMETERS / blkref box dis doc en ename sca textstring)
  11.   (setq textstring (vla-get-textstring obj))
  12.   (setq blkref (vla-ObjectIDToObject
  13.                       (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
  14.                       (vla-get-ownerid obj)
  15.                 )
  16.        ename (vlax-vla-object->ename blkref)
  17.   )
  18.   (setq  sca (abs(vla-get-YScaleFactor blkref))
  19.          box (textbox (entget (vlax-vla-object->ename obj)))
  20.          dis (+ (- (caadr box)(caar box))(* sca 0.1) )
  21.          en(entget ename)
  22.    )
  23.    (entmod(subst(cons 41 dis)(assoc 41 en)en))
  24. )


下面是实验dwg
请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:Drawing1.rar 
下载次数:3  文件大小:17.76 KB 
下载权限: 不限 以上  [免费赚D豆]





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

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-12-24 12:35:49 | 显示全部楼层
本帖最后由 牢固 于 2013-12-24 12:47 编辑
newer 发表于 2013-12-24 10:27
G 版,能不鞥用点监视器,做个动态的演示啊。

用点监视器实现了,复制后的对象也可以关联!但是经常API出现异常的Bug,没找到问题出在何处!
  1. ;;添加监视
  2. (defun c:tt()
  3.   (if (and
  4.   (setq e (car(entsel "\n选择属性块:")))
  5.   (= "AcDbBlockReference" (xdrx_getpropertyvalue e "IsA"))
  6.   (setq atts (xdrx_getpropertyvalue e "AttributeEntities"))
  7.   )
  8.     (progn
  9.       (xdrx_xdata_set e "属性监视" (xdrx_getpropertyvalue (car atts)"TextString"))
  10.       (princ "\n监视已注入")
  11.       )
  12.     )
  13.   (princ)
  14.   )
  15. ;;启动监视
  16. (defun c:tt1  (/ ret)
  17.   (VL-ACAD-DEFUN 'CallBak)
  18.   (if *CallBakStart*
  19.   (progn
  20.     (xdrx_PointMonitor)
  21.     (princ "\n监视关闭!")
  22.     (setq *CallBakStart* nil)
  23.     )
  24.   (progn
  25.     (princ "\n监视打开!")
  26.     (setq *CallBakStart* t)
  27.     (xdrx_PointMonitor "CallBack")
  28.     )
  29.   )
  30.   (princ)
  31.   )
  32. ;;回调函数
  33. (defun CallBack        (PT / ENT ATTS VAL TXT NAME BLKDEF CP ANG BOX P1 P3 P2
  34.                  P4 W H        MAT PL)
  35.   (if (and
  36.         (setq ent (nentselp pt)
  37.               ent (if (and ent (= (type (last (last ent))) 'ename))
  38.                     (last (last ent))
  39.                     (car ent)
  40.                   )
  41.         )
  42.         (if (= "AcDbAttribute" (xdrx_getpropertyvalue ent "IsA"))
  43.           (setq        atts (list ent)
  44.                 ent  (xdrx_getpropertyvalue ent "Owner")
  45.           )
  46.           (And
  47.             (= "AcDbBlockReference" (xdrx_getpropertyvalue ent "IsA"))
  48.             (setq atts (xdrx_getpropertyvalue ent "AttributeEntities"))
  49.           )
  50.         )
  51.         (setq val (xdrx_xdata_get ent "属性监视"))
  52.         (setq txt (xdrx_getpropertyvalue (car atts) "TextString"))
  53.         (/= val txt)
  54.       )
  55.     (progn
  56.       (xdrx_xdata_set ent "属性监视" txt)
  57.       (setq mat        (xdrx_matrix_inverse
  58.                   (xdrx_getpropertyvalue ent "BlockTransform")
  59.                 )
  60.       )
  61.       (setq atts (xdrx_getpropertyvalue ent "AttributeEntities"))
  62.       (setq name   (xdrx_getpropertyvalue ent "BlockTableRecord")
  63.             blkdef (cadr name)
  64.             name   (car name)
  65.       )
  66.       (mapcar 'set '(p1 p2 p3 p4) (xdrx_entity_box (car atts)))
  67.       (setq cp (mapcar '* '(0.5 0.5 0.5) (mapcar '+ p1 p3)))
  68.       (setq ang (xdrx_getpropertyvalue (car atts) "Rotation"))

  69.       (foreach e (xdrx_getpropertyvalue blkdef "Entities")
  70.         (if (/=        "AcDbAttributeDefinition"
  71.                 (xdrx_getpropertyvalue e "isa")
  72.             )
  73.           (xdrx_object_delete e)
  74.         )
  75.       )
  76.       (setq box        (textbox (entget (car atts)))
  77.             p1        (car box)
  78.             p3        (cadr box)
  79.             p2        (list (car p1) (cadr p3) (caddr p1))
  80.             p4        (list (car p3) (cadr p1) (caddr p3))
  81.             w        (* 0.5 (- (car p4) (car p1)))
  82.             h        (* 0.5 (- (cadr p2) (cadr p1)))
  83.             p1        (polar (polar cp ang (- w)) (- ang (* pi 0.5)) h)
  84.             p2        (polar (polar cp ang (- w)) (+ ang (* pi 0.5)) h)
  85.             p3        (polar (polar cp ang w) (+ ang (* pi 0.5)) h)
  86.             p4        (polar (polar cp ang w) (- ang (* pi 0.5)) h)
  87.       )

  88.       (Setq p1 (xdrx_point_transform p1 mat)
  89.             p2 (xdrx_point_transform p2 mat)
  90.             p3 (xdrx_point_transform p3 mat)
  91.             p4 (xdrx_point_transform p4 mat)
  92.       )
  93.       (setq pl (vla-AddPolyline
  94.                  (vlax-ename->vla-object blkdef)
  95.                  (vlax-safearray-fill
  96.                    (vlax-make-safearray vlax-vbdouble (cons 0 11))
  97.                    (append p1 p2 p3 p4)
  98.                  )
  99.                )
  100.       )
  101.       (vla-put-Closed pl :vlax-true)
  102.       (entupd ent)
  103.     )
  104.   )
  105. )

点评

修改的API发你QQ离线了,加载新的API,再试试看行不。 测试了你的程序,属性从字多变少,没跟着变化。增加字符正常。  详情 回复 发表于 2013-12-24 17:55
出现异常的是xdrx_xdata_set函数!修改和查询扩展数的函数换成自己定义的就完全没问题了!  详情 回复 发表于 2013-12-24 13:23
为什么删掉再添加?直接对原来的 Pline Transform 不可以?  详情 回复 发表于 2013-12-24 12:40
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-12-24 12:40:06 | 显示全部楼层
牢固 发表于 2013-12-24 12:35
用点监视器实现了,复制后的对象也可以关联!但是经常API出现异常的Bug,没找到问题出在何处!

为什么删掉再添加?直接对原来的 Pline Transform 不可以?

点评

修改原来的多段线顶点当然可以!我只是为了图省事!  详情 回复 发表于 2013-12-24 13:04
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-12-24 13:04:33 | 显示全部楼层
st788796 发表于 2013-12-24 12:40
为什么删掉再添加?直接对原来的 Pline Transform 不可以?

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

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-12-24 13:23:39 | 显示全部楼层
本帖最后由 牢固 于 2013-12-24 20:42 编辑
牢固 发表于 2013-12-24 12:35
用点监视器实现了,复制后的对象也可以关联!但是经常API出现异常的Bug,没找到问题出在何处!

出现异常的是xdrx_xdata_set函数!修改和查询扩展数的函数换成自己定义的就完全没问题了!
  1. (defun c:tt()  (if (and
  2.   (setq e (car(entsel "\n选择属性块:")))
  3.   (= "AcDbBlockReference" (xdrx_getpropertyvalue e "IsA"))
  4.   (setq atts (xdrx_getpropertyvalue e "AttributeEntities"))
  5.   )
  6.     (progn
  7.       ;(xdrx_xdata_set e "属性监视" (xdrx_getpropertyvalue (car atts)"TextString"))
  8.       (xxl-Data-ax:PutXData e (list '(1001 . "属性监视") (cons 1000 (xdrx_getpropertyvalue (car atts)"TextString"))))
  9.       (princ "\n监视已注入")
  10.       )
  11.     )
  12.   (princ)
  13.   )
  14. ;;启动监视
  15. (defun c:tt1  (/ ret)
  16.   (VL-ACAD-DEFUN 'CallBak)
  17.   (if *CallBakStart*
  18.   (progn
  19.     (xdrx_PointMonitor)
  20.     (princ "\n监视关闭!")
  21.     (setq *CallBakStart* nil)
  22.     )
  23.   (progn
  24.     (princ "\n监视打开!")
  25.     (setq *CallBakStart* t)
  26.     (xdrx_PointMonitor "CallBack")
  27.     )
  28.   )
  29.   (princ)
  30.   )
  31. ;;回调函数
  32. (defun CallBack  (PT / ENT ATTS VAL TXT NAME BLKDEF CP ANG BOX P1 P3 P2
  33.      P4 W H  MAT PL)
  34.   (if (and
  35.         (setq ent (nentselp pt)
  36.               ent (if (and ent (= (type (last (last ent))) 'ename))
  37.                     (last (last ent))
  38.                     (car ent)
  39.                   )
  40.         )
  41.         (if (= "AcDbAttribute" (xdrx_getpropertyvalue ent "IsA"))
  42.           (setq        atts (list ent)
  43.                 ent  (xdrx_getpropertyvalue ent "Owner")
  44.           )
  45.           (And
  46.             (= "AcDbBlockReference" (xdrx_getpropertyvalue ent "IsA"))
  47.             (setq atts (xdrx_getpropertyvalue ent "AttributeEntities"))
  48.           )
  49.         )
  50.         ;(setq val (xdrx_xdata_get ent "属性监视"))
  51.         (setq val (cdr (assoc 1000 (xxl-DATA-AX:GETXDATA ent "属性监视"))))
  52.                (setq txt (xdrx_getpropertyvalue (car atts) "TextString"))
  53.         (/= val txt)
  54.       )
  55.     (progn

  56.       (setq mat        (xdrx_matrix_inverse
  57.                   (xdrx_getpropertyvalue ent "BlockTransform")
  58.                 )
  59.       )
  60.       ;(xdrx_xdata_set ent "属性监视" txt)
  61.        (xxl-Data-ax:PutXData ent (list '(1001 . "属性监视") (cons 1000 txt)))
  62.       (setq name   (xdrx_getpropertyvalue ent "BlockTableRecord")
  63.             blkdef (cadr name)
  64.             name   (car name)
  65.       )
  66.       (mapcar 'set '(p1 p2 p3 p4) (xdrx_entity_box (car atts)))
  67.       (setq cp (mapcar '* '(0.5 0.5 0.5) (mapcar '+ p1 p3)))
  68.       (setq ang (xdrx_getpropertyvalue (car atts) "Rotation"))


  69.       (setq box        (textbox (entget (car atts)))
  70.             p1        (car box)
  71.             p3        (cadr box)
  72.             p2        (list (car p1) (cadr p3) (caddr p1))
  73.             p4        (list (car p3) (cadr p1) (caddr p3))
  74.             w        (* 0.5 (- (car p4) (car p1)))
  75.             h        (* 0.5 (- (cadr p2) (cadr p1)))
  76.             p1        (polar (polar cp ang (- w)) (- ang (* pi 0.5)) h)
  77.             p2        (polar (polar cp ang (- w)) (+ ang (* pi 0.5)) h)
  78.             p3        (polar (polar cp ang w) (+ ang (* pi 0.5)) h)
  79.             p4        (polar (polar cp ang w) (- ang (* pi 0.5)) h)
  80.       )


  81.       (Setq p1 (xdrx_point_transform p1 mat)
  82.             p2 (xdrx_point_transform p2 mat)
  83.             p3 (xdrx_point_transform p3 mat)
  84.             p4 (xdrx_point_transform p4 mat)
  85.       )
  86.       (foreach e (xdrx_getpropertyvalue blkdef "Entities")
  87.         (if (/=        "AcDbAttributeDefinition"
  88.                 (xdrx_getpropertyvalue e "isa")
  89.             )
  90.           (progn
  91.             ;;修改边界
  92.             (xdrx_polyline_SetPointAt e 0 p1)
  93.             (xdrx_polyline_SetPointAt e 1 p2)
  94.             (xdrx_polyline_SetPointAt e 2 p3)
  95.             (xdrx_polyline_SetPointAt e 3 p4)
  96.           )
  97.         )
  98.       )




  99.       (entupd ent)

  100.     )
  101.   )
  102. )
  103. ;;;xxl-Data-ax:PutXData 附着扩展图元数据到AutoCAD对象上。
  104. ;|
  105. 功能
  106. 附着扩展图元数据到AutoCAD对象上。
  107. 参数
  108. 一个ActiveX对象和一个与GetXData返回的格式相同的扩展图元数据列表。
  109. 返回值

  110. 示例
  111. (xxl-Data-ax:PutXData myVlaObj '((1001 . "ACADX") (1000 . "myStringData")))
  112. (xxl-Data-ax:PutXData (setq e (car(entsel)))(append '((1001 . "ACADX")) (mapcar '(lambda (x) (cons 1010 x)) (xxl-GET_POLY_PTLIST e))))
  113. 注意
  114. 在1001组码中标明的扩展图元数据应用名必须先使用AutoLISP函数REGAPP进行注册以便附着数据到该对象上。
  115. 可查看AutoCAD帮助文件以熟悉有关扩展图元数据代码及值。
  116. 1000 ASCII 码字串
  117. 1001 应用登记名
  118. 1007 控制字,{ 或 }
  119. 1003 层名
  120. 1004 长字节
  121. 1005 对象索引名
  122. 1010 点位
  123. 1040 浮点数
  124. 1041 距离值
  125. 1042 比例系数
  126. 1070 16位整数
  127. 1071 32位整数
  128. |;
  129. (defun xxl-Data-ax:PutXData (vlaObj XData)
  130.   (regapp (cdr (assoc 1001 xdata)))
  131.   (setq        XData
  132.          (xxl-AX:BuildFilter
  133.            (mapcar
  134.              '(lambda (item / key)
  135.                 (setq key (car item))
  136.                 (if (<= 1010 key 1033)
  137.                   (cons        key
  138.                         (vlax-variant-value (vlax-3d-point (cdr item)))
  139.                   )
  140.                   item
  141.                 )
  142.               )
  143.              XData
  144.            )
  145.          )
  146.   )
  147.   (IF (= 'ENAME (TYPE VLAOBJ))
  148.     (vla-setXData
  149.       (vlax-ename->vla-object vlaObj)
  150.       (car XData)
  151.       (cadr XData)
  152.     )
  153.     (vla-setXData vlaObj (car XData) (cadr XData))
  154.   )
  155. )




  156. ;;;==================================================================
  157. ;;;xxl-Data-ax:GetXData 获取附着在AutoCAD对象上的扩展图元数据。
  158. ;|
  159. 功能
  160. 获取附着在AutoCAD对象上的扩展图元数据。
  161. 参数
  162. 一个ActiveX对象和一个已经使用AutoLISP函数REGAPP注册的应用名。
  163. 返回值
  164. 返回附着到对象上的扩展图元数据列表
  165. 示例
  166. (xxl-Data-ax:GetXData myVlaObj "ACAD")
  167. |;
  168. ;;;==================================================================
  169. (defun xxl-Data-ax:GetXData (vlaObj AppID / xType XData)
  170.   (IF (= 'ENAME (TYPE VLAOBJ))
  171.     (vla-getxdata
  172.       (vlax-ename->vla-object vlaObj)
  173.       AppID
  174.       'xType
  175.       'xData
  176.     )
  177.     (vla-getxdata vlaObj AppID 'xType 'xData)
  178.   )
  179.   (if (and xType xData)
  180.     (mapcar (function
  181.               (lambda (key val) (cons key (xxl-Num-AX->LispValue val)))
  182.             )
  183.             (vlax-safearray->list xType)
  184.             (vlax-safearray->list xData)
  185.     )
  186.   )
  187. )

  188. ;;;xxl-AX:BuildFilter  返回包含用于ActiveX选择集过滤器的一对变体的列表
  189. ;|
  190. 语法:
  191. (xxl-AX:BuildFilter filter)
  192.   说明:
  193. 返回包含用于ActiveX选择集过滤器的一对变体的列表
  194. 参数:
  195. filter: 常规的选择集过滤器列表
  196.   返回值:
  197. 一对变体数组的列表
  198.   示例:
  199. (xxl-AX:BuildFilter '((0 . "LWPOLYLINE")(8 . "WALLS")))
  200. |;
  201. ;;;===================================================================
  202. (defun xxl-AX:BuildFilter (Filter1)
  203.   (mapcar '(lambda (lst typ)
  204.       (vlax-make-variant
  205.         (vlax-safearray-fill
  206.    (vlax-make-safearray
  207.      typ
  208.      (cons 0
  209.     (1- (length lst))
  210.      )
  211.    )
  212.    lst
  213.         )
  214.       )
  215.     )
  216.    (list (mapcar 'car filter1) (mapcar 'cdr filter1))
  217.    (list vlax-vbInteger vlax-vbVariant)
  218.   )
  219. )
  220. ;;;(xxl-Num-AX->LispValue 个ActiveX变体或安全数组)该函数将递归深入一个安全数组并转换所有的值,包括嵌套的安全数组,将其转换为LISP值。
  221. (defun xxl-Num-AX->LispValue (v)
  222.   (cond ((= (type v) 'variant) (xxl-Num-AX->LispValue (vlax-variant-value v)))
  223.         ((= (type v) 'safearray)
  224.          (mapcar 'xxl-Num-AX->LispValue (safearray-value  v))
  225.         )
  226.         ((= (type v) 'list)
  227.          (mapcar 'xxl-Num-AX->LispValue v)
  228.          )
  229.         (T v)
  230.   )
  231.   )




点评

帮监视下,什么情况下,xdrx_xdata_set 出问题,是set 还是 get?  详情 回复 发表于 2013-12-24 15:59
aeo
实在没想明白,你把块定义改了,那图里面的其他地方的插入不是也改了? 难道只插入一个?那还做块干什么  详情 回复 发表于 2013-12-24 13:39
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2013-12-24 13:39:20 | 显示全部楼层
牢固 发表于 2013-12-24 13:23
出现异常的是xdrx_xdata_set函数!修改和查询扩展数的函数换成自己定义的就完全没问题了!

实在没想明白,你把块定义改了,那图里面的其他地方的插入不是也改了?

难道只插入一个?那还做块干什么

点评

可以用块这种方法“封装”对象。  详情 回复 发表于 2013-12-24 16:24
块定义改了,其他同名块自然会变! 我只是对楼主命题的回答!不知道这个东西有什么实际用途!我想说这种属性快应该为无名块,修改块定义才不会影响其他块!  详情 回复 发表于 2013-12-24 13:46
按比例修改  详情 回复 发表于 2013-12-24 13:41
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-12-24 13:41:12 来自手机 | 显示全部楼层
aeo 发表于 2013-12-24 13:39
实在没想明白,你把块定义改了,那图里面的其他地方的插入不是也改了?

难道只插入一个?那还做块干什么 ...

按比例修改

点评

按比例修改只适用单一种情况!但是同一块属性可以角度不同、位置不同,所以修改比例不能适用全部情况!  详情 回复 发表于 2013-12-24 13:52
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-12-24 13:46:36 | 显示全部楼层
本帖最后由 牢固 于 2013-12-24 13:49 编辑
aeo 发表于 2013-12-24 13:39
实在没想明白,你把块定义改了,那图里面的其他地方的插入不是也改了?

难道只插入一个?那还做块干什么 ...

块定义改了,其他同名块自然会变! 我只是对楼主命题的回答!不知道这个东西有什么实际用途!我想说这种属性快应该为无名块,修改块定义才不会影响其他块!或者属性包围框干脆和块定义没有任何关系,只将句柄记录在块的扩展数据里,这样会更好点!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-12-24 13:52:35 | 显示全部楼层

按比例修改只适用单一种情况!但是同一块属性可以角度不同、位置不同,所以修改比例不能适用全部情况!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-22 01:02 , Processed in 0.405826 second(s), 57 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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