找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3991|回复: 27

[公告] 求孔距离小于多少删除

[复制链接]

已领礼包: 60个

财富等级: 招财进宝

发表于 2013-12-2 15:02:08 | 显示全部楼层 |阅读模式

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

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

×
QQ图片20131202145156.jpg 请看此图,图内我标了2处,有距离是2.2,有距离是1.78。只求把小于2.2的距离的圆形孔都删除(圆形孔有时3个连在一起或者4个都要删除),工作有时一张图删半天,搞得眼睛花。谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1268个

财富等级: 财源广进

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-12-2 15:35:16 | 显示全部楼层
  1. (defun c:tt (/ ss dis lst)
  2.   (if (and (setq ss (ssget '((0 . "Circle"))))
  3.            (setq dis (getdist "\n输入最小距离: "))
  4.       )
  5.     (progn
  6.       (setq lst        (mapcar        '(lambda (x)
  7.                            (list (xdrx_getpropertyvalue x "center") x)
  8.                          )
  9.                         (xdrx_pickset->ents ss)
  10.                 )
  11.             lst        (vl-remove-if
  12.                   '(lambda (x)
  13.                      (= (length x) 2)
  14.                    )
  15.                   (XD::List:GroupByIndex lst dis)
  16.                 )
  17.             lst        (mapcar 'cdr lst)
  18.       )
  19.       (mapcar '(lambda (x)
  20.                  (mapcar 'xdrx_entity_delete (cdr x));_随便保留一个
  21.                )
  22.               lst
  23.       )
  24.     )
  25.   )
  26.   (princ)
  27. )

点评

选择对象: 输入最小距离: 2.2 ; 错误: no function definition: XDRX_PICKSET->ENTS 命令: 只小小于2.2距离全部都删除,小于直径2.2的全部删除[attachimg]6952[/attachimg] 当然有时有2个,有时3个,4个,5  详情 回复 发表于 2013-12-3 09:42

评分

参与人数 1D豆 +5 收起 理由
炫翔 + 5 很给力!经验;技术要点;资料分享奖!

查看全部评分

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

使用道具 举报

发表于 2013-12-2 15:51:46 | 显示全部楼层
Lisp
  1. (defun c:tt (/ ss dis lst)
  2.   (if (and (setq ss (ssget '((0 . "Circle"))))
  3.            (setq dis (getdist "\n输入最小距离: "))
  4.       )
  5.     (progn
  6.       (setq lst        (mapcar        '(lambda (x)
  7.                            (list (cdr (assoc 10 (entget x) x)) x)
  8.                          )
  9.                         (ss->ents ss)
  10.                 )
  11.             lst        (vl-remove-if
  12.                   '(lambda (x)
  13.                      (= (length x) 2)
  14.                    )
  15.                   (XD::List:GroupByIndex lst dis)
  16.                 )
  17.             lst        (mapcar 'cdr lst)
  18.       )
  19.       (mapcar '(lambda (x)
  20.                  (mapcar 'entdel (cdr x)) ;_随便保留一个
  21.                )
  22.               lst
  23.       )
  24.     )
  25.   )
  26.   (princ)
  27. )
  28. (defun ss->ents        (ss / sl i el)
  29.   (setq        sl (sslength ss)
  30.         i  sl
  31.   )
  32.   (repeat sl
  33.     (setq el (cons (ssname ss (setq i (1- i))) el))
  34.   )
  35.   el
  36. )
  37. ;;;---------------------------------------------------------------;
  38. ;;;功能: 对表按索引值分组                                         ;
  39. ;;;输入: lst ---- 表, 索引值只能为 STR REAL INT LIST类型         ;
  40. ;;;      fuzz -- 误差值,误差值仅对 REAL INT LIST 三种格式有效,  ;
  41. ;;;              对STR 索引无效                                   ;
  42. ;;;输出: 表                                                       ;
  43. ;;;---------------------------------------------------------------;
  44. ;;;Author: eachy                                                  ;
  45. ;;; From www.xdcad.net                                            ;
  46. (defun XD::List:GroupByIndex (lst fuzz / ll ilst l index tf)
  47.   (or
  48.     (and
  49.       (listp (caar lst))
  50.       (setq ll        (list (car lst))
  51.             lst        (cdr lst)
  52.       )
  53.       (while lst
  54.         (if (setq l
  55.                    (apply 'append
  56.                           (mapcar
  57.                             'cdr
  58.                             (vl-remove-if-not
  59.                               '(lambda (x) (equal (car x) (caar ll) fuzz))
  60.                               lst
  61.                             )
  62.                           )
  63.                    )
  64.             )
  65.           (setq        ll  (cons (append (car ll) l) (cdr ll))
  66.                 lst (vl-remove-if
  67.                       '(lambda (x) (equal (car x) (caar ll) fuzz))
  68.                       lst
  69.                     )
  70.           )
  71.         )
  72.         (setq ll  (cons (car lst) ll)
  73.               lst (cdr lst)
  74.         )
  75.       )
  76.     )
  77.     (and (setq index (caar lst))
  78.          (or (and (= (type index) 'INT)
  79.                   (setq        tf  t
  80.                         lst (mapcar
  81.                               '(lambda (x) (cons (float (car x)) (cdr x)))
  82.                               lst
  83.                             )
  84.                   )
  85.              )
  86.              (= (type index) 'REAL)
  87.              (= (type index) 'STR)
  88.          )
  89.          (setq
  90.            lst (vl-sort lst '(lambda (l1 l2) (< (car l1) (car l2))))
  91.          )
  92.          (mapcar '(lambda (x y / l)
  93.                     (if        (equal (caar ll) x fuzz)
  94.                       (setq ll (cons (cons x
  95.                                            (if (listp y)
  96.                                              (append y (cdar ll))
  97.                                              (cons y (cdar ll))
  98.                                            )
  99.                                      )
  100.                                      (cdr ll)
  101.                                )
  102.                       )
  103.                       (setq ll (cons (cons x y) ll))
  104.                     )
  105.                   )
  106.                  (mapcar 'car lst)
  107.                  (mapcar 'cdr lst)
  108.          )
  109.          (if tf
  110.            (setq ll (mapcar '(lambda (x) (cons (fix x) (cdr x))) ll))
  111.          )
  112.     )
  113.   )
  114.   (vl-remove nil ll)
  115. )

点评

命令: tt 选择对象: 指定对角点: 找到 1232 个 选择对象: 输入最小距离: 2.2 ; 错误: 参数太多 命令: 参数太多,删除不了,小于直径距离2.2的全部删除,不保留1  详情 回复 发表于 2013-12-3 09:51

评分

参与人数 1D豆 +5 收起 理由
炫翔 + 5 很给力!经验;技术要点;资料分享奖!

查看全部评分

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-12-2 16:57:15 | 显示全部楼层
本帖最后由 newer 于 2013-12-2 16:58 编辑

命令行输入 e 回车
提示选择对象的时候输入: (ssget "x" '((0 . "CIRCLE")(-4 . "<")(40 . 2.2)))

懂一点LISP,就可以让你几秒钟完成几天的工作量。

评分

参与人数 1D豆 +5 收起 理由
炫翔 + 5 很给力!经验;技术要点;资料分享奖!

查看全部评分

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

使用道具 举报

已领礼包: 191个

财富等级: 日进斗金

发表于 2013-12-2 18:37:13 | 显示全部楼层
本帖最后由 口味虾 于 2013-12-2 18:39 编辑

1.png
CAD用户中会编程的有1%就不错了,尽管lsp很简单,但还是那么多人是电脑小白,其实基本的功能cad都是有的,就看你会不会用了,你要的功能用快速选择功能就ok,如上图所示。

评分

参与人数 2D豆 +15 收起 理由
炫翔 + 5 很给力!经验;技术要点;资料分享奖!
XDSoft + 10 热心帮忙奖!

查看全部评分

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

使用道具 举报

已领礼包: 61个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

发表于 2013-12-3 09:37:33 | 显示全部楼层
本帖最后由 /db_自贡黄明儒_ 于 2013-12-3 09:39 编辑

;;删除小于指定间距的圆
  1. ;;删除小于指定间距的圆
  2. (defun C:w2 (/ DIS LST SS X Y)
  3.   (defun Is-Ename (arg) (equal (type arg) 'ename))
  4.   (defun pdpx (en1 en2)
  5.     (distance (cdr (assoc 10 (entget en1))) (cdr (assoc 10 (entget en2))))
  6.   )
  7.   ;;120.1 [功能] 选择集->图元列表
  8.   (defun MJ:SS->LIST (SS)
  9.     (vl-remove-if-not 'Is-Ename (mapcar 'cadr (ssnamex SS)))
  10.   )

  11.   (if (and (setq ss (ssget '((0 . "Circle"))))
  12.            (setq dis (getdist "\n输入最小距离: "))
  13.       )
  14.     (progn
  15.       (setq lst (MJ:SS->LIST ss))
  16.       (foreach x lst
  17.         (foreach y lst
  18.           (if (and (entget x) (entget y))
  19.             (if        (equal x y)
  20.               nil
  21.               (if (< (pdpx x y) dis)
  22.                 (progn (entdel x) (entdel Y))))))))))

点评

运行W2,选择,再输入2.2回车,CAD就卡死了,麻烦修改下, 谢谢111  详情 回复 发表于 2013-12-3 09:46
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 60个

财富等级: 招财进宝

 楼主| 发表于 2013-12-3 09:42:13 | 显示全部楼层

选择对象:
输入最小距离: 2.2
; 错误: no function definition: XDRX_PICKSET->ENTS
命令:


只小小于2.2距离全部都删除,小于直径2.2的全部删除 QQ图片20131203094205.jpg
当然有时有2个,有时3个,4个,5个都会有小于2.2的,这些都是全部要删除,谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 60个

财富等级: 招财进宝

 楼主| 发表于 2013-12-3 09:46:38 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2013-12-3 09:37
;;删除小于指定间距的圆

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

使用道具 举报

已领礼包: 60个

财富等级: 招财进宝

 楼主| 发表于 2013-12-3 09:51:49 | 显示全部楼层

命令: tt
选择对象: 指定对角点: 找到 1232 个
选择对象:
输入最小距离: 2.2 ; 错误: 参数太多
命令:


参数太多,删除不了,小于直径距离2.2的全部删除,不保留1

点评

(list (cdr (assoc 10 (entget x) x)) x) 这句好像不对,应该为 (list (cdr (assoc 10 (entget x))) x)  详情 回复 发表于 2013-12-3 10:02
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-12-3 10:02:33 来自手机 | 显示全部楼层
本帖最后由 st788796 于 2013-12-3 10:08 编辑
abc498091367 发表于 2013-12-3 09:51
命令: tt
选择对象: 指定对角点: 找到 1232 个
选择对象:


(list (cdr (assoc 10 (entget x) x)) x)
这句好像不对,应该为
(list (cdr (assoc 10 (entget x))) x)

全部删除后面改一句
(mapcar '(lambda (x) (mapcar 'entdel x)) lst)
去掉 cdr

点评

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

使用道具 举报

已领礼包: 60个

财富等级: 招财进宝

 楼主| 发表于 2013-12-3 10:30:31 | 显示全部楼层
st788796 发表于 2013-12-3 10:02
(list (cdr (assoc 10 (entget x) x)) x)
这句好像不对,应该为
(list (cdr (assoc 10 (entget x)) ...

多谢,可以用了,真心谢谢

点评

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-12-3 11:30:32 来自手机 | 显示全部楼层
abc498091367 发表于 2013-12-3 10:30
多谢,可以用了,真心谢谢

楼主,这个程序运行效果和效率如何

点评

还有个问题麻烦ST788796,现在你帮我写的是直线小于2.2都删除,[attachimg]6955[/attachimg] 请看此图,我图中是38度,请帮忙重新改下,改成随便多少度都删除,只要孔心到孔心小于2.2的全部删除。麻烦了。  详情 回复 发表于 2013-12-3 17:40
很好,我试了一个上千个圆形的,就是平时我工作的,能把小于的全删除,真心谢谢ST788796。  详情 回复 发表于 2013-12-3 11:32
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 60个

财富等级: 招财进宝

 楼主| 发表于 2013-12-3 11:32:39 | 显示全部楼层
st788796 发表于 2013-12-3 11:30
楼主,这个程序运行效果和效率如何

很好,我试了一个上千个圆形的,就是平时我工作的,能把小于的全删除,真心谢谢ST788796。

点评

好奇楼主什么专业的,要处理上千个这种小圆。  详情 回复 发表于 2013-12-3 12:06
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 08:57 , Processed in 0.315326 second(s), 71 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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