Revit二开--解析几何 计算垂直向量

Revit砌体排砖三大方法全解析:从纹理模拟到参数化实战 在建筑信息模型(BIM)与参数化设计领域,实现构件的高效、精准建模是提升设计质量和工程效率的核心。其原理在于通过数字化手段,将物理世界的构造逻辑转化为可计算、可驱动的规则,从而自动生成几何形体。这一技术的核心价值在于打通了从设计意图到施工落地的数据链条,确保了模型信息的一致性与可计算性。在BIM软件Revit中,砌体墙的智能化排布是典型的应用场景,它直接关系到模型的深度、工程量统计的准确性以及施工图的可交付性。本文聚焦于**Revit砌体排砖**这一具体课题,深入剖析了包括**Dynamo参数化驱动**在内 阅读详情


在revit二次开发中我们经常会遇到求法向量的问题,如果是圆弧、椭圆、平面等几何土元,直接可以获取其法向量。但是当遇到直线的时候,我们想绘制模型线,则必须创建sketchplane,要创建sketchplane那么必须有一个平面,要有这个平面则需要一个法向量,那么这个法向量怎么计算呢,有两种方法

方法一 顺序判断法

首先判断直线方向与x轴方向是否平行,不平行则用直线方向向量叉乘x方向向量 ,如果与直线与x平行则用直线方向向量叉乘y轴方向向量……

        /// <summary>
        /// 获取一个向量的任意垂直向量
        /// </summary>
        /// <param name="dir"></param>
        /// <returns></returns>
        public XYZ getNormal(XYZ dir)
        {
            var norm = default(XYZ);

            if (dir.IsParallel(XYZ.BasisX))
            {
                norm = dir.CrossProduct(XYZ.BasisY).Normalize();
               
            }
            else if (dir.IsParallel(XYZ.BasisY))
            {
                norm = dir.CrossProduct(XYZ.BasisX).Normalize();
                
            }
            else if (dir.IsParallel(XYZ.BasisZ))
            {
                norm = dir.CrossProduct(XYZ.BasisX);
               
            }
            else
            {
                norm = dir.CrossProduct(XYZ.BasisX);
            }
            return norm;
        }

方法二 解析几何法 向量点积等于零

a·b=0 {x1,y1,z1}·b=0 根据公式只需要构造任意一个与a垂直的向量b即可 b= {(y1+z1),(-x1+z1),(-x1-y1)} {x1,y1,z1}·{(y1+z1),(-x1+z1),(-x1-y1)} = 0

        /// <summary>
        /// 获取一个向量的任意垂直向量
        /// </summary>
        /// <param name="dir"></param>
        /// <returns></returns>
         public XYZ getNormal1(XYZ dir)
        {
            return new XYZ(dir.Y+dir.Z,-dir.X+dir.Z,-dir.X-dir.Y);
        }

更多revit二开知识 请关注 唐僧课堂
唐僧课堂BIM开发


在这里插入图片描述

Revit二次开发,已知ab直线,求经过a点并垂直于ab的垂线,然后与cd线相交得到交点e 文章地址:https://blog.youkuaiyun.com/mazhiyuan1981/article/details/109118984 立即下载

相关推荐

Revit二次开发,求任意一点到直线的垂直交点坐标

对应文章地址:https://blog.youkuaiyun.com/mazhiyuan1981/article/details/109772173

Revit二次开发,怎么判断2个向量之间是平行还是垂直?

已知向量a(x1,y1,z1)、b(x2,y2,z2) 判断垂直,需要点积为0。公式为: a*b=x1x2+y1y2+z1z2=0 在Revit中,

C#开发 1349

莫比乌斯反演

本文从算法竞赛和数论角度出发,系统介绍了狄利克雷卷积与莫比乌斯反演的核心概念。首先定义了数论函数及其基本性质,重点阐述了狄利克雷卷积的代数结构(交换环)和关键恒等式(如μ*1=ε)。随后通过卷积视角简化了莫比乌斯反演的证明过程。最后将理论提升至抽象代数层面,揭示这些数论工具本质上是偏序集关联代数在整除关系下的特例,其中莫比乌斯函数对应Zeta函数的逆元。全文展现了数学概念从具体到抽象的升华过程,为理解这些工具提供了更深刻的代数视角。

aichitang2024的博客 391

Revit二次开发——面的法向量

参照:https://adndevblog.typepad.com/aec/2012/05/getting-the-normal-direction-of-a-face.html 取得一个面的法向量的方法有两种(2018版本API): 1)使用面的属性FaceNormal ,但是对于有些面来说结果和实际的面方向相反 foreach (Face face in solid.Faces) { PlanarFace planarFace = face as PlanarFace; if (planar

qq_43026206的博客 2018

PyTorch GPU版本安装避坑指南:解决RuntimeError: No CUDA GPUs are available报错

本文详细解析了PyTorch GPU版本安装过程中常见的`RuntimeError: No CUDA GPUs are available`报错问题,从硬件驱动检查、CUDA Toolkit与cuDNN安装到PyTorch GPU版本的正确配置,提供了全面的避坑指南和实战验证方法,帮助开发者高效搭建深度学习开发环境。

r2s3t4的博客 295

Nordic nRF52832实战:手把手教你搭建智能手环BLE通信框架(附完整代码)

本文详细介绍了如何使用Nordic nRF52832芯片搭建智能手环的BLE通信框架,涵盖芯片优势、协议栈初始化、低功耗广播策略及健康数据服务实现。通过完整代码示例和架构设计,帮助开发者快速掌握蓝牙低功耗通信技术,适用于可穿戴设备开发。

weixin_29192141的博客 246

Revit二次开发小技巧(十五)构件的最小矩形外轮廓

我们会经常遇到需要计算一个构件的最小外轮廓,一般直接取BoundingBox只有最大和最小值坐标,也是基于x-y坐标系下的。往往不是最小的矩形,所以分享下面的算法来计算最小的外轮廓,条件为法向量是指向Z轴的,暂时没有考虑曲线的情况。

biyusr的专栏 719

利用Matlab绘制非线性系统相图:从理论到实践

本文详细介绍了如何利用Matlab进行非线性系统的相图绘制与相平面分析。从理论基础的状态空间转换出发,通过无阻尼线性谐振子和范德波尔振荡器等实例,手把手演示了使用ode45求解器绘制相图、分析平衡点与极限环的完整流程,并分享了方向场绘制、参数分岔探索及常见错误解决方案等高级技巧,为动力学系统分析与控制设计提供了直观强大的可视化工具。

yhn456789的博客 905

Revit二开学习-多排管道标注

Revit二开学习-多排管道标注 管道标注摘自: https://blog.youkuaiyun.com/qq_43026206/article/details/84256346?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159152319919725219929766%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=1

weixin_44581042的博客 2516

Vue 10分钟入门VR全景显示 基于photo-sphere-viewer

文章目录前言一、引入photo-sphere-viewer?二、使用步骤1.引入库2.声明容器3.内容加载4.全部代码总结 前言 由于工作的需求,要实现全景图片的展示与预览,本来以为会是一个很难的内容,没想到使用现成的组件photo-sphere-viewer就可以轻松实现,上手只需要10分钟! 一、引入photo-sphere-viewer? 可以直接通过npm进行引入 npm install photo-sphere-viewer 二、使用步骤 1.引入库 photo-sphere-viewer

YIGE_MO的博客 5865

46.qt quick-自定义非常好看的qml虚拟软键盘-支持换肤、动态加载移除语言(二)

在上章我们学习了45.qt quick-qml虚拟软键盘详解(一)_诺谦的博客-优快云博客 接下来我们便来自定义一款好看的qml软键盘.如下图所示: 支持背景更换、支持动图: 支持动态加载移除语言: 支持拖拽、自由缩小放大: 支持定位坐标: ...

抵抗时间扭曲,坚持做一件有意义的事 4674

Revit二次开发——向量

线的方向向量: 例:墙的方向向量 Line wallLine = (wall.Location as LocationCurve).Curve as Line; XYZ wallDir = wallLine.Direction; 面的法向量: XYZ faceDir = face.ComputeNormal(new UV()); 判断两个向量平行: faceDir.IsAlmostEqual...

qq_43026206的博客 1621

Plant Simulation智能行车/天车/起重机建模(1)-基本对象说明

摘要: MultiPortalCrane(多门式起重机)是一种灵活物料搬运设备,适用于造船、钢铁等行业,支持零件预组装、钢板/钢卷智能料场管理及设备装卸。其特点包括: 多门架协同:支持同轨道多门架运行,内置防撞检测; 模块化控制:可独立调节门架、小车及吊钩的速度、加速度和悬臂长度; 多样化搬运:通过目标位置设置或连接器实现零件运输; 故障与统计:可配置MTTR和可用率,实时监控各部件状态。 通过对话框可自定义轨道尺寸、门架数量及运动参数,并支持编程调用(如getPortals方法)。适用于需高精度定位和协同

qq_31964455的博客 312

revit二次开发 点投影到面_revit二次开发:求点到面的距离

假设知道一条线的向量和中心点坐标,通过映射获取到该线下的到某一构件的垂直距离。//采用射线法,计算预留洞与楼板的高差值Func isNotTemplate = v3 => !(v3.IsTemplate);View3D _view3D = collector.OfClass(typeof(View3D)).Cast().First(isNotTemplate);XYZ curve_dir =...

weixin_39847034的博客 1223

Xilinx FPGA资源解析与使用系列——Transceiver(六)关键时钟梳理之TXOUTCLK和RXOUTCLK

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Xilinx FPGA资源解析与使用系列——Transceiver(六)transceiver内部关键时钟梳理之TXOUTCLK和RXOUTCLK前言TXOUTCLKRXOUTCLK 前言 前面我们已经研读了 transceiver的参考时钟 和复位的相关内容。 但是随着内容的深入,越来越多的信号出现在我的面前。 例如 TXOUTCLK、TXUSERCLK、TXUSERCLK2 RXOUTCLK、RXUSERCLK、RXUSERCLK2

gzy0506的博客 8085

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

revit二次开发 两条线是否平行,两条线是否垂直

revit二次开发 两条线是否平行,两条线是否垂直

qq_42707143的博客 1089

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Revit二次开发知识分享(二) View相关知识分享

今天分享的知识点比较杂碎,也是平时在学习和工作中经常会使用到的知识。 切换视图 代码切换视图,需要注意的是,切换视图不需要开启事务。 List<ViewPlan> allView = new FilteredElementCollector(doc).OfClass(typeof(ViewPlan)).Cast<ViewPlan>().ToList(); uidoc.ActiveView = allView[0]; 刷新界面 一般切换完后需要处理这个视图里面的构件时,这个时候往往

包包熊的博客 1492

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Revit求直线与平面的交点

直线与平面的交点有两种情况,交点在平面内或平面外,计算出交点后需确定此交点是否在已知平面内。 代码如下: /// <summary> /// 计算直线与平面的交点 /// </summary> /// <param name="point">直线上某一点</param> /// <param name="direct">直线的方向<...

碎碎念的安静的博客 1856

<Revit二次开发>在实际应用中,CrossProduct方法和DotProduct方法分别有哪些典型的用途?

在 Revit 二次开发及三维空间计算中,方法和DotProduct方法具有广泛的应用,以下分别介绍它们的典型用途。

tiger4681的专栏 651

Revit通过放样、融合创建的族,在项目中如何旋转的问题记录

这个问题简单来说,其实就是将Revit中的构件通过Dynamo进行了一次转换,所用的都是以前博客里记录过的方法。将这点小东西写在这里,权当给七月份的博客滥竽充个数吧。^_^ 先来说说这里具体要解决的是个什么样的问题。就是在Revit中通过放样,或者放样融合生成的族构件,导入项目后,在项目文件中无法在相对于路径垂直的平面上进行旋转操作。如下两张图,第一张就是通过放样,绘制路径和轮廓生成的杆件...

Hoping_H的博客 8424

Revit二次开发——墙

下面分别列出了标高、轴网和模型线API构造方法,从构造方法中我们可以判断你所创建的图元时是否是否基于标高、面或者其他。随着对API中各个图元的构造方法的熟练掌握,创建图元将变得得心应手。另外,也可以实现在revit中绘制要开发的图元,查看图元创建依赖于哪些信息,来指导API构造器的选择。这是因为,在Revit中由一部分图元是基于标高(Level)的,其他的还有基于视图的二维图元(向文字、详图线和填充等等的注释元素),基于面的图元(如基于墙面的灯),基于宿主的图元(如门,窗和洞口等)。

weixin_44037272的博客 1234

如何编程计算斜墙与水平面的夹角以及斜墙相关的话题

Revit 可以创建斜墙,方法是通过先创建一个体量,然后在体量的斜面上创建斜墙。具体步骤请参考帮助。 如果用API来创建斜墙,可用FaceWall.Create() 方法。   那么我们怎样辨别是垂直墙还是斜墙呢? 方法是通过墙的类名称来判断。斜墙用FaceWall类来表达,一般垂直墙用Wall类表达。   一个开发者问到一个问题,如何求出斜墙与水平面的夹角呢? 方法: 用几何数据Ge

我爱Revit —— BIM应用及BIM应用软件解决方案专栏 3613

<Revit二次开发>详细介绍Autodesk.Revit.DB.XYZ类的CrossProduct方法和DotProduct方法,以及两个方法的区别。

方法用于计算两个XYZ向量的叉积(也称为向量积)。叉积的结果是一个新的向量,该向量垂直于原来的两个向量,其方向由右手定则确定。以下是参数other是参与叉积运算的另一个XYZ向量。返回值:返回一个新的XYZ对象,表示两个向量的叉积结果。DotProduct方法用于计算两个XYZ向量的点积(也称为数量积)。点积的结果是一个标量(实数),它反映了两个向量之间的夹角和它们的长度关系。以下是DotProduct参数other是参与点积运算的另一个XYZ向量。返回值:返回一个double。

tiger4681的专栏 703

Revit 二次开发 (二) 倾斜的板

  在Revit二次开发过程中,建立一个倾斜的板是可以通过如下方法进行的: 1 // 2 // 摘要: 3 // Creates a slab within the project with the given horizontal profile using 4 // the default fl...

weixin_30855761的博客 663
上一篇: Revit二开--Revit管线随板功能
下一篇: Revit二开--计算重心
binbinstrong
博客等级 码龄16年 317粉丝 56原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值