马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
偶然发现,看最近要求写侧视图的比较多,在想一个适应指定投影面的算法,绕了很多玩,最后找到用 Curve_GetProjectCurve 很简单的事,不过这个投影出来的 Pline 是 UCS 线,开始以为有重点,就用了 Xdrx_Polyline_Compress , 用完才发现这个函数把 UCS Pline 变换到 WCS 了,运行完没有给变换回来!
下面是测试代码,生成的 Pline 用 Compress 就有 BUG了
 - (defun ProjectCurves (curve v d / box outbox v1)
- (setq box (xdrx_entity_box curve)
- outBox (apply 'xdrx_points_offset (cons d (XD::Pnts:Close box)))
- v (xdrx_vector_normalize v)
- v1 (xdrx_vector_normalize (xdrx_vector_perpvector v))
- )
- (mapcar '(lambda (x y)
- (xdrx_curve_getProjectCurve curve (list x y))
- )
- outbox
- (list v1 v v1 v)
- )
- )
- (defun c:tt (/ e p1 p2 d)
- (and (setq
- e (car (xdrx_entsel "\nPick Pline: " '((0 . "lwpolyline"))))
- )
- (setq p1 (getpoint "\nFirst point: "))
- (setq p2 (getpoint p1 "\nSecond point: "))
- (setq d (getdist p1 "\nSpace: "))
- (ProjectCurves e (mapcar '- p2 p1) d)
- )
- )
|