Skip to content

Commit e3d8179

Browse files
authored
Merge pull request #34 from thingraph/feature/update
Update dwg_json_viewer.html and add one more screenshot image
2 parents c71a141 + 250f6e6 commit e3d8179

3 files changed

Lines changed: 42 additions & 35 deletions

File tree

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ viewer.goToHomeView();
7777
<img src="images/snapshots/layouts.gif" width="400">
7878
- Distance measurement
7979
<img src="images/snapshots/measure_dist.gif" width="400">
80+
- Fill patterns
81+
<img src="images/snapshots/fill_patterns.gif" width="400">
8082
- Area measurement
8183
- Angle measurement
8284
- Markups

dwg_json_viewer.html

Lines changed: 40 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
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
})

images/snapshots/fill_patterns.gif

2.53 MB
Loading

0 commit comments

Comments
 (0)