From 9457309c5ab188ce824a10ab60e572553986b6eb Mon Sep 17 00:00:00 2001 From: Nitload Date: Mon, 14 Apr 2025 00:31:54 +0800 Subject: [PATCH] Daily update on 20250414-003153 by Nitload Youmu. Additional Message : Tech Issue: due to forbidden of multi-inheritance in C#, full ranslate fron EXPRESS to C# code is impossible, the EXPRESS interpreter in StgSharp will become a dialect Add: A group of classes imported from lib https://github.com/ixmilia/step under MIT license, representing all STEP AP203 geometry objects Change: many change to classes from https://github.com/ixmilia/step to link data interfaces to those in StgSharp Freeze: implementation to StgSharp EXPRESS interpreter about collextion operation and element define grammer Signed-off-by: Nitload --- StgSharp.C/x64/Debug/StgSharp.C.ilk | Bin 2028768 -> 2041720 bytes .../Debug/StgSharp.C.tlog/CL.command.1.tlog | Bin 10872 -> 10872 bytes .../x64/Debug/StgSharp.C.tlog/CL.read.1.tlog | Bin 222762 -> 222988 bytes .../x64/Debug/StgSharp.C.tlog/CL.write.1.tlog | Bin 12552 -> 13976 bytes StgSharp.C/x64/Debug/StgSharpC.log | 63 ++++++- StgSharp.C/x64/Debug/mat4.cod | 2 +- StgSharp.C/x64/Debug/mat4.obj | Bin 46374 -> 46374 bytes StgSharp.C/x64/Debug/string.obj | Bin 36127 -> 36127 bytes StgSharp.C/x64/Debug/vc143.idb | Bin 347136 -> 347136 bytes StgSharp.C/x64/Debug/vc143.pdb | Bin 241664 -> 241664 bytes StgSharp.Common/Data/RandomGenerator.cs | 103 +++++------- StgSharp.Common/Geometries/Point.cs | 6 +- StgSharp.Common/HighPerformance/M64.cs | 111 +++++++++++++ .../net8.0/StgSharp.Common.AssemblyInfo.cs | 2 +- .../net8.0/StgSharp.Common.sourcelink.json | 2 +- .../net8.0/StgSharp.Generator.AssemblyInfo.cs | 2 +- StgSharp.Model/STEP/IStepEntity.cs | 36 ++++ StgSharp.Model/STEP/Items/StepAdvancedFace.cs | 78 +++++++++ .../STEP/Items/StepAxis2Placement.cs | 72 ++++++++ .../STEP/Items/StepAxis2Placement2D.cs | 79 +++++++++ .../STEP/Items/StepAxis2Placement3D.cs | 98 +++++++++++ StgSharp.Model/STEP/Items/StepBSplineCurve.cs | 132 +++++++++++++++ .../STEP/Items/StepBSplineCurveWithKnots.cs | 155 ++++++++++++++++++ StgSharp.Model/STEP/Items/StepBoundedCurve.cs | 43 +++++ .../STEP/Items/StepCartesianPoint.cs | 56 +++++++ StgSharp.Model/STEP/Items/StepCircle.cs | 89 ++++++++++ StgSharp.Model/STEP/Items/StepConic.cs | 43 +++++ StgSharp.Model/STEP/Items/StepCurve.cs | 43 +++++ .../STEP/Items/StepCylindricalSurface.cs | 70 ++++++++ StgSharp.Model/STEP/Items/StepDirection.cs | 55 +++++++ StgSharp.Model/STEP/Items/StepEdge.cs | 68 ++++++++ StgSharp.Model/STEP/Items/StepEdgeCurve.cs | 102 ++++++++++++ StgSharp.Model/STEP/Items/StepEdgeLoop.cs | 81 +++++++++ .../STEP/Items/StepElementarySurface.cs | 72 ++++++++ StgSharp.Model/STEP/Items/StepEllipse.cs | 97 +++++++++++ StgSharp.Model/STEP/Items/StepFace.cs | 48 ++++++ StgSharp.Model/STEP/Items/StepFaceBound.cs | 75 +++++++++ .../STEP/Items/StepFaceOuterBound.cs | 63 +++++++ StgSharp.Model/STEP/Items/StepFaceSurface.cs | 50 ++++++ .../Items/StepGeometricRepresentationItem.cs | 43 +++++ StgSharp.Model/STEP/Items/StepItemType.cs | 131 +++++++++++++++ StgSharp.Model/STEP/Items/StepLine.cs | 124 ++++++++++++++ StgSharp.Model/STEP/Items/StepLoop.cs | 43 +++++ StgSharp.Model/STEP/Items/StepOrientedEdge.cs | 104 ++++++++++++ StgSharp.Model/STEP/Items/StepPlacement.cs | 43 +++++ StgSharp.Model/STEP/Items/StepPlane.cs | 59 +++++++ StgSharp.Model/STEP/Items/StepPoint.cs | 43 +++++ .../STEP/Items/StepRepresentationItem.cs | 58 +++++++ ...epRepresentationItem_FromTypedParameter.cs | 127 ++++++++++++++ StgSharp.Model/STEP/Items/StepSurface.cs | 43 +++++ .../StepTopologicalRepresentationItem.cs | 43 +++++ StgSharp.Model/STEP/Items/StepTriple.cs | 128 +++++++++++++++ StgSharp.Model/STEP/Items/StepVector.cs | 89 ++++++++++ StgSharp.Model/STEP/Items/StepVertex.cs | 43 +++++ StgSharp.Model/STEP/Items/StepVertexPoint.cs | 87 ++++++++++ StgSharp.Model/STEP/Reader/StepDataReader.cs | 39 +++-- .../net8.0/StgSharp.Model.AssemblyInfo.cs | 2 +- .../net8.0/StgSharp.Model.sourcelink.json | 2 +- StgSharp.Script/Common/CompileStack.cs | 8 + .../ExpAstNode/ExpElementInitializingNode.cs | 62 +++++++ StgSharp.Script/Express/ExpElmentSource.cs | 2 + .../Express/ExpNodeNextEnumerator.cs | 40 ++++- .../Express/ExpSyntaxAnalyzer.Common.cs | 12 +- StgSharp.Script/Express/ExpSyntaxAnalyzer.cs | 11 +- StgSharp.Script/Express/IExpMarshalType.cs | 45 +++++ .../net8.0/StgSharp.Script.AssemblyInfo.cs | 2 +- .../net8.0/StgSharp.Script.sourcelink.json | 2 +- .../net8.0/StgSharpDebug.AssemblyInfo.cs | 2 +- .../net8.0/StgSharpDebug.sourcelink.json | 2 +- 69 files changed, 3318 insertions(+), 117 deletions(-) create mode 100644 StgSharp.Common/HighPerformance/M64.cs create mode 100644 StgSharp.Model/STEP/IStepEntity.cs create mode 100644 StgSharp.Model/STEP/Items/StepAdvancedFace.cs create mode 100644 StgSharp.Model/STEP/Items/StepAxis2Placement.cs create mode 100644 StgSharp.Model/STEP/Items/StepAxis2Placement2D.cs create mode 100644 StgSharp.Model/STEP/Items/StepAxis2Placement3D.cs create mode 100644 StgSharp.Model/STEP/Items/StepBSplineCurve.cs create mode 100644 StgSharp.Model/STEP/Items/StepBSplineCurveWithKnots.cs create mode 100644 StgSharp.Model/STEP/Items/StepBoundedCurve.cs create mode 100644 StgSharp.Model/STEP/Items/StepCartesianPoint.cs create mode 100644 StgSharp.Model/STEP/Items/StepCircle.cs create mode 100644 StgSharp.Model/STEP/Items/StepConic.cs create mode 100644 StgSharp.Model/STEP/Items/StepCurve.cs create mode 100644 StgSharp.Model/STEP/Items/StepCylindricalSurface.cs create mode 100644 StgSharp.Model/STEP/Items/StepDirection.cs create mode 100644 StgSharp.Model/STEP/Items/StepEdge.cs create mode 100644 StgSharp.Model/STEP/Items/StepEdgeCurve.cs create mode 100644 StgSharp.Model/STEP/Items/StepEdgeLoop.cs create mode 100644 StgSharp.Model/STEP/Items/StepElementarySurface.cs create mode 100644 StgSharp.Model/STEP/Items/StepEllipse.cs create mode 100644 StgSharp.Model/STEP/Items/StepFace.cs create mode 100644 StgSharp.Model/STEP/Items/StepFaceBound.cs create mode 100644 StgSharp.Model/STEP/Items/StepFaceOuterBound.cs create mode 100644 StgSharp.Model/STEP/Items/StepFaceSurface.cs create mode 100644 StgSharp.Model/STEP/Items/StepGeometricRepresentationItem.cs create mode 100644 StgSharp.Model/STEP/Items/StepItemType.cs create mode 100644 StgSharp.Model/STEP/Items/StepLine.cs create mode 100644 StgSharp.Model/STEP/Items/StepLoop.cs create mode 100644 StgSharp.Model/STEP/Items/StepOrientedEdge.cs create mode 100644 StgSharp.Model/STEP/Items/StepPlacement.cs create mode 100644 StgSharp.Model/STEP/Items/StepPlane.cs create mode 100644 StgSharp.Model/STEP/Items/StepPoint.cs create mode 100644 StgSharp.Model/STEP/Items/StepRepresentationItem.cs create mode 100644 StgSharp.Model/STEP/Items/StepRepresentationItem_FromTypedParameter.cs create mode 100644 StgSharp.Model/STEP/Items/StepSurface.cs create mode 100644 StgSharp.Model/STEP/Items/StepTopologicalRepresentationItem.cs create mode 100644 StgSharp.Model/STEP/Items/StepTriple.cs create mode 100644 StgSharp.Model/STEP/Items/StepVector.cs create mode 100644 StgSharp.Model/STEP/Items/StepVertex.cs create mode 100644 StgSharp.Model/STEP/Items/StepVertexPoint.cs create mode 100644 StgSharp.Script/Express/ExpAstNode/ExpElementInitializingNode.cs create mode 100644 StgSharp.Script/Express/IExpMarshalType.cs diff --git a/StgSharp.C/x64/Debug/StgSharp.C.ilk b/StgSharp.C/x64/Debug/StgSharp.C.ilk index 83e1a0df12337be13b22bde5e09f288d211fcd23..380997684919baca44eb7ddbce964fef3a7f2bdf 100644 GIT binary patch delta 27182 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 P&iD9Yy&hjb_vQZw^r;e1 delta 23294 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 Q%3IbmQ7-G5-u6NN2Z~9qqW}N^ diff --git a/StgSharp.C/x64/Debug/StgSharp.C.tlog/CL.command.1.tlog b/StgSharp.C/x64/Debug/StgSharp.C.tlog/CL.command.1.tlog index f18958bf8fe10520570cbe9d4fd61b01a5970900..39d34ba0a8a7d9013d8dc437aeafc00dfdc18d51 100644 GIT binary patch delta 35 rcmewn@*`x!FaFJEgm{tvVVvo0q}1CweGkdurX470u$4hwC+5C;GN diff --git a/StgSharp.C/x64/Debug/StgSharp.C.tlog/CL.read.1.tlog b/StgSharp.C/x64/Debug/StgSharp.C.tlog/CL.read.1.tlog index 7d944fadff38cd7e246e5d303b4918e82e966558..c3da481df9c898587cadc59e0094cf5633aca5e6 100644 GIT binary patch delta 59 zcmV-B0L1^Q%ngjr4X~)hhbV6Ww`56Xx4INoWD{^P%9W?*| delta 34 qcmbP{+mW;(OLOuCHnz!p9Bi8#Oad4;=V@+Zn%tnjZF8OWH6{S)2Msp> diff --git a/StgSharp.C/x64/Debug/StgSharpC.log b/StgSharp.C/x64/Debug/StgSharpC.log index d6ef9e93..d995dc14 100644 --- a/StgSharp.C/x64/Debug/StgSharpC.log +++ b/StgSharp.C/x64/Debug/StgSharpC.log @@ -1,5 +1,62 @@ C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\VC\v170\Microsoft.CppBuild.targets(517,5): warning MSB8004: Output 目录未以斜杠结尾。 此生成实例将添加斜杠,因为必须有这个斜杠才能正确计算 Output 目录。 - StgSharpC.c -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\StgSharpC.c(14,30): warning C4244: “函数”: 从“uint64_t”转换到“GLuint”,可能丢失数据 -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\StgSharpC.c(16,43): warning C4244: “函数”: 从“uint64_t”转换到“GLuint”,可能丢失数据 + mat4.c + string.c +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\string.c(21,54): warning C4267: “return”: 从“size_t”转换到“int”,可能丢失数据 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(9,36): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\string.c(36,54): warning C4267: “return”: 从“size_t”转换到“int”,可能丢失数据 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(9,62): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(11,36): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(11,62): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(20,36): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(20,62): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(22,36): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(22,62): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(24,36): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(24,62): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(26,36): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(26,62): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(36,36): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(36,62): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(38,36): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(38,62): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(40,36): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(40,62): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(42,36): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(42,62): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(51,54): warning C4028: 形参 1 与声明不同 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(51,84): warning C4028: 形参 2 与声明不同 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(53,22): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(54,22): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(55,22): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(56,22): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(59,28): warning C4013: “det_mat3_internal”未定义;假设外部返回 int +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(59,28): warning C4244: “函数”: 从“int”转换到“float”,可能丢失数据 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(59,62): warning C4244: “函数”: 从“int”转换到“float”,可能丢失数据 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(60,28): warning C4244: “函数”: 从“int”转换到“float”,可能丢失数据 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(60,62): warning C4244: “函数”: 从“int”转换到“float”,可能丢失数据 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(61,36): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(69,37): warning C4133: “函数”: 从“__m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(69,61): warning C4133: “函数”: 从“__m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(70,37): warning C4133: “函数”: 从“__m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(70,61): warning C4133: “函数”: 从“__m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(71,37): warning C4133: “函数”: 从“__m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(71,61): warning C4133: “函数”: 从“__m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(72,37): warning C4133: “函数”: 从“__m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(72,61): warning C4133: “函数”: 从“__m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(77,38): warning C4133: “函数”: 从“__m256 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(77,63): warning C4133: “函数”: 从“__m256 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(78,38): warning C4133: “函数”: 从“__m256 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(78,63): warning C4133: “函数”: 从“__m256 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(88,37): warning C4133: “函数”: 从“__m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(88,61): warning C4133: “函数”: 从“__m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(89,37): warning C4133: “函数”: 从“__m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(89,61): warning C4133: “函数”: 从“__m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(90,37): warning C4133: “函数”: 从“__m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(90,61): warning C4133: “函数”: 从“__m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(91,37): warning C4133: “函数”: 从“__m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(91,61): warning C4133: “函数”: 从“__m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(96,38): warning C4133: “函数”: 从“__m256 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(96,63): warning C4133: “函数”: 从“__m256 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(97,38): warning C4133: “函数”: 从“__m256 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(97,63): warning C4133: “函数”: 从“__m256 *”到“const float *”的类型不兼容 StgSharpC.vcxproj -> D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\build\StgSharp.C.dll diff --git a/StgSharp.C/x64/Debug/mat4.cod b/StgSharp.C/x64/Debug/mat4.cod index 054c0071..a7262572 100644 --- a/StgSharp.C/x64/Debug/mat4.cod +++ b/StgSharp.C/x64/Debug/mat4.cod @@ -1031,7 +1031,7 @@ $LN3: 00051 62 f1 7c 48 11 00 vmovups ZMMWORD PTR [rax], zmm0 -; 103 : } +; 103 : } 00057 48 8d a5 c8 00 00 00 lea rsp, QWORD PTR [rbp+200] diff --git a/StgSharp.C/x64/Debug/mat4.obj b/StgSharp.C/x64/Debug/mat4.obj index 0025b9647178ff4ce3e72c2584b21722739bf52b..9d1dd289846999270f4f1c0e6a589d937003a3ba 100644 GIT binary patch delta 90 zcmV-g0Hyz?>H?H?t04 w2w}C~ANR8vCyGY{0RRA#4^CRLZ(|)0i#;dmtcA;54fB0!ABsTAvvZ8IC@}aZeE4C(GoX^O+M HYH_t2%!m`b delta 49 zcmV-10M7rPngXAi0taM<4*=x0;IRjQXafNN0F#hGT9a@C3bXELbO;Cy^L=U`ia^S< HYH_t2%UcrY diff --git a/StgSharp.C/x64/Debug/vc143.idb b/StgSharp.C/x64/Debug/vc143.idb index 8ad7b582d7a81644d2486cb8cb8a850381b8b454..502da69ce66fd60ae20fb654b5bca36317131ce8 100644 GIT binary patch delta 2160 zcmeH|QD{?F7{~9q_uOh+@7YaETBAl&(lT9|&ZxE4)zNkeD_XF~DBY|eYz(0tn;_cK zf*@rG6Xw2ZD#M3L6$<*0h2-Lc>wM@#aZY{cK(>y`*h67^C~OS1TlRf_9S*jafv^`Z zoL~O=f8Y6Ta^TN7F%~;97WD@IfYQ`Z>dtP+wKSLt?K0!ZZB^+n9G0W zr0DqITACQ#o*PYR|J)w6+}*>qy@8unX*>Kn>npsX{QelPM9`K|Q})Go{B!%XpYye< zr*YY&ZGZmlK~;eqA+%cctk2nNXqf*e`vFY96wR*Q0W|%pX=#@Z>R+ zNZwQ)E%<3=C>9pBf&EO6&O=W_FNV9>>4>B=-jm%Ej%CTx{JmvzZvEGj->N&y{+exB z-|(S&G#-(C4xG^sNn{j#L zJ!p5e^kl(a@D$UdB6uJ4)`-&#zMGaaxemta#cu=q>$`c*G;2ePa1t4*c7R8jhQ^_9 zWu&vNL8@KgaD&X8g;uYKp8#}P0B1JKFR9rg9M~c~mzW;iWyjFQttVMu-73yKrXjacbe3tT7y1-f z1nIPy!|wc>wU#z|4ZOj z#*00E;~kDwZ}e%bBAhp#6TzQ)9!Gj+apY(kT1d;e{vV-Cm6FQQXZE@LE1rk*S%kCO zRk(nwKm9lwME9znoLsg_bq1Yd`o)^yK)>=;(04?Qs?rCl&vudF+`#*)$$gvSc7VnQ rU;Wq1Ir@*wncHdpU{&F*;${2s6;J)^)_jy4QoL+lPLLeZ^SA#5Ti6M* delta 1346 zcmaLWZAepL6bJA<_k~g>dFR%g%TUxp#Au~hWaLVrnHH8ImSRE?!h|LjDG7^`>O-YI z+SLz16C;8kZ0JQu!qN|sqxxVFWEd$Z6=h}1*Lu!B=|gXW^V``u=Xv3d>uf zXs47IvIy40TW}b%i8OvXW;xH8NETD2R+?>qU2p_O*r=WfE8!*BYr7-rRV%663j5)E z=&(~g5BltMqesZ6-%>sC9a#u#V=2D@pTPx~>Y)05$64VE%8RfdtX&s0x`rLX~Z!4Vko zg=R8Iy>dXJ#l0wvLv5PcTVWM!h5ges>G(?BJm`bh;G?h9O$?K@VVb!CpHW3m{i4u+ z^5Ppc)EUwR%i%@X4PV2kS(@2AOWQRe?}L-jHb-6e9Ch0%*9XH2{fM8Zh6kR20T_Za zFlB*eieNpw1&1M9q;5Jag$<<9wT_jjObSLMgp)cBM@O`*bFnu)qeoGZJ5G6d;@XU0 zM)HuelPS%|vyE(p4ajWY1=0HM9Cjesm~+hDlfY!fkdLuaW|W1b3yh!1&fxb( zBKf)eJ>0kB%H1-rq?Uc^8?sMpkkvToV;YOXb;QzN zcggzqU3!i)uVi>@SPLG2^^XTYSE!6i;-f>mgWY+%mL4LnUhOmzcFJSR&MSTF|9LL|xl2R=Tw4qT8WM&vABko!pt-c4o39 z*oA_i4k{B31a***I#k$(d+=0r6H%x`A<~jTfd}apQPOYl4b`O|e0bmA_xF2mcizk| zS1ivJ%cq-MG(zYEPz22I7N}`v$!W8-)j?MAJ?~<-oVuH}??Gr6I4>=ubas`UiIn6^ z{6DgDeu|xA8FseVHs^MtLUc+ML+FcVX6=+Ff8+H(6PO>y+uKB z1D;5yd^J^AOpR)Bq^P4J#(YXvg{!Jg^;BkeoQ$AoNfnE7JVkoOw0K(Qc#l zGhJIhB&3rZFDSuOrazV$&?F%v@~4HkC<}`5?F-#ttbV0Svi+ff;b>qWcm`u~TS!VN zD&}HWIGGn>aKVb2(Rfu%!Obc>ykw<(gsYx>Kutd8heCA2M&MtH5^jevSPQmNV z0ao0mQ5LP4UogZ6c=@G31oSd^AI*<}#0b%ENxli|BeJg-YOk$E@Q#AMM*8!h?*ohA zp9fw5R+udZsVqVwak`=C25KO01fBprKpr|D0879Ps84}+8L(o49J&t1Mc@tO?}%sh z95KZqn2AzEv(2zN5QXXxRWaM)SQue!EX5f1G_z88pJSSx=A60yo-=c3x{bpuHFe+^ W$p6h)1=Ks|1N)ux9m~#{Nc(Sy1_yNj delta 332 zcmZp8z}N7AZ-NRZBLf42H4s18{&PO_6@GRDHXtYE&t^e^_xzI;1UT6l7$krqlVAc| zmjB-Wdk@kD!Vm()fPnx1nZbFs$HUV6XtPd4Skxx~>CbH>26~oej+L z?7Tn`QwE03_YD;JIR$|nka>*Tf#wzSZeC*>#WXQMYmtG#G6iOVwgARu0Za!LT>$YM zmN_sBOlx4~U<6v;z(0)); - float d1 = MathF.Sin(1 / source.Read(1)); - float d2 = MathF.Sin(1 / source.Read(2)); - float d3 = MathF.Sin(1 / source.Read(3)); - - source.Write(0, *( short*)&d3); - source.Write(2, *((short*)&d2+1)); - source.Write(4, *( short*)&d1); - source.Write(6, *((short*)&d0+1)); - - /**/ - - return source.Read( cycleCount % 4 ); + M64 m = new M64(); + m.Write( 0, source ); + m.Write( 1, source ); + return ( m << ( cycleCount % 32 ) ).Read( 1 ); } public byte GenRandomInt8() { cycleCount++; - if( cycleCount % 64 == 0 ) { + if( cycleCount % 4 == 0 ) { PrivateRand(); } - return currentKey[ cycleCount % 64 ]; + return currentKey[ cycleCount % 4 ]; } public float GenRandomSingle() { cycleCount++; - while( true ) { - M128 source = PrivateRand(); - + while( true ) + { uint - temp0 = source.Read( 0 ), - temp1 = source.Read( 2 ); + temp0 = PrivateRand(), + temp1 = PrivateRand(); - if( temp0 * temp1 != 0 ) { + if( temp0 * temp1 != 0 ) + { float ret = ( ( temp0 % temp1 ) * 1.0f ) / temp1; - if( ret < 0.335f ) { + if( ret < 0.335f ) + { ret = ret * ( ( ret * ( -0.7811934f ) ) + 1.4489113f ); - } else { + } else + { ret = ( ret * ( ( ret * ( -0.1158368f ) ) + 1.0580600f ) ) + 0.0590584f; } - if( ret > 1 ) { + if( ret > 1 ) + { continue; } return ret; @@ -138,27 +122,14 @@ namespace StgSharp.Data cycleCount = 0; } - private unsafe M128 PrivateRand() + private unsafe uint PrivateRand() { - currentKey = hash.ComputeHash( currentKey ); - M128 ret; - fixed( byte* bptr = currentKey ) { - switch( ( cycleCount % 16 ) / 4 ) { - case 0: - ret = *( ( ( M128* )bptr ) + 0 ); - break; - case 1: - ret = *( ( ( M128* )bptr ) + 1 ); - break; - case 2: - ret = *( ( ( M128* )bptr ) + 2 ); - break; - case 3: - ret = *( ( ( M128* )bptr ) + 3 ); - break; - default: - throw new InvalidOperationException(); - } + uint ret; + fixed( byte* bptr = currentKey ) + { + *( int* )bptr = UnsafeCompute.CityHashSimplify( + ( char* )bptr, currentKey.Length / 2 ); + ret = *( uint* )bptr; } //Console.WriteLine(ret.ToString(16)); diff --git a/StgSharp.Common/Geometries/Point.cs b/StgSharp.Common/Geometries/Point.cs index 9731a2cc..08af0df4 100644 --- a/StgSharp.Common/Geometries/Point.cs +++ b/StgSharp.Common/Geometries/Point.cs @@ -65,11 +65,7 @@ namespace StgSharp.Geometries public Vec3 Coord { get => coord; - set - { - coord = value; - coordVec.W = 1; - } + set { coord = value; } } } diff --git a/StgSharp.Common/HighPerformance/M64.cs b/StgSharp.Common/HighPerformance/M64.cs new file mode 100644 index 00000000..1d7a86a1 --- /dev/null +++ b/StgSharp.Common/HighPerformance/M64.cs @@ -0,0 +1,111 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="M64.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- + +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.HighPerformance +{ + [StructLayout( LayoutKind.Explicit, Pack = 8 )] + public unsafe struct M64 : IRegisterType + { + + [FieldOffset( 0 )] private fixed byte buffer[ 8 ]; + [FieldOffset( 0 )] private ulong value; + + public M64() + { + Unsafe.SkipInit( out this ); + value = 0; + } + + public ref T AsRef() where T: struct,INumber + { + return ref Unsafe.As( ref buffer[ 0 ] ); + } + + public override bool Equals( object obj ) + { + return obj is M64 m64 && this == m64; + } + + public override int GetHashCode() + { + return value.GetHashCode(); + } + + public T Read( int index ) where T: struct, INumber + { + return Unsafe.As( ref buffer[ index * sizeof( T ) ] ); + } + + public void Write( int index, T value ) where T: struct, INumber + { + Unsafe.As( ref buffer[ index * sizeof( T ) ] ) = value; + } + + public static bool operator !=( M64 left, M64 right ) + { + return !( left == right ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static M64 operator <<( M64 m, int shift ) + { + return new M64 + { + value = m.value << shift + }; + } + + public static bool operator ==( M64 left, M64 right ) + { + return left.value == right.value; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static M64 operator >>( M64 m, int shift ) + { + return new M64 + { + value = m.value >> shift + }; + } + + } +} diff --git a/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.AssemblyInfo.cs b/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.AssemblyInfo.cs index bf96ef31..f31a02ce 100644 --- a/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.AssemblyInfo.cs +++ b/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Common")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+148b0fed4a1abaaeaa3a28e7c7b088590805ebef")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+2692495dc8460e1f60a2d073f162c5f526e1ba1b")] [assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Common")] [assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Common")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.sourcelink.json b/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.sourcelink.json index 248b54bf..2440bc0f 100644 --- a/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.sourcelink.json +++ b/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.sourcelink.json @@ -1 +1 @@ -{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/148b0fed4a1abaaeaa3a28e7c7b088590805ebef/*"}} \ No newline at end of file +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/2692495dc8460e1f60a2d073f162c5f526e1ba1b/*"}} \ No newline at end of file diff --git a/StgSharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.AssemblyInfo.cs b/StgSharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.AssemblyInfo.cs index 7632cfaf..91e78c1b 100644 --- a/StgSharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.AssemblyInfo.cs +++ b/StgSharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Generator")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e3741687a706609a1d0055c3fd11f41945838a70")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+2692495dc8460e1f60a2d073f162c5f526e1ba1b")] [assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Generator")] [assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Generator")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/StgSharp.Model/STEP/IStepEntity.cs b/StgSharp.Model/STEP/IStepEntity.cs new file mode 100644 index 00000000..2e43b8f8 --- /dev/null +++ b/StgSharp.Model/STEP/IStepEntity.cs @@ -0,0 +1,36 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IStepEntity.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Script.Express; + +namespace StgSharp.Modeling.STEP +{ + public interface IStepEntity : IExpMarshalType where TSelf: IStepEntity { } +} \ No newline at end of file diff --git a/StgSharp.Model/STEP/Items/StepAdvancedFace.cs b/StgSharp.Model/STEP/Items/StepAdvancedFace.cs new file mode 100644 index 00000000..fc9bf58f --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepAdvancedFace.cs @@ -0,0 +1,78 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepAdvancedFace.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Script; + +using StgSharp.Script.Express; + +using System.Linq; + +namespace StgSharp.Modeling.Items +{ + public class StepAdvancedFace : StepFaceSurface + { + + private StepAdvancedFace() : base( string.Empty ) { } + + public StepAdvancedFace( string name ) : base( name ) { } + + public override StepItemType ItemType => StepItemType.AdvancedFace; + + internal static StepAdvancedFace CreateFromSyntaxList( + StepBinder binder, + ExpNode syntaxList ) + { + ExpNodeNextEnumerator enumerator = new ExpNodeNextEnumerator( syntaxList ); + StepAdvancedFace face = new StepAdvancedFace(); + enumerator.AssertEnumeratorCount( 4 ); + face.Name = enumerator.Values[ 0 ].CodeConvertTemplate; + + object boundsList = enumerator.Values[ 1 ].GetValueList(); + face.Bounds.Clear(); + face.Bounds + .AddRange( + Enumerable.Range( 0, enumerator.Values.Count ) + .Select( _ => ( StepFaceBound )null ) ); + for( int i = 0; i < enumerator.Values.Count; i++ ) + { + int j = i; // capture to avoid rebinding + binder.BindValue( + enumerator.Values[ j ], v => face.Bounds[ j ] = v.AsType() ); + } + binder.BindValue( + enumerator.Values[ 2 ], v => face.FaceGeometry = v.AsType() ); + face.SameSense = ( enumerator.Values[ 3 ] as ExpBoolNode )!.Value; + + return face; + } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepAxis2Placement.cs b/StgSharp.Model/STEP/Items/StepAxis2Placement.cs new file mode 100644 index 00000000..4a0bf139 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepAxis2Placement.cs @@ -0,0 +1,72 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepAxis2Placement.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Script; +using StgSharp.Script.Express; + +using System; + +namespace StgSharp.Modeling.Items +{ + public abstract class StepAxis2Placement : StepPlacement + { + + private StepCartesianPoint _location; + private StepDirection _refDirection; + + protected StepAxis2Placement( string name ) : base( name ) { } + + public StepCartesianPoint Location + { + get { return _location; } + set + { + ArgumentNullException.ThrowIfNull( value ); + + _location = value; + } + } + + public StepDirection RefDirection + { + get { return _refDirection; } + set + { + if( value == null ) { + throw new ArgumentNullException(); + } + + _refDirection = value; + } + } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepAxis2Placement2D.cs b/StgSharp.Model/STEP/Items/StepAxis2Placement2D.cs new file mode 100644 index 00000000..8c05edbe --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepAxis2Placement2D.cs @@ -0,0 +1,79 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepAxis2Placement2D.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Script; + +using StgSharp.Script.Express; + +using System.Collections.Generic; + +namespace StgSharp.Modeling.Items +{ + public class StepAxis2Placement2D : StepAxis2Placement + { + + private StepAxis2Placement2D() : base( string.Empty ) { } + + public StepAxis2Placement2D( + string label, + StepCartesianPoint location, + StepDirection direction ) + : base( label ) + { + Location = location; + RefDirection = direction; + } + + public override StepItemType ItemType => StepItemType.AxisPlacement2D; + + internal static StepAxis2Placement2D CreateFromSyntaxList( + StepBinder binder, + ExpNode syntaxList ) + { + ExpNodeNextEnumerator enumerator = new ExpNodeNextEnumerator( syntaxList ); + StepAxis2Placement2D axis = new StepAxis2Placement2D(); + enumerator.AssertEnumeratorCount( 3 ); + axis.Name = enumerator.Values[ 0 ].CodeConvertTemplate; + binder.BindValue( + enumerator.Values[ 1 ], v => axis.Location = v.AsType() ); + binder.BindValue( + enumerator.Values[ 2 ], v => axis.RefDirection = v.AsType() ); + return axis; + } + + internal override IEnumerable GetReferencedItems() + { + yield return Location; + yield return RefDirection; + } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepAxis2Placement3D.cs b/StgSharp.Model/STEP/Items/StepAxis2Placement3D.cs new file mode 100644 index 00000000..94a38e81 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepAxis2Placement3D.cs @@ -0,0 +1,98 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepAxis2Placement3D.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Script; +using StgSharp.Script.Express; + +using System; +using System.Collections.Generic; + +namespace StgSharp.Modeling.Items +{ + public class StepAxis2Placement3D : StepAxis2Placement + { + + private StepDirection _axis; + + private StepAxis2Placement3D() : base( string.Empty ) { } + + public StepAxis2Placement3D( + string name, + StepCartesianPoint location, + StepDirection axis, + StepDirection refDirection ) + : base( name ) + { + Location = location; + Axis = axis; + RefDirection = refDirection; + } + + public StepDirection Axis + { + get { return _axis; } + set + { + if( value == null ) { + throw new ArgumentNullException(); + } + + _axis = value; + } + } + + public override StepItemType ItemType => StepItemType.AxisPlacement3D; + + internal static StepAxis2Placement3D CreateFromSyntaxList( + StepBinder binder, + ExpNode syntaxList ) + { + ExpNodeNextEnumerator enumerator = new ExpNodeNextEnumerator( syntaxList ); + StepAxis2Placement3D axis = new StepAxis2Placement3D(); + enumerator.AssertEnumeratorCount( 4 ); + axis.Name = enumerator.Values[ 0 ].CodeConvertTemplate; + binder.BindValue( + enumerator.Values[ 1 ], v => axis.Location = v.AsType() ); + binder.BindValue( syntaxList.Values[ 2 ], v => axis.Axis = v.AsType() ); + binder.BindValue( + enumerator.Values[ 3 ], v => axis.RefDirection = v.AsType() ); + return axis; + } + + internal override IEnumerable GetReferencedItems() + { + yield return Location; + yield return Axis; + yield return RefDirection; + } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepBSplineCurve.cs b/StgSharp.Model/STEP/Items/StepBSplineCurve.cs new file mode 100644 index 00000000..de574446 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepBSplineCurve.cs @@ -0,0 +1,132 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepBSplineCurve.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Script; +using StgSharp.Script.Express; + +using System; + +using System.Collections.Generic; +using System.Linq; + +namespace StgSharp.Modeling.Items +{ + public enum StepBSplineCurveForm + { + + Polyline, + CircularArc, + EllipticalArc, + ParabolicArc, + HyperbolicArc, + Unspecified + + } + +; + + public abstract class StepBSplineCurve : StepBoundedCurve + { + + private const string CIRCULAR_ARC = "CIRCULAR_ARC"; + private const string ELLIPTIC_ARC = "ELLIPTIC_ARC"; + private const string HYPERBOLIC_ARC = "HYPERBOLIC_ARC"; + private const string PARABOLIC_ARC = "PARABOLIC_ARC"; + + private const string POLYLINE_FORM = "POLYLINE_FORM"; + private const string UNSPECIFIED = "UNSPECIFIED"; + + public StepBSplineCurve( string name, IEnumerable controlPoints ) + : base( name ) + { + ControlPointsList.AddRange( controlPoints ); + } + + public StepBSplineCurve( string name, params StepCartesianPoint[] controlPoints ) + : this( name, ( IEnumerable )controlPoints ) { } + + public bool ClosedCurve { get; set; } + + public bool SelfIntersect { get; set; } + + public int Degree { get; set; } + + public List ControlPointsList { get; } = new List(); + + public StepBSplineCurveForm CurveForm { get; set; } = StepBSplineCurveForm.Unspecified; + + internal override IEnumerable GetReferencedItems() + { + return ControlPointsList; + } + + protected static string GetCurveFormString( StepBSplineCurveForm form ) + { + switch( form ) + { + case StepBSplineCurveForm.Polyline: + return POLYLINE_FORM; + case StepBSplineCurveForm.CircularArc: + return CIRCULAR_ARC; + case StepBSplineCurveForm.EllipticalArc: + return ELLIPTIC_ARC; + case StepBSplineCurveForm.ParabolicArc: + return PARABOLIC_ARC; + case StepBSplineCurveForm.HyperbolicArc: + return HYPERBOLIC_ARC; + case StepBSplineCurveForm.Unspecified: + return UNSPECIFIED; + } + + throw new NotImplementedException(); + } + + protected static StepBSplineCurveForm ParseCurveForm( string enumerationValue ) + { + switch( enumerationValue.ToUpperInvariant() ) + { + case POLYLINE_FORM: + return StepBSplineCurveForm.Polyline; + case CIRCULAR_ARC: + return StepBSplineCurveForm.CircularArc; + case ELLIPTIC_ARC: + return StepBSplineCurveForm.EllipticalArc; + case PARABOLIC_ARC: + return StepBSplineCurveForm.ParabolicArc; + case HYPERBOLIC_ARC: + return StepBSplineCurveForm.HyperbolicArc; + default: + return StepBSplineCurveForm.Unspecified; + } + } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepBSplineCurveWithKnots.cs b/StgSharp.Model/STEP/Items/StepBSplineCurveWithKnots.cs new file mode 100644 index 00000000..edfba934 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepBSplineCurveWithKnots.cs @@ -0,0 +1,155 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepBSplineCurveWithKnots.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Script; +using StgSharp.Script.Express; + +using System; + +using System.Collections.Generic; +using System.Linq; + +namespace StgSharp.Modeling.Items +{ + public enum StepKnotType + { + + UniformKnots, + QuasiUniformKnots, + PiecewiseBezierKnots, + Unspecified + + } + +; + + public class StepBSplineCurveWithKnots : StepBSplineCurve + { + + private const string PIECEWISE_BEZIER_KNOTS = "PIECEWISE_BEZIER_KNOTS"; + private const string QUASI_UNIFORM_KNOTS = "QUASI_UNIFORM_KNOTS"; + + private const string UNIFORM_KNOTS = "UNIFORM_KNOTS"; + private const string UNSPECIFIED = "UNSPECIFIED"; + + public StepBSplineCurveWithKnots( + string name, + IEnumerable controlPoints ) + : base( name, controlPoints ) { } + + public StepBSplineCurveWithKnots( string name, params StepCartesianPoint[] controlPoints ) + : base( name, controlPoints ) { } + + public List KnotMultiplicities { get; } = new List(); + + public List Knots { get; } = new List(); + + public override StepItemType ItemType => StepItemType.BSplineCurveWithKnots; + + public StepKnotType KnotSpec { get; set; } = StepKnotType.Unspecified; + + internal static StepBSplineCurveWithKnots CreateFromSyntaxList( + StepBinder binder, + ExpNode syntaxList ) + { + ExpNodeNextEnumerator enumerator = new ExpNodeNextEnumerator( syntaxList ); + enumerator.AssertEnumeratorCount( 9 ); + object controlPointsList = enumerator.Values[ 2 ].GetValueList(); + + StepBSplineCurveWithKnots spline = new StepBSplineCurveWithKnots( + string.Empty, new StepCartesianPoint[controlPointsList.Values.Count] ); + spline.Name = enumerator.Values[ 0 ].CodeConvertTemplate; + spline.Degree = ( enumerator.Values[ 1 ] as ExpIntNode )!.Value; + + for( int i = 0; i < controlPointsList.Values.Count; i++ ) + { + int j = i; // capture to avoid rebinding + binder.BindValue( + controlPointsList.Values[ j ], + v => spline.ControlPointsList[ j ] = v.AsType() ); + } + + spline.CurveForm = ParseCurveForm( enumerator.Values[ 3 ].GetEnumerationValue() ); + spline.ClosedCurve = ( enumerator.Values[ 4 ] as ExpBoolNode )!.Value; + spline.SelfIntersect = ( enumerator.Values[ 5 ]as ExpBoolNode )!.Value; + + object knotMultiplicitiesList = enumerator.Values[ 6 ].GetValueList(); + spline.KnotMultiplicities.Clear(); + for( int i = 0; i < knotMultiplicitiesList.Values.Count; i++ ) { + spline.KnotMultiplicities + .Add( knotMultiplicitiesList.Values[ i ].GetIntegerValue() ); + } + + object knotslist = enumerator.Values[ 7 ].GetValueList(); + spline.Knots.Clear(); + for( int i = 0; i < knotslist.Values.Count; i++ ) { + spline.Knots.Add( knotslist.Values[ i ].GetRealVavlue() ); + } + + spline.KnotSpec = ParseKnotSpec( enumerator.Values[ 8 ].GetEnumerationValue() ); + + return spline; + } + + private static string GetKnotSpec( StepKnotType spec ) + { + switch( spec ) + { + case StepKnotType.UniformKnots: + return UNIFORM_KNOTS; + case StepKnotType.QuasiUniformKnots: + return QUASI_UNIFORM_KNOTS; + case StepKnotType.PiecewiseBezierKnots: + return PIECEWISE_BEZIER_KNOTS; + case StepKnotType.Unspecified: + return UNSPECIFIED; + } + + throw new NotImplementedException(); + } + + private static StepKnotType ParseKnotSpec( string enumerationValue ) + { + switch( enumerationValue.ToUpperInvariant() ) + { + case UNIFORM_KNOTS: + return StepKnotType.UniformKnots; + case QUASI_UNIFORM_KNOTS: + return StepKnotType.QuasiUniformKnots; + case PIECEWISE_BEZIER_KNOTS: + return StepKnotType.PiecewiseBezierKnots; + default: + return StepKnotType.Unspecified; + } + } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepBoundedCurve.cs b/StgSharp.Model/STEP/Items/StepBoundedCurve.cs new file mode 100644 index 00000000..04b489c7 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepBoundedCurve.cs @@ -0,0 +1,43 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepBoundedCurve.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Script; +using StgSharp.Script.Express; + +namespace StgSharp.Modeling.Items +{ + public abstract class StepBoundedCurve : StepCurve + { + + protected StepBoundedCurve( string name ) : base( name ) { } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepCartesianPoint.cs b/StgSharp.Model/STEP/Items/StepCartesianPoint.cs new file mode 100644 index 00000000..492d2a62 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepCartesianPoint.cs @@ -0,0 +1,56 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepCartesianPoint.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- + +using StgSharp.Script; +using StgSharp.Script.Express; + +namespace StgSharp.Modeling.Items +{ + public class StepCartesianPoint : StepTriple + { + + private StepCartesianPoint() { } + + public StepCartesianPoint( string label, float x, float y, float z ) + : base( label, x, y, z ) { } + + public override StepItemType ItemType => StepItemType.CartesianPoint; + + protected override int MinimumValueCount => 1; + + internal static StepCartesianPoint CreateFromSyntaxList( ExpNode syntaxList ) + { + return ( StepCartesianPoint )AssignTo( new StepCartesianPoint(), syntaxList ); + } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepCircle.cs b/StgSharp.Model/STEP/Items/StepCircle.cs new file mode 100644 index 00000000..96fffd29 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepCircle.cs @@ -0,0 +1,89 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepCircle.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Script; +using StgSharp.Script.Express; + +using System; +using System.Collections.Generic; + +namespace StgSharp.Modeling.Items +{ + public class StepCircle : StepConic + { + + private StepAxis2Placement _position; + + private StepCircle() : base( string.Empty ) { } + + public StepCircle( string label, StepAxis2Placement position, float radius ) + : base( label ) + { + Position = position; + Radius = radius; + } + + public float Radius { get; set; } + + public StepAxis2Placement Position + { + get { return _position; } + set + { + if( value == null ) { + throw new ArgumentNullException(); + } + + _position = value; + } + } + + public override StepItemType ItemType => StepItemType.Circle; + + internal static StepCircle CreateFromSyntaxList( StepBinder binder, ExpNode syntaxList ) + { + ExpNodeNextEnumerator enumerator = new ExpNodeNextEnumerator( syntaxList ); + StepCircle circle = new StepCircle(); + enumerator.AssertEnumeratorCount( 3 ); + circle.Name = enumerator.Values[ 0 ].CodeConvertTemplate; + binder.BindValue( + enumerator.Values[ 1 ], v => circle.Position = v.AsType() ); + circle.Radius = ( enumerator.Values[ 2 ]as ExpRealNumberNode )!.Value; + return circle; + } + + internal override IEnumerable GetReferencedItems() + { + yield return Position; + } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepConic.cs b/StgSharp.Model/STEP/Items/StepConic.cs new file mode 100644 index 00000000..cf8d5bbe --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepConic.cs @@ -0,0 +1,43 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepConic.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Script; +using StgSharp.Script.Express; + +namespace StgSharp.Modeling.Items +{ + public abstract class StepConic : StepCurve + { + + protected StepConic( string name ) : base( name ) { } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepCurve.cs b/StgSharp.Model/STEP/Items/StepCurve.cs new file mode 100644 index 00000000..792a8c95 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepCurve.cs @@ -0,0 +1,43 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepCurve.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Script; +using StgSharp.Script.Express; + +namespace StgSharp.Modeling.Items +{ + public abstract class StepCurve : StepGeometricRepresentationItem + { + + protected StepCurve( string name ) : base( name ) { } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepCylindricalSurface.cs b/StgSharp.Model/STEP/Items/StepCylindricalSurface.cs new file mode 100644 index 00000000..18a80077 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepCylindricalSurface.cs @@ -0,0 +1,70 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepCylindricalSurface.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Script; + +using StgSharp.Script.Express; + +using System.Collections.Generic; + +namespace StgSharp.Modeling.Items +{ + public class StepCylindricalSurface : StepElementarySurface + { + + private StepCylindricalSurface() : base() { } + + public StepCylindricalSurface( string name, StepAxis2Placement3D position, float radius ) + : base( name, position ) + { + Radius = radius; + } + + public float Radius { get; set; } + + public override StepItemType ItemType => StepItemType.CylindricalSurface; + + internal static StepRepresentationItem CreateFromSyntaxList( + StepBinder binder, + ExpNode syntaxList ) + { + ExpNodeNextEnumerator enumerator = new ExpNodeNextEnumerator( syntaxList ); + enumerator.AssertEnumeratorCount( 3 ); + StepCylindricalSurface surface = new StepCylindricalSurface(); + surface.Name = enumerator.Values[ 0 ].CodeConvertTemplate; + binder.BindValue( + enumerator.Values[ 1 ], v => surface.Position = v.AsType() ); + surface.Radius = ( enumerator.Values[ 2 ]as ExpRealNumberNode )!.Value; + return surface; + } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepDirection.cs b/StgSharp.Model/STEP/Items/StepDirection.cs new file mode 100644 index 00000000..d646ffa9 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepDirection.cs @@ -0,0 +1,55 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepDirection.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- + +using StgSharp.Script; +using StgSharp.Script.Express; + +namespace StgSharp.Modeling.Items +{ + public class StepDirection : StepTriple + { + + private StepDirection() { } + + public StepDirection( string name, float x, float y, float z ) : base( name, x, y, z ) { } + + public override StepItemType ItemType => StepItemType.Direction; + + protected override int MinimumValueCount => 2; + + internal static StepDirection CreateFromSyntaxList( ExpNode syntaxList ) + { + return ( StepDirection )AssignTo( new StepDirection(), syntaxList ); + } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepEdge.cs b/StgSharp.Model/STEP/Items/StepEdge.cs new file mode 100644 index 00000000..e5e01516 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepEdge.cs @@ -0,0 +1,68 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepEdge.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Script; + +using StgSharp.Script.Express; + +using System.Collections.Generic; + +namespace StgSharp.Modeling.Items +{ + public abstract class StepEdge : StepTopologicalRepresentationItem + { + + protected StepEdge() : base( string.Empty ) { } + + protected StepEdge( string name, StepVertex edgeStart, StepVertex edgeEnd ) + : base( name ) + { + EdgeStart = edgeStart; + EdgeEnd = edgeEnd; + } + + public StepVertex EdgeStart { get; set; } + + public StepVertex EdgeEnd { get; set; } + + internal override IEnumerable GetReferencedItems() + { + if( EdgeStart != null ) { + yield return EdgeStart; + } + + if( EdgeEnd != null ) { + yield return EdgeEnd; + } + } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepEdgeCurve.cs b/StgSharp.Model/STEP/Items/StepEdgeCurve.cs new file mode 100644 index 00000000..30088664 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepEdgeCurve.cs @@ -0,0 +1,102 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepEdgeCurve.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Script; +using StgSharp.Script.Express; + +using System; +using System.Collections.Generic; + +namespace StgSharp.Modeling.Items +{ + public class StepEdgeCurve : StepEdge + { + + private StepCurve _edgeGeometry; + + private StepEdgeCurve() : base() { } + + public StepEdgeCurve( + string name, + StepVertex edgeStart, + StepVertex edgeEnd, + StepCurve edgeGeometry, + bool isSameSense ) + : base( name, edgeStart, edgeEnd ) + { + EdgeGeometry = edgeGeometry; + IsSameSense = isSameSense; + } + + public bool IsSameSense { get; set; } + + public StepCurve EdgeGeometry + { + get { return _edgeGeometry; } + set + { + if( value == null ) { + throw new ArgumentNullException(); + } + + _edgeGeometry = value; + } + } + + public override StepItemType ItemType => StepItemType.EdgeCurve; + + internal static StepEdgeCurve CreateFromSyntaxList( StepBinder binder, ExpNode syntaxList ) + { + ExpNodeNextEnumerator enumerator = new ExpNodeNextEnumerator( syntaxList ); + StepEdgeCurve edgeCurve = new StepEdgeCurve(); + enumerator.AssertEnumeratorCount( 5 ); + edgeCurve.Name = enumerator.Values[ 0 ].CodeConvertTemplate; + binder.BindValue( + enumerator.Values[ 1 ], v => edgeCurve.EdgeStart = v.AsType() ); + binder.BindValue( + enumerator.Values[ 2 ], v => edgeCurve.EdgeEnd = v.AsType() ); + binder.BindValue( + enumerator.Values[ 3 ], v => edgeCurve.EdgeGeometry = v.AsType() ); + edgeCurve.IsSameSense = ( enumerator.Values[ 4 ]as ExpBoolNode )!.Value; + return edgeCurve; + } + + internal override IEnumerable GetReferencedItems() + { + foreach( StepRepresentationItem item in base.GetReferencedItems() ) { + yield return item; + } + + yield return EdgeGeometry; + } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepEdgeLoop.cs b/StgSharp.Model/STEP/Items/StepEdgeLoop.cs new file mode 100644 index 00000000..60e10d19 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepEdgeLoop.cs @@ -0,0 +1,81 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepEdgeLoop.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Script; +using StgSharp.Script.Express; + +using System.Collections.Generic; +using System.Linq; + +namespace StgSharp.Modeling.Items +{ + public class StepEdgeLoop : StepLoop + { + + public StepEdgeLoop( string name, IEnumerable edgeList ) + : base( name ) + { + EdgeList = new List( edgeList ); + } + + public StepEdgeLoop( string name, params StepOrientedEdge[] edgeList ) + : this( name, ( IEnumerable )edgeList ) { } + + public List EdgeList { get; private set; } + + public override StepItemType ItemType => StepItemType.EdgeLoop; + + internal static StepEdgeLoop CreateFromSyntaxList( StepBinder binder, ExpNode syntaxList ) + { + ExpNodeNextEnumerator enumerator = new ExpNodeNextEnumerator( syntaxList ); + enumerator.AssertEnumeratorCount( 2 ); + object edgeSyntaxList = enumerator.Values[ 1 ].GetValueList(); + StepEdgeLoop edgeLoop = new StepEdgeLoop( + string.Empty, new StepOrientedEdge[edgeSyntaxList.Values.Count] ); + edgeLoop.Name = enumerator.Values[ 0 ].GetStringValue(); + for( int i = 0; i < edgeSyntaxList.Values.Count; i++ ) + { + int j = i; // capture to avoid rebinding + binder.BindValue( + edgeSyntaxList.Values[ j ], + v => edgeLoop.EdgeList[ j ] = v.AsType() ); + } + + return edgeLoop; + } + + internal override IEnumerable GetReferencedItems() + { + return EdgeList; + } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepElementarySurface.cs b/StgSharp.Model/STEP/Items/StepElementarySurface.cs new file mode 100644 index 00000000..20ee49c2 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepElementarySurface.cs @@ -0,0 +1,72 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepElementarySurface.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Script; +using StgSharp.Script.Express; + +using System; +using System.Collections.Generic; + +namespace StgSharp.Modeling.Items +{ + public abstract class StepElementarySurface : StepSurface + { + + private StepAxis2Placement3D _position; + + protected StepElementarySurface() : base( string.Empty ) { } + + public StepElementarySurface( string name, StepAxis2Placement3D position ) + : base( name ) + { + Position = position; + } + + public StepAxis2Placement3D Position + { + get { return _position; } + set + { + if( value == null ) { + throw new ArgumentNullException(); + } + + _position = value; + } + } + + internal override IEnumerable GetReferencedItems() + { + yield return Position; + } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepEllipse.cs b/StgSharp.Model/STEP/Items/StepEllipse.cs new file mode 100644 index 00000000..cb60931e --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepEllipse.cs @@ -0,0 +1,97 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepEllipse.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Script; +using StgSharp.Script.Express; + +using System; +using System.Collections.Generic; + +namespace StgSharp.Modeling.Items +{ + public class StepEllipse : StepConic + { + + private StepAxis2Placement _position; + + private StepEllipse() : base( string.Empty ) { } + + public StepEllipse( + string name, + StepAxis2Placement position, + double semiAxis1, + double semiAxis2 ) + : base( name ) + { + Position = position; + SemiAxis1 = semiAxis1; + SemiAxis2 = semiAxis2; + } + + public double SemiAxis1 { get; set; } + + public double SemiAxis2 { get; set; } + + public StepAxis2Placement Position + { + get { return _position; } + set + { + if( value == null ) { + throw new ArgumentNullException(); + } + + _position = value; + } + } + + public override StepItemType ItemType => StepItemType.Ellipse; + + internal static StepEllipse CreateFromSyntaxList( StepBinder binder, ExpNode syntaxList ) + { + ExpNodeNextEnumerator enumerator = new ExpNodeNextEnumerator( syntaxList ); + StepEllipse ellipse = new StepEllipse(); + enumerator.AssertEnumeratorCount( 4 ); + ellipse.Name = enumerator.Values[ 0 ].CodeConvertTemplate; + binder.BindValue( + enumerator.Values[ 1 ], v => ellipse.Position = v.AsType() ); + ellipse.SemiAxis1 = ( enumerator.Values[ 2 ] as ExpRealNumberNode )!.Value; + ellipse.SemiAxis2 = ( enumerator.Values[ 3 ] as ExpRealNumberNode )!.Value; + return ellipse; + } + + internal override IEnumerable GetReferencedItems() + { + yield return Position; + } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepFace.cs b/StgSharp.Model/STEP/Items/StepFace.cs new file mode 100644 index 00000000..029edd50 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepFace.cs @@ -0,0 +1,48 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepFace.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Script; +using StgSharp.Script.Express; + +using System.Collections.Generic; +using System.Linq; + +namespace StgSharp.Modeling.Items +{ + public abstract class StepFace : StepTopologicalRepresentationItem + { + + public StepFace( string name ) : base( name ) { } + + public List Bounds { get; } = new List(); + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepFaceBound.cs b/StgSharp.Model/STEP/Items/StepFaceBound.cs new file mode 100644 index 00000000..71deebcb --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepFaceBound.cs @@ -0,0 +1,75 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepFaceBound.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Script; + +using StgSharp.Script.Express; + +using System.Collections.Generic; + +namespace StgSharp.Modeling.Items +{ + public class StepFaceBound : StepTopologicalRepresentationItem + { + + protected StepFaceBound() : base( string.Empty ) { } + + public StepFaceBound( string name, StepLoop bound, bool orientation ) + : base( name ) + { + Bound = bound; + Orientation = orientation; + } + + public bool Orientation { get; set; } + + public override StepItemType ItemType => StepItemType.FaceBound; + + public StepLoop Bound { get; set; } + + internal static StepFaceBound CreateFromSyntaxList( StepBinder binder, ExpNode syntaxList ) + { + ExpNodeNextEnumerator enumerator = new ExpNodeNextEnumerator( syntaxList ); + enumerator.AssertEnumeratorCount( 3 ); + StepFaceBound faceBound = new StepFaceBound(); + faceBound.Name = enumerator.Values[ 0 ].CodeConvertTemplate; + binder.BindValue( enumerator.Values[ 1 ], v => faceBound.Bound = v.AsType() ); + faceBound.Orientation = ( enumerator.Values[ 2 ]as ExpBoolNode )!.Value; + return faceBound; + } + + internal override IEnumerable GetReferencedItems() + { + yield return Bound; + } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepFaceOuterBound.cs b/StgSharp.Model/STEP/Items/StepFaceOuterBound.cs new file mode 100644 index 00000000..2595531c --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepFaceOuterBound.cs @@ -0,0 +1,63 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepFaceOuterBound.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- + +using StgSharp.Script; +using StgSharp.Script.Express; + +namespace StgSharp.Modeling.Items +{ + public class StepFaceOuterBound : StepFaceBound + { + + private StepFaceOuterBound() : base() { } + + public StepFaceOuterBound( string name, StepLoop bound, bool orientation ) + : base( name, bound, orientation ) { } + + public override StepItemType ItemType => StepItemType.FaceOuterBound; + + internal static new StepFaceOuterBound CreateFromSyntaxList( + StepBinder binder, + ExpNode syntaxList ) + { + ExpNodeNextEnumerator enumerator = new ExpNodeNextEnumerator( syntaxList ); + enumerator.AssertEnumeratorCount( 3 ); + StepFaceOuterBound faceOuterBound = new StepFaceOuterBound(); + faceOuterBound.Name = enumerator.Values[ 0 ].CodeConvertTemplate; + binder.BindValue( + enumerator.Values[ 1 ], v => faceOuterBound.Bound = v.AsType() ); + faceOuterBound.Orientation = ( enumerator.Values[ 2 ]as ExpBoolNode )!.Value; + return faceOuterBound; + } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepFaceSurface.cs b/StgSharp.Model/STEP/Items/StepFaceSurface.cs new file mode 100644 index 00000000..3dd0d6b3 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepFaceSurface.cs @@ -0,0 +1,50 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepFaceSurface.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Script; + +using StgSharp.Script.Express; + +using System.Collections.Generic; + +namespace StgSharp.Modeling.Items +{ + public abstract class StepFaceSurface : StepFace + { + + public StepFaceSurface( string name ) : base( name ) { } + + public bool SameSense { get; set; } + + public StepSurface FaceGeometry { get; set; } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepGeometricRepresentationItem.cs b/StgSharp.Model/STEP/Items/StepGeometricRepresentationItem.cs new file mode 100644 index 00000000..0e848cda --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepGeometricRepresentationItem.cs @@ -0,0 +1,43 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepGeometricRepresentationItem.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Script; +using StgSharp.Script.Express; + +namespace StgSharp.Modeling.Items +{ + public abstract class StepGeometricRepresentationItem : StepRepresentationItem + { + + protected StepGeometricRepresentationItem( string name ) : base( name ) { } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepItemType.cs b/StgSharp.Model/STEP/Items/StepItemType.cs new file mode 100644 index 00000000..9a2b3876 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepItemType.cs @@ -0,0 +1,131 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepItemType.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Script; +using StgSharp.Script.Express; + +using System; + +namespace StgSharp.Modeling.Items +{ + public enum StepItemType + { + + AdvancedFace, + AxisPlacement2D, + AxisPlacement3D, + BSplineCurveWithKnots, + CartesianPoint, + Circle, + CylindricalSurface, + Direction, + EdgeCurve, + EdgeLoop, + Ellipse, + FaceBound, + FaceOuterBound, + Line, + OrientedEdge, + Plane, + Vector, + VertexPoint + + } + + internal static class StepItemTypeExtensions + { + + public const string AdvancedFaceText = "ADVANCED_FACE"; + public const string Axis2Placement2DText = "AXIS2_PLACEMENT_2D"; + public const string Axis2Placement3DText = "AXIS2_PLACEMENT_3D"; + public const string BSplineCurveWithKnotsText = "B_SPLINE_CURVE_WITH_KNOTS"; + public const string CartesianPointText = "CARTESIAN_POINT"; + public const string CircleText = "CIRCLE"; + public const string CylindricalSurfaceText = "CYLINDRICAL_SURFACE"; + public const string DirectionText = "DIRECTION"; + public const string EdgeCurveText = "EDGE_CURVE"; + public const string EdgeLoopText = "EDGE_LOOP"; + public const string EllipseText = "ELLIPSE"; + public const string FaceBoundText = "FACE_BOUND"; + public const string FaceOuterBoundText = "FACE_OUTER_BOUND"; + public const string LineText = "LINE"; + public const string OrientedEdgeText = "ORIENTED_EDGE"; + public const string PlaneText = "PLANE"; + public const string VectorText = "VECTOR"; + public const string VertexPointText = "VERTEX_POINT"; + + public static string GetItemTypeString( this StepItemType type ) + { + switch( type ) + { + case StepItemType.AdvancedFace: + return AdvancedFaceText; + case StepItemType.AxisPlacement2D: + return Axis2Placement2DText; + case StepItemType.AxisPlacement3D: + return Axis2Placement3DText; + case StepItemType.BSplineCurveWithKnots: + return BSplineCurveWithKnotsText; + case StepItemType.CartesianPoint: + return CartesianPointText; + case StepItemType.Circle: + return CircleText; + case StepItemType.CylindricalSurface: + return CylindricalSurfaceText; + case StepItemType.Direction: + return DirectionText; + case StepItemType.EdgeCurve: + return EdgeCurveText; + case StepItemType.EdgeLoop: + return EdgeLoopText; + case StepItemType.Ellipse: + return EllipseText; + case StepItemType.FaceBound: + return FaceBoundText; + case StepItemType.FaceOuterBound: + return FaceOuterBoundText; + case StepItemType.Line: + return LineText; + case StepItemType.OrientedEdge: + return OrientedEdgeText; + case StepItemType.Plane: + return PlaneText; + case StepItemType.Vector: + return VectorText; + case StepItemType.VertexPoint: + return VertexPointText; + default: + throw new InvalidOperationException( $"Unexpected item type {type}" ); + } + } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepLine.cs b/StgSharp.Model/STEP/Items/StepLine.cs new file mode 100644 index 00000000..c30bdb41 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepLine.cs @@ -0,0 +1,124 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepLine.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Math; +using StgSharp.Script; +using StgSharp.Script.Express; + +using System; +using System.Collections.Generic; + +namespace StgSharp.Modeling.Items +{ + public class StepLine : StepCurve + { + + private StepCartesianPoint _point; + private StepVector _vector; + + private StepLine() : base( string.Empty ) { } + + public StepLine( string label, StepCartesianPoint point, StepVector vector ) + : base( label ) + { + Point = point; + Vector = vector; + } + + public StepCartesianPoint Point + { + get { return _point; } + set + { + if( value == null ) { + throw new ArgumentNullException(); + } + + _point = value; + } + } + + public override StepItemType ItemType => StepItemType.Line; + + public StepVector Vector + { + get { return _vector; } + set + { + if( value == null ) { + throw new ArgumentNullException(); + } + + _vector = value; + } + } + + public static StepLine FromPoints( + float x1, + float y1, + float z1, + float x2, + float y2, + float z2 ) + { + StepCartesianPoint start = new StepCartesianPoint( string.Empty, x1, y1, z1 ); + float dx = x2 - x1; + float dy = y2 - y1; + float dz = z2 - z1; + float length = Scaler.Sqrt( dx * dx + dy * dy + dz * dz ); + float dxn = dx / length; + float dyn = dy / length; + float dzn = dz / length; + StepVector vector = new StepVector( + string.Empty, new StepDirection( string.Empty, dxn, dyn, dzn ), length ); + return new StepLine( string.Empty, start, vector ); + } + + internal static StepLine CreateFromSyntaxList( StepBinder binder, ExpNode syntaxList ) + { + ExpNodeNextEnumerator enumerator = new ExpNodeNextEnumerator( syntaxList ); + StepLine line = new StepLine(); + enumerator.AssertEnumeratorCount( 3 ); + line.Name = enumerator.Values[ 0 ].CodeConvertTemplate; + binder.BindValue( + enumerator.Values[ 1 ], v => line.Point = v.AsType() ); + binder.BindValue( enumerator.Values[ 2 ], v => line.Vector = v.AsType() ); + return line; + } + + internal override IEnumerable GetReferencedItems() + { + yield return Point; + yield return Vector; + } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepLoop.cs b/StgSharp.Model/STEP/Items/StepLoop.cs new file mode 100644 index 00000000..1823e9c1 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepLoop.cs @@ -0,0 +1,43 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepLoop.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Script; +using StgSharp.Script.Express; + +namespace StgSharp.Modeling.Items +{ + public abstract class StepLoop : StepTopologicalRepresentationItem + { + + public StepLoop( string name ) : base( name ) { } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepOrientedEdge.cs b/StgSharp.Model/STEP/Items/StepOrientedEdge.cs new file mode 100644 index 00000000..6ceb017c --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepOrientedEdge.cs @@ -0,0 +1,104 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepOrientedEdge.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Script; +using StgSharp.Script.Express; + +using System; +using System.Collections.Generic; + +namespace StgSharp.Modeling.Items +{ + public class StepOrientedEdge : StepEdge + { + + private StepEdge _edgeElement; + + private StepOrientedEdge() { } + + public StepOrientedEdge( + string name, + StepVertex edgeStart, + StepVertex edgeEnd, + StepEdge edgeElement, + bool orientation ) + : base( name, edgeStart, edgeEnd ) + { + EdgeElement = edgeElement; + Orientation = orientation; + } + + public bool Orientation { get; set; } + + public StepEdge EdgeElement + { + get { return _edgeElement; } + set + { + if( value == null ) { + throw new ArgumentNullException(); + } + + _edgeElement = value; + } + } + + public override StepItemType ItemType => StepItemType.OrientedEdge; + + internal static StepOrientedEdge CreateFromSyntaxList( + StepBinder binder, + ExpNode syntaxList ) + { + ExpNodeNextEnumerator enumerator = new ExpNodeNextEnumerator( syntaxList ); + StepOrientedEdge orientedEdge = new StepOrientedEdge(); + enumerator.AssertEnumeratorCount( 5 ); + orientedEdge.Name = enumerator.Values[ 0 ].CodeConvertTemplate; + binder.BindValue( + enumerator.Values[ 1 ], v => orientedEdge.EdgeStart = v.AsType() ); + binder.BindValue( + enumerator.Values[ 2 ], v => orientedEdge.EdgeEnd = v.AsType() ); + binder.BindValue( + enumerator.Values[ 3 ], v => orientedEdge.EdgeElement = v.AsType() ); + orientedEdge.Orientation = ( enumerator.Values[ 4 ]as ExpBoolNode )!.Value; + return orientedEdge; + } + + internal override IEnumerable GetReferencedItems() + { + foreach( StepRepresentationItem item in base.GetReferencedItems() ) { + yield return item; + } + + yield return EdgeElement; + } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepPlacement.cs b/StgSharp.Model/STEP/Items/StepPlacement.cs new file mode 100644 index 00000000..1fc765d4 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepPlacement.cs @@ -0,0 +1,43 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepPlacement.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Script; +using StgSharp.Script.Express; + +namespace StgSharp.Modeling.Items +{ + public abstract class StepPlacement : StepGeometricRepresentationItem + { + + protected StepPlacement( string name ) : base( name ) { } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepPlane.cs b/StgSharp.Model/STEP/Items/StepPlane.cs new file mode 100644 index 00000000..1c5bddd9 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepPlane.cs @@ -0,0 +1,59 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepPlane.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- + +using StgSharp.Script; +using StgSharp.Script.Express; + +namespace StgSharp.Modeling.Items +{ + public class StepPlane : StepElementarySurface + { + + private StepPlane() : base() { } + + public StepPlane( string name, StepAxis2Placement3D position ) : base( name, position ) { } + + public override StepItemType ItemType => StepItemType.Plane; + + internal static StepPlane CreateFromSyntaxList( StepBinder binder, ExpNode syntaxList ) + { + ExpNodeNextEnumerator enumerator = new ExpNodeNextEnumerator( syntaxList ); + StepPlane plane = new StepPlane(); + enumerator.AssertEnumeratorCount( 2 ); + plane.Name = enumerator.Values[ 0 ].CodeConvertTemplate; + binder.BindValue( + enumerator.Values[ 1 ], v => plane.Position = v.AsType() ); + return plane; + } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepPoint.cs b/StgSharp.Model/STEP/Items/StepPoint.cs new file mode 100644 index 00000000..1a139eb4 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepPoint.cs @@ -0,0 +1,43 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepPoint.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Script; +using StgSharp.Script.Express; + +namespace StgSharp.Modeling.Items +{ + public abstract class StepPoint : StepGeometricRepresentationItem + { + + protected StepPoint( string name ) : base( name ) { } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepRepresentationItem.cs b/StgSharp.Model/STEP/Items/StepRepresentationItem.cs new file mode 100644 index 00000000..0c27adc4 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepRepresentationItem.cs @@ -0,0 +1,58 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepRepresentationItem.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Script; + +using StgSharp.Script.Express; + +using System.Collections.Generic; + +namespace StgSharp.Modeling.Items +{ + public abstract partial class StepRepresentationItem + { + + protected StepRepresentationItem( string name ) + { + Name = name; + } + + public abstract StepItemType ItemType { get; } + + public string Name { get; set; } + + internal virtual IEnumerable GetReferencedItems() + { + yield break; + } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepRepresentationItem_FromTypedParameter.cs b/StgSharp.Model/STEP/Items/StepRepresentationItem_FromTypedParameter.cs new file mode 100644 index 00000000..dcaf97f7 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepRepresentationItem_FromTypedParameter.cs @@ -0,0 +1,127 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepRepresentationItem_FromTypedParameter.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Script; +using StgSharp.Script.Express; + +using System.Collections.Generic; +using System.Diagnostics; + +namespace StgSharp.Modeling.Items +{ + public abstract partial class StepRepresentationItem + { + + internal static HashSet UnsupportedItemTypes { get; } = new HashSet(); + + internal static StepRepresentationItem FromTypedParameter( + StepBinder binder, + ExpNode itemSyntax ) + { + StepRepresentationItem item = null!; + if( itemSyntax is ExpElementInitializingNode initNode ) + { + string name = initNode.EqualityTypeConvert.Name; + switch( name ) + { + case StepItemTypeExtensions.AdvancedFaceText: + item = StepAdvancedFace.CreateFromSyntaxList( binder, initNode.Right ); + break; + case StepItemTypeExtensions.Axis2Placement2DText: + item = StepAxis2Placement2D.CreateFromSyntaxList( binder, initNode.Right ); + break; + case StepItemTypeExtensions.Axis2Placement3DText: + item = StepAxis2Placement3D.CreateFromSyntaxList( binder, initNode.Right ); + break; + case StepItemTypeExtensions.BSplineCurveWithKnotsText: + item = StepBSplineCurveWithKnots.CreateFromSyntaxList( + binder, initNode.Right ); + break; + case StepItemTypeExtensions.CartesianPointText: + item = StepCartesianPoint.CreateFromSyntaxList( initNode.Right ); + break; + case StepItemTypeExtensions.CircleText: + item = StepCircle.CreateFromSyntaxList( binder, initNode.Right ); + break; + case StepItemTypeExtensions.CylindricalSurfaceText: + item = StepCylindricalSurface.CreateFromSyntaxList( binder, + initNode.Right ); + break; + case StepItemTypeExtensions.DirectionText: + item = StepDirection.CreateFromSyntaxList( initNode.Right ); + break; + case StepItemTypeExtensions.EdgeCurveText: + item = StepEdgeCurve.CreateFromSyntaxList( binder, initNode.Right ); + break; + case StepItemTypeExtensions.EdgeLoopText: + item = StepEdgeLoop.CreateFromSyntaxList( binder, initNode.Right ); + break; + case StepItemTypeExtensions.EllipseText: + item = StepEllipse.CreateFromSyntaxList( binder, initNode.Right ); + break; + case StepItemTypeExtensions.FaceBoundText: + item = StepFaceBound.CreateFromSyntaxList( binder, initNode.Right ); + break; + case StepItemTypeExtensions.FaceOuterBoundText: + item = StepFaceOuterBound.CreateFromSyntaxList( binder, initNode.Right ); + break; + case StepItemTypeExtensions.LineText: + item = StepLine.CreateFromSyntaxList( binder, initNode.Right ); + break; + case StepItemTypeExtensions.OrientedEdgeText: + item = StepOrientedEdge.CreateFromSyntaxList( binder, initNode.Right ); + break; + case StepItemTypeExtensions.PlaneText: + item = StepPlane.CreateFromSyntaxList( binder, initNode.Right ); + break; + case StepItemTypeExtensions.VectorText: + item = StepVector.CreateFromSyntaxList( binder, initNode.Right ); + break; + case StepItemTypeExtensions.VertexPointText: + item = StepVertexPoint.CreateFromSyntaxList( binder, initNode.Right ); + break; + default: + if( UnsupportedItemTypes.Add( name ) ) { + Debug.WriteLine( + $"Unsupported item {name} at {initNode.Line}, {initNode.Column}" ); + } + break; + } + } else + { + // TODO: + } + + return item; + } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepSurface.cs b/StgSharp.Model/STEP/Items/StepSurface.cs new file mode 100644 index 00000000..c56b3977 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepSurface.cs @@ -0,0 +1,43 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepSurface.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Script; +using StgSharp.Script.Express; + +namespace StgSharp.Modeling.Items +{ + public abstract class StepSurface : StepGeometricRepresentationItem + { + + public StepSurface( string name ) : base( name ) { } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepTopologicalRepresentationItem.cs b/StgSharp.Model/STEP/Items/StepTopologicalRepresentationItem.cs new file mode 100644 index 00000000..84981222 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepTopologicalRepresentationItem.cs @@ -0,0 +1,43 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepTopologicalRepresentationItem.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Script; +using StgSharp.Script.Express; + +namespace StgSharp.Modeling.Items +{ + public abstract class StepTopologicalRepresentationItem : StepRepresentationItem + { + + protected StepTopologicalRepresentationItem( string name ) : base( name ) { } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepTriple.cs b/StgSharp.Model/STEP/Items/StepTriple.cs new file mode 100644 index 00000000..50935c30 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepTriple.cs @@ -0,0 +1,128 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepTriple.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Math; + +using StgSharp.Script; +using StgSharp.Script.Express; + +using System.Collections.Generic; + +namespace StgSharp.Modeling.Items +{ + public abstract class StepTriple : StepPoint + { + + private Vec3 _coord; + + protected StepTriple() : this( string.Empty, 0.0f, 0.0f, 0.0f ) { } + + protected StepTriple( string name, float x, float y, float z ) + : base( name ) + { + X = x; + Y = y; + Z = z; + } + + public float X + { + get => _coord.X; + set => _coord.X = value; + } + + public float Y + { + get => _coord.Y; + set => _coord.Y = value; + } + + public float Z + { + get => _coord.Z; + set => _coord.Z = value; + } + + protected abstract int MinimumValueCount { get; } + + public bool Equals( StepTriple other ) + { + if( ( object )other == null ) { + return false; + } + + return ItemType == other.ItemType && X == other.X && Y == other.Y && Z == other.Z && Name == + other.Name; + } + + public override bool Equals( object obj ) + { + return ( obj is StepTriple triple ) && Equals( triple ); + } + + public override int GetHashCode() + { + return X.GetHashCode() ^ Y.GetHashCode() ^ Z.GetHashCode(); + } + + internal static StepTriple AssignTo( StepTriple triple, ExpNode values ) + { + ExpNodeNextEnumerator enumerator = values.GetEnumerator(); + enumerator.AssertEnumeratorCount( 2 ); + triple.Name = enumerator.Values[ 0 ].CodeConvertTemplate; + object pointValues = enumerator.Values[ 1 ].GetValueList(); + pointValues.AssertEnumeratorCount( triple.MinimumValueCount, 3 ); + triple.X = pointValues.GetRealValueOrDefault( 0 ); + triple.Y = pointValues.GetRealValueOrDefault( 1 ); + triple.Z = pointValues.GetRealValueOrDefault( 2 ); + return triple; + } + + public static bool operator !=( StepTriple left, StepTriple right ) + { + return !( left == right ); + } + + public static bool operator ==( StepTriple left, StepTriple right ) + { + if( ReferenceEquals( left, right ) ) { + return true; + } + + if( ( object )left == null || ( object )right == null ) { + return false; + } + + return left.Equals( right ); + } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepVector.cs b/StgSharp.Model/STEP/Items/StepVector.cs new file mode 100644 index 00000000..08769c67 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepVector.cs @@ -0,0 +1,89 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepVector.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Script; +using StgSharp.Script.Express; + +using System; +using System.Collections.Generic; + +namespace StgSharp.Modeling.Items +{ + public class StepVector : StepGeometricRepresentationItem + { + + private StepDirection _direction; + + private StepVector() : base( string.Empty ) { } + + public StepVector( string name, StepDirection direction, double length ) + : base( name ) + { + Direction = direction; + Length = length; + } + + public double Length { get; set; } + + public StepDirection Direction + { + get { return _direction; } + set + { + if( value == null ) { + throw new ArgumentNullException(); + } + + _direction = value; + } + } + + public override StepItemType ItemType => StepItemType.Vector; + + internal static StepVector CreateFromSyntaxList( StepBinder binder, ExpNode syntaxList ) + { + ExpNodeNextEnumerator enumerator = new ExpNodeNextEnumerator( syntaxList ); + StepVector vector = new StepVector(); + enumerator.AssertEnumeratorCount( 3 ); + vector.Name = enumerator.Values[ 0 ].CodeConvertTemplate; + binder.BindValue( + enumerator.Values[ 1 ], v => vector.Direction = v.AsType() ); + vector.Length = ( enumerator.Values[ 2 ]as ExpRealNumberNode )!.Value; + return vector; + } + + internal override IEnumerable GetReferencedItems() + { + yield return Direction; + } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepVertex.cs b/StgSharp.Model/STEP/Items/StepVertex.cs new file mode 100644 index 00000000..3d92505b --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepVertex.cs @@ -0,0 +1,43 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepVertex.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Script; +using StgSharp.Script.Express; + +namespace StgSharp.Modeling.Items +{ + public abstract class StepVertex : StepTopologicalRepresentationItem + { + + protected StepVertex( string name ) : base( name ) { } + + } +} + diff --git a/StgSharp.Model/STEP/Items/StepVertexPoint.cs b/StgSharp.Model/STEP/Items/StepVertexPoint.cs new file mode 100644 index 00000000..fa357880 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepVertexPoint.cs @@ -0,0 +1,87 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepVertexPoint.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Script; +using StgSharp.Script.Express; + +using System; +using System.Collections.Generic; + +namespace StgSharp.Modeling.Items +{ + public class StepVertexPoint : StepVertex + { + + private StepCartesianPoint _location; + + private StepVertexPoint() : base( string.Empty ) { } + + public StepVertexPoint( string name, StepCartesianPoint location ) + : base( name ) + { + Location = location; + } + + public StepCartesianPoint Location + { + get { return _location; } + set + { + if( value == null ) { + throw new ArgumentNullException(); + } + + _location = value; + } + } + + public override StepItemType ItemType => StepItemType.VertexPoint; + + internal static StepVertexPoint CreateFromSyntaxList( + StepBinder binder, + ExpNode syntaxList ) + { + ExpNodeNextEnumerator enumerator = new ExpNodeNextEnumerator( syntaxList ); + StepVertexPoint vertex = new StepVertexPoint(); + enumerator.AssertEnumeratorCount( 2 ); + vertex.Name = enumerator.Values[ 0 ].CodeConvertTemplate; + binder.BindValue( + enumerator.Values[ 1 ], v => vertex.Location = v.AsType() ); + return vertex; + } + + internal override IEnumerable GetReferencedItems() + { + yield return Location; + } + + } +} + diff --git a/StgSharp.Model/STEP/Reader/StepDataReader.cs b/StgSharp.Model/STEP/Reader/StepDataReader.cs index 7ed3ad6e..f004eb74 100644 --- a/StgSharp.Model/STEP/Reader/StepDataReader.cs +++ b/StgSharp.Model/STEP/Reader/StepDataReader.cs @@ -43,9 +43,8 @@ namespace StgSharp.Modeling.STEP { public partial class StepReader { - private Regex expressionSpilitter = new Regex( - @"^#(?[0-9]+)\s*?=\s*?(?\S.*?)\s*;$", - RegexOptions.Compiled ); + + private Regex expressionSpilitter = GetExpressionSplitter(); private ThreadLocal> _codeLineQueue = new ThreadLocal>(); @@ -57,35 +56,35 @@ namespace StgSharp.Modeling.STEP public void ReadDataSection() { - if (_codeLineQueue.Value == null) - { + if( _codeLineQueue.Value == null ) { _codeLineQueue.Value = new ConcurrentQueue(); } - using (MemoryMappedViewStream ms = _memoryFile.CreateViewStream( - 0, _size, MemoryMappedFileAccess.Read)) + using( MemoryMappedViewStream ms = _memoryFile.CreateViewStream( + 0, _size, MemoryMappedFileAccess.Read ) ) { - using (StreamReader sr = new StreamReader(ms)) + using( StreamReader sr = new StreamReader( ms ) ) { long pos = _headStart; string line; - while (string.IsNullOrEmpty(line = sr.ReadLine())) + while( string.IsNullOrEmpty( line = sr.ReadLine()! ) ) { - switch (line) + Match match = expressionSpilitter.Match( line ); + if( match.Success ) { - default: - break; - } - Match match = expressionSpilitter.Match(line); - if (match.Success) - { - int id = int.Parse(match.Groups["id"].Value); - string expression = match.Groups["expression"].Value; - StepCodeLine stepExpression = new StepCodeLine(id, expression); - _codeLineQueue.Value.Enqueue(stepExpression); + int id = int.Parse( match.Groups[ "id" ].Value ); + string expression = match.Groups[ "expression" ].Value; + StepCodeLine stepExpression = new StepCodeLine( id, expression ); + _codeLineQueue.Value.Enqueue( stepExpression ); } } } } } + + [GeneratedRegex( + @"^#(?[0-9]+)\s*?=\s*?(?\S.*?)\s*;$", + RegexOptions.Compiled | RegexOptions.Singleline )] + private static partial Regex GetExpressionSplitter(); + } } diff --git a/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.AssemblyInfo.cs b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.AssemblyInfo.cs index 418eb6fd..b616e550 100644 --- a/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.AssemblyInfo.cs +++ b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Model")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+d270b6b1f8220e14d01610bd55f11c0b4908af39")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+2692495dc8460e1f60a2d073f162c5f526e1ba1b")] [assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Model")] [assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Model")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.sourcelink.json b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.sourcelink.json index fb815ce1..2440bc0f 100644 --- a/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.sourcelink.json +++ b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.sourcelink.json @@ -1 +1 @@ -{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/d270b6b1f8220e14d01610bd55f11c0b4908af39/*"}} \ No newline at end of file +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/2692495dc8460e1f60a2d073f162c5f526e1ba1b/*"}} \ No newline at end of file diff --git a/StgSharp.Script/Common/CompileStack.cs b/StgSharp.Script/Common/CompileStack.cs index 4b29cf16..2df13343 100644 --- a/StgSharp.Script/Common/CompileStack.cs +++ b/StgSharp.Script/Common/CompileStack.cs @@ -42,6 +42,8 @@ namespace StgSharp.Script where TType: ITypeSource { + private Token? _lastToken; + private TNode[] _nodeArray = new TNode[4]; private Token[] _operatorArray = new Token[4]; private Token[] _tokenArray = new Token[4]; @@ -51,6 +53,7 @@ namespace StgSharp.Script private Stack _isNode = new Stack(); private Stack> _statementCache = new Stack>(); + private TNode _lastNode; public CompileStack() { @@ -58,6 +61,8 @@ namespace StgSharp.Script _statementCache.Push( new Stack() ); } + public bool IsLastAddedOperator { get; private set; } + public CompileDepthMark CurrentDepthMark { get => _depthStack.Peek(); @@ -180,6 +185,7 @@ namespace StgSharp.Script _nodeArray[ _nodeCount ] = node; _nodeCount++; _isNode.Push( true ); + IsLastAddedOperator = false; } public void PushOperand( Token token ) @@ -190,6 +196,7 @@ namespace StgSharp.Script _tokenArray[ _tokenCount ] = token; _tokenCount++; _isNode.Push( false ); + IsLastAddedOperator = false; } public void PushOperator( Token token ) @@ -199,6 +206,7 @@ namespace StgSharp.Script } _operatorArray[ _operatorCount ] = token; _operatorCount++; + IsLastAddedOperator = true; } public T StateOfCurrentDepth() where T: class, ICompileDepthState diff --git a/StgSharp.Script/Express/ExpAstNode/ExpElementInitializingNode.cs b/StgSharp.Script/Express/ExpAstNode/ExpElementInitializingNode.cs new file mode 100644 index 00000000..d391bb72 --- /dev/null +++ b/StgSharp.Script/Express/ExpAstNode/ExpElementInitializingNode.cs @@ -0,0 +1,62 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpElementInitializingNode.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Script.Express +{ + public class ExpElementInitializingNode : ExpNode + { + + private ExpMetaRefNode _type; + private ExpNode _init; + + public ExpElementInitializingNode( + Token source, + ExpMetaRefNode type, + ExpNode initParameter ) + : base( source ) + { + _type = type; + _init = initParameter; + } + + public override ExpNode Left => _type; + + public override ExpNode Right => _init; + + public override IExpElementSource EqualityTypeConvert => _type.SourceRef; + + } +} diff --git a/StgSharp.Script/Express/ExpElmentSource.cs b/StgSharp.Script/Express/ExpElmentSource.cs index 4e1add85..8b517fa0 100644 --- a/StgSharp.Script/Express/ExpElmentSource.cs +++ b/StgSharp.Script/Express/ExpElmentSource.cs @@ -45,6 +45,8 @@ namespace StgSharp.Script.Express string Name { get; } + public void AddMember( string name, ExpNode memberNode ); + public void Analyse(); public bool TryGetMember( string name, out ExpNode memberNode ); diff --git a/StgSharp.Script/Express/ExpNodeNextEnumerator.cs b/StgSharp.Script/Express/ExpNodeNextEnumerator.cs index 59af23cb..63dc3bc7 100644 --- a/StgSharp.Script/Express/ExpNodeNextEnumerator.cs +++ b/StgSharp.Script/Express/ExpNodeNextEnumerator.cs @@ -28,6 +28,8 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- +using Microsoft.CodeAnalysis.CSharp.Syntax; + using System; using System.Collections; using System.Collections.Generic; @@ -40,13 +42,40 @@ namespace StgSharp.Script.Express public class ExpNodeNextEnumerator : IEnumerator { - private ExpNode _begin; private ExpNode _current; + private List _begin = new List(); + public ExpNodeNextEnumerator( ExpNode token ) { - _begin = token; + _begin[ 0 ] = token; _current = token; + ExpNode t = token; + while( !ReferenceEquals( t.Next, token ) && t.Next != null ) + { + t = t.Next; + _begin.Add( t ); + } + } + + public ExpNode this[ int index ] + { + get + { + ArgumentOutOfRangeException.ThrowIfNegative( index ); + ArgumentOutOfRangeException.ThrowIfGreaterThan( index, _begin.Count ); + return _begin[ index ]; + } + } + + public List Values => _begin; + + public void AssertEnumeratorCount( int count ) + { + if( _begin.Count != count ) { + throw new InvalidOperationException( + $"Enumerator count mismatch. Expected {count}, but got {_begin.Count}." ); + } } void IDisposable.Dispose() @@ -66,13 +95,12 @@ namespace StgSharp.Script.Express void IEnumerator.Reset() { - _current = _begin; + _current = _begin[ 0 ]; } - object IEnumerator.Current => throw new NotImplementedException(); + object IEnumerator.Current => _current; - ExpNode IEnumerator.Current => throw new NotImplementedException( - ); + ExpNode IEnumerator.Current => _current; } } diff --git a/StgSharp.Script/Express/ExpSyntaxAnalyzer.Common.cs b/StgSharp.Script/Express/ExpSyntaxAnalyzer.Common.cs index d58e4b77..76a6e256 100644 --- a/StgSharp.Script/Express/ExpSyntaxAnalyzer.Common.cs +++ b/StgSharp.Script/Express/ExpSyntaxAnalyzer.Common.cs @@ -113,7 +113,6 @@ namespace StgSharp.Script.Express } //Many thing miss here - _cache.PushOperand( ExpElementMemberNameNode.Create( t ) ); return true; @@ -258,6 +257,17 @@ namespace StgSharp.Script.Express { _cache.PushOperand( ExpInstanceReferenceNode.MakeReferenceFrom( t, instance ) ); return true; + } else if( _cache.IsLastAddedOperator ) + { + if( _cache.PeekOperand( out _, + out ExpNode? typenode ) && typenode is ExpMetaRefNode typeRef ) + { + _cache.PopOperand( out _, out _ ); + _local.AddMember( t.Value, typeRef.SourceRef.CreateInstanceNode( t ) ); + } else + { + return false; + } } return false; } diff --git a/StgSharp.Script/Express/ExpSyntaxAnalyzer.cs b/StgSharp.Script/Express/ExpSyntaxAnalyzer.cs index 954e9813..29d9b7a3 100644 --- a/StgSharp.Script/Express/ExpSyntaxAnalyzer.cs +++ b/StgSharp.Script/Express/ExpSyntaxAnalyzer.cs @@ -53,7 +53,6 @@ namespace StgSharp.Script.Express private CompileStack _cache; private ExpNode _lastStatement; - private ExpSchema _context; private IExpElementSource _local; @@ -107,8 +106,9 @@ namespace StgSharp.Script.Express case TokenFlag.Symbol_Unary or TokenFlag.Symbol_Binary: TryAppendSymbol( expToken ); break; - case TokenFlag.Member: - TryAppendMember( expToken ); + case TokenFlag.Number or TokenFlag.String: + ExpElementInstance node = ExpElementInstance.CreateLiteral( expToken ); + _cache.PushOperand( node ); break; case TokenFlag.Separator_Left: TryAppendPrefixSeparator( expToken ); @@ -125,9 +125,8 @@ namespace StgSharp.Script.Express case TokenFlag.Index_Right: TryAppendIndexRight( expToken ); break; - case TokenFlag.Number or TokenFlag.String: - ExpElementInstance node = ExpElementInstance.CreateLiteral( expToken ); - _cache.PushOperand( node ); + case TokenFlag.Member: + TryAppendMember( expToken ); break; default: break; diff --git a/StgSharp.Script/Express/IExpMarshalType.cs b/StgSharp.Script/Express/IExpMarshalType.cs new file mode 100644 index 00000000..8acb4506 --- /dev/null +++ b/StgSharp.Script/Express/IExpMarshalType.cs @@ -0,0 +1,45 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IExpMarshalType.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Script.Express +{ + public interface IExpMarshalType + { + + static abstract TSelf Create( string name, ExpNode node ); + + } +} diff --git a/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.AssemblyInfo.cs b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.AssemblyInfo.cs index 744f594d..dc76c632 100644 --- a/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.AssemblyInfo.cs +++ b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Script")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+a4b2e9a8056c03f25a0aa3136f09d28ba86763fe")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+2692495dc8460e1f60a2d073f162c5f526e1ba1b")] [assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Script")] [assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Script")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.sourcelink.json b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.sourcelink.json index d16a784c..2440bc0f 100644 --- a/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.sourcelink.json +++ b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.sourcelink.json @@ -1 +1 @@ -{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/7b7b5ee475ba81a574fedf4772a213a798ba4c27/*"}} \ No newline at end of file +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/2692495dc8460e1f60a2d073f162c5f526e1ba1b/*"}} \ No newline at end of file diff --git a/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.AssemblyInfo.cs b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.AssemblyInfo.cs index 5eded2dc..69538707 100644 --- a/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.AssemblyInfo.cs +++ b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("StgSharpDebug")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+d270b6b1f8220e14d01610bd55f11c0b4908af39")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+2692495dc8460e1f60a2d073f162c5f526e1ba1b")] [assembly: System.Reflection.AssemblyProductAttribute("StgSharpDebug")] [assembly: System.Reflection.AssemblyTitleAttribute("StgSharpDebug")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.sourcelink.json b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.sourcelink.json index fb815ce1..2440bc0f 100644 --- a/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.sourcelink.json +++ b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.sourcelink.json @@ -1 +1 @@ -{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/d270b6b1f8220e14d01610bd55f11c0b4908af39/*"}} \ No newline at end of file +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/2692495dc8460e1f60a2d073f162c5f526e1ba1b/*"}} \ No newline at end of file