看看这个能不能满足你的要求
- [FONT=courier new]
- ;;;--------------------------------------------------------
- ;;;函数: c:SW
- ;;;--------------------------------------------------------
- ;;;编制日期:2006.4.1
- ;;;编制者 :hj
- ;;;函数说明:本函数选择用户指定多边形内的实体(注意多边形要在当前视口内)。
- ;;;--------------------------------------------------------
- (DEFUN c:sw (/ ENAME #MYLIST SS1)
- (princ "\n 选择用户指定多边形内的实体(注意多边形要在当前视口内)。")
- (SETQ ename (CAR (ENTSEL "\n请选择一个多边形:")))
- (SETQ #mylist (getpllist ename))
- (SETQ ss1 (SSGET "_WP" #mylist))
- (SSSETFIRST NIL ss1)
- (SETQ ss1 ss1)
- ) ;_ 结束defun
- ;;;--------------------------------------------------------
- ;;;函数: c:CW
- ;;;--------------------------------------------------------
- ;;;编制日期:2006.4.1
- ;;;编制者 :hj
- ;;;函数说明:本函数选择用户指定多边形内以及与多边形相交的实体
- ;;; (注意多边形要在当前视口内)。
- ;;;--------------------------------------------------------
- (DEFUN c:cw (/ ENAME #MYLIST SS1)
- (princ "\n 选择用户指定多边形内以及与多边形相交的实体(注意多边形要在当前视口内)")
- (SETQ ename (CAR (ENTSEL "\n请选择一个多边形:")))
- (SETQ #mylist (getpllist ename))
- (SETQ ss1 (SSGET "_CP" #mylist))
- (SSSETFIRST NIL ss1)
- (SETQ ss1 ss1)
- ) ;_ 结束defun
- ;;;--------------------------------------------------------
- ;;;要用到一个子函数
- ;;;--------------------------------------------------------
- ;;;--------------------------------------------------------
- ;;;函数: getPlList
- ;;;--------------------------------------------------------
- ;;;说明:本函数提取多段线的各端点坐标值构成一张表并返回
- ;;;
- ;;;
- ;;;编制者:高老师
- ;;;--------------------------------------------------------
- (DEFUN getPlList (#entity)
- (SETQ obj (ENTGET #entity))
- (SETQ lw_t8 (CDR (ASSOC 8 obj)))
- (SETQ obj_1 nil)
- (WHILE (/= (ASSOC 10 obj) nil)
- (IF (AND (= (CAAR obj) 10)
- (NOT (EQUAL (CDAR obj) (LAST obj_1) 0.001))
- )
- (SETQ obj_1 (APPEND obj_1 (LIST (CDAR obj))))
- ) ;生成坐标表同时去掉相邻重点,不带10
- (SETQ obj (CDR obj))
- )
- (SETQ obj obj_1)
- (IF (EQUAL (CAR obj) (LAST obj) 0.0001)
- (SETQ obj (REVERSE (CDR (REVERSE obj))))
- )
- ;;判断首闭
- (SETQ #temp obj)
- )
- ;;end defun
- [/FONT]
|