马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
 - (defun XDGL::Curve:ToCompositeCrv3d (_clst / _endtoend gelst fcrv nlst nl tf
- crv mod c3d
- )
- (defun _endtoend (l1 / sc lc sc_sp lc_ep sp ep tf tf1)
- (setq sc (car nlst)
- lc (last nlst)
- sc_sp (caadr sc)
- lc_ep (last (cadr lc))
- sp (caadr l1)
- ep (last (cadr l1))
- )
- (if (or
- (if (setq tf1 (equal sp sc_sp 1e-6))
- (setq tf 0)
- tf1
- )
- (if (setq tf1 (equal ep sc_sp 1e-6))
- (setq tf 1)
- tf1
- )
- (if (setq tf1 (equal sp lc_ep 1e-6))
- (setq tf 2)
- tf1
- )
- (if (setq tf1 (equal ep lc_sp 1e-6))
- (setq tf 3)
- tf1
- )
- )
- tf
- )
- )
- (setq gelst (xdge::constructor _clst)
- gelst (mapcar
- '(lambda (x)
- (list x (xdge::getpropertyvalue x "hasStartPoint"
- "hasEndPoint"
- )
- )
- )
- gelst
- )
- fcrv (car gelst)
- gelst (cdr gelst)
- nlst (list fcrv)
- )
- (while gelst
- (if (setq nl (vl-member-if '(lambda (x / sc lc sp ep sc_sp lc_ep)
- (_endtoend x)
- ) gelst
- )
- )
- (progn
- (setq crv (car nl)
- mod (_endtoend crv)
- )
- (cond
- ((= mod 0)
- (setq nlst (cons (list (xdge::setpropertyvalue (car crv)
- "reverseParam"
- ) (reverse (cadr crv))
- ) nlst
- )
- )
- )
- ((= mod 1)
- (setq nlst (cons crv nlst))
- )
- ((= mod 2)
- (setq nlst (reverse (cons crv (reverse nlst))))
- )
- (t
- (setq nlst (reverse (cons (list (xdge::getpropertyvalue
- (car crv) "reverseParam"
- ) (reverse (cadr crv))
- ) (reverse nlst)
- )
- )
- )
- )
- )
- )
- )
- (setq gelst (cdr gelst))
- ) ; 改变原曲线为首尾相接
- (setq nlst (mapcar
- 'car
- nlst
- )
- )
- (setq c3d (xdge::constructor "kCompositeCrv3d" nlst))
- (xdge::free nlst)
- c3d
- )
|