明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6095|回复: 22

[提问] 关于同心圆的判断与筛选。请各位高手帮帮忙

  [复制链接]
发表于 2014-8-10 17:04:31 | 显示全部楼层 |阅读模式
本帖最后由 qinleilei 于 2014-8-10 22:00 编辑

当一个图面上有很多个直径9.0和直径14.0及其他直径的单个圆  还有很多直径为9.0  14.0 的同心圆及其他直径的同心圆,如何快速筛选出这些直径为9.0  14.0的同心圆,将他们放入一个选择集里面,而其他的单个圆或者直径不是9.0 14.0 的的同心圆 就直接忽视不选。这种lsp该怎么写。老大们帮忙看看下。只用判断xy的坐标,z轴不用管
本人做模具设计的,经常要选中指定大小的螺丝沉头孔,每次都是手动一个一个的选的,好累




本帖子中包含更多资源

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

x
发表于 2014-8-11 18:11:03 | 显示全部楼层
本帖最后由 lite 于 2014-8-13 10:09 编辑

附件为我写的关于选取同心圆的程序,为方便使用,写成了函数。

本帖子中包含更多资源

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

x
回复 支持 1 反对 0

使用道具 举报

发表于 2022-8-25 03:23:29 | 显示全部楼层
zctao1966 发表于 2014-8-13 12:48
①先选择所有的圆
②获取圆的圆心,组成表1
③删除重复的圆心,组成新的圆心表2

这个源程序能否给一个我
发表于 2014-8-10 19:30:58 | 显示全部楼层
(defun c:kk( / ss)
  (setq ss (ssget '((-4 . "<OR") (40 . 4.5) (40 . 7.0) (-4 . "OR>"))))
   (if ss
    (progn
      (sssetfirst nil ss)
    )
  );if
  );给我明经币

点评

我的币也不多了,还是院长慷慨哈。 你的这个程序并没有达到我要的效果。我要的是选中指定半径的同心圆  发表于 2014-8-10 21:56
(defun c:tt()(if(setq ss(ssget'((-4 . "<OR")(40 . 4.5)(40 . 7)(-4 . "OR>"))))(sssetfirst nil ss)))  发表于 2014-8-10 19:59

评分

参与人数 1明经币 +1 收起 理由
xyp1964 + 1 赞一个!

查看全部评分

发表于 2014-8-10 20:50:16 | 显示全部楼层
还有同心呢,你这是所有9和14的都会选中.
发表于 2014-8-10 21:21:54 | 显示全部楼层
...螺丝沉头孔...

模具内这些常用的 图党 建议改用 图块
除非您不想搭程序的便车,久用之后会感受到滴
走过... 那冤枉路...
谨供参考

评分

参与人数 1金钱 +20 收起 理由
bzhjl + 20 赞一个!

查看全部评分

发表于 2014-8-10 21:27:00 | 显示全部楼层
本帖最后由 SunSpring 于 2014-8-10 22:08 编辑

  1. (defun c:cc (/ center entdata entname fentdata fradius gentdata gradius
  2.          ptlist radiusmax radiusmin subentgrp
  3.       )
  4.   (defun vla-ssname (ss index)
  5.     (vlax-ename->vla-object (ssname ss index))
  6.   )
  7.   (defun gpax:getboundingbox (entgrp / entname entpl entplx entply entpr
  8.              entprx entpry n
  9.            )
  10.     (if (= (type entgrp) 'ename)
  11.       (setq entgrp (ssadd entgrp))
  12.     )
  13.     (repeat (setq n (sslength entgrp))
  14.       (setq entname (vla-ssname entgrp (setq n (1- n))))
  15.       (vla-getboundingbox entname 'entpl 'entpr)
  16.       (setq entplx (cons (vlax-safearray-get-element entpl 0) entplx)
  17.       entply (cons (vlax-safearray-get-element entpl 1) entply)
  18.       entprx (cons (vlax-safearray-get-element entpr 0) entprx)
  19.       entpry (cons (vlax-safearray-get-element entpr 1) entpry)
  20.       )
  21.     )
  22.     (list (trans (list (apply
  23.        'min
  24.        entplx
  25.            ) (apply
  26.          'min
  27.          entply
  28.        )
  29.      ) 0 1
  30.     ) (trans (list (apply
  31.          'max
  32.          entprx
  33.        ) (apply
  34.            'max
  35.            entpry
  36.          )
  37.        ) 0 1
  38.       )
  39.     )
  40.   )
  41.   (defun ssdelentgrp (ss1 ss2 / n)
  42.     (repeat (setq n (sslength ss1))
  43.       (ssdel (ssname ss1 (setq n (1- n))) ss2)
  44.     )
  45.   )
  46.   (if (setq entgrp (ssget '((0 . "CIRCLE"))))
  47.     (progn
  48.       (setq ptlist (gpax:getboundingbox entgrp))
  49.       (setq dephole (ssadd))
  50.       (while (ssname entgrp 0)
  51.   (setq entname (ssname entgrp 0)
  52.         entdata (entget entname)
  53.         center (cdr (assoc 10 entdata))
  54.   )
  55.   (setq subentgrp (ssget "W" (car ptlist) (cadr ptlist) (list
  56.                     (cons 10 center)
  57.                     (cons 0 "CIRCLE")
  58.                     )
  59.       )
  60.   )
  61.   (if (= (sslength subentgrp) 2)
  62.     (progn
  63.       (setq fentdata (entget (ssname subentgrp 0)))
  64.       (setq gentdata (entget (ssname subentgrp 1)))
  65.       (setq fradius (cdr (assoc 40 fentdata)))
  66.       (setq gradius (cdr (assoc 40 gentdata)))
  67.       (setq radiusmin (min
  68.             fradius
  69.             gradius
  70.           )
  71.       )
  72.       (setq radiusmax (max
  73.             fradius
  74.             gradius
  75.           )
  76.       )
  77.       (if (and
  78.       (= radiusmin 4.5)
  79.       (= radiusmax 7.0)
  80.     )
  81.         (progn
  82.     (ssadd (ssname subentgrp 0) dephole)
  83.     (ssadd (ssname subentgrp 1) dephole)
  84.         )
  85.       )
  86.     )
  87.   )
  88.   (ssdelentgrp subentgrp entgrp)
  89.       )
  90.     )
  91.   )
  92.   (sssetfirst nil dephole)
  93. )


可能有些复杂但是可以用.

已经更新.再试下.



 楼主| 发表于 2014-8-10 21:51:13 | 显示全部楼层
SunSpring 发表于 2014-8-10 21:27
可能有些复杂但是可以用.

错误: no function definition: VLA-SSNAME
试了一下不行。哥们 帮帮忙看下是哪里出了状况。
顺便感谢你下午帮我搞的那个尺寸公差,很给力
 楼主| 发表于 2014-8-10 21:53:58 | 显示全部楼层
Andyhon 发表于 2014-8-10 21:21
...螺丝沉头孔...

模具内这些常用的 图党 建议改用 图块

用图块不方便,也没有见过用图块的。我们这都是用全3D画的模具再到2D里面出图,标加工注解的,所以螺丝类是一个很反锁的工作量
发表于 2014-8-10 22:03:06 | 显示全部楼层
  1. (defun vla-ssname (ss index)
  2.   (vlax-ename->vla-object (ssname ss index))
  3. )

评分

参与人数 1金钱 +20 收起 理由
qinleilei + 20 很给力

查看全部评分

发表于 2014-8-10 23:20:01 | 显示全部楼层
qinleilei 发表于 2014-8-10 21:53
用图块不方便,也没有见过用图块的。我们这都是用全3D画的模具再到2D里面出图,标加工注解的,所以螺丝类 ...

其实,块的应用时很方便的,可以尝试。
3D转过来的图纸,很多事乱七八槽的。
如果,块用的话的话,是很愉快的事
发表于 2014-8-11 00:35:06 | 显示全部楼层
本帖最后由 feng582304 于 2014-8-11 00:38 编辑
  1. (defun feng:ss:cir:1 ( / ss li n tmp )
  2.   (if (setq ss (ssget '((-4 . "<and") (0 . "CIRCLE") (-4 . "<or") (40 . 4.5) (40 . 7.0) (-4 . "or>") (-4 . "and>"))))
  3.     (progn
  4.       (repeat (setq n (sslength ss))
  5.         (setq tmp (ssname ss (setq n (1- n)))
  6.               li (cons (list tmp (cdr (assoc 10 (entget tmp)))) li))
  7.         )
  8.       (feng:ss:cir:3 (feng:ss:cir:2 li))
  9.       )
  10.     )
  11.   )
  12. (defun feng:ss:cir:2 ( li / tmp )
  13.   (if (setq tmp (vl-remove-if '(LAMBDA (x) (<= (abs (apply '+ (MAPCAR '- (cadr (car li)) (cadr x)))) 1e-05)) li))
  14.     (append (list (MAPCAR 'car (VL-REMOVE-IF-NOT '(LAMBDA (x) (<= (abs (apply '+ (MAPCAR '- (cadr (car li)) (cadr x)))) 1e-05)) li))) (feng:ss:cir:2 tmp))
  15.     (list (MAPCAR 'car li))
  16.     )
  17.   )
  18. (defun feng:ss:cir:3 ( li / ss )
  19.   (setq ss (ssadd))
  20.   (MAPCAR '(LAMBDA (x) (ssadd x ss)) (apply 'append (vl-remove-if-not '(LAMBDA (x) (>= (length x) 2)) li)))
  21.   (SSSETFIRST nil ss)
  22.   )
  23. (feng:ss:cir:1)

评分

参与人数 1明经币 +1 收起 理由
qinleilei + 1 很给力!

查看全部评分

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

本版积分规则

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

GMT+8, 2024-12-27 03:57 , Processed in 0.191614 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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