1+ import { Euler , Matrix4 , Vector3 } from "three" ;
12import {
23 Box ,
34 Material ,
@@ -13,11 +14,14 @@ import {
1314 vec3NegX ,
1415 vec3NegY ,
1516 vec3NegZ ,
17+ vec3RotNormal ,
1618} from "../../../abstract-3d.js" ;
1719import { parseRgb } from "../../shared.js" ;
1820import {
1921 ADVANCED_BREP_SHAPE_REPRESENTATION ,
2022 ADVANCED_FACE ,
23+ APPLICATION_CONTEXT ,
24+ APPLICATION_PROTOCOL_DEFINITION ,
2125 AXIS2_PLACEMENT_3D ,
2226 CARTESIAN_POINT ,
2327 CLOSED_SHELL ,
@@ -36,6 +40,13 @@ import {
3640 ORIENTED_EDGE ,
3741 PLANE ,
3842 PRESENTATION_STYLE_ASSIGNMENT ,
43+ PRODUCT ,
44+ PRODUCT_CONTEXT ,
45+ PRODUCT_DEFINITION ,
46+ PRODUCT_DEFINITION_CONTEXT ,
47+ PRODUCT_DEFINITION_FORMATION ,
48+ PRODUCT_DEFINITION_SHAPE ,
49+ SHAPE_DEFINITION_REPRESENTATION ,
3950 STYLED_ITEM ,
4051 SURFACE_SIDE_STYLE ,
4152 SURFACE_STYLE_FILL_AREA ,
@@ -50,7 +61,9 @@ export function stepBox(b: Box, mat: Material, parentPos: Vec3, parentRot: Vec3,
5061 const rot = vec3RotCombine ( parentRot , b . rot ?? vec3Zero ) ;
5162 const cart3tr = ( x : number , y : number , z : number ) : number =>
5263 CARTESIAN_POINT ( vec3TransRot ( vec3 ( x , y , z ) , pos , rot ) , m ) ;
53- const v0 = VECTOR ( DIRECTION ( vec3Zero , m ) , m ) ;
64+ const v0 = VECTOR ( DIRECTION ( vec3PosX , m ) , m ) ;
65+ const negNormal = DIRECTION ( vec3NegZ , m ) ;
66+ const posNormal = DIRECTION ( vec3PosZ , m ) ;
5467 const c0 = CARTESIAN_POINT ( vec3Zero , m ) ;
5568 const [ c1 , c2 ] = [ cart3tr ( - half . x , - half . y , - half . z ) , cart3tr ( half . x , - half . y , - half . z ) ] ;
5669 const [ c3 , c4 ] = [ cart3tr ( half . x , half . y , - half . z ) , cart3tr ( - half . x , half . y , - half . z ) ] ;
@@ -60,11 +73,14 @@ export function stepBox(b: Box, mat: Material, parentPos: Vec3, parentRot: Vec3,
6073 const [ v5 , v6 , v7 , v8 ] = [ VERTEX_POINT ( c5 , m ) , VERTEX_POINT ( c6 , m ) , VERTEX_POINT ( c7 , m ) , VERTEX_POINT ( c8 , m ) ] ;
6174 const [ l1 , l2 , l3 , l4 ] = [ LINE ( c1 , v0 , m ) , LINE ( c2 , v0 , m ) , LINE ( c3 , v0 , m ) , LINE ( c4 , v0 , m ) ] ;
6275 const [ l5 , l6 , l7 , l8 ] = [ LINE ( c5 , v0 , m ) , LINE ( c6 , v0 , m ) , LINE ( c7 , v0 , m ) , LINE ( c8 , v0 , m ) ] ;
63- const [ d1 , d2 ] = [ DIRECTION ( vec3RotCombine ( vec3PosX , rot ) , m ) , DIRECTION ( vec3RotCombine ( vec3PosY , rot ) , m ) ] ;
64- const [ d3 , d4 ] = [ DIRECTION ( vec3RotCombine ( vec3PosZ , rot ) , m ) , DIRECTION ( vec3RotCombine ( vec3NegX , rot ) , m ) ] ;
65- const [ d5 , d6 ] = [ DIRECTION ( vec3RotCombine ( vec3NegY , rot ) , m ) , DIRECTION ( vec3RotCombine ( vec3NegZ , rot ) , m ) ] ;
76+ const [ d1 , d2 ] = [ DIRECTION ( vec3RotNormal ( vec3NegX , rot ) , m ) , DIRECTION ( vec3RotNormal ( vec3NegY , rot ) , m ) ] ;
77+ const [ d3 , d4 ] = [ DIRECTION ( vec3RotNormal ( vec3NegZ , rot ) , m ) , DIRECTION ( vec3RotNormal ( vec3PosX , rot ) , m ) ] ;
78+ const [ d5 , d6 ] = [ DIRECTION ( vec3RotNormal ( vec3PosY , rot ) , m ) , DIRECTION ( vec3RotNormal ( vec3PosZ , rot ) , m ) ] ;
6679 const color = COLOUR_RGB ( parseRgb ( mat . normal ) , m ) ;
6780
81+ APPLICATION_PROTOCOL_DEFINITION ( m ) ;
82+ const applicationContext = APPLICATION_CONTEXT ( m ) ;
83+
6884 const msb = MANIFOLD_SOLID_BREP (
6985 CLOSED_SHELL (
7086 [
@@ -83,7 +99,7 @@ export function stepBox(b: Box, mat: Material, parentPos: Vec3, parentRot: Vec3,
8399 "T" ,
84100 m
85101 ) ,
86- PLANE ( AXIS2_PLACEMENT_3D ( c0 , d3 , d1 , m ) , m ) ,
102+ PLANE ( AXIS2_PLACEMENT_3D ( c0 , d3 , posNormal , m ) , m ) ,
87103 m
88104 ) ,
89105 // Back
@@ -101,7 +117,7 @@ export function stepBox(b: Box, mat: Material, parentPos: Vec3, parentRot: Vec3,
101117 "T" ,
102118 m
103119 ) ,
104- PLANE ( AXIS2_PLACEMENT_3D ( c0 , d6 , d4 , m ) , m ) ,
120+ PLANE ( AXIS2_PLACEMENT_3D ( c0 , d6 , negNormal , m ) , m ) ,
105121 m
106122 ) ,
107123 // Left
@@ -119,10 +135,10 @@ export function stepBox(b: Box, mat: Material, parentPos: Vec3, parentRot: Vec3,
119135 "T" ,
120136 m
121137 ) ,
122- PLANE ( AXIS2_PLACEMENT_3D ( c0 , d4 , d3 , m ) , m ) ,
138+ PLANE ( AXIS2_PLACEMENT_3D ( c0 , d4 , negNormal , m ) , m ) ,
123139 m
124140 ) ,
125- // Right
141+ // Right ??? <<-----
126142 ADVANCED_FACE (
127143 FACE_BOUND (
128144 EDGE_LOOP (
@@ -137,7 +153,7 @@ export function stepBox(b: Box, mat: Material, parentPos: Vec3, parentRot: Vec3,
137153 "T" ,
138154 m
139155 ) ,
140- PLANE ( AXIS2_PLACEMENT_3D ( c0 , d1 , d6 , m ) , m ) ,
156+ PLANE ( AXIS2_PLACEMENT_3D ( c0 , d1 , posNormal , m ) , m ) ,
141157 m
142158 ) ,
143159 // Top
@@ -155,7 +171,7 @@ export function stepBox(b: Box, mat: Material, parentPos: Vec3, parentRot: Vec3,
155171 "T" ,
156172 m
157173 ) ,
158- PLANE ( AXIS2_PLACEMENT_3D ( c0 , d2 , d1 , m ) , m ) ,
174+ PLANE ( AXIS2_PLACEMENT_3D ( c0 , d2 , posNormal , m ) , m ) ,
159175 m
160176 ) ,
161177 // Bottom
@@ -173,15 +189,15 @@ export function stepBox(b: Box, mat: Material, parentPos: Vec3, parentRot: Vec3,
173189 "T" ,
174190 m
175191 ) ,
176- PLANE ( AXIS2_PLACEMENT_3D ( c0 , d5 , d4 , m ) , m ) ,
192+ PLANE ( AXIS2_PLACEMENT_3D ( c0 , d5 , negNormal , m ) , m ) ,
177193 m
178194 ) ,
179195 ] ,
180196 m
181197 ) ,
182198 m
183199 ) ;
184- ADVANCED_BREP_SHAPE_REPRESENTATION ( AXIS2_PLACEMENT_3D ( c0 , DIRECTION ( vec3PosZ , m ) , DIRECTION ( vec3PosX , m ) , m ) , msb , m ) ;
200+ const absp = ADVANCED_BREP_SHAPE_REPRESENTATION ( AXIS2_PLACEMENT_3D ( c0 , DIRECTION ( vec3PosZ , m ) , DIRECTION ( vec3PosX , m ) , m ) , msb , m ) ;
185201 MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION (
186202 STYLED_ITEM (
187203 PRESENTATION_STYLE_ASSIGNMENT (
@@ -194,4 +210,29 @@ export function stepBox(b: Box, mat: Material, parentPos: Vec3, parentRot: Vec3,
194210 ) ,
195211 m
196212 ) ;
213+ SHAPE_DEFINITION_REPRESENTATION (
214+ PRODUCT_DEFINITION_SHAPE (
215+ PRODUCT_DEFINITION (
216+ PRODUCT_DEFINITION_FORMATION (
217+ PRODUCT (
218+ PRODUCT_CONTEXT (
219+ applicationContext ,
220+ m
221+ ) ,
222+ "Cube" ,
223+ m
224+ ) ,
225+ m
226+ ) ,
227+ PRODUCT_DEFINITION_CONTEXT (
228+ applicationContext ,
229+ m
230+ ) ,
231+ m
232+ ) ,
233+ m
234+ ) ,
235+ absp ,
236+ m
237+ ) ;
197238}
0 commit comments