Bryco 发表于 2006-7-26 22:34:28

getsubentity中的TransMatrix是什么?

ThisDrawing.Utility。GetSubEntity ent、varPick、TransMatrix、;上下文数据、vbCrLf&amp&引用;p“
I港#039;t在转换中弄乱了很多东西,所以我'我不知道这意味着什么
Aim:我有一个函数,可以向块添加引线和注释,其中多行文字显示块的名称或附加到块的扩展数据。它工作得很好,很方便。但是我想在块上拾取一个点(该点实际上只是拾取框的中心),并将该点更改为块上最近的点,作为我的引线箭头
我有一个很好的nearestpointtoEnt函数,但是GetSubEntity函数经过的ent不是blockref中的实体,而是位于0,0处的块中的实体。TransMatrix可能是blockref经历的平移矩阵,但是选择一个对象并对其应用相同的TransMatrix会使其完全卷曲抖动
有什么想法吗?

Bryco 发表于 2006-7-26 22:47:22

对不起,布莱科,我不明白你在做什么。据我所知,你只需要获得块内的每个实体,然后对于每种类型的ent,即直线或圆弧,找到端点、中点等,将所有发现添加到一个数组中,找到从拾取位置到最近ent的最短距离,并将该点用作你的引线。这看起来很简单,我知道你是一个比我好得多的程序员,所以我一定不明白为什么你需要一个矩阵
话虽如此,我确实有进入块实体内部的代码,但我只是从它们中提取扩展数据,所以你可能毕竟需要那个矩阵,因为我不能肯定我能够得到正确的几何信息,因为我从未真正尝试过。

MickD 发表于 2006-7-27 00:22:39

我想将拾取的点转换到块实体(不是块参考)旁边的等效位置,然后我可以找到实体上最近的点,然后将其转换回块参考
我怀疑transmatrix中有正确的信息,但我不知道;我不知道如何使用它。

Bryco 发表于 2006-7-27 00:58:51

因此,您正在选择插入的块参考的一个子元素,该子元素为您提供一个点,在计算子元素上的最近点后,该点将返回给您与块表记录相关的点(就像插入到0,0,0),您可以't使用块变换矩阵将引线变换为插入的参考,这是你说的吗?

MickD 发表于 2006-7-27 01:55:18

不完全是米克。给定的ent是blockrecord的一部分,而不是blockref的一部分。(我可以使用copyobjects复制它,使用modelspace作为新所有者,但它将被插入到0,0,0)。事实上,我不知道我选了哪个blockref。拾取的点是我拾取的实际点。因此我有一个奇数混合。这一联系肯定在跨矩阵中

Bryco 发表于 2006-7-27 02:27:46

好的,那's有点像我的意思/想法
尝试从拾取的块ref反转矩阵,变换拾取的点,进行计算'然后变换回来。我不会'我不知道vba是否可以做到这一点,但如果必须这样做的话;您只需对给定的矩阵中的每个值求反,该值应该起作用。

Bryco 发表于 2006-7-27 22:20:14

谢谢你,米克。我的同事懂一点数学,在转换矩阵后,它会反向工作。所以现在我想如果我能找出反转,我可能会有一些东西。(没有本机函数)。令人沮丧的是,我宁愿只翻译选取的点,但我不知道如何将其输入到转换矩阵中。vba one仅接受对象
我想我'我将不得不读线性代数,毁掉一杯好啤酒之类的东西。

MickD 发表于 2006-7-31 00:37:36

取得了一些进展
这个倒矩阵的东西仍然很奇怪
我做的函数看起来不错,但有点不稳定
它依赖于向矩阵中添加一个单位矩阵,然后做一些数据透视,并检查第一部分是否调整为单位矩阵
我不知道'我不能确定它们是否有效
不'听起来不像;proress做了吗?

MickD 发表于 2006-7-31 00:47:34

Can#039;你只要从插入的块ref(归一化法线,x和y方向,向量到插入点)的信息中创建一个矩阵,并对每个元素求反以反转矩阵??

Bryco 发表于 2006-7-31 01:00:38

好的,我看到你有法线和旋转道具#039;在vba中可用
让我们试试这个-
创建一个点(inspntX+1,inspntY,inspntZ)'//沿X轴的一个单位:按给定的旋转角度旋转这个新点,得到从inspnt到新点和块的向量的叉积;s正常,这会给你一个Y轴
现在将新的Yaxis与垂直正交(即单词)轴进行叉积
现在,给定新的3个轴和到插入点的平移向量,您应该有足够的信息来构造矩阵。否定它们以反转方向并转换你的观点
这听起来可行吗??
页: [1] 2
查看完整版本: getsubentity中的TransMatrix是什么?