找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: newer

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

[复制链接]

已领礼包: 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豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

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

帮监视下,什么情况下,xdrx_xdata_set 出问题,是set 还是 get?

点评

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

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

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

可以用块这种方法“封装”对象。

点评

aeo
单独是可以,copy一下呢,难道copy出来的都要一起改?  详情 回复 发表于 2013-12-24 17:25
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-12-24 16:44:06 | 显示全部楼层
XDSoft 发表于 2013-12-24 15:59
帮监视下,什么情况下,xdrx_xdata_set 出问题,是set 还是 get?

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

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2013-12-24 17:25:21 | 显示全部楼层
XDSoft 发表于 2013-12-24 16:24
可以用块这种方法“封装”对象。

单独是可以,copy一下呢,难道copy出来的都要一起改?

点评

这是一种方法了,用块封装的对象,应该有应用程序去维护,块名可以是“随机”的,和普通的LINE什么的没不同,都是单一的“实体”,程序避免出现其他块更新。比如加框文字等。 对不是属性实体的封装的块“对象”,  详情 回复 发表于 2013-12-24 17:44
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-12-24 17:44:42 | 显示全部楼层
aeo 发表于 2013-12-24 17:25
单独是可以,copy一下呢,难道copy出来的都要一起改?

这是一种方法了,用块封装的对象,应该有应用程序去维护,块名可以是“随机”的,和普通的LINE什么的没不同,都是单一的“实体”,程序避免出现其他块更新。比如加框文字等。

对不是属性实体的封装的块“对象”,如果利用块更新的特征也一样,都有程序去控制。比如坐标块,表格块,带WIPEOUT的块等等。

用块做容器去封装一个对象,一些情况下比组要好,因为组有时候可能是“散”的,用户不注意的情况下,编辑时候会出现问题。

这种块封装的对象,就像“自定义实体”。通过加到块上面的方法去维护他们。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

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

修改的API发你QQ离线了,加载新的API,再试试看行不。

测试了你的程序,属性从字多变少,没跟着变化。增加字符正常。

点评

还是不行的!35楼是不用xdrx_xdata_set函数的完整代码,程序测试完全没有问题!点监视的缺点是修改了属性后,不能立即更新边框,需要鼠标在块上略过一下才能更新边框!所以还是在属性上加反应器比较好,修改属性后边  详情 回复 发表于 2013-12-24 20:46
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 16:27 , Processed in 0.193623 second(s), 55 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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