IfcVectorSum
注:定义符合ISO/CD 10303-42:1992
此函数返回输入参数之和(Arg1-Arg2)。函数返回两个输入向量的向量差作为向量。输入参数应具有相同的维数,但可以是方向或向量。如果两个输入参数都是向量,则它们必须用相同的单位表示,如果两个输入参数都是方向,则生成无单位结果。零和向量产生零大小的向量。如果两个输入参数都是方向,则结果是无单位的。
注:函数改编自ISO 10303-42中定义的向量和。
IFC2x中的新函数
EXPRESS Specification
FUNCTION IfcVectorSum (Arg1, Arg2 : IfcVectorOrDirection) : IfcVector; LOCAL Result : IfcVector; Res, Vec1, Vec2 : IfcDirection; Mag, Mag1, Mag2 : REAL; Ndim : INTEGER; END_LOCAL; IF ((NOT EXISTS (Arg1)) OR (NOT EXISTS (Arg2))) OR (Arg1.Dim <> Arg2.Dim) THEN RETURN (?) ; ELSE BEGIN IF 'IFCGEOMETRYRESOURCE.IFCVECTOR' IN TYPEOF(Arg1) THEN Mag1 := Arg1\IfcVector.Magnitude; Vec1 := Arg1\IfcVector.Orientation; ELSE Mag1 := 1.0; Vec1 := Arg1; END_IF; IF 'IFCGEOMETRYRESOURCE.IFCVECTOR' IN TYPEOF(Arg2) THEN Mag2 := Arg2\IfcVector.Magnitude; Vec2 := Arg2\IfcVector.Orientation; ELSE Mag2 := 1.0; Vec2 := Arg2; END_IF; Vec1 := IfcNormalise (Vec1); Vec2 := IfcNormalise (Vec2); Ndim := SIZEOF(Vec1.DirectionRatios); Mag := 0.0; Res := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0:Ndim]); REPEAT i := 1 TO Ndim; Res.DirectionRatios[i] := Mag1*Vec1.DirectionRatios[i] + Mag2*Vec2.DirectionRatios[i]; Mag := Mag + (Res.DirectionRatios[i]*Res.DirectionRatios[i]); END_REPEAT; IF (Mag > 0.0 ) THEN Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector( Res, SQRT(Mag)); ELSE Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector( Vec1, 0.0); END_IF; END; END_IF; RETURN (Result); END_FUNCTION;
QQ 3087438119
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
2020-03-17 IfcBuildingElementType