马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 newer 于 2016-7-2 23:36 编辑
 - (defun XD::Curve:FirstLayer (e lyrmode / el entl entl1 entl2 lyerfilter
- lyrfilter ss tf tol x y
- )
- (defun _fuzzclose (el)
- (xdrx_document_setprec 1 1)
- (mapcar
- '(lambda (x)
- (if (wcmatch (car (xdrx_object_classname x)) "*POLYLINE")
- (xdrx_polyline_fuzzclose x)
- )
- )
- el
- )
- )
- (defun _getss (e lyr / pts ss lyrfilter)
- (if (or
- (xdge::iskindof e "kCurve3d")
- (xdge::iskindof e "kCurve2d")
- )
- (setq pts (xdge::getpropertyvalue e "getsamplepoints" tol))
- (progn
- (setq pts (xdrx_getsamplept e tol))
- (if lyr
- (setq lyrfilter (list '(0 . "*polyline,circle,ellipse,spline")
- (cons 8 (car (xdrx_getpropertyvalue e
- "layer"
- )
- )
- )
- )
- )
- (setq lyrfilter (list '(0 . "*polyline,circle,ellipse,spline")))
- )
- )
- )
- (if (and
- pts
- (setq ss (ssget "wp" pts lyrfilter))
- )
- (progn
- (setq ret (xdrx_pickset->ents ss))
- (_fuzzclose ret)
- (vl-remove nil (mapcar
- '(lambda (x)
- (if (xdrx_curve_isclosed x)
- x
- nil
- )
- )
- ret
- )
- )
- )
- )
- )
- (setq tol (car (xdrx_document_getprec)))
- (xdrx_sysvar_push '("osmode" 0))
- (if (setq entl (_getss e lyrmode))
- (progn
- (setq entl (XD::Entity:ListByProperty entl "area")
- entl (mapcar
- 'cadr
- (vl-sort entl '(lambda (x y)
- (> (car x) (car y))
- )
- )
- )
- )
- (setq entl1 nil)
- (while (setq x (car entl))
- (if (setq entl2 (_getss x lyrmode))
- (mapcar
- '(lambda (y)
- (setq entl (vl-remove y entl))
- )
- entl2
- )
- )
- (setq entl1 (cons x entl1))
- (setq entl (cdr entl))
- )
- )
- )
- (xdrx_sysvar_pop)
- entl1
- )
|