找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 7557|回复: 74

[原创] 可自由定制的最强劲的刷子

[复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-12-23 17:50:28 | 显示全部楼层 |阅读模式

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

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

×

  1. ;;我也会编程, 可自由定制的最强劲的刷子                    
  2. ;;==============================================================
  3. ;;                                                              
  4. ;;             Writen By Eachy    2004.12.23      
  5. ;;                                                              
  6. ;;              homepage: [url=http://www.xdcad.net]www.xdcad.net[/url]                        
  7. ;;                                                              
  8. ;;==============================================================
  9. ;;改特性的一种通用编程方法,变量名称使用特性名,用 eval 求值   
  10. ;;==============================================================
  11. (defun ea:put-property (obj plst /)
  12.   (mapcar '(lambda (p)
  13.              (if (eval p)
  14.                (vl-catch-all-apply
  15.                  'vlax-put-property
  16.                  (list obj p (eval p))
  17.                )
  18.              )
  19.            )
  20.           plst
  21.   )
  22. )
  23. ;;==============================================================
  24. ;;示例                                                         
  25. ;;用上面的函数可以做出比CAD更最强劲的并可以自由定制的刷子      
  26. ;; pl 中需要的特性参考联机帮助中各实体 Properties               
  27. ;;==============================================================
  28. (vl-load-com)
  29. (defun c:ea:mat        (/ e ss obj pl olderr myerr eDoc)
  30.   (defun myerr (msg)
  31.     (if        (/= msg "取消")
  32.       (princ "\n*取消*")
  33.     )
  34.     (if        pl
  35.       (progn
  36.         (mapcar '(lambda (x) (set x nil)) pl)
  37.         (setq pl nil)
  38.       )
  39.     )
  40.     (vla-endundomark eDoc)
  41.     (setq *error* olderr)
  42.     (princ)
  43.   )
  44.   (setq eDoc (vlax-get-property (vlax-get-acad-object) 'activedocument))
  45.   (vla-startundomark eDoc)
  46.   (setq        olderr        *error*
  47.         *error*        myerr
  48.   )
  49.   (if (and (setq e (car (entsel "\n选择源对象: ")))
  50.            (progn
  51.              (princ "\n选择目标对象....")
  52.              (setq ss (ssget))
  53.            )
  54.       )
  55.     (progn
  56.       (setq obj (vlax-ename->vla-object e))
  57.       (mapcar '(lambda (p / var)
  58.                  (if (not (vl-catch-all-error-p
  59.                             (setq var (vl-catch-all-apply
  60.                                         'vlax-get-property
  61.                                         (list obj p)
  62.                                       )
  63.                             )
  64.                           )
  65.                      )
  66.                    (set p var)
  67.                    (set p nil)
  68.                  )
  69.                )
  70.              (setq pl '(truecolor color          layer
  71.                                    linetype          textstring
  72.                                    height          stylename
  73.                                    textstyle          rotation
  74.                                    thickness          constandwidth
  75.                                    patternname          patternscale
  76.                                    lineweight          elevation
  77.                                    radius          xscalefactor
  78.                                    yscalefactor          zscalefactor
  79.                                   ) ;_ 此处可根据需要增减
  80.               )
  81.       )
  82.       (setq ssl (sslength ss))
  83.       (while (> ssl 0)
  84.         (setq
  85.           obj (vlax-ename->vla-object (ssname ss (setq ssl (1- ssl))))
  86.         )
  87.         (ea:put-property obj pl)
  88.       )
  89.       (mapcar '(lambda (x) (set x nil)) pl)
  90.       (setq pl nil)
  91.     )
  92.   )
  93.   (setq *error* olderr)
  94.   (vla-endundomark eDoc)
  95.   (princ)
  96. )
  97. (princ "\nWriten By Eachy , From [url=http://www.xdcad.net]www.xdcad.net[/url]!")
  98. (princ)

评分

参与人数 1D豆 +3 收起 理由
/db_自贡黄明儒_ + 3 很给力!经验;技术要点;资料分享奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-12-23 20:15:56 | 显示全部楼层
怎么用不了,输入mat提示为未知命令,贴出的代码还需要修改吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-23 22:50:44 | 显示全部楼层
最初由 coolyxw 发布
[B]怎么用不了,输入mat提示为未知命令,贴出的代码还需要修改吗? [/B]



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

使用道具 举报

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

使用道具 举报

发表于 2004-12-23 23:38:41 | 显示全部楼层
借ea的东风,凑个热闹,这个程序的编译版本在cad外挂版块发过

  1. ;| (x-mprop e ss attlst) = 实体属性刷子函数-----梦断江南.2004.10
  2. 参数: e = 参照实体. ss = 要刷的实体选集  attlst = 适用的属性列表.(表)
  3. 返回: 空.中途显示参照实体有效属性列表((属性 属性值)(...)...)
  4. 技巧: 使用了 vl-catch-all-*,避免出错退出.
  5. 实例: (x-mprop (car(nentsel)) (ssget) '(rotation color Height))
  6. |;
  7. (defun x-mprop (e ss attlst / attv attlst2)
  8.   (mapcar '(lambda(x)
  9.              (if(not(vl-catch-all-error-p(setq attv(vl-catch-all-apply 'vlax-get (list (x2o e) x)))))
  10.                (setq attlst2 (cons (list x attv) attlst2))
  11.              ))
  12.           attlst
  13.   )
  14.   (princ "\n参照实体有效属性:")(mapcar 'princ attlst2)
  15.   (mapcar '(lambda(x)
  16.              (mapcar '(lambda(y)(not(vl-catch-all-error-p(vl-catch-all-apply 'vlax-put (list (x2o x) (car y)(cadr y))))))
  17.                      attlst2
  18.              )
  19.            )
  20.           (xss2lst ss)
  21.   )(princ)
  22. )

  23. ;;*****配套程序********
  24. ;; ss to ename lst
  25. (defun xss2lst (ss / i e lst)
  26.   (setq i -1)
  27.   (while (setq e(ssname ss (setq i (1+ i))))
  28.     (setq lst (cons e lst))
  29.   )(reverse lst)
  30. )
  31. ;; ename to vla-object
  32. (defun x2o (e)
  33.   (vlax-ename->vla-object e)
  34. )

[php]
;;----------------------函数应用:扩展命令--------------------------------;;
;;刷文字转角.
(defun c:mpttr () ;;不适用于 文字对齐为 alinged 和 fit 情况.
  (x-mprop (car(nentsel "\n刷文字转角,不适用于文字对齐为 alinged 和 fit 情况,\n选参照实体:"))
           (progn (princ "\n选文本:")(ssget '((0 . "*TEXT"))))
           '(ROTATION))
)
;;刷文字高度.
(defun c:mptth () ;;不适用于 文字对齐为 alinged 和 fit 情况.
  (x-mprop (car(nentsel "\n刷文字高度,不适用于文字对齐为 alinged 和 fit 情况,\n选参照实体:"))
           (progn (princ "\n选文本:")(ssget '((0 . "*TEXT"))))
           '(HEIGHT))
)
;;刷实体颜色.
(defun c:mpcol ()
  (x-mprop (car(nentsel "\n刷实体颜色,选参照实体:"))
           (progn (princ "\n选实体:")(ssget))
           '(COLOR))
)
;;刷实体图层.
(defun c:mplay ()
  (x-mprop (car(nentsel "\n刷实体图层,选参照实体:"))
           (progn (princ "\n选实体:")(ssget))
           '(LAYER))
)
;;刷文字内容.
(defun c:mpstr ()
  (x-mprop (car(entsel "\n刷文字内容,选参照实体:")) ;;对标注用entsel才可取得属性.
           (progn (princ "\n选*TEXT,ATT*,DIMENSION实体:")(ssget '((0 . "*TEXT,ATT*,DIMENSION"))))
           '(TEXTSTRING TextOverride))
)
;;-----------------------------------------------------------------------;;

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

使用道具 举报

已领礼包: 8612个

财富等级: 富甲天下

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

使用道具 举报

发表于 2004-12-24 12:27:48 | 显示全部楼层

Re: [原创]:我也会编程, 可自由定制的最强劲的刷子

最初由 eachy 发布
[B][CODE]
;;我也会编程, 可自由定制的最强劲的刷子                    
;;==============================================================
;;                                                              
... [/B]


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

使用道具 举报

发表于 2004-12-24 12:48:58 | 显示全部楼层
我说eachy的第一个子程序怎么唱独脚戏呢。
难怪程序不能用。
还是楼上眼尖,佩服!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2004-12-25 22:01:04 | 显示全部楼层
象"自由选"一样,根据选到的物体,出不同的对话框,来个一网打尽.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-14 19:54 , Processed in 0.583014 second(s), 64 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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