本帖最后由 yjtdkj 于 2021-7-14 15:36 编辑
刚刚研究出来,需要的拿去,不谢~~
- ;|-----------------------------------------------------
- 本函数可以让entsel函数返回4类信息,并分别处理
- 1.如果选中对象,则与entsel返回的内容一致,继续循环执行
- 2.如果鼠标对到空白处,则返回nil,则有提示,仍然循环执行
- 3.如果按空格键,则返回"",返回所有选中的图层
- 4.如果按Esc键,则退出并返回错误信息
- -------------------------------------------------------
- yjtdkj.2021.07.14
- |;
- (DEFUN c:tt (/ ENL ENLAYER LST SS SSL SSLST)
- (defun yj-ss2lst (ss / i l)
- (if ss
- (repeat (setq i (sslength ss))
- (setq l (cons (ssname ss (setq i (1- i))) l))
- )
- )
- )
- (defun doENTSEL ()
- (SETQ enl (VL-CATCH-ALL-APPLY 'ENTSEL
- (list "\n选择任意对象以获取执行图层<空格确认返回>:")
- )
- )
- (if (VL-CATCH-ALL-ERROR-P enl)
- (vl-catch-all-error-message enl)
- enl
- )
- )
- (initget " ")
- (while (/= (type
- (doENTSEL)
- )
- 'STR
- )
- (IF (= enl NIL)
- (PRINC "\n** 没有对象被选择 **")
- (PROGN
- (SETQ enLayer (CDR (ASSOC 8 (ENTGET (CAR enl)))))
- (setq lst (cons enLayer lst))
- (setq ss (ssget "X" (list (cons 8 enLayer))))
- (setq ssl (yj-ss2lst ss))
- (foreach n ssl (redraw n 3)) ;亮显图层内所有对象
- (setq sslst (append ssl sslst))
- )
- )
- (initget " ")
- )
- (foreach n sslst (redraw n 4)) ;取消亮显
- (IF (= enl "")
- lst
- enl
- )
- )
|