明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2023|回复: 6

[源码] ;;; 屏幕内快速选择

  [复制链接]
发表于 2019-10-10 13:44:07 | 显示全部楼层 |阅读模式
;;; 屏幕内快速选择
(defun c:ff (/ *error* SS1 I ENS EL FL FLL FLS SS2)
  (defun *error* (msg)
    (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*,*中断,*取消*,*退出*") (princ msg))
  )
  (or (setq SS1 (cadr (ssgetfirst))) (setq SS1 (ssget)) (exit))
  (repeat (setq I (sslength SS1)) (setq ENS (cons (ssname SS1 (setq I (1- I))) ENS)))
  (foreach en ENS
    (setq EL (entget en))
    (setq FL (append '((-4 . "<AND"))
                     (vl-remove 'nil (mapcar '(lambda (i) (assoc i EL)) '(0 8 62))) ;DXF组码匹配(0 8 62)
                     '((-4 . "AND>"))
             )
    )
    (or (member FL FLL) (setq FLL (cons FL FLL)))
  )
  (setq FLS (append '((-4 . "<OR")) (apply 'append FLL) '((-4 . "OR>"))))
  (cond ((setq SS2 (ssget "_W" (getvar 'VSMIN) (getvar 'VSMAX) FLS))
         (sssetfirst nil SS2)
         (foreach x (list "\n选择了" (sslength SS2) "个。") (princ x))
        )
        ((foreach x (list "\n无匹配选择对象,保留原选择集的" (sslength SS1) "个对象。") (princ x)))
  )
  (princ)
)
发表于 2019-10-14 22:31:10 | 显示全部楼层
谢谢分享,支持
发表于 2019-10-15 20:02:04 | 显示全部楼层
虽然代码看的明,但补充几句话说明逻辑选择是干什么的,节约时间吧。
发表于 2019-10-16 18:03:47 | 显示全部楼层
你好,麻烦问一下。如果是全屏(全图)选择,需要怎么改呢?
发表于 2019-10-16 20:15:24 来自手机 | 显示全部楼层
谢谢楼主分享
发表于 2019-10-17 06:59:23 | 显示全部楼层

谢谢楼主分享
发表于 2019-10-17 09:50:12 | 显示全部楼层
能不能全域呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-18 15:50 , Processed in 0.159765 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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