本帖最后由 edata 于 2015-7-8 13:46 编辑
- (vl-load-com)
- (defun c:tt(/ p e1 e2 e3 pts1 pts2 bak_color bak_echo p1 p2 p3 p4 p5 p6 p7 p8)
- (if(setq p(getpoint "\n指定点"))
- (progn
- (setq e1(entlast))
- (setq bak_echo (getvar 'cmdecho))
- (setvar 'cmdecho 0)
- (command "-BOUNDARY" "_non" p "")
- (setq e2(entlast))
- (if(and (sk_eqh5 e1 e2) (sk_type e2 "LWPOLYLINE"))
- (progn
- (command "offset" "30" e2 "_non" p "")
- (setq e3(entlast))
- (vla-put-color (vlax-ename->vla-object e3) 138)
- (if (and (sk_eqh5 e2 e3) (sk_type e3 "LWPOLYLINE"))
- (progn
- (setq pts1(sk_getpt e2))
- (setq pts2(sk_getpt e3))
- (mapcar 'set '(p1 p2 p3 p4) (mapcar '(lambda(x)(trans x 0 1 )) pts1))
- (mapcar 'set '(p5 p6 p7 p8) (mapcar '(lambda(x)(trans x 0 1 )) pts2))
- (setq bak_color(getvar 'cecolor))
- (setvar 'cecolor "8")
- (command "rectang" "_non" p1 "_non" p5)
- (sk_mkdj (entlast))
- (command "rectang" "_non" p2 "_non" p6)
- (sk_mkdj (entlast))
- (command "rectang" "_non" p3 "_non" p7)
- (sk_mkdj (entlast))
- (command "rectang" "_non" p4 "_non" p8)
- (sk_mkdj (entlast))
- (setvar 'cecolor bak_color)
- (setvar 'cmdecho bak_echo)
- (entdel e2)
- )
- )
- )
- )
- )
- )
- (princ)
- )
- (defun sk_eqh5(e1 e2)(not(equal (sk_dxf e1 5)(sk_dxf e2 5))))
- (defun sk_dxf(ent code)(cdr(assoc code(entget ent))))
- (defun sk_type(ent str)(equal (sk_dxf ent 0) str))
- (defun sk_getpt(ent)(mapcar 'cdr (vl-remove-if-not '(lambda(x)(= 10 (car x)))(entget ent))))
- (defun sk_mkdj(ent / p1 p2 p3 p4 pts bak_color)
- (setq pts (sk_getpt ent))
- (mapcar 'set '(p1 p2 p3 p4) (mapcar '(lambda(x)(trans x 0 1 )) pts))
- (setq bak_color(getvar 'cecolor))
- (setvar 'cecolor "250")
- (command "line" "_non" p1 "_non" p3 "")
- (command "line" "_non" p2 "_non" p4 "")
- (setvar 'cecolor bak_color)
- )
-
|