求教!如何获取外部参照内、指定图块的插入点坐标
请教一下大家!如何获取外部参照内、指定图块的插入点坐标(相当于当前UCS)
例如:获取案例测试文件中、第一个圆图块的插入点坐标
我现在用nentsel拾取了参照内的一个图块、
可以获取到此图块的图元名、
然后用entget获取组码10、也就是插入点坐标
但是这种获取的坐标值、并不是当前坐标系下的坐标,
并且如果参照内有两个同名块,
分别用nentsel获取插入点坐标、结果竟然是一样的
研究了大半天也没找到头绪,
特来求教论坛的各位大神,
有没有啥办法、可以获取到想要的插入点坐标值
这个矩阵变换其实是有点复杂的,需要两次变换矩阵。
假设圆是块A的子图元,块A是块B的子图元。
1.entselp+entget获得组码10,得到块A的插入点的OCS坐标P。
2.结合210组码,使用 trans 将P转换为UCS坐标,得到P0。
3.将点P0逆变换到块A的块定义坐标系得到P1(可以借用gile的 RevRefGeom 函数 实现)
4.将P1由块B的块定义坐标系变换到当前空间坐标P2(使用第1步entselp返回的第三个参数:4x4矩阵),这时候P2点就是块参照A的插入点在当前空间的映射。
kozmosovia 发表于 2025-12-10 22:23
nentselp不可能获取到嵌套的图块,直接得到的是嵌套块的块内图元。需要根据nentselp的第四个返回值顺序获取 ...
如果是nentselp拾取块内图元、然后对图元的顶点坐标转换、在矩阵转换没问题;现在是想转换参照里面块的插入点坐标、我现在得到块的图元名后、用entget获取的插入点坐标值不对、感觉不能用entget来获取、现在就是这块卡住了 caoyin 发表于 2025-12-11 03:02
这个矩阵变换其实是有点复杂的,需要两次变换矩阵。
假设圆是块A的子图元,块A是块B的子图元。
1.entselp ...
谢谢大神!原来这么复杂、我还是放弃吧、因为这个嵌套关系可能会有很多层、那转换就不止两次了 nentselp不可能获取到嵌套的图块,直接得到的是嵌套块的块内图元。需要根据nentselp的第四个返回值顺序获取到嵌套图块,然后进一步根据向外图块嵌套层级,顺次提取转换矩阵进行计算。 nentselp的第三个返回值就是最里层块内图元转换到当前WCS的矩阵,直接vla-copy点取图元,然后用这个矩阵转换,就可以直接原地复制出来,然后提取新复制图元的信息就是当前WCS的数据了。
简单点,直接用ncopy就是了
kozmosovia 发表于 2025-12-10 23:23
nentselp的第三个返回值就是最里层块内图元转换到当前WCS的矩阵,直接vla-copy点取图元,然后用这个矩阵转 ...
主要是获取块插入点坐标、不是块内图元坐标 前段时间插入底图,发现默认会原坐标插入,如果插入块参照,指定坐标应该也是可以的,但看你的貌似是获取块的坐标当做参照,不知道能不能做两个块,一个独立块,一个组合后的块,当然只是猜想,不是太理解你的目的或意图。
Ref:
http://www.mjtd.com/thread-73535-1-1.html Andyhon 发表于 2025-12-11 11:51
Ref:
http://www.mjtd.com/thread-73535-1-1.html
谢谢 这个有点高深了我研究一下
页:
[1]
2