Revit二次开发,已知ab直线求经过a点并垂直于ab的垂线
文章插图
【Revit二次开发,已知ab直线求经过a点并垂直于ab的垂线】如上图 , 有abcd四个点 , 求经过ab直线上的a点的垂线 。
然后求该垂线与cd直线的交点e 。
//cd直线 , 注意要使用线段 , 否则获取交点e将偏差Autodesk.Revit.DB.Line cd = Autodesk.Revit.DB.Line.CreateBound(c, d);//求ab直线上经过a点的垂线var dir = (b - a).Normalize();var vdir = dir.CrossProduct(XYZ.BasisZ);//生成垂线 , 注意 , 垂线必须是无限延长线var ver = Autodesk.Revit.DB.Line.CreateUnbound(a, vdir);//得到交点evar e = LineUtil.GetIntersectionPoint(ver, cd);1.先求ab线以a点为圆心的单位向量:
var dir = (b - a).Normalize();2.求得经过a点的法线:
var vdir = dir.CrossProduct(XYZ.BasisZ);原理是使用叉乘Z轴 。 根据右手定则 , 可以得到他的法线 。
3.有了法线 , 又已知起点a , 那么作一条垂直于ab线 , 且经过a点的垂线ver:
var ver = Autodesk.Revit.DB.Line.CreateUnbound(a, vdir);4.然后求交点e , ver线与cd线进行相交后得到e点:
var e = LineUtil.GetIntersectionPoint(ver, cd);5.特别提醒: cd线必须是线段 , 而ver线必须是无限延长线 , 否则得到的交点在三维下将有偏差 。
实际应用的效果图如下:
文章插图
?
源码下载:
- 平板|Redmi发布会藏双彩蛋,已知卢伟冰吐槽大会,它却被无辜忽略
- ABB机器人二次开发:使用Web网页读取机器人系统信息的操作方法
- RobotStudio二次开发:Smart组件I/O信号声明
- Robotstudio软件二次开发:基于C#语言的Smart组件开发基础
- 4K+120Hz翻车?微软公布XSX/S一系列已知问题
- 摩托罗拉E7姗姗来迟!目前已知外观设计和部分参数
- 魔兽世界|魔兽世界9.0:托加斯特·罪魂之塔,目前已知的武僧心能一览
- 微软|Win 10 V2004正式版本更新,但是依然存在着这些已知的问题
- 克里斯|《生化危机8》已知的这些事,克里斯继续打酱油,里昂回归无望
- IT之家|微软 Xbox Series X 所有已知消息及未来,你所关心的都在这里了
