55 < meta name ="viewport " content ="width=device-width, initial-scale=1.0 ">
66 < title > Dwg Database JSON Viewer</ title >
77 < style >
8- # dwgInfo : empty , # dxfInfo : empty {
8+ # fileInfo1 : empty , # fileInfo2 : empty {
99 height : 10px ;
1010 }
1111
12- # dwgInfo , # dxfInfo {
12+ # fileInfo1 , # fileInfo2 {
1313 margin-top : 10px ;
1414 margin-bottom : 10px ;
1515 }
@@ -42,15 +42,15 @@ <h1>Dwg/dxf Database JSON Viewer</h1>
4242 < td >
4343 < label for ="fileInput " class ="btn disabled "> Choose Dwg File</ label >
4444 < input type ="file " id ="fileInput " accept =".dwg " style ="display: none; " disabled />
45- < span id ="dwgFileName "> No File Chosen</ span >
46- < div id ="dwgInfo "> </ div >
45+ < span id ="fileName1 "> No File Chosen</ span >
46+ < div id ="fileInfo1 "> </ div >
4747 </ td >
4848 < td > </ td >
4949 < td >
50- < label for ="fileInputDxf " class ="btn disabled "> Choose Dxf File</ label >
51- < input type ="file " id ="fileInputDxf " accept =".dxf " style ="display: none; " disabled />
52- < span id ="dxfFileName "> No File Chosen</ span >
53- < div id ="dxfInfo "> </ div >
50+ < label for ="fileInput2 " class ="btn disabled "> Choose Dxf File</ label >
51+ < input type ="file " id ="fileInput2 " accept =".dxf " style ="display: none; " disabled />
52+ < span id ="fileName2 "> No File Chosen</ span >
53+ < div id ="fileInfo2 "> </ div >
5454 </ td >
5555 </ tr >
5656 < tr >
@@ -72,7 +72,7 @@ <h1>Dwg/dxf Database JSON Viewer</h1>
7272 ( function ( ) {
7373 // Check if running locally (localhost, 127.0.0.1, or file:// protocol)
7474 const wl = window . location ;
75- const isDevEnv = wl . hostname === "localhost" || wl . hostname === "127.0.0.1" ;
75+ const isDevEnv = false ;
7676
7777 // Load jsoneditor based on environment
7878 const jsoneditorJsPath = isDevEnv
@@ -127,9 +127,9 @@ <h1>Dwg/dxf Database JSON Viewer</h1>
127127 // Enable file selection buttons after page and resources are fully loaded
128128 window . addEventListener ( "load" , ( ) => {
129129 document . querySelector ( 'label[for="fileInput"]' ) . classList . remove ( "disabled" ) ;
130- document . querySelector ( 'label[for="fileInputDxf "]' ) . classList . remove ( "disabled" ) ;
130+ document . querySelector ( 'label[for="fileInput2 "]' ) . classList . remove ( "disabled" ) ;
131131 document . getElementById ( "fileInput" ) . disabled = false ;
132- document . getElementById ( "fileInputDxf " ) . disabled = false ;
132+ document . getElementById ( "fileInput2 " ) . disabled = false ;
133133 } ) ;
134134
135135 // Display libredwg-web version
@@ -144,8 +144,8 @@ <h1>Dwg/dxf Database JSON Viewer</h1>
144144 coreVersionElement . textContent = `(v${ VERSION } )` ;
145145 }
146146
147- const printDwgInfo = ( version , codepage , stats ) => {
148- const infoElement = document . getElementById ( 'dwgInfo ' ) ;
147+ const printFileInfo1 = ( version , codepage , stats ) => {
148+ const infoElement = document . getElementById ( 'fileInfo1 ' ) ;
149149 infoElement . innerHTML = '' ;
150150 infoElement . textContent = `Version: ${ version } , Code Page: ${ codepage } , Unknown Entities: ${ stats . unknownEntityCount } ` ;
151151 }
@@ -163,12 +163,12 @@ <h1>Dwg/dxf Database JSON Viewer</h1>
163163
164164 // handle file input change event
165165 const fileInput = document . getElementById ( 'fileInput' )
166- const dwgFileNameElement = document . getElementById ( 'dwgFileName ' )
166+ const fileName1Element = document . getElementById ( 'fileName1 ' )
167167 fileInput . addEventListener ( 'change' , function ( event ) {
168168 const file = event . target . files [ 0 ]
169169 if ( file ) {
170170 // Update file name display
171- dwgFileNameElement . textContent = file . name
171+ fileName1Element . textContent = file . name
172172
173173 const reader = new FileReader ( ) ;
174174 reader . onload = function ( e ) {
@@ -177,45 +177,50 @@ <h1>Dwg/dxf Database JSON Viewer</h1>
177177 let codepage ;
178178 let stats = { unknownEntityCount : "" } ;
179179 const parser = new DxfParser ( ) ;
180- if ( file . name . endsWith ( ".dwg" ) ) {
180+ {
181181 const result = parser . libredwgConvertEx ( fileContent ) ;
182182 jsonEditor1 . set ( result . database ) ;
183183 version = result . version ;
184184 codepage = result . codepage ;
185185 stats = result . stats ;
186186 }
187- const result = parser . parse ( fileContent ) ;
188- jsonEditor2 . set ( {
189- tables : result . tables ,
190- objects : result . objects ,
191- header : result . header ,
192- entities : result . entities ,
193- classes : result . classes ,
194- blocks : result . blocks ,
195- } ) ;
196- version = version || result . header [ "$ACADVER" ] ;
197- codepage = result . header [ "$DWGCODEPAGE" ] ;
198- printDwgInfo ( version , codepage , stats ) ;
187+
188+ {
189+ // force to parse with libredwg-web parser
190+ // This will trigger libredwg-web to call libredwg.convertEx() again.
191+ const result = parser . parseDwg ( fileContent ) ;
192+ jsonEditor2 . set ( {
193+ tables : result . tables ,
194+ objects : result . objects ,
195+ header : result . header ,
196+ entities : result . entities ,
197+ classes : result . classes ,
198+ blocks : result . blocks ,
199+ } ) ;
200+ version = version || result . header [ "$ACADVER" ] ;
201+ codepage = codepage || result . header [ "$DWGCODEPAGE" ] ;
202+ }
203+ printFileInfo1 ( version , codepage , stats ) ;
199204 }
200205
201206 jsonEditor1 . clear ( ) ;
202207 jsonEditor2 . clear ( ) ;
203208 // read the file
204209 reader . readAsArrayBuffer ( file )
205210 } else {
206- dwgFileNameElement . textContent = 'No File Chosen'
211+ fileName1Element . textContent = 'No File Chosen'
207212 console . log ( 'No file selected' )
208213 }
209214 } )
210215
211216 // handle dxf file input change event
212- const fileInputDxf = document . getElementById ( 'fileInputDxf ' )
213- const dxfFileNameElement = document . getElementById ( 'dxfFileName ' )
214- fileInputDxf . addEventListener ( 'change' , function ( event ) {
217+ const fileInput2 = document . getElementById ( 'fileInput2 ' )
218+ const fileName2Element = document . getElementById ( 'fileName2 ' )
219+ fileInput2 . addEventListener ( 'change' , function ( event ) {
215220 const file = event . target . files [ 0 ]
216221 if ( file ) {
217222 // Update file name display
218- dxfFileNameElement . textContent = file . name
223+ fileName2Element . textContent = file . name
219224
220225 const reader = new FileReader ( ) ;
221226 reader . onload = function ( e ) {
@@ -236,7 +241,7 @@ <h1>Dwg/dxf Database JSON Viewer</h1>
236241 } ) ;
237242
238243 // Display info
239- const infoElement = document . getElementById ( 'dxfInfo ' ) ;
244+ const infoElement = document . getElementById ( 'fileInfo2 ' ) ;
240245 infoElement . innerHTML = '' ;
241246 const version = result . header [ "$ACADVER" ] || "Unknown" ;
242247 const codepage = result . header [ "$DWGCODEPAGE" ] || "Unknown" ;
@@ -247,7 +252,7 @@ <h1>Dwg/dxf Database JSON Viewer</h1>
247252 // read the file
248253 reader . readAsArrayBuffer ( file )
249254 } else {
250- dxfFileNameElement . textContent = 'No File Chosen'
255+ fileName2Element . textContent = 'No File Chosen'
251256 console . log ( 'No DXF file selected' )
252257 }
253258 } )
0 commit comments