明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1703|回复: 7

[基础] 批量求助

[复制链接]
发表于 2009-11-12 22:51:00 | 显示全部楼层 |阅读模式
大家好,有没人办法,可以选择多个圆里的各不相同的块,这些块以前是被人家做的块套块,等于就是先做一个块,然后再用一个圆把块圈起来,再把圆同块再做一次块,就是块套块,现在工程师把这些块全炸了一次,就变成一个圆套一个块了,而且块名的种类又烦多,请问个位有没有办法批量选择圆里面的块,因为圆都是一样大小的
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2009-11-12 23:07:00 | 显示全部楼层

可以选择镶嵌块

(setq SELECT (nentsel "选择子图"))
(setq ent (cdr (assoc 0 (entget (car SELECT)))))

 楼主| 发表于 2009-11-13 00:15:00 | 显示全部楼层

也就是一次选择多个圆里的多个块吧

 楼主| 发表于 2009-11-13 12:55:00 | 显示全部楼层

2楼的好像选不到呀,选不到多个圆里的块

发表于 2009-11-13 13:17:00 | 显示全部楼层
本帖最后由 作者 于 2009-11-13 13:52:54 编辑

首先用(ssget (list '(0 . "CIRCLE") (cons 10 r)))选择到半径为r的圆

然后再对选到的每个圆用

(ssget "w" (mapcar '- ptcen (list r r 0)) (mapcar '+ ptcen (list r r 0))  '((0 . "INSERT") ))

得到每个圆中的insert实体

其中ptcen及r分别是圆中心及半径

 楼主| 发表于 2009-11-13 23:17:00 | 显示全部楼层
五楼刘先生,好像只能一个选,不能全选择到
 楼主| 发表于 2009-11-26 12:31:00 | 显示全部楼层
今天又遇上了,还是解决不了呀,那位看看有什么好办法不
发表于 2009-11-26 13:42:00 | 显示全部楼层

例如,删除这些符合条件的对象:

(defun c:ttt ()
   (command "erase" (ttt) "")
)


(defun ttt ( / c r ss n e s1 sout ptcen)
  (if (and (setq c (car (entsel "选择样本园:")))
           (setq r (cdr (assoc 40 (entget c))))        
           (setq ss (ssget (list '(0 . "CIRCLE") (cons 40 r))))        
      )
      (progn     
         (setq n -1 sout (ssadd))
         (repeat (sslength ss)
            (setq e (ssname ss (setq n (+ n 1))) ptcen (cdr (assoc 10 (entget e))))
            (setq s1 (ssget "w" (mapcar '- ptcen (list r r 0)) (mapcar '+ ptcen (list r r 0))  '((0 . "INSERT") )))
     (if s1 (setq sout (ssadd (ssname s1 0) sout)))
         )      
  )  )
  sout
)

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

本版积分规则

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

GMT+8, 2024-10-1 19:23 , Processed in 0.180944 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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