马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
 - (defun c:tt (/ _isout e key ss1 pts ptl)
- (defun _isout (e1 e / sp ep mp stf etf mtf)
- (mapcar 'set '(sp mp ep) (xdrx_curve_getpoint e1))
- (setq stf (equal sp (xdrx_curve_getclosestpoint e sp) 1e-3)
- etf (equal ep (xdrx_curve_getclosestpoint e ep) 1e-3)
- mtf (xdrx_point_isinside mp e)
- )
- (or (or (not stf)
- (not etf)
- )
- (and (and stf etf (not mtf)))
- )
- )
- (if (and (setq e (car (xdrx_entsel
- "\n选择封闭线: "
- '((0 . "*LINE,CIRCE,ELLIPSE"))
- )
- )
- )
- (xdrx_curve_isclosed e)
- (setq pts (xdrx_getsamplept e))
- (setq ss (ssget "F" pts '((0 . "*line,circle,arc,ellipse"))))
- (setq key (xdrx_yesorno "内部修剪<N修剪外部>" "Y"))
- )
- (progn
- (xdrx_setmark)
- (ssdel e ss)
- (mapcar '(lambda (x / ptl pams)
- (setq ptl (xdrx_curve_getinters x e 0)
- pams (mapcar '(lambda (a)
- (xdrx_curve_getparamatpoint x a)
- )
- ptl
- )
- pams (vl-sort pams '<)
- )
- (apply 'xdrx_curve_getsplitcurves (cons x pams))
- )
- (xdrx_pickset->ents ss)
- )
- (setq ss1 (xdrx_pickset_union ss (xdrx_getss)))
- (if (zerop key)
- (mapcar '(lambda (x)
- (if (_isout x e) (xdrx_entity_delete x))
- )
- (xdrx_pickset->ents ss1)
- )
- (mapcar '(lambda (x)
- (if (not (_isout x e)) (xdrx_entity_delete x))
- )
- (xdrx_pickset->ents ss1)
- )
- )
- )
- )
- (princ)
- )
|