99
1010const mvecSize = MVector {3,Cdouble} (0.0 , 0.0 , 0.0 )
1111const DefaultMaterial = Shapes. VisualMaterial ()
12- const emptyShaderName= " "
12+ const emptyShaderName = " "
13+
14+
15+ # convert VarFloatType to Float64
16+ FVal (val) = Modia3D. convertToFloat64 (val)
17+ FVec (vec) = SVector {3,Float64} (Modia3D. convertToFloat64 (vec))
18+ FMat (mat) = SMatrix {3,3,Float64,9} (Modia3D. convertToFloat64 (mat))
1319
1420
1521@inline function visualizeShape (simVis:: SimVis_Renderer ,
@@ -30,113 +36,94 @@ const emptyShaderName=" "
3036end
3137
3238
33- function convertToFloat64 (value)
34- if typeof (value[1 ]) <: Measurements.Measurement
35- # Plot mean value signal
36- value_mean = Float64 .(Measurements. value .(value))
37- elseif typeof (value[1 ]) <: MonteCarloMeasurements.StaticParticles ||
38- typeof (value[1 ]) <: MonteCarloMeasurements.Particles
39- # Plot mean value signal
40- if isdefined (MonteCarloMeasurements, :pmean )
41- # MonteCarlMeasurements, version >= 1.0
42- value_mean = Float64 .(MonteCarloMeasurements. pmean .(value))
43- else
44- # MonteCarloMeasurements, version < 1.0
45- value_mean = Float64 .(MonteCarloMeasurements. mean .(value))
46- end
47- else
48- value_mean = Float64 .(value)
49- end
50- return value_mean
51- end
52-
53-
5439function visualizeObject (obj:: Composition.Object3D , id:: Ptr{Nothing} , simVis:: SimVis_Renderer )
5540 shapeKind = obj. shapeKind
41+ r_abs = FVec (obj. r_abs)
42+ R_abs = FMat (obj. R_abs)
5643
5744 if shapeKind == Modia3D. SphereKind
5845 sphere:: Modia3D.Shapes.Sphere = obj. shape
59- visualizeShape (simVis, SVector {3,Float64} ( convertToFloat64 (obj . r_abs)), SMatrix {3,3,Float64,9} ( convertToFloat64 (obj . R_abs)) , SimVisSphere, id, obj. visualMaterial,
60- convertToFloat64 (sphere. diameter), convertToFloat64 (sphere. diameter), convertToFloat64 (sphere. diameter) )
46+ visualizeShape (simVis, r_abs, R_abs, SimVisSphere, id, obj. visualMaterial,
47+ FVal (sphere. diameter), FVal (sphere. diameter), FVal (sphere. diameter))
6148
6249 elseif shapeKind == Modia3D. EllipsoidKind
6350 ellipsoid:: Modia3D.Shapes.Ellipsoid = obj. shape
64- visualizeShape (simVis, SVector {3,Float64} ( convertToFloat64 (obj . r_abs)), SMatrix {3,3,Float64,9} ( convertToFloat64 (obj . R_abs)) , SimVisSphere, id, obj. visualMaterial,
65- convertToFloat64 (ellipsoid. lengthX), convertToFloat64 (ellipsoid. lengthY), convertToFloat64 (ellipsoid. lengthZ) )
51+ visualizeShape (simVis, r_abs, R_abs, SimVisSphere, id, obj. visualMaterial,
52+ FVal (ellipsoid. lengthX), FVal (ellipsoid. lengthY), FVal (ellipsoid. lengthZ))
6653
6754 elseif shapeKind == Modia3D. BoxKind
6855 box:: Modia3D.Shapes.Box = obj. shape
69- visualizeShape (simVis, SVector {3,Float64} ( convertToFloat64 (obj . r_abs)), SMatrix {3,3,Float64,9} ( convertToFloat64 (obj . R_abs)) , SimVisBox, id, obj. visualMaterial,
70- convertToFloat64 (box. lengthX), convertToFloat64 (box. lengthY), convertToFloat64 (box. lengthZ) )
56+ visualizeShape (simVis, r_abs, R_abs, SimVisBox, id, obj. visualMaterial,
57+ FVal (box. lengthX), FVal (box. lengthY), FVal (box. lengthZ))
7158
7259 elseif shapeKind == Modia3D. CylinderKind
7360 cylinder:: Modia3D.Shapes.Cylinder = obj. shape
7461 if cylinder. innerDiameter == 0.0
75- visualizeShape (simVis, SVector {3,Float64} ( convertToFloat64 (obj . r_abs)) , Shapes. rotateAxis2z (cylinder. axis, SMatrix {3,3,Float64,9} ( convertToFloat64 (obj . R_abs)) ), SimVisCylinder, id, obj. visualMaterial,
76- convertToFloat64 (cylinder. diameter), convertToFloat64 (cylinder. diameter), convertToFloat64 (cylinder. length) )
62+ visualizeShape (simVis, r_abs, Shapes. rotateAxis2z (cylinder. axis, R_abs), SimVisCylinder, id, obj. visualMaterial,
63+ FVal (cylinder. diameter), FVal (cylinder. diameter), FVal (cylinder. length))
7764 else
78- visualizeShape (simVis, SVector {3,Float64} ( convertToFloat64 (obj . r_abs)) , Shapes. rotateAxis2z (cylinder. axis, SMatrix {3,3,Float64,9} ( convertToFloat64 (obj . R_abs)) ), SimVisPipe, id, obj. visualMaterial,
79- convertToFloat64 (cylinder. diameter), convertToFloat64 (cylinder. diameter), convertToFloat64 (cylinder. length); extras= @MVector [0.0 , convertToFloat64 (cylinder. innerDiameter/ cylinder. diameter), 1.0 ])
65+ visualizeShape (simVis, r_abs, Shapes. rotateAxis2z (cylinder. axis, R_abs), SimVisPipe, id, obj. visualMaterial,
66+ FVal (cylinder. diameter), FVal (cylinder. diameter), FVal (cylinder. length); extras= @MVector [0.0 , FVal (cylinder. innerDiameter/ cylinder. diameter), 1.0 ])
8067 end
8168
8269 elseif shapeKind == Modia3D. ConeKind
8370 cone:: Modia3D.Shapes.Cone = obj. shape
8471 if cone. axis == 1
85- dr = SVector {3,Float64} ([convertToFloat64 (cone. length/ 4 ), 0.0 , 0.0 ])
72+ dr = SVector {3,Float64} ([0.25 * FVal (cone. length), 0.0 , 0.0 ])
8673 elseif cone. axis == 2
87- dr = SVector {3,Float64} ([0.0 , convertToFloat64 (cone. length/ 4 ), 0.0 ])
74+ dr = SVector {3,Float64} ([0.0 , 0.25 * FVal (cone. length), 0.0 ])
8875 else
89- dr = SVector {3,Float64} ([0.0 , 0.0 , convertToFloat64 (cone. length/ 4 )])
76+ dr = SVector {3,Float64} ([0.0 , 0.0 , 0.25 * FVal (cone. length)])
9077 end
91- r_abs = SVector {3,Float64} ( convertToFloat64 (obj . r_abs)) + SMatrix {3,3,Float64,9} ( convertToFloat64 (obj . R_abs) ' ) * dr
92- visualizeShape (simVis, r_abs, Shapes. rotateAxis2z (cone. axis, SMatrix {3,3,Float64,9} ( convertToFloat64 (obj . R_abs)) ), SimVisCone, id, obj. visualMaterial,
93- convertToFloat64 (cone. diameter), convertToFloat64 (cone. diameter), convertToFloat64 (cone. length); extras= @MVector [convertToFloat64 (cone. topDiameter/ cone. diameter), 0.0 , 0.0 ])
78+ r_abs = r_abs + R_abs' * dr
79+ visualizeShape (simVis, r_abs, Shapes. rotateAxis2z (cone. axis, R_abs), SimVisCone, id, obj. visualMaterial,
80+ FVal (cone. diameter), FVal (cone. diameter), FVal (cone. length); extras= @MVector [FVal (cone. topDiameter/ cone. diameter), 0.0 , 0.0 ])
9481
9582 elseif shapeKind == Modia3D. CapsuleKind
9683 capsule:: Modia3D.Shapes.Capsule = obj. shape
97- visualizeShape (simVis, SVector {3,Float64} ( convertToFloat64 (obj . r_abs)) , Shapes. rotateAxis2z (capsule. axis, SMatrix {3,3,Float64,9} ( convertToFloat64 (obj . R_abs)) ), SimVisCapsule, id, obj. visualMaterial,
98- convertToFloat64 (capsule. diameter), convertToFloat64 (capsule. diameter), convertToFloat64 (capsule. length) )
84+ visualizeShape (simVis, r_abs, Shapes. rotateAxis2z (capsule. axis, R_abs), SimVisCapsule, id, obj. visualMaterial,
85+ FVal (capsule. diameter), FVal (capsule. diameter), FVal (capsule. length))
9986
10087 elseif shapeKind == Modia3D. BeamKind
10188 beam:: Modia3D.Shapes.Beam = obj. shape
102- visualizeShape (simVis, SVector {3,Float64} ( convertToFloat64 (obj . r_abs)) , Shapes. rotateAxis2x (beam. axis, SMatrix {3,3,Float64,9} ( convertToFloat64 (obj . R_abs)) ), SimVisBeam, id, obj. visualMaterial,
103- convertToFloat64 (beam. length), convertToFloat64 (beam. width), convertToFloat64 (beam. thickness) )
89+ visualizeShape (simVis, r_abs, Shapes. rotateAxis2x (beam. axis, R_abs), SimVisBeam, id, obj. visualMaterial,
90+ FVal (beam. length), FVal (beam. width), FVal (beam. thickness) )
10491
10592 elseif shapeKind == Modia3D. CoordinateSystemKind
10693 coordinateSystem:: Modia3D.Shapes.CoordinateSystem = obj. shape
107- visualizeShape (simVis, SVector {3,Float64} ( convertToFloat64 (obj . r_abs)), SMatrix {3,3,Float64,9} ( convertToFloat64 (obj . R_abs)) , SimVisCoordSys, id, DefaultMaterial,
94+ visualizeShape (simVis, r_abs, R_abs, SimVisCoordSys, id, DefaultMaterial,
10895 coordinateSystem. length, coordinateSystem. length, coordinateSystem. length)
10996
11097 elseif shapeKind == Modia3D. GridKind
11198 grid:: Modia3D.Shapes.Grid = obj. shape
112- visualizeShape (simVis, SVector {3,Float64} ( convertToFloat64 (obj . r_abs)) , Shapes. rotateAxis2z (grid. axis, SMatrix {3,3,Float64,9} ( convertToFloat64 (obj . R_abs)) ), SimVisGrid, id, DefaultMaterial,
99+ visualizeShape (simVis, r_abs, Shapes. rotateAxis2z (grid. axis, R_abs), SimVisGrid, id, DefaultMaterial,
113100 grid. length, grid. width, grid. length; extras= @MVector [grid. distance, grid. lineWidth, 0.0 ])
114101
115102 elseif shapeKind == Modia3D. SpringKind
116103 spring:: Modia3D.Shapes.Spring = obj. shape
117- visualizeShape (simVis, SVector {3,Float64} ( convertToFloat64 (obj . r_abs)) , Shapes. rotateAxis2z (spring. axis, SMatrix {3,3,Float64,9} ( convertToFloat64 (obj . R_abs)) ), SimVisSpring, id, obj. visualMaterial,
104+ visualizeShape (simVis, r_abs, Shapes. rotateAxis2z (spring. axis, R_abs), SimVisSpring, id, obj. visualMaterial,
118105 spring. length, spring. diameter, spring. diameter; extras= @MVector [spring. windings, spring. wireDiameter/ 2 , 0.0 ])
119106
120107 elseif shapeKind == Modia3D. GearWheelKind
121108 gearWheel:: Modia3D.Shapes.GearWheel = obj. shape
122- visualizeShape (simVis, SVector {3,Float64} ( convertToFloat64 (obj . r_abs)) , Shapes. rotateAxis2z (gearWheel. axis, SMatrix {3,3,Float64,9} ( convertToFloat64 (obj . R_abs)) ), SimVisGearWheel, id, obj. visualMaterial,
109+ visualizeShape (simVis, r_abs, Shapes. rotateAxis2z (gearWheel. axis, R_abs), SimVisGearWheel, id, obj. visualMaterial,
123110 gearWheel. diameter, gearWheel. diameter, gearWheel. length; extras= @MVector [gearWheel. innerDiameter/ gearWheel. diameter, gearWheel. teeth, gearWheel. angle* 180 / pi ])
124111
125112 elseif shapeKind == Modia3D. ModelicaKind
126113 modelica:: Modia3D.Shapes.ModelicaShape = obj. shape
127- visualizeShape (simVis, SVector {3,Float64} ( convertToFloat64 (obj . r_abs)), SMatrix {3,3,Float64,9} ( convertToFloat64 (obj . R_abs)) , ShapeType (modelica. type), id, obj. visualMaterial,
114+ visualizeShape (simVis, r_abs, R_abs, ShapeType (modelica. type), id, obj. visualMaterial,
128115 modelica. lengthX, modelica. lengthY, modelica. lengthZ; extras= modelica. extra)
129116
130117 elseif shapeKind == Modia3D. FileMeshKind
131118 fileMesh:: Modia3D.Shapes.FileMesh = obj. shape
132- SimVis_setFileObject (simVis, id, Cint (0 ), SVector {3,Float64} ( convertToFloat64 (obj . r_abs)), SMatrix {3,3,Float64,9} ( convertToFloat64 (obj . R_abs)) ,
119+ SimVis_setFileObject (simVis, id, Cint (0 ), r_abs, R_abs,
133120 MVector {3,Float64} (fileMesh. scaleFactor), Cint (obj. visualMaterial. reflectslight), obj. visualMaterial. shininess, obj. visualMaterial. transparency, Cint (obj. visualMaterial. wireframe), Cint (0 ),
134121 fileMesh. filename, Cint (fileMesh. smoothNormals), fileMesh. useMaterialColor, MVector {3,Cint} (obj. visualMaterial. color),
135122 Cint (obj. visualMaterial. shadowMask), emptyShaderName)
136123
137124 elseif shapeKind == Modia3D. TextKind
138125 textShape:: Modia3D.Shapes.TextShape = obj. shape
139- SimVis_setTextObject (simVis, id, Cint (textShape. axisAlignment), textShape. text, 0.0 , Cint (0 ), SVector {3,Float64} ( convertToFloat64 (obj . r_abs)), SMatrix {3,3,Float64,9} ( convertToFloat64 (obj . R_abs)) ,
126+ SimVis_setTextObject (simVis, id, Cint (textShape. axisAlignment), textShape. text, 0.0 , Cint (0 ), r_abs, R_abs,
140127 textShape. font. charSize, textShape. font. fontFileName, MVector {3,Cint} (textShape. font. color), textShape. font. transparency,
141128 textShape. offset, Cint (textShape. alignment), Cint (0 ))
142129
0 commit comments