乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 226|回复: 11

新点平面到原始点

[复制链接]

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2006-9-5 15:12:21 | 显示全部楼层 |阅读模式
我一直试图绕过ACAD#039;s共线错误
如果我有直线,我知道我可以得到X的双值;s、 Y#039;s和Z'起点、终点和法线的s
ACAD和039;s help说:“我的帮助是。”;可以将该法向量添加到一个点以获得另一个点&引用
我真的可以使用另一个点,该点与基于它的直线起点和终点的XY平面平's电流正常,但不共线。新点与起点的距离应与终点与起点的间距大致相同
有人有这样做的示例代码吗?我一整天都在拔头发
谢谢,戴夫
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2006-9-5 16:24:52 | 显示全部楼层
以下是我正在处理的示例:命令:对齐选择对象:所有找到的13个选择对象:指定第一个源点:-13.073282044755,77.307053104105.082384708192
指定第一个目标点:0,0,0
指定第二个源点:-13.07322204755,71.945120358405109.122890845077
1000,0,0指定第三个震源点或<继续(&gt):
3个震源点共线
前两个点和最后一个点之间的距离离第三个点太远,以至于ACAD出错
我甚至在前面添加了ACAD新闻组的这个功能来检查我是否看到了东西,但它也说它们不是共线的
[code]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发布我现有的代码,因为它的方式大
谢谢,戴夫
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2006-9-5 17:11:10 | 显示全部楼层
啊,你在试着做一个'对齐#039;在代码中是吗
xvec等是向量,如你所说,它是由3个双倍组成的数组
通过减去或添加其他向量来创建其他向量。下面的图片用2d来解释,3d同样简单
一旦你有了至少两个向量,你就可以通过一点简单的向量数学来创建ucs
如果要进行对齐,可以从直线创建向量,然后从直线法线创建另一个向量,该向量乘以直线长度。将新的vec添加到由线sp创建的vec中,您将有两条线相互连接,用于对齐
I'我会试着再画一个皮西
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2006-9-5 18:20:06 | 显示全部楼层
创建新点图片的2d演示。原理与3d相同,无论法线指向何处,都可以工作。一个向量加上另一个向量生成第三个向量。这个向量的值实际上是新的点值
这就是向量可能变得混乱的原因;它们很容易与点混淆,因为两个向量可以具有完全相同的值,但位于两个不同的位置(例如,它们使用不同的sp和ep进行了不同的计算)
理解的最佳方法是在2d中进行一些非常简单的数学运算;证明#039;结果将变得清晰。
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2006-9-5 22:42:09 | 显示全部楼层
我想我开始明白了
首先,通过从直线的端点减去起始点,我们生成向量,我们也可以从直线的法线生成向量,但我们将其乘以直线长度。我的猜测是,通过减法得到的另一个向量是基于行长度的,我们希望第二个向量共享相同的比率
到目前为止这是正确的吗
非常感谢
回复

使用道具 举报

4

主题

54

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2006-9-6 00:15:48 | 显示全部楼层
是的
抱歉ep/sp等没有#039;不太清楚Dave
空间中的每个点都可以空间中的任意点可以表示为向量,因此sp和ep都可以用作向量来进行一些简单的向量数学。通过添加/减去向量,可以生成一个新向量,其尾部(sp)从原点开始,头部(ep)在新点结束
就像我说的,如果你画一个二维网格,并保持数字简单,它35;039;s easy ro目视查看calc#039;s和结果
请注意,我们没有'我们不需要正常地延长线,我们可以#039;我刚刚将其添加到sp,并产生了另一个点,尽管距离sp很近(仅1个单元远)。我拉长了法线,所以3个点之间的比例是相同的,这就是我认为你想要达到的。
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2006-9-6 00:26:23 | 显示全部楼层
酷米克
现在是凌晨2点。让我仔细思考一天左右,然后看看我能做些什么
我有一种感觉,事情会变得更加复杂,但至少到那时我会完全理解的
谢谢你。
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2006-9-6 04:48:04 | 显示全部楼层
无问题's、 如果我有时间,我'我看看我是否能打出一些代码,它将在C#虽然…我不会35#039;不知道从哪里开始使用vb/a
回复

使用道具 举报

4

主题

54

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2006-9-6 05:03:21 | 显示全部楼层
我会在VB中分享我的想法。
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2006-9-6 05:08:01 | 显示全部楼层
这将为WCS解决问题。这不是我的最终代码,但基本内容在这里
这对其他人来说并不重要的原因是,即使实体与WCS成正方形,您仍然需要旋转它,以便将适当的x、y和z轴与其相应的长度、宽度和厚度对齐。由于世界上任何cad引擎中都没有三维实体具有完整的方向信息,因此无法完成对象的旋转或对齐。所需的其余数据不存在。我可以做到,但我已经为解决这个问题的唯一可能的方法申请了专利。许可证很便宜,其他人都决定用参数和公式来驱动绘图。在这个层次上,图形实体没有任何意义,因为它们只是底层数据库/参数引擎的结果。这种方法可以工作,但它从来不是真正的设计/构建。我有我的不同问题,这是肯定的,但做自定义的东西是一个很好的100倍,比最好的参数化软件快
再次感谢米克。你是一颗宝石
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-6 12:33 , Processed in 0.709447 second(s), 73 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表