我在 Revit 中使用变换来显示单个梁的立面视图(用于详细说明)。只要梁是平的(相同的起点和终点偏移),这工作正常,但如果我有一个倾斜的梁,我不得不“压平”端点。
我试图沿着实际的起点/终点定义一个单位向量,并在穿过定义的变换“.Origin”的XY平面上垂直于该向量。然后我使用简单的方程来定义这两个向量的法线... double newx = first.Y * second.Z - first.Z * second.Y; 双newy = first.Z * second.X - first.X * second.Z;双newz = first.X * second.Y - first.Y * second.X; 双 vectlong = Math.Sqrt(newx * newx + newy * newy + newz * newz); XYZ normal = new Autodesk.Revit.DB.XYZ(newx / vectlong, newy / vectlong, newz / vectlong);
然后我将这三个向量用作我的“.set_Basis”0、1 和 2。
只要我强制光束的起点和终点是平坦的(这表明生成的“正常”是有效的),此代码就可以工作,但是当我删除代码以平坦并使用端点的实际 Z 值时斜梁,当我尝试使用这些值时程序失败。
SDK 示例通过梁中间生成截面(CreateViewSection)似乎发现了同样的问题,但程序员放弃了,只是强制程序只接受已经在同一 XY 平面上的梁,这不是真的是梁的“规则”。
我导出了我的三个向量的计算值,并验证它们都是单位长度和正交,这应该是变换所需的全部。谁能解释为什么这些基础值会失败?