找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1146|回复: 15

[分享]:选择易扩展操作、附加过滤的定制代码

[复制链接]
发表于 2004-3-17 22:18:52 | 显示全部楼层 |阅读模式

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

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

×
1 将选择的TEXT修改为当前日期,用于更改图纸日期.
  (应xiaping 长老的要求)
[PHP]
("修改时间"
  (PROGN (SETQ SS X)
         (SETQ SDATE (RTOS (GETVAR "CDATE")))
         (SETQ SDATE (SUBSTR SDATE 1 8))
         (SETQ TMP (STRCAT (SUBSTR SDATE 1 4)
                           "-"
                           (SUBSTR SDATE 5 2)
                           "-"
                           (SUBSTR SDATE 7 2)
                   )
         )
         (REPEAT (SETQ N (SSLENGTH SS))
           (SETQ EE (ENTGET (SSNAME SS (SETQ N (1- N)))))
           (if (= "TEXT" (dxf 0 ee))
             (progn
               (SETQ EE (SUBST (CONS 1 TMP) (ASSOC 1 EE) EE))
               (ENTMOD EE)
             )
           )
         )
  )
)
[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2004-11-22 13:44:14 | 显示全部楼层
1 按照多线长度的附加过滤代码(应wcf的要求)

  1. ("复线长度"
  2.     (progn
  3.       (setq x (vlax-ename->vla-object (ZF:EASYSEL:DXF -1 ZF_SENT)))
  4.       (vlax-curve-getDistAtParam x (vlax-curve-getendParam x))
  5.     )
  6.   )


关于多线的完整的过滤设置表
  1. ("LWPOLYLINE"
  2.     ((-4 "复义线")
  3.       (38 "复线标高")
  4.       (43 "固定宽度")
  5.       (90 "顶点个数")
  6.       (39 "复线厚度")
  7.       (70 "是否闭合" ((0 "不闭合") (1 "闭合")))
  8.     )
  9.     ("FJ"
  10.       ("复线长度"
  11.         (progn
  12.           (setq x (vlax-ename->vla-object (ZF:EASYSEL:DXF -1 ZF_SENT)))
  13.           (vlax-curve-getDistAtParam x (vlax-curve-getendParam x))
  14.         )
  15.       )
  16.     )
  17.   )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-11-22 15:39:17 | 显示全部楼层
建议斑竹整合到选择易的程序中,那样更好使,不用每次加载选择易的时候还要带上它的过滤设置文件,直接一个程序多好!
谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-11-22 16:48:46 | 显示全部楼层
多线长度仅能用于2000以上版本吧,r14的也来一个,更通用一些。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-11-22 17:36:46 | 显示全部楼层
最初由 andyhua5240 发布
[B]建议斑竹整合到选择易的程序中,那样更好使,不用每次加载选择易的时候还要带上它的过滤设置文件,直接一个程序多好!
谢谢! [/B]


自己添加到设置文件中即可,不用每次都加载的。

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

使用道具 举报

 楼主| 发表于 2004-11-22 20:50:13 | 显示全部楼层
过滤TEXT中特定位置文字数值

  1. ("定位测值" (PROGN (IF (= "TEXT" (ZF:EASYSEL:DXF 0 ZF_SENT))
  2.                                     (PROGN (SETQ TMP2 (ZF:EASYSEL:DXF 1 ZF_SENT))
  3.                                            (IF S1
  4.                                              (PROGN (PRINT TMP2)
  5.                                                     (SETQ TMP0 (GETINT "\n测试起始位置<1>:")
  6.                                                           TMP1 (GETINT "\n测试位数<至文字结束>:")
  7.                                                     )
  8.                                                     (IF        TMP0
  9.                                                       nil
  10.                                                       (SETQ TMP0 1)
  11.                                                     )
  12.                                                     (IF        TMP1
  13.                                                       nil
  14.                                                       (SETQ TMP1 nil)
  15.                                                     )
  16.                                              )
  17.                                            )
  18.                                            (IF (>= (STRLEN TMP2) TMP0)
  19.                                              (SETQ TMP3 (ATOF (SUBSTR TMP2 TMP0 TMP1)))
  20.                                              (SETQ TMP3 (ATOF (SUBSTR TMP2 TMP0 TMP1)))
  21.                                            )
  22.                                     )
  23.                                     (SETQ TMP3 0.0)
  24.                                   )
  25.                                   TMP3
  26.                            )
  27.                            1
  28.                 )
复制代码

TEXT过滤的完整代码

  1. ("TEXT" ((-4 "文字")
  2.             (1 "文字内容")
  3.             (7 "文字样式")
  4.             (10 "插入位置")
  5.             (40 "文字高度")
  6.             (71 "文字镜像" ((0 "默认") (2 "文字反向") (4 "文字倒置")))
  7.             (72        "水平对正"
  8.                 ((0 "左对正")
  9.                   (1 "居中对正")
  10.                   (2 "右对正")
  11.                   (3 "对齐")
  12.                   (4 "中间")
  13.                   (5 "拟合")
  14.                 )
  15.             )
  16.             (73        "垂直对正"
  17.                 ((0 "基线对正")
  18.                   (1 "底端对正")
  19.                   (2 "居中对正")
  20.                   (3 "顶端对正")
  21.                 )
  22.             )
  23.           )
  24.           ("FJ"        ("定位测值" (PROGN (IF (= "TEXT" (ZF:EASYSEL:DXF 0 ZF_SENT))
  25.                                     (PROGN (SETQ TMP2 (ZF:EASYSEL:DXF 1 ZF_SENT))
  26.                                            (IF S1
  27.                                              (PROGN (PRINT TMP2)
  28.                                                     (SETQ TMP0 (GETINT "\n测试起始位置<1>:")
  29.                                                           TMP1 (GETINT "\n测试位数<至文字结束>:")
  30.                                                     )
  31.                                                     (IF        TMP0
  32.                                                       nil
  33.                                                       (SETQ TMP0 1)
  34.                                                     )
  35.                                                     (IF        TMP1
  36.                                                       nil
  37.                                                       (SETQ TMP1 nil)
  38.                                                     )
  39.                                              )
  40.                                            )
  41.                                            (IF (>= (STRLEN TMP2) TMP0)
  42.                                              (SETQ TMP3 (ATOF (SUBSTR TMP2 TMP0 TMP1)))
  43.                                              (SETQ TMP3 (ATOF (SUBSTR TMP2 TMP0 TMP1)))
  44.                                            )
  45.                                     )
  46.                                     (SETQ TMP3 0.0)
  47.                                   )
  48.                                   TMP3
  49.                            )
  50.                            1
  51.                 )
  52.                 ("文字数值" (ATOF (ZF:EASYSEL:DXF 1 ZF_SENT)))
  53.                 ("倾斜角度" (ATOF (ANGTOS (ZF:EASYSEL:DXF 51 ZF_SENT))))
  54.                 ("旋转角度" (ATOF (ANGTOS (ZF:EASYSEL:DXF 50 ZF_SENT))))
  55.           )
  56.   )
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2004-11-23 13:42:04 | 显示全部楼层

更改圆直径的后继命令

根据张老师的指点编写的代码,可以在不改变圆的圆心位置的情况下批量更改圆直径。
代码如下:("改直径" (PROGN
                (SETQ SS X)
                (SETQ TMP0 (getreal "给定新直径"))
                (SETQ TMP (/ TMP0 2))
                (SETQ N1 (SSLENGTH SS))
                (REPEAT (SETQ N (SSLENGTH SS))
                      (SETQ EE (ENTGET (SETQ E (SSNAME SS (SETQ N (1- N))))))
                      (SETQ EE (SUBST
                                     (CONS 40 TMP)
                                     (ASSOC 40 EE)
                                     EE
                               )
                      )
                      (ENTMOD EE)
                )(print (strcat "已更改了" (rtos N1 2 1) "个圆的直径。"))
          )

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

使用道具 举报

发表于 2004-11-23 21:14:09 | 显示全部楼层
我用2002版本,把代码贴到easysel_filter.lsp里,加载后,执行多义线出现“选择对象: no function definition: ZF:EASYSEL:DXF”,不知是何原因?烦版主看一下,或把版本升级。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-11-23 22:30:08 | 显示全部楼层
你用的是最新版的么?
原来版本中用的dxf函数经常和别人的冲突,所以改成了ZF:EASYSEL:DXF。
或者你将代码中的ZF:EASYSEL:DXF替换为dxf 也可以
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-11-24 12:04:08 | 显示全部楼层
是最新版,按上面改法,改了以后能用了,不知定位测值有何用途?
据我所知,选择易R14用户不少,虽今后不支持R14了,但烦版主写一个R14能用的多义线代码,让大家学习,作为大家对这个软件的支持。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-11-24 20:57:06 | 显示全部楼层
R14版的复线长度附加过滤

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

使用道具 举报

发表于 2004-11-24 21:49:40 | 显示全部楼层
wkai版主的效率很高,好用!很是感谢版主为大家写出了这么一个好程序,不求回报,无私奉献!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1261个

财富等级: 财源广进

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

使用道具 举报

发表于 2005-12-9 22:14:32 | 显示全部楼层
添加自定义的过滤代码以后不能用了,提示:
no function definition: BUILD_DCL_COLUMN_FJ
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 09:06 , Processed in 0.448929 second(s), 59 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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