找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1839|回复: 2

[BUG报告] Polylne_Compress Bug

[复制链接]

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-12-13 08:09:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
偶然发现,看最近要求写侧视图的比较多,在想一个适应指定投影面的算法,绕了很多玩,最后找到用 Curve_GetProjectCurve 很简单的事,不过这个投影出来的 Pline 是 UCS 线,开始以为有重点,就用了 Xdrx_Polyline_Compress , 用完才发现这个函数把 UCS Pline 变换到 WCS 了,运行完没有给变换回来!
下面是测试代码,生成的 Pline 用 Compress 就有 BUG了

  1. (defun ProjectCurves (curve v d / box outbox v1)
  2.   (setq        box    (xdrx_entity_box curve)
  3.         outBox (apply 'xdrx_points_offset (cons d (XD::Pnts:Close box)))
  4.         v      (xdrx_vector_normalize v)
  5.         v1     (xdrx_vector_normalize (xdrx_vector_perpvector v))
  6.   )
  7.   (mapcar '(lambda (x y)
  8.              (xdrx_curve_getProjectCurve curve (list x y))
  9.            )
  10.           outbox
  11.           (list v1 v v1 v)
  12.   )
  13. )
  14. (defun c:tt (/ e p1 p2 d)
  15.   (and (setq
  16.          e (car (xdrx_entsel "\nPick Pline: " '((0 . "lwpolyline"))))
  17.        )
  18.        (setq p1 (getpoint "\nFirst point: "))
  19.        (setq p2 (getpoint p1 "\nSecond point: "))
  20.        (setq d (getdist p1 "\nSpace: "))
  21.        (ProjectCurves e (mapcar '- p2 p1) d)
  22.   )
  23. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-12-13 19:01:48 | 显示全部楼层
把实体transform到世界坐标系然后再xdrx_polyline_compress

命令: (setq from (xdrx_entity_getecs (car (entsel))))

选择对象: ((3510.42 0.0 0.0) (1.0 0.0 0.0) (0.0 0.0 1.0) (0.0 -1.0 0.0))

命令: (setq to (list (car from) '(1 0 0)(0 1 0)(0 0 1)))
; 错误: 函数错误: 0

命令: (setq to (list (car from) '(1 0 0)'(0 1 0)'(0 0 1)))
((3510.42 0.0 0.0) (1 0 0) (0 1 0) (0 0 1))

命令: (setq mat (xdrx_matrix_aligncoordsystem from to))
((1.0 0.0 0.0 0.0) (0.0 0.0 1.0 0.0) (0.0 -1.0 0.0 0.0) (0.0 0.0 0.0 1.0))

命令: (xdrx_entity_transformedcopy (car (entsel)) mat)

选择对象: <Selection set: 21f>
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2013-12-13 20:18:49 | 显示全部楼层
现在知道了,转 WCS 再转回去, 一般这样应用不多
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-22 05:53 , Processed in 0.176459 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表