马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 st788796 于 2013-11-15 22:16 编辑
对Ellipse用 Offset 命令后 生成的将是一个模拟椭圆,本程序简单演示了对椭圆做平行椭圆,用这个方法还可以扩展到 SPline 的平行 Spline
 - (defun c:tt (/ callback e p0 ss obj p0 ret ell majorradius minorradius)
- (defun callback (dynpt / d)
- (setq d (distance dynpt (xdrx_curve_getclosestpoint e dynpt)))
- (if (not (xdrx_point_isinside dynpt e))
- (progn
- (vla-put-MajorRadius obj (+ d majorradius))
- (vla-put-minorradius obj (+ d minorradius))
- )
- (if (< d minorradius)
- (progn
- (vla-put-majorradius obj (- majorradius d))
- (vla-put-minorradius obj (- minorradius d))
- )
- )
- )
- (setq p0 dynpt)
- )
- (if (setq e (car (xdrx_entsel "\nPick Ellipse: " '((0 . "ellipse")))))
- (progn
- (xd::begin)
- (setq ss (xdrx_entity_copy e '(0. 0. 0.) '(0. 0. 0.))
- MajorRadius (xdrx_vector_length
- (xdrx_getpropertyvalue e "MajorAxis")
- )
- MinorRadius (xdrx_vector_length
- (xdrx_getpropertyvalue e "MinorAxis")
- )
- obj (vlax-ename->vla-object (ssname ss 0))
- )
- (setq ret (xdrx_pointmonitor "callback" ss))
- (getpoint)
- (xdrx_pointmonitor)
- (xd::end)
- )
- )
- (princ)
- )
|