马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 newer 于 2019-1-4 18:27 编辑
 - (defun c:xdtb_curvesub (/ pmid pts p1 e p2 g)
- (defun _callback (dynpt)
- (apply 'xdrx_grdraw (append (list 252 0) pts))
- )
- (xdrx_begin)
- (xdrx_pointmonitor "_callback")
- (setq pts nil)
- (if (and (setq e (car (xdrx_entsel
- "\n选择曲线实体<退出>:"
- '((0 . "*line,arc,circle,ellipse"))
- )
- )
- )
- (setq p1 (getpoint "\n起始点<退出>:"))
- (if (xdrx_curve_isclosed e)
- (progn (setq pmid (getpoint p1 "\n中间点<退出>:"))
- (setq pts (append (list p1) (list pmid)))
- )
- t
- )
- (setq p2 (getpoint (if pmid
- pmid
- p1
- )
- "\n终止点<退出>:"
- )
- )
- (setq p1 (xdrx_curve_getclosestpoint e (trans p1 1 0)))
- (setq p2 (xdrx_curve_getclosestpoint e (trans p2 1 0)))
- )
- (progn (redraw)
- (if (not pmid)
- (setq pmid (xdrx_midp p1 p2)
- pmid (xdrx_curve_getclosestpoint e pmid)
- )
- )
- (setq g (xd::curve:getsub e p1 p2 pmid))
- (xdge::entity:make g)
- (xdrx_entity_matchprop e (entlast))
- (xdrx_object_release g)
- (xdrx_prompt "\n局部曲线提取成功.")
- (xdrx_entity_redraw (entlast) 1)
- )
- )
- (xdrx_pointmonitor)
- (xdrx_end)
- (princ)
- )
|