@@ -15,7 +15,6 @@ import {
1515 bounds3Merge ,
1616 bounds3Center ,
1717 vec3Add ,
18- vec3Rot ,
1918 sizeCenterBoundsForCameraPos ,
2019} from "../../abstract-3d.js" ;
2120import { dxf , DxfOrigin , Handle } from "./dxf-encoding.js" ;
@@ -37,7 +36,7 @@ export function renderScenes(scenes: ReadonlyArray<DxfScene>, baseOptions?: Opti
3736 const allBounds = Array < Bounds3 > ( ) ;
3837 const handle = { handle : 0x1000 } ;
3938 for ( const view of scenes ) {
40- const { groups, size, center } = dxfGroups (
39+ const { groups, size, center } = renderInternal (
4140 view . scene ,
4241 optionsDef ( { ...baseOptions , ...view . options , origin : "Center" } ) ,
4342 view . pos ,
@@ -50,45 +49,30 @@ export function renderScenes(scenes: ReadonlyArray<DxfScene>, baseOptions?: Opti
5049 return dxf ( allGroups , bounds3Center ( bounds ) , bounds3ToSize ( bounds ) , "Center" ) ;
5150}
5251
53- export const renderNew = ( scene : Scene , options ?: Optional < DxfOptions > ) : string => {
52+ export const render = ( scene : Scene , options ?: Optional < DxfOptions > ) : string => {
5453 const opts = optionsDef ( options ) ;
55- const { groups, size, center } = dxfGroups ( scene , opts , vec3Zero , { handle : 0x1000 } ) ;
54+ const { groups, size, center } = renderInternal ( scene , opts , vec3Zero , { handle : 0x1000 } ) ;
5655 return dxf ( groups , center , size , opts . origin ) ;
5756} ;
5857
59- // This is the original
60- export const render = ( scene : Scene , options : Optional < DxfOptions > ) : string => {
61- const opts = optionsDef ( options ) ;
62- const unitRot = vec3RotCombine ( rotationForCameraPos ( opts . view ) , scene . rotation_deprecated ?? vec3Zero ) ;
63- const bounds = bounds3FromPosAndSize ( scene . center_deprecated ?? vec3Zero , scene . size_deprecated ) ;
64- const center = vec3Zero ;
65- const offset =
66- opts . origin === "Center" ? vec3Zero : vec3 ( Math . abs ( bounds . min . x ) , Math . abs ( bounds . min . y ) , - bounds . max . z ) ;
67- const groupRoot = group ( [ ] , offset , vec3Zero , scene . groups ) ;
68- const handleRef = { handle : 0x1000 } ;
69- return dxf ( dxfGroup ( groupRoot , center , unitRot , opts , handleRef ) , center , scene . size_deprecated , opts . origin ) ;
70- } ;
71-
72- const dxfGroups = (
58+ const renderInternal = (
7359 scene : Scene ,
7460 options : DxfOptions ,
7561 offset : Vec3 ,
76- handleRef : Handle //make sure we start with a value higher than any other handle id's used in the header
62+ handleRef : Handle
7763) : { readonly groups : string ; readonly size : Vec3 ; readonly center : Vec3 } => {
78- const sceneRot = scene . rotation_deprecated ?? vec3Zero ;
79- const viewRot = rotationForCameraPos ( options . view ) ;
80- const unitRot = vec3RotCombine ( viewRot , sceneRot ) ;
81-
64+ const unitRot = vec3RotCombine ( rotationForCameraPos ( options . view ) , scene . rotation_deprecated ?? vec3Zero ) ;
8265 const [ size , center ] = sizeCenterBoundsForCameraPos (
8366 scene . size_deprecated ,
8467 scene . center_deprecated ?? vec3Zero ,
8568 unitRot
8669 ) ;
87- const centerWithOffset = vec3Add ( center , offset ) ;
70+ // const unitCenterFlipped = vec3Flip(center);
71+ const dxfCenter = vec3Add ( center , offset ) ;
8872 return {
89- groups : scene . groups . reduce ( ( a , c ) => a + dxfGroup ( c , centerWithOffset , unitRot , options , handleRef ) , "" ) ,
73+ groups : scene . groups . reduce ( ( a , c ) => a + dxfGroup ( c , dxfCenter , unitRot , options , handleRef ) , "" ) ,
9074 size,
91- center : centerWithOffset ,
75+ center : dxfCenter ,
9276 } ;
9377} ;
9478
@@ -138,3 +122,16 @@ function optionsDef(options: Optional<DxfOptions> | undefined): DxfOptions {
138122 cylinderSideCount : DEFAULT_CYLINDER_SIDE_COUNT ,
139123 } ;
140124}
125+
126+ // This is the original
127+ export const renderOld = ( scene : Scene , options ?: Optional < DxfOptions > ) : string => {
128+ const opts = optionsDef ( options ) ;
129+ const unitRot = vec3RotCombine ( rotationForCameraPos ( opts . view ) , scene . rotation_deprecated ?? vec3Zero ) ;
130+ const bounds = bounds3FromPosAndSize ( scene . center_deprecated ?? vec3Zero , scene . size_deprecated ) ;
131+ const center = vec3Zero ;
132+ const offset =
133+ opts . origin === "Center" ? vec3Zero : vec3 ( Math . abs ( bounds . min . x ) , Math . abs ( bounds . min . y ) , - bounds . max . z ) ;
134+ const groupRoot = group ( [ ] , offset , vec3Zero , scene . groups ) ;
135+ const handleRef = { handle : 0x1000 } ;
136+ return dxf ( dxfGroup ( groupRoot , center , unitRot , opts , handleRef ) , center , scene . size_deprecated , opts . origin ) ;
137+ } ;
0 commit comments