明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 233396|回复: 1144

[资源] 小菜版选择易,欢迎使用并提出完善建议

    [复制链接]
发表于 2011-4-29 16:34 | 显示全部楼层 |阅读模式
本帖最后由 小菜123 于 2022-10-9 16:40 编辑

选择易原是wkai写的一个工具,可以很方便地进行过滤选择,因为想要源代码,我就重写了一下,源代码以前在晓东上发布过,最近晓东也上不去了,贴在这里跟大家交流,其实我最希望是有人能提出新的功能,有高手能进一步完善、加强。关于尺寸过滤,似乎有点弱,希望有能按尺寸值过滤的功能,有人能写么?
附件ss.fas是编译版,命令名:ss ,不收币。ss.lsp是完整的源程序,收点辛苦费:)
-----2010.05.04-------
程序进行了更新,定了个版本号(1.0),主要是对通配符作了处理,可以不经编辑直接过滤含通配符的样本文字(这个功能未完整考虑所有通配符,可能仍需自行手动编辑样本字符串),涉及到此应用的朋友,还是应当了解通配符的使用方法,什么时候使用通配符,什么时候加`转义符需要使用者确定。因此程序增加了一个简单的help功能,帮助记忆。
05.04晚 又及:TEXT类型的扩展过滤中增加了“文字内容”过滤,通过此选项可以选中与样本完全相同的文字。也许前面的处理通配符是多余的事情:)

动态块,应该可以支持了,通过扩展过滤器的图块名称实现,因为我对动态块不甚了解,可能有隐含的问题,请精于此道的朋友指教。

尺寸测量值和标注值通过扩展过滤实现了。
另外修改了一些不影响使用的小问题。

-----2011.05.05-------
v1.01 修正了取尺寸标注值函数中,标注文字(Mtext)有格式控制符,结果不正确的问题
-----2011.05.15-------
v1.02 修正了50、51、52组码过滤表生成时,计算容差后的角度值超出0~2pi,生成的过滤表不正确的问题

-----2011.05.19-------
v1.03 增加了动态块的"可见性"属性过滤功能,随便加了几个天正自定义实体进行测试,有需要的朋友可以自行按格式添加,如果不会加,可以发个图说明一下要求,我来加上

-----2011.05.20-------
v1.04 修正了370组码不能生成过滤器的问题

-----2010.05.24-------
v1.05 修正了动态块可见性函数的一个bug

-----2011.05.27-------
v1.06 动态块的一些特性可以象块属性一样显示和过滤了。但对于动态特性过多的块,对话框显示不下,需要关闭该功能(SS命令后键入"B")
块属性改为只显示可见的属性,避免不可见属性过多,对话框显示不下的问题
动态块有一些问题比较难解决,有兴趣的参考这个贴子:http://bbs.mjtd.com/thread-87118-1-1.html------------------2011.05.30-------
v1.07 不等于(/=、<>)增加容差处理
----2011.05.31-------
v1.08 增加天正门窗中的302组码过滤功能
-----2011.06.01-------
v1.09 增加较多的天正实体过滤表,感谢zhongzilei提供
-----2011.06.05-------
v1.10 修正TEXT和MTEXT的文字内容过长时,对话框中显示不全的问题,并且把MTEXT的文字内容过滤放到附加过滤中了。不再处理MTEXT中的格式符(以前曾在CAD2005中遇到过的BUG处理,现在也去掉了,电脑里没有2005,没有测试是否异常)。动态特性支持大于、小于之类的比较符,也支持容差了。
-----2011.07.05-------
v1.11 增加天正比例和曲线面积过滤,块附加过滤中增加了伴随属性选项,增加按显示颜色选择功能(附加过滤中选择,实体类型需勾选,并将类型手动填写为"*",但对块内实体颜色为是byblock的情况,不能正确处理成显示颜色过滤),增加了viewport过滤,但视口的边界多义线不能成为样本实体了,有得也有失。增加了mleader和leader样本实体,但过滤内容较少。这版自我感觉不大满意,也没有时间进行充分测试,请大家指正

-----2011.07.19-------
v1.12 天正比例从通用移到实体部分,增加填充面积过滤功能(在CAD2008上测试通过)

-----2011.08.10-------
v1.13 增加了多实体特性支持(暂时支持的特性不多,因没时间仔细测试),使用附加按钮,可以批量加入多个实体特性(通过选中对话框中的特性复选框来确定是否需要添加该特性,如果没有选中的复选框,附加按钮不做任何操作,不知道讲清楚了没有,呵呵),感谢飞诗提供思路。

-----2011.08.13-------
v1.14 TEXT实体转数值函数进行了修改,可以去掉其中的字符,保留数字的值(对于H1.0.5之类的,不能处理)
-----2011.08.18-------
v1.15 一点小改进,根据飞诗的想法,颜色等特性做了下拉列表
-----2011.08.25-------
v1.16 修复附加过滤中的颜色过滤bug
-----2011.09.01-------
v1.17 文字内容过滤增加下拉列表,加入了斯维尔的实体过滤表(未测试),对话框中用"斯维"显示,是为了看起来美观一些
-----2011.09.03-------
v1.18 图层增加了多选子对话框,参照飞诗选择易的命令定义方式,如果CAD中已经有SS命令,则不覆盖,可通过XC_SS命令调用。用户可以采用(defun c:qs () (c:xc_ss))将快捷命令定义为qs
-----2011.09.04-------
v1.19 图层和文字样式都有多选对话框,下拉列表中也列出所有可选名字
-----2011.09.07-------
v1.20 加了线型多选下拉列表,去掉了图层下拉列表中显示的图层名字,只在子对话框中显示(否则某些图会导致莫名的CAD死机(cad2008),也有时图层列表显示不全,故干脆去掉)
-----2011.09.17-------
v1.21 应海之韵的要求,文字数值支持多个(目前因对话框大小限制,暂时支持到4个),飞诗已经做了这个功能,我也应个景,加上。
-----2011.10.15-------
v1.22 尺寸附加中增加公差和是否手改尺寸过滤功能
-----2011.10.16-------
v1.23 针对天正实体的几处小改进
-----2011.11.11-------
v1.24 修正了CAD2008下,MTEXT内容很长时,(vl-princ-to-string (vlax-get (vlax-ename->vla-object (car(entsel))) 'TextString))会死机的bug(应该算是避免了CAD的bug) umformat函数替换成了Lee Mac写的正则表达式函数,提高了下拉列表的显示速度
-----2012.04.30-------
v1.25 实体类型增加了多选功能,文字附加过滤中增加了按度计量的旋转角度过滤器,过滤范围增加了记忆功能,附加过滤增加了显示线型选项,尺寸标注加了旋转角度选项
-----2012.07.10-------
v1.26测试版:块属性和动态特性做成下拉列表形式,但牺牲了数值型的误差判断 ,对话框的显示速度优化,不再会有闪烁现象增加扩展数据的应用名称支持

-----2012.09.28-------  
v1.27测试版: 附加过滤中,字符型运算符增加not wcmatch选项,应坛友要求增加了标注的文字颜色、文字高度和文字样式选项。
-----2014.01.27-------  
v1.29,综合了wowan1314 的修改方案,手选、全选等直接改为按钮
根据edata的方法,增加了一列,可以多显示些内容
过滤器写入文件,下次打开cad,仍然可以使用上次保存的值
增加了容差记忆功能

-----2014.03.21-------  
v1.31,增加了实体编组支持功能。
有感于猫老师的帖子,我也可以接受捐助或提供有偿定制服务:)

-----2014.08.07-------
v1.35, 增加mline实体,增加曲线范围选择功能(非常感觉Gu版的函数)
同时庆祝在exchange.autodesk上面发布英文版本,英文版不提供源码,故这里也不再提供源码了,非常抱歉。源码放了四年,坛友也下得差不多了吧:)还是会继续改进并增加功能,希望大家多提意见。

-----2015.01.08-------
v1.37,曲线范围改为支持WP和CP两种模式,在选择曲线时提示切换。






















本帖子中包含更多资源

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

x

点评

在某些图纸下启动非常慢, 不知道是什么原因  发表于 2022-6-14 12:31
东东是好东东,但对话框有点难看,我一直用飞诗的那个就是因为这个原因,建议修改一下,简洁一点,一些不常用的可以放到二级图框中,还有图框最少也要对齐啊  发表于 2015-1-13 10:34
建议楼主修改一个长点的命令,方便大家自行修改,主要是个人另外有个SS命令,麻烦了  发表于 2014-10-17 09:31
用了下,非常给力啊  发表于 2014-5-25 19:54
最近经常用到这个程序。很给力  发表于 2013-8-11 10:50
做得很好,一直在用,很赞赏  发表于 2013-8-11 10:49
这一千多行的程序最近确实经常用太好了可惜看不懂  发表于 2013-8-11 10:48
官方是程序员编的,小菜选择易是cad工程师编的,你说哪个会更适合你?  发表于 2012-7-14 18:03
这一千多行的程序与官方的快速选择qselect命令,有什么大的优势。  发表于 2012-5-10 15:30
谢谢分享  发表于 2012-3-14 08:31

评分

参与人数 47威望 +2 明经币 +41 金钱 +532 收起 理由
wuzhenif + 1 赞一个!
ZJKUSO + 1 + 5 在某些图纸下启动非常慢, 不知道是什么原.
bzhjl + 1 很给力!
will12son1 + 1 + 10 非常好的软件,很给力,期待更新!
lingduwx + 1 请问cad中怎么快速选择含有部分文字内容的.
lifuor + 6 很给力!
scmaybee + 1 属性定义选择不上,求更新
来武影 + 1 很给力!
冰之绝恋 + 1 很给力!
434939575 + 1 很给力!

查看全部评分

"觉得好,就打赏"
          共4人打赏

本帖被以下淘专辑推荐:

 楼主| 发表于 2011-9-6 21:43 | 显示全部楼层
少掉的那个“左侧宽度”是因为实体中没有这项数据,不知道什么原因,是否天正定义了某个缺省值的情况下,实体数据中就不包含这个值了,比如随层的实体,62组码就是nil?
通过线型选择是什么要求?上面说得不太明白,请详细说明
回复 支持 1 反对 2

使用道具 举报

 楼主| 发表于 2016-8-5 10:48 | 显示全部楼层
来武影 发表于 2016-8-5 09:58
已经上传,谢谢

建议把下面的清理空组语句放到自动批处理中
(vlax-for obj (vla-get-groups (vla-get-activedocument (vlax-get-acad-object))) (if (zerop (vla-get-count obj)) (vla-delete obj)))
回复 支持 1 反对 1

使用道具 举报

发表于 2011-5-2 17:10 | 显示全部楼层
支持小菜的更新,辛苦了
回复 支持 0 反对 1

使用道具 举报

发表于 2017-10-10 16:24 | 显示全部楼层
菜爷,帮你顶一下。希望继续更新,越来越强大!
回复 支持 1 反对 0

使用道具 举报

发表于 2011-4-29 22:54 | 显示全部楼层
支持你,这个东东很好用,谢谢了
只是现在没有币,下回来下,看看和我手上的这个有什么区别
发表于 2011-4-30 10:50 | 显示全部楼层
这个其实应该根据需要改的,我们院经常做类似的图纸,可以写几个固定的选择集代码就够用啦!
 楼主| 发表于 2011-4-30 18:58 | 显示全部楼层
为了避免没币的坛友不能下载,增加了编译版下载,不收费,可以在使用后考虑是否下载源程序。

点评

有组合选择功能么,或相对图框位置选择,  发表于 2015-1-23 18:35
发表于 2011-4-30 21:32 | 显示全部楼层
回复 小菜123 的帖子

支持你楼主,这个很好
发表于 2011-4-30 23:48 | 显示全部楼层
是源码就支持
发表于 2011-5-1 11:05 | 显示全部楼层
顶一下~~~~~~~
 楼主| 发表于 2011-5-1 11:25 | 显示全部楼层
本帖最后由 小菜123 于 2011-5-1 11:27 编辑

支持的人这么多,尺寸选择的代码,已经写了个大概,但有点bug解决不了,附个图,大家帮助看看
过滤表中的尺寸部分按下面的修改(只贴部分修改过的程序,便于理解如何增加选择表以加强过滤功能):

("DIMENSION" ((-4 "尺寸标注") (1 "标注文字") (42 "测量值") (3 "标注样式") (70 "标注类型" ((32 "水平垂直") (33 "对齐标注") (34 "角度标注")
              (35 "直径标注") (36 "半径标注") (37 "三点角度") (38 "坐标标注"))))
              ("FJ" ("FJ1" "尺寸数值" (dimvalue slent)) ("FJ2" "尺寸文字" (dimtext slent))))


新增加的函数:

(defun dimvalue ( ent / precision)
  (if (= (type ent) 'ENAME) (setq ent (vlax-ename->vla-object ent)))
  (setq precision (vla-get-PrimaryUnitsPrecision ent));;setq
  (if (not (vl-catch-all-error-p (vl-catch-all-apply 'vla-get-measurement (list ent))))
      ;有些dim的属性中, Measurement (RO) = AutoCAD.Application: Object is not open for write 为避免出错,需排除
  (ss-fix (* (vla-get-measurement ent) (vla-get-scalefactor ent)) (/ 1.0 (ss_cf 10 precision)))
    );;if
);;defun
(defun dimtext ( ent / precision text)
  (if (= (type ent) 'ENAME) (setq ent (vlax-ename->vla-object ent)))
  (setq text (vla-get-TextOverride ent));;setq
  (if (= text "") (dimvalue ent) (read text))
);;defun
(defun ss_cf (data n / tmp out) ;计算data的n次方
  (if (= n 0) (setq out 1)
    (progn
         (setq tmp 1 out data)
         (while (< tmp n) (setq out (* out data) tmp (1+ tmp)))
  ));;if
  out
);defun
(defun ss-fix (s1 sr) ;;四舍五入
  (if (> s1 0.0)
  (* (fix (+ (/ (float s1) sr) 0.5 1e-10)) sr)
  (* (fix (- (/ (float s1) sr) 0.5 1e-10)) sr)
  )
);defun

一楼的程序已经更新过。
附件中的图没法取得dim尺寸值,原因不明。

本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
品茗新秀 + 1 很给力!

查看全部评分

发表于 2011-5-1 13:28 | 显示全部楼层
虽然已有,还是下载以示支持
 楼主| 发表于 2011-5-1 14:15 | 显示全部楼层
本帖最后由 小菜123 于 2011-5-1 14:45 编辑

Vlisp取尺寸数值不靠谱,论坛里找了个纯lisp版的替换一下(一楼程序已更新),尺寸过滤算是增强一点了,欢迎大家提出使用建议,如果自行扩展功能不熟悉,可以提问,我会尽力帮助。

;取标注文本.
;xshrimp 2008.07.07
(defun getdim (ent flag / e el roop) ;flag=T 取文字 flag=nil 只取测量数值,标注修改过返回nil
   (setq e (dxf -2 (tblsearch "block" (dxf 2 ent)))  roop T)
   (while roop
     (setq e (entnext e)   el (entget e))
     (if (member '(0 . "MTEXT") el)
       (setq roop nil)
     )
   )
    ;判断有无修改.
   (if (or (= (dxf 1 ent) "<>") (= (dxf 1 ent) ""))
        (read (dxf 1 el))  ;(strcat "<" (cdr (assoc 1 el)) ">")
        (if flag (read (dxf 1 el)))
   )   
);;defun
(defun dimvalue (ent) (getdim ent nil))
(defun dimtext (ent) (getdim ent T))


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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-3-29 04:16 , Processed in 0.205245 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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