13816600495 发表于 2024-7-4 11:18:37

关于trans的疑惑

Trans转换,我个人理解第1个表达式返回应该是当前WCS坐标,第2个应该是OCS坐标也就是(0 0 0),可结果出人意外,两者相同,请各位老师看看哪里出问题了。
(defun c:pp (/ en)
        (setq en (car (entsel)))
        (princ "\n")
        (princ (trans (cdr (assoc 10 (entget en))) en 0))
        (princ "\n")
        (princ (trans (cdr (assoc 10 (entget en))) en 1))
        (princ)
)
返回:
(24487.1 18690.7 0.0)
(24487.1 18690.7 0.0) <-这个我个人理解应该是(0 0 0)

vormittag 发表于 2024-7-4 18:06:27

czb203 发表于 2024-7-4 17:06
大佬,之前看您文字也描述了很多,能不能用些简单的实例讲解下,这个函数太抽象了,虽然不常用,~

我从另外一个视图来画个示意说一下吧。

vormittag 发表于 2024-7-5 09:03:00

hubeiwdlue 发表于 2024-7-4 21:35
什么情况下,对象坐标系的z轴才会和wcs的z轴方向不一样呢。对象坐标系确实看不懂,和有限元的单元坐标系 ...

不能理解成单元坐标系,不是一个概念。对象坐标系是以(0 0 0)为原点,特定的法向量为Z轴的坐标系。

举例来说,(1, 0, 0) 、(0, 1, 0)、(0, 0, 1) 这三个点共面,构成一个三角形,这个平面平行于 $\pi$ 平面(你提到有限元了,我想弹塑性力学应该不陌生吧),这个正三角形的中心(1/3, 1/3, 1/3)肯定是在静水压力轴上,以静水压力轴为 z 轴的 OCS,原点就是 (0,0,0),XOY 平面就是 $\pi$ 平面,X轴 Y轴的方向依任意轴算法(看帮助)确定,WCS 里的(1/3, 1/3, 1/3)点 转换到 这个OCS 里就是 (0,0, sqrt(3)/3) , 你可以尝试一下 (trans (list (/ 1. 3.) (/ 1. 3.) (/ 1. 3.) ) 0 (list 1. 1. 1.)) 看看是不是这个结果。

vormittag 发表于 2024-7-4 14:34:25

1、WCS 是唯一的,没有什么当前的 WCS;
2、OCS 在绝大多数情况下和 WCS 是一致的(大家都在 XOY 平面作图),OCS 和 WCS 原点是完全一致的,只是 OCS 的 z 轴单位向量和 WCS z 轴单位向量不一定一致,如果你的平面图元所在平面不是 WCS 的 XOY平面,那么 OCS 和 WCS 是不一致的(法向量不同);
3、UCS 是不唯一的,是用户确定的;你那一句换到的是 UCS,不出意料,你没有动过UCS,和 WCS 是一致的。这里和 OCS 没关系。

hubeiwdlue 发表于 2024-7-4 14:17:10

坐等大神科普对象坐标系的知识。

你有种再说一遍 发表于 2024-7-4 14:23:55

一个是变换,一个是逆变换...

vormittag 发表于 2024-7-4 14:51:28

OCS 如果是 (0 0 0),那 一定是WCS 的 (0 0 0)。你没理解对象坐标系 OCS 是什么。

czb203 发表于 2024-7-4 17:06:09

vormittag 发表于 2024-7-4 14:51
OCS 如果是 (0 0 0),那 一定是WCS 的 (0 0 0)。你没理解对象坐标系 OCS 是什么。
大佬,之前看您文字也描述了很多,能不能用些简单的实例讲解下,这个函数太抽象了,虽然不常用,~

你有种再说一遍 发表于 2024-7-4 18:02:34

czb203 发表于 2024-7-4 17:06
大佬,之前看您文字也描述了很多,能不能用些简单的实例讲解下,这个函数太抽象了,虽然不常用,~

去敲敲c#,敲敲就知道了

czb203 发表于 2024-7-4 19:48:52

vormittag 发表于 2024-7-4 18:06
我从另外一个视图来画个示意说一下吧。

谢谢大佬的图文分析,得好好研究下:lol

czb203 发表于 2024-7-4 19:50:07

你有种再说一遍 发表于 2024-7-4 18:02
去敲敲c#,敲敲就知道了

:lol水平不够,勉强看得懂lsp
页: [1] 2
查看完整版本: 关于trans的疑惑