Something went wrong. Try again.
This repository has no description
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253<!doctype html><html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>DXF Design</title> <link rel="stylesheet" href="./styles.css"> </head> <body> <div class="app-shell"> <header class="topbar"> <div class="brand"> <span class="brand-mark">DXF</span> <span class="brand-name">Sheet Modeler</span> </div> <div class="tool-row"> <button id="addRectBtn" type="button">Rectangle</button> <button id="addPolyBtn" type="button">Polygon</button> <button id="boxBtn" type="button">Finger Box</button> <button id="duplicateBtn" type="button">Duplicate</button> <button id="deleteBtn" type="button">Delete</button> </div> <div class="export-row"> <span id="statusText" class="status">Ready</span> <button id="loadProjectBtn" type="button">Load Project</button> <button id="saveProjectBtn" type="button">Save Project</button> <button id="exportBtn" class="primary" type="button">Export DXF</button> </div> </header>
<main class="workspace"> <aside class="side-panel"> <div class="panel-tabs" role="tablist" aria-label="Configuration"> <button id="tabPartBtn" class="active" type="button">Part</button> <button id="tabBoxBtn" type="button">Box</button> <button id="tabSetupBtn" type="button">Setup</button> </div>
<div id="tabPart" class="tab-pane"> <section class="panel-section"> <h2>Part</h2> <label> <span>Name</span> <input id="partName" type="text"> </label> <div class="split-fields"> <label> <span>Width</span> <input id="partWidth" type="number" min="1" step="1"> </label> <label> <span>Height</span> <input id="partHeight" type="number" min="1" step="1"> </label> </div> <div class="split-fields"> <label> <span>Sides</span> <input id="polySides" type="number" min="3" max="16" step="1"> </label> <label> <span>Radius</span> <input id="polyRadius" type="number" min="1" step="1"> </label> </div> <label> <span>Joint behavior</span> <select id="edgePreset"> <option value="auto">Automatic</option> <option value="none">No joints</option> <option value="tabs">Prefer tabs</option> <option value="slots">Prefer slots</option> </select> </label> </section>
<section class="panel-section"> <h2>Holes</h2> <label> <span>Type</span> <select id="holeType"> <option value="circle">Circle</option> <option value="rect">Rectangle</option> </select> </label> <div class="split-fields"> <label> <span>X</span> <input id="holeX" type="number" step="1"> </label> <label> <span>Y</span> <input id="holeY" type="number" step="1"> </label> </div> <div class="triple-fields"> <label> <span>Dia</span> <input id="holeDiameter" type="number" min="1" step="1"> </label> <label> <span>W</span> <input id="holeWidth" type="number" min="1" step="1"> </label> <label> <span>H</span> <input id="holeHeight" type="number" min="1" step="1"> </label> </div> <button id="addHoleBtn" type="button">Add Hole</button> <div id="holesList" class="holes-list"></div> </section>
<section class="panel-section"> <h2>Position</h2> <div class="triple-fields"> <label> <span>X</span> <input id="posX" type="number" step="1"> </label> <label> <span>Y</span> <input id="posY" type="number" step="1"> </label> <label> <span>Z</span> <input id="posZ" type="number" step="1"> </label> </div> <div class="triple-fields"> <label> <span>Rot X</span> <input id="rotX" type="number" step="5"> </label> <label> <span>Rot Y</span> <input id="rotY" type="number" step="5"> </label> <label> <span>Rot Z</span> <input id="rotZ" type="number" step="5"> </label> </div> </section> </div>
<div id="tabBox" class="tab-pane" hidden> <section class="panel-section"> <h2>Box Wizard</h2> <p class="hint">Enter the finished box dimensions. Six finger-jointed panels are placed automatically; joints are generated from the contacts.</p> <label> <span>Dimensions</span> <select id="boxRef"> <option value="outer">Outer size</option> <option value="inner">Inner cavity</option> </select> </label> <div class="triple-fields"> <label> <span>X mm</span> <input id="boxWidth" type="number" min="5" step="1"> </label> <label> <span>Y mm</span> <input id="boxDepth" type="number" min="5" step="1"> </label> <label> <span>Z mm</span> <input id="boxHeight" type="number" min="5" step="1"> </label> </div> <button id="buildBoxBtn" class="primary" type="button">Build Box</button> <p id="boxSummary" class="hint"></p> </section> </div>
<div id="tabSetup" class="tab-pane" hidden> <section class="panel-section"> <h2>Material</h2> <label> <span>Thickness mm</span> <input id="materialThickness" type="number" min="0.1" step="0.1"> </label> <label> <span>Kerf mm</span> <input id="kerf" type="number" min="0" step="0.01"> </label> <label> <span>Fit clearance mm</span> <input id="clearance" type="number" step="0.01"> </label> <label> <span>Finger width mm</span> <input id="fingerWidth" type="number" min="1" step="0.5"> </label> </section>
<section class="panel-section"> <h2>Sheet</h2> <label> <span>Width mm</span> <input id="sheetWidth" type="number" min="20" step="1"> </label> <label> <span>Height mm</span> <input id="sheetHeight" type="number" min="20" step="1"> </label> <label> <span>Part gap mm</span> <input id="partGap" type="number" min="0" step="1"> </label> </section> </div> </aside>
<section class="canvas-stack"> <div class="canvas-toolbar"> <div class="view-tabs" role="tablist" aria-label="View mode"> <button id="viewModelBtn" class="active" type="button">3D Model</button> <button id="viewSolidBtn" type="button">Solid</button> <button id="viewLayoutBtn" type="button">Cut Layout</button> </div> <div class="view-options"> <label class="check-row"> <input id="showGrid" type="checkbox" checked> <span>Grid</span> </label> <label class="check-row"> <input id="showJoints" type="checkbox" checked> <span>Joints</span> </label> <label> <span>Zoom</span> <input id="zoomSlider" type="range" min="0.4" max="2.2" step="0.05"> </label> </div> </div> <canvas id="mainCanvas" width="1200" height="780"></canvas> </section>
<aside class="parts-panel"> <section class="panel-section grow"> <h2>Pieces</h2> <div id="partsList" class="parts-list"></div> </section> </aside> </main> </div>
<script src="./renderer.js"></script> </body></html>