马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 st788796 于 2014-11-1 08:06 编辑
演示几个类用法 AcGeLine3d AcGeCurveCurveInt3d
 - (defun c:tt (/ e1 e2 e3 gxl1 gxl2 glx3 v gcc getLine3d callback normal)
- (defun getLine3d (e)
- (xdge::constructor
- "kLine3d"
- (xdrx_curve_getstartpoint e)
- (xdrx_curve_getendpoint e)
- )
- )
- (defun callback (dynpt / p1 p2)
- (xdge::setpropertyvalue
- gxl3
- "set"
- dynpt
- (mapcar '+ dynpt v);_两个点
- ) ;_重新设置滑动xline
- (xdge::setpropertyvalue gcc "set" gxl1 gxl3 normal) ;_设置 边界1 和滑动线 相交体
- (setq p1 (xdge::getpropertyvalue gcc "IntPoint" 0)) ;_取交点1
- (xdge::setpropertyvalue gcc "set" gxl2 gxl3 normal) ;_设置 边界2 和滑动线 相交体
- (setq p2 (xdge::getpropertyvalue gcc "IntPoint" 0)) ;_取交点2
- (if (and p1 p2 (> (distance p1 p2) 0.0)) ;_如果交点存在且不重合
- (progn
- ;;(princ "\n")
- ;;(princ p1)
- ;;(princ "\n")
- ;;(princ p2)
- (xdrx_setpropertyvalue e3 "startPoint" p1) ;_
- (xdrx_setpropertyvalue e3 "endPoint" p2)
- )
- )
- )
- (if (and (setq e1 (car (xdrx_entsel "\n第一边界: " '((0 . "line")))))
- (setq e2 (car (xdrx_entsel "\n第二边界: " '((0 . "line")))))
- (setq e3 (car (xdrx_entsel "\n滑动线: " '((0 . "line")))))
- )
- (progn
- (setq gxl1 (getLine3d e1) ;_构造边界 xline
- gxl2 (getLine3d e2) ;_构造边界 xline
- gxl3 (getLine3d e3) ;_构造滑动 xline
- normal (xdrx_getpropertyvalue e1 "Normal")
- v (mapcar '-
- (xdrx_curve_getstartpoint e3)
- (xdrx_curve_getendpoint e3)
- ) ;_滑动线方向向量
- gcc (xdge::constructor "kCurveCurveInt3d") ;_构造一个相交体
- )
- (xdrx_pointmonitor "callback" e3) ;_点监视
- (getpoint "\nPoint")
- (xdrx_pointmonitor)
- (xdge::free)
- )
- )
- (princ)
- )
|