getsubentity中的TransMatrix是什么?
ThisDrawing.Utility.GetSubEntityent, varPick, TransMatrix, ContextData, vbCrLf&"p"我还没有搞砸很多转换,所以我不确定这意味着什么。
目标:我有一个函数,它向块添加一个前导和注释,其中mtext显示块的名称或附加到块的xdata。它工作得很好,很方便。但是我想在块上选择一个点(这个点实际上只是选择框的中心),并将该点更改为块上最近的点,作为我的领导者箭头。
我有一个nearestpoint toEnt函数,但ent通过GetSubEntity函数传递的不是块ref中的实体,而是块中0,0处的实体。
TransMatrix大概是块ref经历的翻译矩阵,但选择一个对象并将相同的TransMatrix应用于它会使它变得卷曲摇摆。
有什么想法吗?
**** Hidden Message ***** 对不起,布莱科,
我不明白你在做什么。据我所知,你只需要得到块内的每个实体,然后对于每种类型的ent,即直线或圆弧,找到端点、中点等,将所有发现添加到数组中,找到从拾取位置到最近ent的最短距离,并将该点用作你的引线。这看起来很简单,我知道你是一个比我好得多的程序员,所以我一定不明白为什么你需要一个矩阵
话虽如此,我确实有一些代码放在块实体中,但我只是从中提取扩展数据,所以你可能需要那个矩阵,因为我不能肯定我能得到正确的几何信息,因为我从未真正尝试过。 我想将拾取的点转换到块实体(不是blockref)旁边的等效位置,
然后我可以找到实体上最近的点,然后将其转换回blockref。
我怀疑transmatrix中的信息是正确的,但我不知道如何使用它。 因此,你要从插入的块ref中选取一个子元素,这给了你一个点,在计算完子元素上的最近点后,它会返回给你与块表记录的关系(就像插入在0,0,0),你不能使用块变换矩阵将你的前导变换为插入的ref,你是这么说的吗? 不完全是米克。给出的 ent 是 blockrecord 的一部分,而不是 blockref 的一部分。(我可以使用复制对象复制它,使用模型空间作为新所有者,但它就像插入在0,0,0)。事实上,我不知道我选择了哪个块。选择的点是我选择的实际点。
所以我有一个奇怪的混合。领带绝对在转矩阵中 好的,这就是我的意思/想法。
尝试从拾取的块ref反转矩阵,变换拾取的点,进行计算,然后变换回来。我不知道vba是否能做到这一点,但如果你必须这样做,你只需对给定矩阵中的每个值求反,这样就可以了。 谢谢米克。我的同事懂一点数学,把矩阵转置后就可以逆向工作了。所以现在我想,如果我能搞清楚反转,我可能就有所发现了。(没有原生函数)。令人失望的是,我宁愿只是翻译pickedpoint,但我不知道如何输入到一个转换矩阵。vba只接受对象。
我想我得好好研究一下线性代数,毁掉一瓶好啤酒。 取得了一些进展。
尽管如此,这个InverseMatrix的东西还是很奇怪的。
我制作的函数似乎还可以,但抛出了一个摆动器。
它依赖于向矩阵中添加一个单位矩阵,然后
做一些透视工作,并检查第一部分是否调谐到单位矩阵中。
嗯,我不确定它们是否有效
。听起来不像是proress吗? 你不能从插入的块ref(标准化的法线,x和y方向,向量到插入点)的信息中创建一个矩阵,并否定每个元素来反转矩阵吗?? 好的,我看到你在vba中提供了正常和旋转道具。
让我们试试这个 -
创建一个点(inspntX + 1,inspntY,inspntZ)'//沿xaxis的一个单位:
通过给定的腐烂角度旋转这个新点
得到矢量从inspnt到新点的交叉乘积和块的法线,这将给你一个Y轴。
现在交叉乘积新的Yaxis与正交的正交(是一个词)轴。
现在,您应该有足够的信息来构造一个矩阵,给定新的 3 个轴和插入点的平移向量。将它们全部否定以反转方向并转换您的点。
这听起来可行吗??
页:
[1]
2