马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
测试
- (defun c:tt (/ ss p1 p2 v _inters p an)
- (defun _inters (p1 p2 e / pts ln2d gelst com2d typ ptl)
- (if (and (setq typ (car (xdrx_getpropertyvalue e "ClassName")))
- (setq ln2d (xdge::constructor "kLineSeg2d" p1 p2))
- )
- (progn
- (cond
- ((= typ "HATCH") (setq pts (xdrx_geom_searchoutline e)))
- ((= typ "INSERT") (setq pts (xdrx_entity_box e)))
- (t)
- )
- (and pts
- (setq gelst (mapcar '(lambda (x) (xdge::constructor "kLineSeg2d" (car x) (cadr x)))
- (xd::list:snakepair (xd::pnts:close pts))
- )
- )
- (setq com2d (xdge::constructor "kCompositeCrv2d" gelst))
- (setq cc (xdge::constructor "kCurveCurveInt2d" ln2d com2d)
- n -1
- )
- (repeat (xdge::getpropertyvalue cc "numIntPoints")
- (setq ptl (cons (xdge::getpropertyvalue cc "intPoint" (setq n (1+ n))) ptl))
- )
- )
- )
- )
- (xdge::free)
- (setq v (mapcar '- p2 p1))
- ptl
- )
- (defun _sort (p1 p2 ptl / v)
- (setq v (mapcar '- p2 p1))
- (vl-sort ptl
- '(lambda (x1 x2)
- (< (last (trans (mapcar '- x1 p1) 0 v))
- (last (trans (mapcar '- x2 p1) 0 v))
- )
- )
- )
- )
- (if (and (setq p1 (getpoint "\nFirst Point: "))
- (setq p2 (getpoint p1 "\nSecond Point: "))
- (if (> (angle p1 p2) _pi2)
- (mapcar 'set '(p1 p2) (list p2 p1))
- t
- )
- (xdrx_grdraw 1 p1 p2)
- (setq v (xd::doc:getdist p1 nil nil (mapcar '- p2 p1) t))
- (setq ss (ssget "F" (list p1 p2) '((0 . "*line,arc,circle,ellipse,insert,hatch"))))
- )
- (progn
- (setq
- lst (_sort
- p1
- p2
- (xd::list:removedup
- (apply 'append
- (mapcar '(lambda (x)
- (if (member (car (xdrx_getpropertyvalue (cadr x) "ClassName")) '("HATCH" "INSERT"))
- (_inters p1 p2 (cadr x))
- (mapcar 'cadr (cdddr x))
- )
- )
- (ssnamex ss)
- )
- )
- )
- )
- p (mapcar '+ p1 v)
- an (angle p1 p2)
- )
- (mapcar '(lambda (a b)
- (xdrx_dimension_makerotate a b (mapcar '+ a v) an)
- )
- lst
- (cdr lst)
- )
- )
- )
- (princ)
- )
|