新点平面到原始点
我一直试图绕过ACAD#039;s共线错误如果我有直线,我知道我可以得到X的双值;s、 Y#039;s和Z';起点、终点和法线的s
ACAD和039;s help说:“我的帮助是。”;可以将该法向量添加到一个点以获得另一个点&引用
我真的可以使用另一个点,该点与基于它的直线起点和终点的XY平面平';s电流正常,但不共线。新点与起点的距离应与终点与起点的间距大致相同
有人有这样做的示例代码吗?我一整天都在拔头发
谢谢,戴夫
以下是我正在处理的示例:命令:对齐选择对象:所有找到的13个选择对象:指定第一个源点:-13.073282044755,77.307053104105.082384708192
指定第一个目标点:0,0,0
指定第二个源点:-13.07322204755,71.945120358405109.122890845077
1000,0,0指定第三个震源点或<;继续(>):
3个震源点共线
前两个点和最后一个点之间的距离离第三个点太远,以至于ACAD出错
我甚至在前面添加了ACAD新闻组的这个功能来检查我是否看到了东西,但它也说它们不是共线的
Public Function Colly(B As Variant, M As Variant, E As Variant, Optional Tolerance As Double) As Boolean
'Gives true if three points B(egin), M(iddle) and E(nd) are collinear
'if d(B,E)= d(B,M) + d(M,E)
Dim i As Integer, dBM As Double, dME As Double, dBE As Double
For i = 0 To UBound(B) 'Assuming all are 2D or all are 3D
dBM = dBM + (B(i) - M(i)) ^ 2
dME = dME + (M(i) - E(i)) ^ 2
dBE = dBE + (B(i) - E(i)) ^ 2
Next i
If Abs(Sqr(dBE) - Sqr(dBM) - Sqr(dME)) yvec=normalise(line.ep line.sp)
zvec=xvec。叉积(yvec)
yvec=normalise(line.ep line.sp)<;-完全不知道
zvec=xvec。叉积(yvec)<;--完全不知道
我可以';t发布我现有的代码,因为它的方式大
谢谢,戴夫 啊,你在试着做一个';对齐#039;在代码中是吗
xvec等是向量,如你所说,它是由3个双倍组成的数组
通过减去或添加其他向量来创建其他向量。下面的图片用2d来解释,3d同样简单
一旦你有了至少两个向量,你就可以通过一点简单的向量数学来创建ucs
如果要进行对齐,可以从直线创建向量,然后从直线法线创建另一个向量,该向量乘以直线长度。将新的vec添加到由线sp创建的vec中,您将有两条线相互连接,用于对齐
I';我会试着再画一个皮西
创建新点图片的2d演示。原理与3d相同,无论法线指向何处,都可以工作。一个向量加上另一个向量生成第三个向量。这个向量的值实际上是新的点值
这就是向量可能变得混乱的原因;它们很容易与点混淆,因为两个向量可以具有完全相同的值,但位于两个不同的位置(例如,它们使用不同的sp和ep进行了不同的计算)
理解的最佳方法是在2d中进行一些非常简单的数学运算;证明#039;结果将变得清晰。 我想我开始明白了
首先,通过从直线的端点减去起始点,我们生成向量,我们也可以从直线的法线生成向量,但我们将其乘以直线长度。我的猜测是,通过减法得到的另一个向量是基于行长度的,我们希望第二个向量共享相同的比率
到目前为止这是正确的吗
非常感谢 是的
抱歉ep/sp等没有#039;不太清楚Dave
空间中的每个点都可以空间中的任意点可以表示为向量,因此sp和ep都可以用作向量来进行一些简单的向量数学。通过添加/减去向量,可以生成一个新向量,其尾部(sp)从原点开始,头部(ep)在新点结束
就像我说的,如果你画一个二维网格,并保持数字简单,它35;039;s easy ro目视查看calc#039;s和结果
请注意,我们没有';我们不需要正常地延长线,我们可以#039;我刚刚将其添加到sp,并产生了另一个点,尽管距离sp很近(仅1个单元远)。我拉长了法线,所以3个点之间的比例是相同的,这就是我认为你想要达到的。 酷米克
现在是凌晨2点。让我仔细思考一天左右,然后看看我能做些什么
我有一种感觉,事情会变得更加复杂,但至少到那时我会完全理解的
谢谢你。 无问题';s、 如果我有时间,我';我看看我是否能打出一些代码,它将在C#虽然…我不会35#039;不知道从哪里开始使用vb/a 我会在VB中分享我的想法。 这将为WCS解决问题。这不是我的最终代码,但基本内容在这里
这对其他人来说并不重要的原因是,即使实体与WCS成正方形,您仍然需要旋转它,以便将适当的x、y和z轴与其相应的长度、宽度和厚度对齐。由于世界上任何cad引擎中都没有三维实体具有完整的方向信息,因此无法完成对象的旋转或对齐。所需的其余数据不存在。我可以做到,但我已经为解决这个问题的唯一可能的方法申请了专利。许可证很便宜,其他人都决定用参数和公式来驱动绘图。在这个层次上,图形实体没有任何意义,因为它们只是底层数据库/参数引擎的结果。这种方法可以工作,但它从来不是真正的设计/构建。我有我的不同问题,这是肯定的,但做自定义的东西是一个很好的100倍,比最好的参数化软件快
再次感谢米克。你是一颗宝石
页:
[1]
2