明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6500|回复: 16

真正考验-------批量选择矩形框去选择圆形成各自独立的块

[复制链接]
发表于 2013-5-6 23:14:11 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2013-5-7 16:49:59 | 显示全部楼层
本帖最后由 cie0588 于 2013-5-7 16:57 编辑

选择对象的时候提前控制好图层之类的。减少判断
  1. (defun c:tt (/ ss lst-ename lst-b x y ss-c)
  2.   (vl-load-com)
  3.   (setvar "CMDECHO" 0)
  4. ;;;选择多线段对象
  5.   (setq ss (ssget '((0 . "LWPOLYLINE"))))
  6. ;;; 定义将选择集转化为对象图元名列表
  7.   (defun ss-enamelst (ss)
  8.     (vl-remove-if-not
  9.       '(lambda (x) (equal (type x) 'ename))
  10.       (mapcar 'cadr (ssnamex SS))
  11.     )
  12.   )
  13. ;;;end defun

  14. ;;; 将多线段选择集转化为图元名列表
  15.   (setq lst-ename (ss-enamelst ss))
  16. ;;; 通过 ssget "WP" 将多线段和多线段内部的对象(可以再加上过滤,过滤掉非园)组成一个表
  17.   (setq
  18.     lst-b
  19.      (mapcar '(lambda (x)
  20.     (progn
  21. ;;; 多线段端点列表内部窗选
  22.       (setq  ss-c (ssget "WP"
  23.             (apply
  24.               'append
  25.               (mapcar '(lambda (y)
  26.              (if (eq (car y) 10)
  27.                (list (cdr y))
  28.              )
  29.                  )
  30.                 (entget x)
  31.               )
  32.             )
  33.            )
  34.       )
  35. ;;;判断选择集是否存在。也可以加入其它的判断
  36.       (if (null ss-c)
  37.         (list x)
  38.         (append (list x) (ss-enamelst ss-c))
  39.       )
  40.     )      ;end progn
  41.         )        ;end lambda
  42.        lst-ename
  43.      )
  44.   )
  45. ;;;生成无名块并删除原有对象
  46.   (mapcar '(lambda (x)
  47.        (progn
  48.          (entmakenonameblock x (cdr (assoc 10 (entget (car x)))))
  49.          (mapcar '(lambda  (y)
  50.         (vl-cmdf "erase" y "")
  51.       )
  52.            x
  53.          )
  54.        )
  55.      )
  56.     lst-b
  57.   )


  58.   (prin1)
  59. )
  60. ;;;; 图元列表生成无名快
  61. (defun entmakenonameblock (lst pt / i name)
  62.   (entmake
  63.     (list '(0 . "block") '(2 . "*U") '(70 . 1) (cons 10 pt))
  64.   )
  65.   (mapcar '(lambda (x) (entmake (cdr (entget x)))) lst)
  66.   (setq name (entmake '((0 . "ENDBLK"))))
  67.   (entmake (list '(0 . "INSERT") (cons 2 name) (cons 10 pt)))
  68.   name
  69. )

回复

使用道具 举报

 楼主| 发表于 2013-5-7 17:02:48 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2013-5-30 18:58:33 | 显示全部楼层
能不能改成筒灯形状一样选择一个,相同图形属性的自动成块呢?。。。。。。。
回复

使用道具 举报

发表于 2013-5-30 23:27:18 | 显示全部楼层
真正考验 说和有些夸张了
回复

使用道具 举报

发表于 2013-6-5 15:55:06 | 显示全部楼层
gufeng 发表于 2013-5-30 23:27
真正考验 说和有些夸张了

只是让人注意罢了
回复

使用道具 举报

发表于 2014-7-17 10:12:16 | 显示全部楼层
cie0588 发表于 2013-5-7 16:49
选择对象的时候提前控制好图层之类的。减少判断

这个好,喜欢。
回复

使用道具 举报

发表于 2014-7-17 15:00:34 | 显示全部楼层
谢谢2楼主的奉献!
回复

使用道具 举报

发表于 2014-10-11 21:28:40 | 显示全部楼层
cie0588 发表于 2013-5-7 16:49
选择对象的时候提前控制好图层之类的。减少判断

能否把无名块做成有名块,块名无所谓,其次相同的矩形,块名相同,矩形即使旋转了方向,只要大小不变,块名还是一样的。做组合物大判断比较麻烦,所以搞简单点,闭合的多段线相同,块名就一样的
回复

使用道具 举报

发表于 2014-11-19 00:49:41 | 显示全部楼层
cie0588 发表于 2013-5-7 16:49
选择对象的时候提前控制好图层之类的。减少判断

批量选择矩形框去选择圆形成各自独立的块,但矩形里面是多个直线或者其他什么的(多个对象例如填充个方格或者多段线)就没有用了,大师能不能再完善下?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-23 07:02 , Processed in 0.161665 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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