Initial PromptPCB Parts store — 18 curated parts, PBR viewer, submit flow
This commit is contained in:
parent
f55a83f3f6
commit
dc767edabc
28 changed files with 114224 additions and 0 deletions
64
assets/app.js
Normal file
64
assets/app.js
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
// app.js — catalog gallery: load parts, functional search over use-cases, class filter, PBR thumbnails.
|
||||
import { renderThumbnail } from '/assets/viewer.js';
|
||||
|
||||
const $ = (s) => document.querySelector(s);
|
||||
let PARTS = [], activeClass = null;
|
||||
|
||||
function haystack(p) {
|
||||
return [p.role, p.summary, p.when_to_use, p.usage, p.mpn, p.class, p.subclass, p.package,
|
||||
(p.use_cases || []).join(' '), Object.values(p.tags || {}).flat().join(' ')].join(' ').toLowerCase();
|
||||
}
|
||||
function score(p, terms) {
|
||||
const h = haystack(p); let s = 0;
|
||||
for (const t of terms) {
|
||||
if (!t) continue;
|
||||
const uc = (p.use_cases || []).join(' ').toLowerCase();
|
||||
if (uc.includes(t)) s += 3; // functional use-case match weighs most
|
||||
if ((p.class || '').toLowerCase().includes(t)) s += 2;
|
||||
if ((p.mpn || '').toLowerCase().includes(t)) s += 2;
|
||||
if (h.includes(t)) s += 1;
|
||||
}
|
||||
return s;
|
||||
}
|
||||
function chip(label, val) {
|
||||
const c = document.createElement('span'); c.className = 'chip' + (activeClass === val ? ' on' : '');
|
||||
c.textContent = label; c.onclick = () => { activeClass = activeClass === val ? null : val; render(); };
|
||||
return c;
|
||||
}
|
||||
function renderChips() {
|
||||
const counts = {}; for (const p of PARTS) counts[p.class] = (counts[p.class] || 0) + 1;
|
||||
const box = $('#chips'); box.innerHTML = '';
|
||||
box.appendChild(chip('All', null));
|
||||
Object.entries(counts).sort((a, b) => b[1] - a[1]).forEach(([c, n]) => box.appendChild(chip(`${c} (${n})`, c)));
|
||||
}
|
||||
function card(p) {
|
||||
const el = document.createElement('a'); el.className = 'card'; el.href = `/part.html?id=${p.id}`;
|
||||
el.innerHTML = `<div class="thumb"><span class="cls">${p.class}</span>${p.type === 'series' ? '<span class="ser">SERIES</span>' : ''}<canvas></canvas></div>
|
||||
<div class="body"><div class="nm">${(p.role || p.summary || '').split('—')[0].slice(0, 46)}</div>
|
||||
<div class="mpn">${p.mpn || p.id}</div>
|
||||
<div class="sm">${p.when_to_use || p.summary || ''}</div>
|
||||
<div class="meta"><span><b>PKG</b> ${p.package || (p.series && p.series.package) || '—'}</span>
|
||||
<span><b>3D</b> ✓</span>${p.stock ? `<span><b>STK</b> ${(p.stock / 1000).toFixed(0)}k</span>` : ''}</div></div>`;
|
||||
return el;
|
||||
}
|
||||
async function render() {
|
||||
const terms = ($('#q').value || '').toLowerCase().split(/\s+/).filter((t) => t.length > 1);
|
||||
let list = PARTS.filter((p) => !activeClass || p.class === activeClass);
|
||||
if (terms.length) list = list.map((p) => ({ p, s: score(p, terms) })).filter((x) => x.s > 0).sort((a, b) => b.s - a.s).map((x) => x.p);
|
||||
$('#count').textContent = `${list.length} part${list.length === 1 ? '' : 's'}${activeClass ? ' · ' + activeClass : ''}${terms.length ? ' · ranked by relevance' : ''}`;
|
||||
const grid = $('#grid'); grid.innerHTML = '';
|
||||
if (!list.length) { grid.innerHTML = '<div class="empty">No parts match — try a broader description, or <a href="/submit.html">contribute one</a>.</div>'; return; }
|
||||
const cards = list.map((p) => { const el = card(p); grid.appendChild(el); return { el, p }; });
|
||||
// thumbnails one at a time through the shared renderer
|
||||
for (const { el, p } of cards) {
|
||||
const cv = el.querySelector('canvas');
|
||||
const data = await renderThumbnail(p.model_3d, 340);
|
||||
if (data) { const img = new Image(); img.src = data; img.style.cssText = 'width:100%;height:100%;object-fit:contain'; cv.replaceWith(img); }
|
||||
}
|
||||
}
|
||||
(async () => {
|
||||
PARTS = await (await fetch('/assets/catalog.json')).json();
|
||||
$('#cred-n').textContent = localStorage.getItem('ppcb_credits') || '5';
|
||||
renderChips(); render();
|
||||
let t; $('#q').addEventListener('input', () => { clearTimeout(t); t = setTimeout(render, 160); });
|
||||
})();
|
||||
1
assets/catalog.json
Normal file
1
assets/catalog.json
Normal file
File diff suppressed because one or more lines are too long
78
assets/part.js
Normal file
78
assets/part.js
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
// part.js — part detail: interactive PBR viewer + full curated record (specs, pins, spice, downloads).
|
||||
import { mountViewer } from '/assets/viewer.js';
|
||||
const esc = (s) => (s == null ? '' : String(s).replace(/[&<>]/g, (c) => ({ '&': '&', '<': '<', '>': '>' }[c])));
|
||||
const id = new URLSearchParams(location.search).get('id');
|
||||
|
||||
function dl(name, text, mime = 'text/plain') {
|
||||
const a = document.createElement('a'); a.href = URL.createObjectURL(new Blob([text], { type: mime }));
|
||||
a.download = name; a.click();
|
||||
}
|
||||
function spendCredit() {
|
||||
let c = parseInt(localStorage.getItem('ppcb_credits') || '5', 10);
|
||||
if (c <= 0) { alert('Out of download credits — contribute a curated part to earn 5 more.'); return false; }
|
||||
localStorage.setItem('ppcb_credits', --c); document.getElementById('cred-n').textContent = c; return true;
|
||||
}
|
||||
|
||||
(async () => {
|
||||
const parts = await (await fetch('/assets/catalog.json')).json();
|
||||
const p = parts.find((x) => x.id === id);
|
||||
const root = document.getElementById('root');
|
||||
document.getElementById('cred-n').textContent = localStorage.getItem('ppcb_credits') || '5';
|
||||
if (!p) { root.innerHTML = '<div class="empty">Part not found. <a href="/">Back to catalog</a></div>'; return; }
|
||||
document.title = `${p.mpn || p.id} — PromptPCB Parts`;
|
||||
|
||||
const params = (p.params || []).map((x) => `<tr><td>${esc(x.name)}</td><td class="v">${esc(x.value)} ${esc(x.unit || '')}${x.note ? `<span class="cond">${esc(x.note)}</span>` : ''}</td></tr>`).join('');
|
||||
const pins = (p.pins || []).map((x) => `<div class="pin"><span class="n">${esc(x.pin ?? '')}</span>${esc(x.name || '')}<span class="t">${esc(x.type || '')}</span></div>`).join('');
|
||||
const ucs = (p.use_cases || []).map((u) => `<li>${esc(u)}</li>`).join('');
|
||||
const tagList = Object.entries(p.tags || {}).filter(([, v]) => v != null && v !== '' && !Array.isArray(v)).map(([k, v]) => `<span class="tag"><b>${esc(k)}</b> ${esc(v)}</span>`).join('');
|
||||
const kr = ((p.tags || {}).key_ratings || []).map((r) => `<span class="tag">${esc(r)}</span>`).join('');
|
||||
const ser = p.series ? `<div class="tags" style="margin-top:8px">${Object.entries(p.series).filter(([k]) => k !== 'mesh').map(([k, v]) => `<span class="tag"><b>${esc(k)}</b> ${esc(v)}</span>`).join('')}</div>` : '';
|
||||
|
||||
root.innerHTML = `<div class="detail">
|
||||
<div>
|
||||
<div class="viewer"><canvas id="cv"></canvas>
|
||||
<div class="vbar"><span class="vtag">PBR · drag to orbit</span><span class="vtag">${esc(p.package || (p.series && p.series.package) || '')}</span><span class="vtag">${(p.pins || []).length} pins</span></div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div style="font-family:var(--mono);font-size:12px;color:var(--dim);text-transform:uppercase;letter-spacing:1px">${esc(p.class)}${p.type === 'series' ? ' · series' : ''}</div>
|
||||
<h1 class="dh1">${esc((p.role || p.summary || '').split('—')[0])}</h1>
|
||||
<div class="dmpn">${esc(p.mpn || p.id)} · ${esc(p.manufacturer || '')} · ${esc(p.lcsc || '')}</div>
|
||||
<p style="color:var(--dim);line-height:1.6;margin:0 0 6px">${esc(p.summary)}</p>
|
||||
<div class="dactions">
|
||||
<button class="btn" id="dl-all">↓ Download files</button>
|
||||
<a class="btn ghost" href="${esc(p.datasheet_url)}" target="_blank" rel="noopener">Datasheet ↗</a>
|
||||
<button class="btn ghost" id="lib">+ My library</button>
|
||||
</div>
|
||||
<div class="assets">
|
||||
<span class="asset"><span class="ok">✓</span> 3D model</span>
|
||||
<span class="asset"><span class="ok">✓</span> SPICE</span>
|
||||
<span class="asset"><span class="ok">✓</span> Datasheet</span>
|
||||
<span class="asset"><span class="ok">✓</span> Pin map (${(p.pins || []).length})</span>
|
||||
<span class="asset"><span class="ok">✓</span> Verified</span>
|
||||
</div>
|
||||
${p.when_to_use ? `<div class="section"><h3>When to use</h3><p style="color:var(--text);line-height:1.6;margin:0">${esc(p.when_to_use)}</p></div>` : ''}
|
||||
${ucs ? `<div class="section"><h3>What it's used for</h3><ul class="uc">${ucs}</ul></div>` : ''}
|
||||
${params ? `<div class="section"><h3>Specifications</h3><table class="ptable">${params}</table></div>` : ''}
|
||||
${ser}
|
||||
${pins ? `<div class="section"><h3>Pins & pads · aligned to footprint</h3><div class="pins">${pins}</div></div>` : ''}
|
||||
${(tagList || kr) ? `<div class="section"><h3>Requirement tags</h3><div class="tags">${kr}${tagList}</div></div>` : ''}
|
||||
${p.spice ? `<div class="section"><h3>SPICE model</h3><pre class="spice">${esc(p.spice)}</pre></div>` : ''}
|
||||
</div>
|
||||
</div>`;
|
||||
|
||||
mountViewer(document.getElementById('cv'), p.model_3d);
|
||||
|
||||
document.getElementById('dl-all').onclick = async () => {
|
||||
if (!spendCredit()) return;
|
||||
const obj = await (await fetch(p.model_3d)).text();
|
||||
dl(`${p.id}.obj`, obj);
|
||||
dl(`${p.id}.cir`, `* ${p.mpn} SPICE model — PromptPCB Parts\n${p.spice || ''}\n`);
|
||||
dl(`${p.id}.json`, JSON.stringify(p, null, 2), 'application/json');
|
||||
};
|
||||
document.getElementById('lib').onclick = () => {
|
||||
const lib = JSON.parse(localStorage.getItem('ppcb_lib') || '[]');
|
||||
if (!lib.includes(p.id)) { lib.push(p.id); localStorage.setItem('ppcb_lib', JSON.stringify(lib)); }
|
||||
document.getElementById('lib').textContent = '✓ In library';
|
||||
};
|
||||
})();
|
||||
120
assets/style.css
Normal file
120
assets/style.css
Normal file
|
|
@ -0,0 +1,120 @@
|
|||
:root{
|
||||
--bg:#0a0d13; --bg2:#0f141c; --panel:#121924; --panel2:#161f2c; --line:#1e2a3a;
|
||||
--line2:#2a3b52; --text:#e6edf5; --dim:#8aa0b8; --dim2:#5f7488;
|
||||
--acc:#39e6b0; --acc2:#4db8ff; --copper:#e8944a; --warn:#ffcc66; --bad:#ff6b6b;
|
||||
--radius:14px; --mono:"SFMono-Regular",ui-monospace,"JetBrains Mono",Menlo,Consolas,monospace;
|
||||
--sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,sans-serif;
|
||||
}
|
||||
*{box-sizing:border-box}
|
||||
html,body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased}
|
||||
a{color:var(--acc2);text-decoration:none}
|
||||
a:hover{color:var(--acc)}
|
||||
.wrap{max-width:1240px;margin:0 auto;padding:0 22px}
|
||||
|
||||
/* header */
|
||||
header.top{position:sticky;top:0;z-index:50;background:rgba(10,13,19,.82);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
|
||||
.top .wrap{display:flex;align-items:center;gap:22px;height:62px}
|
||||
.brand{display:flex;align-items:center;gap:10px;font-weight:700;letter-spacing:.2px}
|
||||
.brand .dot{width:12px;height:12px;border-radius:3px;background:linear-gradient(135deg,var(--acc),var(--acc2));box-shadow:0 0 14px var(--acc)}
|
||||
.brand small{color:var(--dim);font-weight:500;font-family:var(--mono);font-size:12px}
|
||||
nav.main{display:flex;gap:20px;margin-left:8px}
|
||||
nav.main a{color:var(--dim);font-size:14px;font-weight:500}
|
||||
nav.main a:hover,nav.main a.active{color:var(--text)}
|
||||
.spacer{flex:1}
|
||||
.credits{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:13px;color:var(--acc);
|
||||
border:1px solid var(--line2);padding:6px 12px;border-radius:20px;background:var(--panel)}
|
||||
.btn{display:inline-flex;align-items:center;gap:8px;background:var(--acc);color:#04120c;border:none;
|
||||
padding:9px 16px;border-radius:9px;font-weight:600;font-size:14px;cursor:pointer;transition:.15s}
|
||||
.btn:hover{filter:brightness(1.08);transform:translateY(-1px)}
|
||||
.btn.ghost{background:transparent;color:var(--text);border:1px solid var(--line2)}
|
||||
.btn.ghost:hover{border-color:var(--acc);color:var(--acc)}
|
||||
|
||||
/* hero */
|
||||
.hero{padding:48px 0 26px}
|
||||
.hero h1{font-size:38px;line-height:1.1;margin:0 0 12px;letter-spacing:-.5px}
|
||||
.hero h1 .g{background:linear-gradient(120deg,var(--acc),var(--acc2));-webkit-background-clip:text;background-clip:text;color:transparent}
|
||||
.hero p{color:var(--dim);font-size:17px;max-width:680px;margin:0}
|
||||
.searchbar{margin:26px 0 8px;display:flex;gap:10px;align-items:center;background:var(--panel);border:1px solid var(--line2);
|
||||
border-radius:12px;padding:4px 6px 4px 16px;box-shadow:0 6px 30px rgba(0,0,0,.3)}
|
||||
.searchbar svg{opacity:.6}
|
||||
.searchbar input{flex:1;background:none;border:none;outline:none;color:var(--text);font-size:16px;padding:12px 4px}
|
||||
.searchbar input::placeholder{color:var(--dim2)}
|
||||
.chips{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0 4px}
|
||||
.chip{font-family:var(--mono);font-size:12.5px;color:var(--dim);background:var(--panel);border:1px solid var(--line);
|
||||
padding:6px 12px;border-radius:20px;cursor:pointer;transition:.12s}
|
||||
.chip:hover{border-color:var(--line2);color:var(--text)}
|
||||
.chip.on{background:var(--acc);color:#04120c;border-color:var(--acc);font-weight:600}
|
||||
.count{color:var(--dim);font-size:13px;font-family:var(--mono);margin:18px 0 10px}
|
||||
|
||||
/* grid */
|
||||
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(268px,1fr));gap:18px;padding-bottom:60px}
|
||||
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;
|
||||
cursor:pointer;transition:.18s;display:flex;flex-direction:column}
|
||||
.card:hover{transform:translateY(-3px);border-color:var(--line2);box-shadow:0 12px 40px rgba(0,0,0,.4)}
|
||||
.thumb{aspect-ratio:16/11;background:radial-gradient(120% 120% at 50% 30%,#16202e 0%,#0c1119 100%);position:relative;display:flex;align-items:center;justify-content:center}
|
||||
.thumb canvas{width:100%;height:100%;display:block}
|
||||
.thumb .cls{position:absolute;top:10px;left:10px;font-family:var(--mono);font-size:11px;color:var(--acc);
|
||||
background:rgba(4,18,12,.7);border:1px solid var(--line2);padding:3px 9px;border-radius:14px}
|
||||
.thumb .ser{position:absolute;top:10px;right:10px;font-family:var(--mono);font-size:10px;color:var(--copper);
|
||||
background:rgba(20,12,4,.7);border:1px solid #3a2a18;padding:3px 8px;border-radius:14px}
|
||||
.card .body{padding:14px 16px 16px}
|
||||
.card .nm{font-weight:600;font-size:15px;margin:0 0 3px}
|
||||
.card .mpn{font-family:var(--mono);font-size:12px;color:var(--acc2);margin-bottom:8px}
|
||||
.card .sm{color:var(--dim);font-size:13px;line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:38px}
|
||||
.card .meta{display:flex;gap:10px;margin-top:11px;font-family:var(--mono);font-size:11px;color:var(--dim2)}
|
||||
.card .meta b{color:var(--dim);font-weight:500}
|
||||
|
||||
/* detail */
|
||||
.detail{display:grid;grid-template-columns:1.05fr 1fr;gap:30px;padding:30px 0 70px}
|
||||
@media(max-width:900px){.detail{grid-template-columns:1fr}.hero h1{font-size:30px}}
|
||||
.viewer{position:sticky;top:82px;height:min(66vh,560px);background:radial-gradient(120% 120% at 50% 30%,#16202e,#0a0e15);
|
||||
border:1px solid var(--line2);border-radius:16px;overflow:hidden}
|
||||
.viewer canvas{width:100%;height:100%;display:block}
|
||||
.vbar{position:absolute;bottom:0;left:0;right:0;display:flex;gap:10px;padding:12px;background:linear-gradient(0deg,rgba(8,11,17,.9),transparent)}
|
||||
.vtag{font-family:var(--mono);font-size:11px;color:var(--dim);border:1px solid var(--line2);padding:4px 10px;border-radius:14px;background:rgba(10,14,20,.6)}
|
||||
.dh1{font-size:27px;margin:0 0 4px;letter-spacing:-.3px}
|
||||
.dmpn{font-family:var(--mono);color:var(--acc2);font-size:15px;margin-bottom:14px}
|
||||
.section{margin:24px 0}
|
||||
.section h3{font-size:13px;text-transform:uppercase;letter-spacing:1px;color:var(--dim);margin:0 0 12px;font-weight:600}
|
||||
.ptable{width:100%;border-collapse:collapse;font-size:13.5px}
|
||||
.ptable td{padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}
|
||||
.ptable td:first-child{color:var(--dim);width:44%}
|
||||
.ptable td.v{font-family:var(--mono);color:var(--text)}
|
||||
.ptable td .cond{color:var(--dim2);font-size:11.5px;display:block}
|
||||
.uc{display:flex;flex-direction:column;gap:9px}
|
||||
.uc li{list-style:none;padding:11px 14px;background:var(--panel);border:1px solid var(--line);border-radius:10px;font-size:13.5px;line-height:1.5;color:var(--text)}
|
||||
.uc li::before{content:"→ ";color:var(--acc)}
|
||||
.pins{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:7px}
|
||||
.pin{display:flex;gap:8px;align-items:center;font-family:var(--mono);font-size:12px;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:7px 10px}
|
||||
.pin .n{background:var(--panel2);border:1px solid var(--line2);border-radius:5px;min-width:24px;text-align:center;color:var(--acc);padding:1px 4px}
|
||||
.pin .t{margin-left:auto;color:var(--dim2);font-size:10px}
|
||||
pre.spice{background:#080b10;border:1px solid var(--line);border-radius:10px;padding:14px;overflow-x:auto;
|
||||
font-family:var(--mono);font-size:12px;color:#a9c7d6;line-height:1.5;margin:0}
|
||||
.tags{display:flex;flex-wrap:wrap;gap:7px}
|
||||
.tag{font-family:var(--mono);font-size:11.5px;color:var(--dim);background:var(--panel);border:1px solid var(--line2);padding:5px 10px;border-radius:6px}
|
||||
.tag b{color:var(--acc)}
|
||||
.dactions{display:flex;gap:10px;flex-wrap:wrap;margin:6px 0 20px}
|
||||
.assets{display:flex;flex-wrap:wrap;gap:8px}
|
||||
.asset{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:12px;color:var(--text);
|
||||
background:var(--panel);border:1px solid var(--line2);padding:8px 12px;border-radius:9px}
|
||||
.asset .ok{color:var(--acc)}
|
||||
|
||||
/* submit form */
|
||||
.form{max-width:820px;padding:20px 0 70px}
|
||||
.banner{background:linear-gradient(120deg,rgba(57,230,176,.09),rgba(77,184,255,.06));border:1px solid var(--line2);
|
||||
border-radius:14px;padding:18px 20px;margin:14px 0 26px;color:var(--dim);font-size:14.5px;line-height:1.55}
|
||||
.banner b{color:var(--acc)}
|
||||
.field{margin:16px 0}
|
||||
.field label{display:block;font-size:13px;color:var(--dim);margin-bottom:7px;font-weight:500}
|
||||
.field input,.field select,.field textarea{width:100%;background:var(--panel);border:1px solid var(--line2);border-radius:9px;
|
||||
color:var(--text);padding:11px 13px;font-size:14px;font-family:var(--sans);outline:none}
|
||||
.field textarea{min-height:90px;font-family:var(--mono);font-size:13px}
|
||||
.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--acc)}
|
||||
.row2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
|
||||
.drop{border:1.5px dashed var(--line2);border-radius:12px;padding:22px;text-align:center;color:var(--dim);cursor:pointer;transition:.15s}
|
||||
.drop:hover{border-color:var(--acc);color:var(--text)}
|
||||
.footer{border-top:1px solid var(--line);color:var(--dim2);font-size:13px;padding:26px 0;margin-top:20px}
|
||||
.footer .wrap{display:flex;gap:20px;flex-wrap:wrap;align-items:center}
|
||||
.empty{text-align:center;color:var(--dim);padding:70px 0;font-family:var(--mono)}
|
||||
.spin{width:16px;height:16px;border:2px solid rgba(255,255,255,.25);border-top-color:var(--acc);border-radius:50%;animation:sp 1s linear infinite;display:inline-block}
|
||||
@keyframes sp{to{transform:rotate(360deg)}}
|
||||
65
assets/submit.js
Normal file
65
assets/submit.js
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
// submit.js — contribute-a-part flow: AI auto-fill from datasheet + submission to Corben functions.
|
||||
const API = 'https://api.corben.world';
|
||||
const FN_AUTOFILL = 'd4f34d9c-6e8f-4328-89a2-b3c3b79017db';
|
||||
const TK_AUTOFILL = '3f5dc4a97de91e7e9117b9a12a3061f6';
|
||||
const FN_SUBMIT = 'b02d634b-cd6d-414d-bf9c-80cf6cc2ccdc';
|
||||
const TK_SUBMIT = '9c3ed2ece766bcc18ed7d33996bfeb86';
|
||||
const $ = (id) => document.getElementById(id);
|
||||
|
||||
$('cred-n').textContent = localStorage.getItem('ppcb_credits') || '5';
|
||||
|
||||
async function invoke(fn, token, payload) {
|
||||
const r = await fetch(`${API}/functions/${fn}/invoke?token=${token}`, {
|
||||
method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(payload) });
|
||||
return r.json();
|
||||
}
|
||||
|
||||
$('autofill').onclick = async (e) => {
|
||||
e.preventDefault();
|
||||
const mpn = $('mpn').value.trim();
|
||||
if (!mpn && !$('description').value.trim()) { $('af-status').textContent = 'Enter an MPN or paste datasheet text first.'; return; }
|
||||
$('autofill').disabled = true; $('af-status').innerHTML = '<span class="spin"></span> drafting from datasheet…';
|
||||
try {
|
||||
const d = await invoke(FN_AUTOFILL, TK_AUTOFILL, { mpn, class: $('class').value, description: $('description').value.trim() });
|
||||
if (!d.ok) throw new Error(d.error || 'autofill failed');
|
||||
const s = d.suggested;
|
||||
if (s.summary) $('summary').value = s.summary;
|
||||
if (s.when_to_use) $('when_to_use').value = s.when_to_use;
|
||||
if (s.use_cases) $('use_cases').value = s.use_cases.join('\n');
|
||||
if (s.params) $('params').value = s.params.map((p) => `${p.name}: ${p.value}${p.unit ? ' ' + p.unit : ''}`).join('\n');
|
||||
if (s.spice_model) $('spice').value = s.spice_model;
|
||||
const t = s.requirements_tags || {};
|
||||
if (t.package && !$('package').value) $('package').value = t.package;
|
||||
if (t.class && !$('class').value) $('class').value = t.class;
|
||||
$('af-status').innerHTML = '✓ drafted — <b style="color:var(--acc)">review every field</b> before submitting.';
|
||||
} catch (err) { $('af-status').textContent = '⚠ ' + err.message; }
|
||||
$('autofill').disabled = false;
|
||||
};
|
||||
|
||||
$('model3d').onchange = () => { const f = $('model3d').files[0]; if (f) $('drop-label').textContent = '✓ ' + f.name; };
|
||||
|
||||
$('submit').onclick = async () => {
|
||||
const parseParams = (t) => t.split('\n').map((l) => l.trim()).filter(Boolean).map((l) => {
|
||||
const [n, ...rest] = l.split(':'); const v = rest.join(':').trim(); const m = v.match(/^([\d.\-+/]+)\s*(.*)$/);
|
||||
return { name: n.trim(), value: m ? m[1] : v, unit: m ? m[2] : '' };
|
||||
});
|
||||
const part = {
|
||||
mpn: $('mpn').value.trim(), name: $('mpn').value.trim(), class: $('class').value,
|
||||
manufacturer: $('manufacturer').value.trim(), package: $('package').value.trim(),
|
||||
datasheet_url: $('datasheet_url').value.trim(), summary: $('summary').value.trim(),
|
||||
when_to_use: $('when_to_use').value.trim(),
|
||||
use_cases: $('use_cases').value.split('\n').map((l) => l.trim()).filter(Boolean),
|
||||
params: parseParams($('params').value), spice: $('spice').value.trim(),
|
||||
model_3d_name: $('model3d').files[0] ? $('model3d').files[0].name : '',
|
||||
};
|
||||
const email = $('email').value.trim();
|
||||
$('submit').disabled = true; $('sub-status').innerHTML = '<span class="spin"></span> submitting…';
|
||||
try {
|
||||
const d = await invoke(FN_SUBMIT, TK_SUBMIT, { email, part });
|
||||
if (!d.ok) throw new Error(d.error || 'submit failed');
|
||||
localStorage.setItem('ppcb_credits', d.credits); $('cred-n').textContent = d.credits;
|
||||
document.querySelector('.form').innerHTML = `<h1 class="dh1">Thank you — submitted for review ✓</h1>
|
||||
<div class="banner">Your part <b>${part.mpn}</b> is queued for curation review. <b>+5 download credits</b> added — you now have <b>${d.credits}</b>.
|
||||
<br><br>Ref: <code>${d.sub_id}</code></div><a class="btn" href="/">Browse the catalog →</a>`;
|
||||
} catch (err) { $('sub-status').textContent = '⚠ ' + err.message; $('submit').disabled = false; }
|
||||
};
|
||||
77
assets/viewer.js
Normal file
77
assets/viewer.js
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
// viewer.js — PBR 3D rendering for the part store, same three.js + environment-lit PBR approach as the
|
||||
// flagship PromptPCB board renders. Two entry points: renderThumbnail() (one shared offscreen renderer
|
||||
// -> data URL, so a gallery of N parts uses ONE WebGL context) and mountViewer() (interactive orbit).
|
||||
import * as THREE from 'three';
|
||||
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
|
||||
import { OBJLoader } from 'three/addons/loaders/OBJLoader.js';
|
||||
import { RoomEnvironment } from 'three/addons/environments/RoomEnvironment.js';
|
||||
|
||||
const objCache = new Map();
|
||||
function loadObj(url) {
|
||||
if (objCache.has(url)) return objCache.get(url);
|
||||
const p = new Promise((res, rej) => new OBJLoader().load(url, res, undefined, rej));
|
||||
objCache.set(url, p); return p;
|
||||
}
|
||||
// dark epoxy / metal PBR material (IC body look); env reflections give the photoreal feel
|
||||
function pbrMaterial() {
|
||||
return new THREE.MeshPhysicalMaterial({ color: 0x1a2230, metalness: 0.55, roughness: 0.42,
|
||||
clearcoat: 0.5, clearcoatRoughness: 0.35, envMapIntensity: 1.1 });
|
||||
}
|
||||
function frame(obj, camera, controls, pad = 1.35) {
|
||||
const box = new THREE.Box3().setFromObject(obj);
|
||||
const size = box.getSize(new THREE.Vector3()), center = box.getCenter(new THREE.Vector3());
|
||||
obj.position.sub(center);
|
||||
const r = Math.max(size.x, size.y, size.z) * pad || 5;
|
||||
const d = r / Math.tan((camera.fov * Math.PI / 180) / 2);
|
||||
camera.position.set(d * 0.7, d * 0.75, d * 0.9);
|
||||
camera.near = d / 100; camera.far = d * 10; camera.updateProjectionMatrix();
|
||||
camera.lookAt(0, 0, 0); if (controls) { controls.target.set(0, 0, 0); controls.update(); }
|
||||
}
|
||||
|
||||
// ---- shared offscreen renderer for thumbnails ----
|
||||
let shared = null;
|
||||
function sharedRenderer(size) {
|
||||
if (!shared) {
|
||||
const r = new THREE.WebGLRenderer({ antialias: true, alpha: true, preserveDrawingBuffer: true });
|
||||
r.setPixelRatio(Math.min(devicePixelRatio, 2)); r.toneMapping = THREE.ACESFilmicToneMapping; r.toneMappingExposure = 1.05;
|
||||
const pmrem = new THREE.PMREMGenerator(r); const env = pmrem.fromScene(new RoomEnvironment(), 0.04).texture;
|
||||
shared = { r, env };
|
||||
}
|
||||
shared.r.setSize(size, size, false); return shared;
|
||||
}
|
||||
export async function renderThumbnail(url, size = 340) {
|
||||
const { r, env } = sharedRenderer(size);
|
||||
const scene = new THREE.Scene(); scene.environment = env;
|
||||
const cam = new THREE.PerspectiveCamera(35, 1, 0.1, 1000);
|
||||
const key = new THREE.DirectionalLight(0xffffff, 1.7); key.position.set(4, 8, 6); scene.add(key);
|
||||
scene.add(new THREE.AmbientLight(0x88aaff, 0.25));
|
||||
try {
|
||||
const src = await loadObj(url); const obj = src.clone(true);
|
||||
obj.traverse((m) => { if (m.isMesh) m.material = pbrMaterial(); });
|
||||
scene.add(obj); frame(obj, cam, null, 1.5);
|
||||
r.render(scene, cam);
|
||||
return r.domElement.toDataURL('image/png');
|
||||
} catch { return null; }
|
||||
}
|
||||
|
||||
// ---- interactive viewer (one canvas = one context) ----
|
||||
export async function mountViewer(canvas, url) {
|
||||
const r = new THREE.WebGLRenderer({ canvas, antialias: true, alpha: true });
|
||||
r.setPixelRatio(Math.min(devicePixelRatio, 2)); r.toneMapping = THREE.ACESFilmicToneMapping; r.toneMappingExposure = 1.05;
|
||||
const resize = () => { const w = canvas.clientWidth, h = canvas.clientHeight; r.setSize(w, h, false); cam.aspect = w / h; cam.updateProjectionMatrix(); };
|
||||
const pmrem = new THREE.PMREMGenerator(r);
|
||||
const scene = new THREE.Scene(); scene.environment = pmrem.fromScene(new RoomEnvironment(), 0.04).texture;
|
||||
const cam = new THREE.PerspectiveCamera(35, 1, 0.1, 2000);
|
||||
const key = new THREE.DirectionalLight(0xffffff, 1.9); key.position.set(5, 9, 7); scene.add(key);
|
||||
const rim = new THREE.DirectionalLight(0x4db8ff, 0.6); rim.position.set(-6, 2, -4); scene.add(rim);
|
||||
scene.add(new THREE.AmbientLight(0x8899bb, 0.3));
|
||||
const controls = new OrbitControls(cam, canvas); controls.enableDamping = true; controls.autoRotate = true; controls.autoRotateSpeed = 1.1;
|
||||
try {
|
||||
const src = await loadObj(url); const obj = src.clone(true);
|
||||
obj.traverse((m) => { if (m.isMesh) m.material = pbrMaterial(); });
|
||||
scene.add(obj); resize(); frame(obj, cam, controls, 1.4);
|
||||
} catch (e) { /* ignore */ }
|
||||
addEventListener('resize', resize);
|
||||
(function loop() { requestAnimationFrame(loop); controls.update(); r.render(scene, cam); })();
|
||||
return { stop: () => (controls.autoRotate = !controls.autoRotate) };
|
||||
}
|
||||
39
index.html
Normal file
39
index.html
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<title>PromptPCB Parts — curated, verified, ready to drop in</title>
|
||||
<meta name="description" content="A hand-curated open parts library: real specs, datasheets, pin/pad maps, SPICE models and PBR 3D models for every part. Search by what you need.">
|
||||
<link rel="stylesheet" href="/assets/style.css">
|
||||
<header class="top"><div class="wrap">
|
||||
<a class="brand" href="/"><span class="dot"></span> PromptPCB <small>· Parts</small></a>
|
||||
<nav class="main">
|
||||
<a href="/" class="active">Catalog</a>
|
||||
<a href="/submit.html">Submit a part</a>
|
||||
<a href="/mcp.html">MCP / API</a>
|
||||
</nav>
|
||||
<span class="spacer"></span>
|
||||
<span class="credits" id="credits" title="Download credits">◆ <b id="cred-n">5</b> credits</span>
|
||||
</div></header>
|
||||
|
||||
<div class="wrap">
|
||||
<section class="hero">
|
||||
<h1>The <span class="g">curated</span> part store for real boards.</h1>
|
||||
<p>Every part is hand-verified: organized specs, datasheet, labelled pins & pads, a SPICE model,
|
||||
and a PBR 3D model — searchable by <em>what you need it to do</em>. Contribute a novel part, earn downloads.</p>
|
||||
<div class="searchbar">
|
||||
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="7"/><path d="M21 21l-4.3-4.3"/></svg>
|
||||
<input id="q" placeholder='Describe what you need — "drive a brushless motor", "3.3V rail", "blink an LED", "50 ohm resistor"…' autofocus>
|
||||
</div>
|
||||
<div class="chips" id="chips"></div>
|
||||
</section>
|
||||
<div class="count" id="count"></div>
|
||||
<div class="grid" id="grid"></div>
|
||||
</div>
|
||||
|
||||
<footer class="footer"><div class="wrap">
|
||||
<span>PromptPCB Parts — open curated component library</span>
|
||||
<span class="spacer"></span>
|
||||
<a href="/submit.html">Contribute a part</a><a href="/mcp.html">Use via MCP</a>
|
||||
</div></footer>
|
||||
|
||||
<script type="importmap">{"imports":{"three":"https://unpkg.com/three@0.160.0/build/three.module.js","three/addons/":"https://unpkg.com/three@0.160.0/examples/jsm/"}}</script>
|
||||
<script type="module" src="/assets/app.js"></script>
|
||||
38
mcp.html
Normal file
38
mcp.html
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<title>MCP & API — PromptPCB Parts</title>
|
||||
<link rel="stylesheet" href="/assets/style.css">
|
||||
<header class="top"><div class="wrap">
|
||||
<a class="brand" href="/"><span class="dot"></span> PromptPCB <small>· Parts</small></a>
|
||||
<nav class="main"><a href="/">Catalog</a><a href="/submit.html">Submit a part</a><a href="/mcp.html" class="active">MCP / API</a></nav>
|
||||
<span class="spacer"></span><span class="credits">◆ <b>5</b> credits</span>
|
||||
</div></header>
|
||||
<div class="wrap"><div class="form" style="max-width:900px">
|
||||
<h1 class="dh1">Ground your design agent in real parts</h1>
|
||||
<p style="color:var(--dim);line-height:1.6">Every part here is exposed to AI design tools over <b>MCP</b> and a plain HTTP <b>API</b>, so a model can ask
|
||||
<em>"what do I have to blink an LED"</em> or <em>"a connector rated 20 A"</em> and get real, verified, in-stock options — with
|
||||
labelled pins, SPICE, and a 3D model — <b>before</b> it starts building a module.</p>
|
||||
|
||||
<div class="section"><h3>MCP tools</h3><div class="uc">
|
||||
<li><b>library_overview</b> — the whole catalog at a glance</li>
|
||||
<li><b>search_parts</b> — semantic reverse lookup ("something to drive a brushless motor")</li>
|
||||
<li><b>suggest_for_need</b> — a functional need → ranked options with the reason to pick each</li>
|
||||
<li><b>find_parts_by_requirements</b> — filters where a rating must <em>cover</em> the ask, e.g. <code>{class:"connector", min_current_a:20}</code></li>
|
||||
<li><b>resolve_value</b> — "50 ohm resistor" → the series + closest standard value</li>
|
||||
<li><b>list_parts_in_class</b> · <b>get_part</b> — browse a class / full record (specs, pins, SPICE, datasheet, 3D)</li>
|
||||
</div></div>
|
||||
|
||||
<div class="section"><h3>HTTP API</h3>
|
||||
<pre class="spice">GET /overview | /classes | /class/:class | /part/:id
|
||||
POST /search { "query": "reverse polarity protection" }
|
||||
POST /requirements { "class": "connector", "min_current_a": 20 }
|
||||
POST /suggest { "need": "step 5V down to 3.3V" }
|
||||
POST /resolve_value{ "query": "100nF" }</pre>
|
||||
</div>
|
||||
|
||||
<div class="section"><h3>Your saved library</h3>
|
||||
<p style="color:var(--dim);line-height:1.6">Add specific parts to <b>your library</b> and they're cached to your account — search over just your parts, reuse
|
||||
them forever, and pull their files without spending credits again. Contribute a novel curated part to top up your download credits.</p>
|
||||
</div>
|
||||
<a class="btn" href="/">Browse the catalog →</a>
|
||||
</div></div>
|
||||
30651
models/buck_lm5164.obj
Normal file
30651
models/buck_lm5164.obj
Normal file
File diff suppressed because it is too large
Load diff
127
models/can_tja1051.obj
Normal file
127
models/can_tja1051.obj
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
# generated body mesh (SOIC-8_L4.9-W3.9-P1.27-LS6.0-BL) 4.90x6.00x1.20mm, 8 pads
|
||||
v 1.6110 -3.5925 0.0000
|
||||
v 2.1990 -3.5925 0.0000
|
||||
v 2.1990 -1.5475 0.0000
|
||||
v 1.6110 -1.5475 0.0000
|
||||
v 1.6110 -3.5925 0.1200
|
||||
v 2.1990 -3.5925 0.1200
|
||||
v 2.1990 -1.5475 0.1200
|
||||
v 1.6110 -1.5475 0.1200
|
||||
v 0.3410 -3.5925 0.0000
|
||||
v 0.9290 -3.5925 0.0000
|
||||
v 0.9290 -1.5475 0.0000
|
||||
v 0.3410 -1.5475 0.0000
|
||||
v 0.3410 -3.5925 0.1200
|
||||
v 0.9290 -3.5925 0.1200
|
||||
v 0.9290 -1.5475 0.1200
|
||||
v 0.3410 -1.5475 0.1200
|
||||
v -0.9290 -3.5925 0.0000
|
||||
v -0.3410 -3.5925 0.0000
|
||||
v -0.3410 -1.5475 0.0000
|
||||
v -0.9290 -1.5475 0.0000
|
||||
v -0.9290 -3.5925 0.1200
|
||||
v -0.3410 -3.5925 0.1200
|
||||
v -0.3410 -1.5475 0.1200
|
||||
v -0.9290 -1.5475 0.1200
|
||||
v -2.1990 -3.5925 0.0000
|
||||
v -1.6110 -3.5925 0.0000
|
||||
v -1.6110 -1.5475 0.0000
|
||||
v -2.1990 -1.5475 0.0000
|
||||
v -2.1990 -3.5925 0.1200
|
||||
v -1.6110 -3.5925 0.1200
|
||||
v -1.6110 -1.5475 0.1200
|
||||
v -2.1990 -1.5475 0.1200
|
||||
v 1.6110 1.5475 0.0000
|
||||
v 2.1990 1.5475 0.0000
|
||||
v 2.1990 3.5925 0.0000
|
||||
v 1.6110 3.5925 0.0000
|
||||
v 1.6110 1.5475 0.1200
|
||||
v 2.1990 1.5475 0.1200
|
||||
v 2.1990 3.5925 0.1200
|
||||
v 1.6110 3.5925 0.1200
|
||||
v 0.3410 1.5475 0.0000
|
||||
v 0.9290 1.5475 0.0000
|
||||
v 0.9290 3.5925 0.0000
|
||||
v 0.3410 3.5925 0.0000
|
||||
v 0.3410 1.5475 0.1200
|
||||
v 0.9290 1.5475 0.1200
|
||||
v 0.9290 3.5925 0.1200
|
||||
v 0.3410 3.5925 0.1200
|
||||
v -0.9290 1.5475 0.0000
|
||||
v -0.3410 1.5475 0.0000
|
||||
v -0.3410 3.5925 0.0000
|
||||
v -0.9290 3.5925 0.0000
|
||||
v -0.9290 1.5475 0.1200
|
||||
v -0.3410 1.5475 0.1200
|
||||
v -0.3410 3.5925 0.1200
|
||||
v -0.9290 3.5925 0.1200
|
||||
v -2.1990 1.5475 0.0000
|
||||
v -1.6110 1.5475 0.0000
|
||||
v -1.6110 3.5925 0.0000
|
||||
v -2.1990 3.5925 0.0000
|
||||
v -2.1990 1.5475 0.1200
|
||||
v -1.6110 1.5475 0.1200
|
||||
v -1.6110 3.5925 0.1200
|
||||
v -2.1990 3.5925 0.1200
|
||||
v -2.4500 -3.0000 0.1000
|
||||
v 2.4500 -3.0000 0.1000
|
||||
v 2.4500 3.0000 0.1000
|
||||
v -2.4500 3.0000 0.1000
|
||||
v -2.4500 -3.0000 1.3000
|
||||
v 2.4500 -3.0000 1.3000
|
||||
v 2.4500 3.0000 1.3000
|
||||
v -2.4500 3.0000 1.3000
|
||||
f 1 4 3 2
|
||||
f 5 6 7 8
|
||||
f 1 2 6 5
|
||||
f 2 3 7 6
|
||||
f 3 4 8 7
|
||||
f 4 1 5 8
|
||||
f 9 12 11 10
|
||||
f 13 14 15 16
|
||||
f 9 10 14 13
|
||||
f 10 11 15 14
|
||||
f 11 12 16 15
|
||||
f 12 9 13 16
|
||||
f 17 20 19 18
|
||||
f 21 22 23 24
|
||||
f 17 18 22 21
|
||||
f 18 19 23 22
|
||||
f 19 20 24 23
|
||||
f 20 17 21 24
|
||||
f 25 28 27 26
|
||||
f 29 30 31 32
|
||||
f 25 26 30 29
|
||||
f 26 27 31 30
|
||||
f 27 28 32 31
|
||||
f 28 25 29 32
|
||||
f 33 36 35 34
|
||||
f 37 38 39 40
|
||||
f 33 34 38 37
|
||||
f 34 35 39 38
|
||||
f 35 36 40 39
|
||||
f 36 33 37 40
|
||||
f 41 44 43 42
|
||||
f 45 46 47 48
|
||||
f 41 42 46 45
|
||||
f 42 43 47 46
|
||||
f 43 44 48 47
|
||||
f 44 41 45 48
|
||||
f 49 52 51 50
|
||||
f 53 54 55 56
|
||||
f 49 50 54 53
|
||||
f 50 51 55 54
|
||||
f 51 52 56 55
|
||||
f 52 49 53 56
|
||||
f 57 60 59 58
|
||||
f 61 62 63 64
|
||||
f 57 58 62 61
|
||||
f 58 59 63 62
|
||||
f 59 60 64 63
|
||||
f 60 57 61 64
|
||||
f 65 68 67 66
|
||||
f 69 70 71 72
|
||||
f 65 66 70 69
|
||||
f 66 67 71 70
|
||||
f 67 68 72 71
|
||||
f 68 65 69 72
|
||||
43
models/cap_0603_mlcc_series.obj
Normal file
43
models/cap_0603_mlcc_series.obj
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
# standard C0603 chip mesh 1.6x0.8x0.8mm (shared)
|
||||
v -0.8000 -0.4000 0.0000
|
||||
v -0.4000 -0.4000 0.0000
|
||||
v -0.4000 0.4000 0.0000
|
||||
v -0.8000 0.4000 0.0000
|
||||
v -0.8000 -0.4000 0.1500
|
||||
v -0.4000 -0.4000 0.1500
|
||||
v -0.4000 0.4000 0.1500
|
||||
v -0.8000 0.4000 0.1500
|
||||
v 0.4000 -0.4000 0.0000
|
||||
v 0.8000 -0.4000 0.0000
|
||||
v 0.8000 0.4000 0.0000
|
||||
v 0.4000 0.4000 0.0000
|
||||
v 0.4000 -0.4000 0.1500
|
||||
v 0.8000 -0.4000 0.1500
|
||||
v 0.8000 0.4000 0.1500
|
||||
v 0.4000 0.4000 0.1500
|
||||
v -0.5500 -0.4000 0.0500
|
||||
v 0.5500 -0.4000 0.0500
|
||||
v 0.5500 0.4000 0.0500
|
||||
v -0.5500 0.4000 0.0500
|
||||
v -0.5500 -0.4000 0.8000
|
||||
v 0.5500 -0.4000 0.8000
|
||||
v 0.5500 0.4000 0.8000
|
||||
v -0.5500 0.4000 0.8000
|
||||
f 1 4 3 2
|
||||
f 5 6 7 8
|
||||
f 1 2 6 5
|
||||
f 2 3 7 6
|
||||
f 3 4 8 7
|
||||
f 4 1 5 8
|
||||
f 9 12 11 10
|
||||
f 13 14 15 16
|
||||
f 9 10 14 13
|
||||
f 10 11 15 14
|
||||
f 11 12 16 15
|
||||
f 12 9 13 16
|
||||
f 17 20 19 18
|
||||
f 21 22 23 24
|
||||
f 17 18 22 21
|
||||
f 18 19 23 22
|
||||
f 19 20 24 23
|
||||
f 20 17 21 24
|
||||
43
models/cap_elec_bulk_series.obj
Normal file
43
models/cap_elec_bulk_series.obj
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
# standard ELEC-D6.3 chip mesh 6.6x6.6x5.4mm (shared)
|
||||
v -3.3000 -3.3000 0.0000
|
||||
v -2.9000 -3.3000 0.0000
|
||||
v -2.9000 3.3000 0.0000
|
||||
v -3.3000 3.3000 0.0000
|
||||
v -3.3000 -3.3000 0.1500
|
||||
v -2.9000 -3.3000 0.1500
|
||||
v -2.9000 3.3000 0.1500
|
||||
v -3.3000 3.3000 0.1500
|
||||
v 2.9000 -3.3000 0.0000
|
||||
v 3.3000 -3.3000 0.0000
|
||||
v 3.3000 3.3000 0.0000
|
||||
v 2.9000 3.3000 0.0000
|
||||
v 2.9000 -3.3000 0.1500
|
||||
v 3.3000 -3.3000 0.1500
|
||||
v 3.3000 3.3000 0.1500
|
||||
v 2.9000 3.3000 0.1500
|
||||
v -3.0500 -3.3000 0.0500
|
||||
v 3.0500 -3.3000 0.0500
|
||||
v 3.0500 3.3000 0.0500
|
||||
v -3.0500 3.3000 0.0500
|
||||
v -3.0500 -3.3000 5.4000
|
||||
v 3.0500 -3.3000 5.4000
|
||||
v 3.0500 3.3000 5.4000
|
||||
v -3.0500 3.3000 5.4000
|
||||
f 1 4 3 2
|
||||
f 5 6 7 8
|
||||
f 1 2 6 5
|
||||
f 2 3 7 6
|
||||
f 3 4 8 7
|
||||
f 4 1 5 8
|
||||
f 9 12 11 10
|
||||
f 13 14 15 16
|
||||
f 9 10 14 13
|
||||
f 10 11 15 14
|
||||
f 11 12 16 15
|
||||
f 12 9 13 16
|
||||
f 17 20 19 18
|
||||
f 21 22 23 24
|
||||
f 17 18 22 21
|
||||
f 18 19 23 22
|
||||
f 19 20 24 23
|
||||
f 20 17 21 24
|
||||
43
models/conn_xt60.obj
Normal file
43
models/conn_xt60.obj
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
# generated body mesh (CONN-TH_XT60PB-F) 15.70x7.90x8.00mm, 2 pads
|
||||
v 0.8420 -2.7580 0.0000
|
||||
v 6.3580 -2.7580 0.0000
|
||||
v 6.3580 2.7580 0.0000
|
||||
v 0.8420 2.7580 0.0000
|
||||
v 0.8420 -2.7580 0.1200
|
||||
v 6.3580 -2.7580 0.1200
|
||||
v 6.3580 2.7580 0.1200
|
||||
v 0.8420 2.7580 0.1200
|
||||
v -6.3580 -2.7580 0.0000
|
||||
v -0.8420 -2.7580 0.0000
|
||||
v -0.8420 2.7580 0.0000
|
||||
v -6.3580 2.7580 0.0000
|
||||
v -6.3580 -2.7580 0.1200
|
||||
v -0.8420 -2.7580 0.1200
|
||||
v -0.8420 2.7580 0.1200
|
||||
v -6.3580 2.7580 0.1200
|
||||
v -7.8500 -3.9500 0.1000
|
||||
v 7.8500 -3.9500 0.1000
|
||||
v 7.8500 3.9500 0.1000
|
||||
v -7.8500 3.9500 0.1000
|
||||
v -7.8500 -3.9500 8.1000
|
||||
v 7.8500 -3.9500 8.1000
|
||||
v 7.8500 3.9500 8.1000
|
||||
v -7.8500 3.9500 8.1000
|
||||
f 1 4 3 2
|
||||
f 5 6 7 8
|
||||
f 1 2 6 5
|
||||
f 2 3 7 6
|
||||
f 3 4 8 7
|
||||
f 4 1 5 8
|
||||
f 9 12 11 10
|
||||
f 13 14 15 16
|
||||
f 9 10 14 13
|
||||
f 10 11 15 14
|
||||
f 11 12 16 15
|
||||
f 12 9 13 16
|
||||
f 17 20 19 18
|
||||
f 21 22 23 24
|
||||
f 17 18 22 21
|
||||
f 18 19 23 22
|
||||
f 19 20 24 23
|
||||
f 20 17 21 24
|
||||
23180
models/esd_usblc6.obj
Normal file
23180
models/esd_usblc6.obj
Normal file
File diff suppressed because it is too large
Load diff
701
models/gatedriver_drv8323.obj
Normal file
701
models/gatedriver_drv8323.obj
Normal file
|
|
@ -0,0 +1,701 @@
|
|||
# generated body mesh (VQFN-48_L7.0-W7.0-P0.50-TL-EP5.1) 7.02x7.02x1.20mm, 49 pads
|
||||
v -3.7395 -2.8900 0.0000
|
||||
v -3.0745 -2.8900 0.0000
|
||||
v -3.0745 -2.6100 0.0000
|
||||
v -3.7395 -2.6100 0.0000
|
||||
v -3.7395 -2.8900 0.1200
|
||||
v -3.0745 -2.8900 0.1200
|
||||
v -3.0745 -2.6100 0.1200
|
||||
v -3.7395 -2.6100 0.1200
|
||||
v -3.7395 -2.3900 0.0000
|
||||
v -3.0745 -2.3900 0.0000
|
||||
v -3.0745 -2.1100 0.0000
|
||||
v -3.7395 -2.1100 0.0000
|
||||
v -3.7395 -2.3900 0.1200
|
||||
v -3.0745 -2.3900 0.1200
|
||||
v -3.0745 -2.1100 0.1200
|
||||
v -3.7395 -2.1100 0.1200
|
||||
v -3.7395 -1.8900 0.0000
|
||||
v -3.0745 -1.8900 0.0000
|
||||
v -3.0745 -1.6100 0.0000
|
||||
v -3.7395 -1.6100 0.0000
|
||||
v -3.7395 -1.8900 0.1200
|
||||
v -3.0745 -1.8900 0.1200
|
||||
v -3.0745 -1.6100 0.1200
|
||||
v -3.7395 -1.6100 0.1200
|
||||
v -3.7395 -1.3900 0.0000
|
||||
v -3.0745 -1.3900 0.0000
|
||||
v -3.0745 -1.1100 0.0000
|
||||
v -3.7395 -1.1100 0.0000
|
||||
v -3.7395 -1.3900 0.1200
|
||||
v -3.0745 -1.3900 0.1200
|
||||
v -3.0745 -1.1100 0.1200
|
||||
v -3.7395 -1.1100 0.1200
|
||||
v -3.7395 -0.8900 0.0000
|
||||
v -3.0745 -0.8900 0.0000
|
||||
v -3.0745 -0.6100 0.0000
|
||||
v -3.7395 -0.6100 0.0000
|
||||
v -3.7395 -0.8900 0.1200
|
||||
v -3.0745 -0.8900 0.1200
|
||||
v -3.0745 -0.6100 0.1200
|
||||
v -3.7395 -0.6100 0.1200
|
||||
v -3.7395 -0.3900 0.0000
|
||||
v -3.0745 -0.3900 0.0000
|
||||
v -3.0745 -0.1100 0.0000
|
||||
v -3.7395 -0.1100 0.0000
|
||||
v -3.7395 -0.3900 0.1200
|
||||
v -3.0745 -0.3900 0.1200
|
||||
v -3.0745 -0.1100 0.1200
|
||||
v -3.7395 -0.1100 0.1200
|
||||
v -3.7395 0.1100 0.0000
|
||||
v -3.0745 0.1100 0.0000
|
||||
v -3.0745 0.3900 0.0000
|
||||
v -3.7395 0.3900 0.0000
|
||||
v -3.7395 0.1100 0.1200
|
||||
v -3.0745 0.1100 0.1200
|
||||
v -3.0745 0.3900 0.1200
|
||||
v -3.7395 0.3900 0.1200
|
||||
v -3.7395 0.6100 0.0000
|
||||
v -3.0745 0.6100 0.0000
|
||||
v -3.0745 0.8900 0.0000
|
||||
v -3.7395 0.8900 0.0000
|
||||
v -3.7395 0.6100 0.1200
|
||||
v -3.0745 0.6100 0.1200
|
||||
v -3.0745 0.8900 0.1200
|
||||
v -3.7395 0.8900 0.1200
|
||||
v -3.7395 1.1100 0.0000
|
||||
v -3.0745 1.1100 0.0000
|
||||
v -3.0745 1.3900 0.0000
|
||||
v -3.7395 1.3900 0.0000
|
||||
v -3.7395 1.1100 0.1200
|
||||
v -3.0745 1.1100 0.1200
|
||||
v -3.0745 1.3900 0.1200
|
||||
v -3.7395 1.3900 0.1200
|
||||
v -3.7395 1.6100 0.0000
|
||||
v -3.0745 1.6100 0.0000
|
||||
v -3.0745 1.8900 0.0000
|
||||
v -3.7395 1.8900 0.0000
|
||||
v -3.7395 1.6100 0.1200
|
||||
v -3.0745 1.6100 0.1200
|
||||
v -3.0745 1.8900 0.1200
|
||||
v -3.7395 1.8900 0.1200
|
||||
v -3.7395 2.1100 0.0000
|
||||
v -3.0745 2.1100 0.0000
|
||||
v -3.0745 2.3900 0.0000
|
||||
v -3.7395 2.3900 0.0000
|
||||
v -3.7395 2.1100 0.1200
|
||||
v -3.0745 2.1100 0.1200
|
||||
v -3.0745 2.3900 0.1200
|
||||
v -3.7395 2.3900 0.1200
|
||||
v -3.7395 2.6100 0.0000
|
||||
v -3.0745 2.6100 0.0000
|
||||
v -3.0745 2.8900 0.0000
|
||||
v -3.7395 2.8900 0.0000
|
||||
v -3.7395 2.6100 0.1200
|
||||
v -3.0745 2.6100 0.1200
|
||||
v -3.0745 2.8900 0.1200
|
||||
v -3.7395 2.8900 0.1200
|
||||
v -2.8900 3.0745 0.0000
|
||||
v -2.6100 3.0745 0.0000
|
||||
v -2.6100 3.7395 0.0000
|
||||
v -2.8900 3.7395 0.0000
|
||||
v -2.8900 3.0745 0.1200
|
||||
v -2.6100 3.0745 0.1200
|
||||
v -2.6100 3.7395 0.1200
|
||||
v -2.8900 3.7395 0.1200
|
||||
v -2.3900 3.0745 0.0000
|
||||
v -2.1100 3.0745 0.0000
|
||||
v -2.1100 3.7395 0.0000
|
||||
v -2.3900 3.7395 0.0000
|
||||
v -2.3900 3.0745 0.1200
|
||||
v -2.1100 3.0745 0.1200
|
||||
v -2.1100 3.7395 0.1200
|
||||
v -2.3900 3.7395 0.1200
|
||||
v -1.8900 3.0745 0.0000
|
||||
v -1.6100 3.0745 0.0000
|
||||
v -1.6100 3.7395 0.0000
|
||||
v -1.8900 3.7395 0.0000
|
||||
v -1.8900 3.0745 0.1200
|
||||
v -1.6100 3.0745 0.1200
|
||||
v -1.6100 3.7395 0.1200
|
||||
v -1.8900 3.7395 0.1200
|
||||
v -1.3900 3.0745 0.0000
|
||||
v -1.1100 3.0745 0.0000
|
||||
v -1.1100 3.7395 0.0000
|
||||
v -1.3900 3.7395 0.0000
|
||||
v -1.3900 3.0745 0.1200
|
||||
v -1.1100 3.0745 0.1200
|
||||
v -1.1100 3.7395 0.1200
|
||||
v -1.3900 3.7395 0.1200
|
||||
v -0.8900 3.0745 0.0000
|
||||
v -0.6100 3.0745 0.0000
|
||||
v -0.6100 3.7395 0.0000
|
||||
v -0.8900 3.7395 0.0000
|
||||
v -0.8900 3.0745 0.1200
|
||||
v -0.6100 3.0745 0.1200
|
||||
v -0.6100 3.7395 0.1200
|
||||
v -0.8900 3.7395 0.1200
|
||||
v -0.3900 3.0745 0.0000
|
||||
v -0.1100 3.0745 0.0000
|
||||
v -0.1100 3.7395 0.0000
|
||||
v -0.3900 3.7395 0.0000
|
||||
v -0.3900 3.0745 0.1200
|
||||
v -0.1100 3.0745 0.1200
|
||||
v -0.1100 3.7395 0.1200
|
||||
v -0.3900 3.7395 0.1200
|
||||
v 0.1100 3.0745 0.0000
|
||||
v 0.3900 3.0745 0.0000
|
||||
v 0.3900 3.7395 0.0000
|
||||
v 0.1100 3.7395 0.0000
|
||||
v 0.1100 3.0745 0.1200
|
||||
v 0.3900 3.0745 0.1200
|
||||
v 0.3900 3.7395 0.1200
|
||||
v 0.1100 3.7395 0.1200
|
||||
v 0.6100 3.0745 0.0000
|
||||
v 0.8900 3.0745 0.0000
|
||||
v 0.8900 3.7395 0.0000
|
||||
v 0.6100 3.7395 0.0000
|
||||
v 0.6100 3.0745 0.1200
|
||||
v 0.8900 3.0745 0.1200
|
||||
v 0.8900 3.7395 0.1200
|
||||
v 0.6100 3.7395 0.1200
|
||||
v 1.1100 3.0745 0.0000
|
||||
v 1.3900 3.0745 0.0000
|
||||
v 1.3900 3.7395 0.0000
|
||||
v 1.1100 3.7395 0.0000
|
||||
v 1.1100 3.0745 0.1200
|
||||
v 1.3900 3.0745 0.1200
|
||||
v 1.3900 3.7395 0.1200
|
||||
v 1.1100 3.7395 0.1200
|
||||
v 1.6100 3.0745 0.0000
|
||||
v 1.8900 3.0745 0.0000
|
||||
v 1.8900 3.7395 0.0000
|
||||
v 1.6100 3.7395 0.0000
|
||||
v 1.6100 3.0745 0.1200
|
||||
v 1.8900 3.0745 0.1200
|
||||
v 1.8900 3.7395 0.1200
|
||||
v 1.6100 3.7395 0.1200
|
||||
v 2.1100 3.0745 0.0000
|
||||
v 2.3900 3.0745 0.0000
|
||||
v 2.3900 3.7395 0.0000
|
||||
v 2.1100 3.7395 0.0000
|
||||
v 2.1100 3.0745 0.1200
|
||||
v 2.3900 3.0745 0.1200
|
||||
v 2.3900 3.7395 0.1200
|
||||
v 2.1100 3.7395 0.1200
|
||||
v 2.6100 3.0745 0.0000
|
||||
v 2.8900 3.0745 0.0000
|
||||
v 2.8900 3.7395 0.0000
|
||||
v 2.6100 3.7395 0.0000
|
||||
v 2.6100 3.0745 0.1200
|
||||
v 2.8900 3.0745 0.1200
|
||||
v 2.8900 3.7395 0.1200
|
||||
v 2.6100 3.7395 0.1200
|
||||
v 3.0745 2.6100 0.0000
|
||||
v 3.7395 2.6100 0.0000
|
||||
v 3.7395 2.8900 0.0000
|
||||
v 3.0745 2.8900 0.0000
|
||||
v 3.0745 2.6100 0.1200
|
||||
v 3.7395 2.6100 0.1200
|
||||
v 3.7395 2.8900 0.1200
|
||||
v 3.0745 2.8900 0.1200
|
||||
v 3.0745 2.1100 0.0000
|
||||
v 3.7395 2.1100 0.0000
|
||||
v 3.7395 2.3900 0.0000
|
||||
v 3.0745 2.3900 0.0000
|
||||
v 3.0745 2.1100 0.1200
|
||||
v 3.7395 2.1100 0.1200
|
||||
v 3.7395 2.3900 0.1200
|
||||
v 3.0745 2.3900 0.1200
|
||||
v 3.0745 1.6100 0.0000
|
||||
v 3.7395 1.6100 0.0000
|
||||
v 3.7395 1.8900 0.0000
|
||||
v 3.0745 1.8900 0.0000
|
||||
v 3.0745 1.6100 0.1200
|
||||
v 3.7395 1.6100 0.1200
|
||||
v 3.7395 1.8900 0.1200
|
||||
v 3.0745 1.8900 0.1200
|
||||
v 3.0745 1.1100 0.0000
|
||||
v 3.7395 1.1100 0.0000
|
||||
v 3.7395 1.3900 0.0000
|
||||
v 3.0745 1.3900 0.0000
|
||||
v 3.0745 1.1100 0.1200
|
||||
v 3.7395 1.1100 0.1200
|
||||
v 3.7395 1.3900 0.1200
|
||||
v 3.0745 1.3900 0.1200
|
||||
v 3.0745 0.6100 0.0000
|
||||
v 3.7395 0.6100 0.0000
|
||||
v 3.7395 0.8900 0.0000
|
||||
v 3.0745 0.8900 0.0000
|
||||
v 3.0745 0.6100 0.1200
|
||||
v 3.7395 0.6100 0.1200
|
||||
v 3.7395 0.8900 0.1200
|
||||
v 3.0745 0.8900 0.1200
|
||||
v 3.0745 0.1100 0.0000
|
||||
v 3.7395 0.1100 0.0000
|
||||
v 3.7395 0.3900 0.0000
|
||||
v 3.0745 0.3900 0.0000
|
||||
v 3.0745 0.1100 0.1200
|
||||
v 3.7395 0.1100 0.1200
|
||||
v 3.7395 0.3900 0.1200
|
||||
v 3.0745 0.3900 0.1200
|
||||
v 3.0745 -0.3900 0.0000
|
||||
v 3.7395 -0.3900 0.0000
|
||||
v 3.7395 -0.1100 0.0000
|
||||
v 3.0745 -0.1100 0.0000
|
||||
v 3.0745 -0.3900 0.1200
|
||||
v 3.7395 -0.3900 0.1200
|
||||
v 3.7395 -0.1100 0.1200
|
||||
v 3.0745 -0.1100 0.1200
|
||||
v 3.0745 -0.8900 0.0000
|
||||
v 3.7395 -0.8900 0.0000
|
||||
v 3.7395 -0.6100 0.0000
|
||||
v 3.0745 -0.6100 0.0000
|
||||
v 3.0745 -0.8900 0.1200
|
||||
v 3.7395 -0.8900 0.1200
|
||||
v 3.7395 -0.6100 0.1200
|
||||
v 3.0745 -0.6100 0.1200
|
||||
v 3.0745 -1.3900 0.0000
|
||||
v 3.7395 -1.3900 0.0000
|
||||
v 3.7395 -1.1100 0.0000
|
||||
v 3.0745 -1.1100 0.0000
|
||||
v 3.0745 -1.3900 0.1200
|
||||
v 3.7395 -1.3900 0.1200
|
||||
v 3.7395 -1.1100 0.1200
|
||||
v 3.0745 -1.1100 0.1200
|
||||
v 3.0745 -1.8900 0.0000
|
||||
v 3.7395 -1.8900 0.0000
|
||||
v 3.7395 -1.6100 0.0000
|
||||
v 3.0745 -1.6100 0.0000
|
||||
v 3.0745 -1.8900 0.1200
|
||||
v 3.7395 -1.8900 0.1200
|
||||
v 3.7395 -1.6100 0.1200
|
||||
v 3.0745 -1.6100 0.1200
|
||||
v 3.0745 -2.3900 0.0000
|
||||
v 3.7395 -2.3900 0.0000
|
||||
v 3.7395 -2.1100 0.0000
|
||||
v 3.0745 -2.1100 0.0000
|
||||
v 3.0745 -2.3900 0.1200
|
||||
v 3.7395 -2.3900 0.1200
|
||||
v 3.7395 -2.1100 0.1200
|
||||
v 3.0745 -2.1100 0.1200
|
||||
v 3.0745 -2.8900 0.0000
|
||||
v 3.7395 -2.8900 0.0000
|
||||
v 3.7395 -2.6100 0.0000
|
||||
v 3.0745 -2.6100 0.0000
|
||||
v 3.0745 -2.8900 0.1200
|
||||
v 3.7395 -2.8900 0.1200
|
||||
v 3.7395 -2.6100 0.1200
|
||||
v 3.0745 -2.6100 0.1200
|
||||
v 2.6100 -3.7395 0.0000
|
||||
v 2.8900 -3.7395 0.0000
|
||||
v 2.8900 -3.0745 0.0000
|
||||
v 2.6100 -3.0745 0.0000
|
||||
v 2.6100 -3.7395 0.1200
|
||||
v 2.8900 -3.7395 0.1200
|
||||
v 2.8900 -3.0745 0.1200
|
||||
v 2.6100 -3.0745 0.1200
|
||||
v 2.1100 -3.7395 0.0000
|
||||
v 2.3900 -3.7395 0.0000
|
||||
v 2.3900 -3.0745 0.0000
|
||||
v 2.1100 -3.0745 0.0000
|
||||
v 2.1100 -3.7395 0.1200
|
||||
v 2.3900 -3.7395 0.1200
|
||||
v 2.3900 -3.0745 0.1200
|
||||
v 2.1100 -3.0745 0.1200
|
||||
v 1.6100 -3.7395 0.0000
|
||||
v 1.8900 -3.7395 0.0000
|
||||
v 1.8900 -3.0745 0.0000
|
||||
v 1.6100 -3.0745 0.0000
|
||||
v 1.6100 -3.7395 0.1200
|
||||
v 1.8900 -3.7395 0.1200
|
||||
v 1.8900 -3.0745 0.1200
|
||||
v 1.6100 -3.0745 0.1200
|
||||
v 1.1100 -3.7395 0.0000
|
||||
v 1.3900 -3.7395 0.0000
|
||||
v 1.3900 -3.0745 0.0000
|
||||
v 1.1100 -3.0745 0.0000
|
||||
v 1.1100 -3.7395 0.1200
|
||||
v 1.3900 -3.7395 0.1200
|
||||
v 1.3900 -3.0745 0.1200
|
||||
v 1.1100 -3.0745 0.1200
|
||||
v 0.6100 -3.7395 0.0000
|
||||
v 0.8900 -3.7395 0.0000
|
||||
v 0.8900 -3.0745 0.0000
|
||||
v 0.6100 -3.0745 0.0000
|
||||
v 0.6100 -3.7395 0.1200
|
||||
v 0.8900 -3.7395 0.1200
|
||||
v 0.8900 -3.0745 0.1200
|
||||
v 0.6100 -3.0745 0.1200
|
||||
v 0.1100 -3.7395 0.0000
|
||||
v 0.3900 -3.7395 0.0000
|
||||
v 0.3900 -3.0745 0.0000
|
||||
v 0.1100 -3.0745 0.0000
|
||||
v 0.1100 -3.7395 0.1200
|
||||
v 0.3900 -3.7395 0.1200
|
||||
v 0.3900 -3.0745 0.1200
|
||||
v 0.1100 -3.0745 0.1200
|
||||
v -0.3900 -3.7395 0.0000
|
||||
v -0.1100 -3.7395 0.0000
|
||||
v -0.1100 -3.0745 0.0000
|
||||
v -0.3900 -3.0745 0.0000
|
||||
v -0.3900 -3.7395 0.1200
|
||||
v -0.1100 -3.7395 0.1200
|
||||
v -0.1100 -3.0745 0.1200
|
||||
v -0.3900 -3.0745 0.1200
|
||||
v -0.8900 -3.7395 0.0000
|
||||
v -0.6100 -3.7395 0.0000
|
||||
v -0.6100 -3.0745 0.0000
|
||||
v -0.8900 -3.0745 0.0000
|
||||
v -0.8900 -3.7395 0.1200
|
||||
v -0.6100 -3.7395 0.1200
|
||||
v -0.6100 -3.0745 0.1200
|
||||
v -0.8900 -3.0745 0.1200
|
||||
v -1.3900 -3.7395 0.0000
|
||||
v -1.1100 -3.7395 0.0000
|
||||
v -1.1100 -3.0745 0.0000
|
||||
v -1.3900 -3.0745 0.0000
|
||||
v -1.3900 -3.7395 0.1200
|
||||
v -1.1100 -3.7395 0.1200
|
||||
v -1.1100 -3.0745 0.1200
|
||||
v -1.3900 -3.0745 0.1200
|
||||
v -1.8900 -3.7395 0.0000
|
||||
v -1.6100 -3.7395 0.0000
|
||||
v -1.6100 -3.0745 0.0000
|
||||
v -1.8900 -3.0745 0.0000
|
||||
v -1.8900 -3.7395 0.1200
|
||||
v -1.6100 -3.7395 0.1200
|
||||
v -1.6100 -3.0745 0.1200
|
||||
v -1.8900 -3.0745 0.1200
|
||||
v -2.3900 -3.7395 0.0000
|
||||
v -2.1100 -3.7395 0.0000
|
||||
v -2.1100 -3.0745 0.0000
|
||||
v -2.3900 -3.0745 0.0000
|
||||
v -2.3900 -3.7395 0.1200
|
||||
v -2.1100 -3.7395 0.1200
|
||||
v -2.1100 -3.0745 0.1200
|
||||
v -2.3900 -3.0745 0.1200
|
||||
v -2.8900 -3.7395 0.0000
|
||||
v -2.6100 -3.7395 0.0000
|
||||
v -2.6100 -3.0745 0.0000
|
||||
v -2.8900 -3.0745 0.0000
|
||||
v -2.8900 -3.7395 0.1200
|
||||
v -2.6100 -3.7395 0.1200
|
||||
v -2.6100 -3.0745 0.1200
|
||||
v -2.8900 -3.0745 0.1200
|
||||
v -2.5750 -2.5750 0.0000
|
||||
v 2.5750 -2.5750 0.0000
|
||||
v 2.5750 2.5750 0.0000
|
||||
v -2.5750 2.5750 0.0000
|
||||
v -2.5750 -2.5750 0.1200
|
||||
v 2.5750 -2.5750 0.1200
|
||||
v 2.5750 2.5750 0.1200
|
||||
v -2.5750 2.5750 0.1200
|
||||
v -3.5100 -3.5100 0.1000
|
||||
v 3.5100 -3.5100 0.1000
|
||||
v 3.5100 3.5100 0.1000
|
||||
v -3.5100 3.5100 0.1000
|
||||
v -3.5100 -3.5100 1.3000
|
||||
v 3.5100 -3.5100 1.3000
|
||||
v 3.5100 3.5100 1.3000
|
||||
v -3.5100 3.5100 1.3000
|
||||
f 1 4 3 2
|
||||
f 5 6 7 8
|
||||
f 1 2 6 5
|
||||
f 2 3 7 6
|
||||
f 3 4 8 7
|
||||
f 4 1 5 8
|
||||
f 9 12 11 10
|
||||
f 13 14 15 16
|
||||
f 9 10 14 13
|
||||
f 10 11 15 14
|
||||
f 11 12 16 15
|
||||
f 12 9 13 16
|
||||
f 17 20 19 18
|
||||
f 21 22 23 24
|
||||
f 17 18 22 21
|
||||
f 18 19 23 22
|
||||
f 19 20 24 23
|
||||
f 20 17 21 24
|
||||
f 25 28 27 26
|
||||
f 29 30 31 32
|
||||
f 25 26 30 29
|
||||
f 26 27 31 30
|
||||
f 27 28 32 31
|
||||
f 28 25 29 32
|
||||
f 33 36 35 34
|
||||
f 37 38 39 40
|
||||
f 33 34 38 37
|
||||
f 34 35 39 38
|
||||
f 35 36 40 39
|
||||
f 36 33 37 40
|
||||
f 41 44 43 42
|
||||
f 45 46 47 48
|
||||
f 41 42 46 45
|
||||
f 42 43 47 46
|
||||
f 43 44 48 47
|
||||
f 44 41 45 48
|
||||
f 49 52 51 50
|
||||
f 53 54 55 56
|
||||
f 49 50 54 53
|
||||
f 50 51 55 54
|
||||
f 51 52 56 55
|
||||
f 52 49 53 56
|
||||
f 57 60 59 58
|
||||
f 61 62 63 64
|
||||
f 57 58 62 61
|
||||
f 58 59 63 62
|
||||
f 59 60 64 63
|
||||
f 60 57 61 64
|
||||
f 65 68 67 66
|
||||
f 69 70 71 72
|
||||
f 65 66 70 69
|
||||
f 66 67 71 70
|
||||
f 67 68 72 71
|
||||
f 68 65 69 72
|
||||
f 73 76 75 74
|
||||
f 77 78 79 80
|
||||
f 73 74 78 77
|
||||
f 74 75 79 78
|
||||
f 75 76 80 79
|
||||
f 76 73 77 80
|
||||
f 81 84 83 82
|
||||
f 85 86 87 88
|
||||
f 81 82 86 85
|
||||
f 82 83 87 86
|
||||
f 83 84 88 87
|
||||
f 84 81 85 88
|
||||
f 89 92 91 90
|
||||
f 93 94 95 96
|
||||
f 89 90 94 93
|
||||
f 90 91 95 94
|
||||
f 91 92 96 95
|
||||
f 92 89 93 96
|
||||
f 97 100 99 98
|
||||
f 101 102 103 104
|
||||
f 97 98 102 101
|
||||
f 98 99 103 102
|
||||
f 99 100 104 103
|
||||
f 100 97 101 104
|
||||
f 105 108 107 106
|
||||
f 109 110 111 112
|
||||
f 105 106 110 109
|
||||
f 106 107 111 110
|
||||
f 107 108 112 111
|
||||
f 108 105 109 112
|
||||
f 113 116 115 114
|
||||
f 117 118 119 120
|
||||
f 113 114 118 117
|
||||
f 114 115 119 118
|
||||
f 115 116 120 119
|
||||
f 116 113 117 120
|
||||
f 121 124 123 122
|
||||
f 125 126 127 128
|
||||
f 121 122 126 125
|
||||
f 122 123 127 126
|
||||
f 123 124 128 127
|
||||
f 124 121 125 128
|
||||
f 129 132 131 130
|
||||
f 133 134 135 136
|
||||
f 129 130 134 133
|
||||
f 130 131 135 134
|
||||
f 131 132 136 135
|
||||
f 132 129 133 136
|
||||
f 137 140 139 138
|
||||
f 141 142 143 144
|
||||
f 137 138 142 141
|
||||
f 138 139 143 142
|
||||
f 139 140 144 143
|
||||
f 140 137 141 144
|
||||
f 145 148 147 146
|
||||
f 149 150 151 152
|
||||
f 145 146 150 149
|
||||
f 146 147 151 150
|
||||
f 147 148 152 151
|
||||
f 148 145 149 152
|
||||
f 153 156 155 154
|
||||
f 157 158 159 160
|
||||
f 153 154 158 157
|
||||
f 154 155 159 158
|
||||
f 155 156 160 159
|
||||
f 156 153 157 160
|
||||
f 161 164 163 162
|
||||
f 165 166 167 168
|
||||
f 161 162 166 165
|
||||
f 162 163 167 166
|
||||
f 163 164 168 167
|
||||
f 164 161 165 168
|
||||
f 169 172 171 170
|
||||
f 173 174 175 176
|
||||
f 169 170 174 173
|
||||
f 170 171 175 174
|
||||
f 171 172 176 175
|
||||
f 172 169 173 176
|
||||
f 177 180 179 178
|
||||
f 181 182 183 184
|
||||
f 177 178 182 181
|
||||
f 178 179 183 182
|
||||
f 179 180 184 183
|
||||
f 180 177 181 184
|
||||
f 185 188 187 186
|
||||
f 189 190 191 192
|
||||
f 185 186 190 189
|
||||
f 186 187 191 190
|
||||
f 187 188 192 191
|
||||
f 188 185 189 192
|
||||
f 193 196 195 194
|
||||
f 197 198 199 200
|
||||
f 193 194 198 197
|
||||
f 194 195 199 198
|
||||
f 195 196 200 199
|
||||
f 196 193 197 200
|
||||
f 201 204 203 202
|
||||
f 205 206 207 208
|
||||
f 201 202 206 205
|
||||
f 202 203 207 206
|
||||
f 203 204 208 207
|
||||
f 204 201 205 208
|
||||
f 209 212 211 210
|
||||
f 213 214 215 216
|
||||
f 209 210 214 213
|
||||
f 210 211 215 214
|
||||
f 211 212 216 215
|
||||
f 212 209 213 216
|
||||
f 217 220 219 218
|
||||
f 221 222 223 224
|
||||
f 217 218 222 221
|
||||
f 218 219 223 222
|
||||
f 219 220 224 223
|
||||
f 220 217 221 224
|
||||
f 225 228 227 226
|
||||
f 229 230 231 232
|
||||
f 225 226 230 229
|
||||
f 226 227 231 230
|
||||
f 227 228 232 231
|
||||
f 228 225 229 232
|
||||
f 233 236 235 234
|
||||
f 237 238 239 240
|
||||
f 233 234 238 237
|
||||
f 234 235 239 238
|
||||
f 235 236 240 239
|
||||
f 236 233 237 240
|
||||
f 241 244 243 242
|
||||
f 245 246 247 248
|
||||
f 241 242 246 245
|
||||
f 242 243 247 246
|
||||
f 243 244 248 247
|
||||
f 244 241 245 248
|
||||
f 249 252 251 250
|
||||
f 253 254 255 256
|
||||
f 249 250 254 253
|
||||
f 250 251 255 254
|
||||
f 251 252 256 255
|
||||
f 252 249 253 256
|
||||
f 257 260 259 258
|
||||
f 261 262 263 264
|
||||
f 257 258 262 261
|
||||
f 258 259 263 262
|
||||
f 259 260 264 263
|
||||
f 260 257 261 264
|
||||
f 265 268 267 266
|
||||
f 269 270 271 272
|
||||
f 265 266 270 269
|
||||
f 266 267 271 270
|
||||
f 267 268 272 271
|
||||
f 268 265 269 272
|
||||
f 273 276 275 274
|
||||
f 277 278 279 280
|
||||
f 273 274 278 277
|
||||
f 274 275 279 278
|
||||
f 275 276 280 279
|
||||
f 276 273 277 280
|
||||
f 281 284 283 282
|
||||
f 285 286 287 288
|
||||
f 281 282 286 285
|
||||
f 282 283 287 286
|
||||
f 283 284 288 287
|
||||
f 284 281 285 288
|
||||
f 289 292 291 290
|
||||
f 293 294 295 296
|
||||
f 289 290 294 293
|
||||
f 290 291 295 294
|
||||
f 291 292 296 295
|
||||
f 292 289 293 296
|
||||
f 297 300 299 298
|
||||
f 301 302 303 304
|
||||
f 297 298 302 301
|
||||
f 298 299 303 302
|
||||
f 299 300 304 303
|
||||
f 300 297 301 304
|
||||
f 305 308 307 306
|
||||
f 309 310 311 312
|
||||
f 305 306 310 309
|
||||
f 306 307 311 310
|
||||
f 307 308 312 311
|
||||
f 308 305 309 312
|
||||
f 313 316 315 314
|
||||
f 317 318 319 320
|
||||
f 313 314 318 317
|
||||
f 314 315 319 318
|
||||
f 315 316 320 319
|
||||
f 316 313 317 320
|
||||
f 321 324 323 322
|
||||
f 325 326 327 328
|
||||
f 321 322 326 325
|
||||
f 322 323 327 326
|
||||
f 323 324 328 327
|
||||
f 324 321 325 328
|
||||
f 329 332 331 330
|
||||
f 333 334 335 336
|
||||
f 329 330 334 333
|
||||
f 330 331 335 334
|
||||
f 331 332 336 335
|
||||
f 332 329 333 336
|
||||
f 337 340 339 338
|
||||
f 341 342 343 344
|
||||
f 337 338 342 341
|
||||
f 338 339 343 342
|
||||
f 339 340 344 343
|
||||
f 340 337 341 344
|
||||
f 345 348 347 346
|
||||
f 349 350 351 352
|
||||
f 345 346 350 349
|
||||
f 346 347 351 350
|
||||
f 347 348 352 351
|
||||
f 348 345 349 352
|
||||
f 353 356 355 354
|
||||
f 357 358 359 360
|
||||
f 353 354 358 357
|
||||
f 354 355 359 358
|
||||
f 355 356 360 359
|
||||
f 356 353 357 360
|
||||
f 361 364 363 362
|
||||
f 365 366 367 368
|
||||
f 361 362 366 365
|
||||
f 362 363 367 366
|
||||
f 363 364 368 367
|
||||
f 364 361 365 368
|
||||
f 369 372 371 370
|
||||
f 373 374 375 376
|
||||
f 369 370 374 373
|
||||
f 370 371 375 374
|
||||
f 371 372 376 375
|
||||
f 372 369 373 376
|
||||
f 377 380 379 378
|
||||
f 381 382 383 384
|
||||
f 377 378 382 381
|
||||
f 378 379 383 382
|
||||
f 379 380 384 383
|
||||
f 380 377 381 384
|
||||
f 385 388 387 386
|
||||
f 389 390 391 392
|
||||
f 385 386 390 389
|
||||
f 386 387 391 390
|
||||
f 387 388 392 391
|
||||
f 388 385 389 392
|
||||
f 393 396 395 394
|
||||
f 397 398 399 400
|
||||
f 393 394 398 397
|
||||
f 394 395 399 398
|
||||
f 395 396 400 399
|
||||
f 396 393 397 400
|
||||
7838
models/inductor_buck.obj
Normal file
7838
models/inductor_buck.obj
Normal file
File diff suppressed because it is too large
Load diff
13130
models/ldo_ams1117_33.obj
Normal file
13130
models/ldo_ams1117_33.obj
Normal file
File diff suppressed because it is too large
Load diff
1823
models/led_indicator.obj
Normal file
1823
models/led_indicator.obj
Normal file
File diff suppressed because it is too large
Load diff
911
models/mcu_stm32f405.obj
Normal file
911
models/mcu_stm32f405.obj
Normal file
|
|
@ -0,0 +1,911 @@
|
|||
# generated body mesh (LQFP-64_L10.0-W10.0-P0.50-LS12.0-BL) 12.00x12.00x1.20mm, 64 pads
|
||||
v -3.9000 4.9440 0.0000
|
||||
v -3.6000 4.9440 0.0000
|
||||
v -3.6000 6.4440 0.0000
|
||||
v -3.9000 6.4440 0.0000
|
||||
v -3.9000 4.9440 0.1200
|
||||
v -3.6000 4.9440 0.1200
|
||||
v -3.6000 6.4440 0.1200
|
||||
v -3.9000 6.4440 0.1200
|
||||
v -3.4000 4.9440 0.0000
|
||||
v -3.1000 4.9440 0.0000
|
||||
v -3.1000 6.4440 0.0000
|
||||
v -3.4000 6.4440 0.0000
|
||||
v -3.4000 4.9440 0.1200
|
||||
v -3.1000 4.9440 0.1200
|
||||
v -3.1000 6.4440 0.1200
|
||||
v -3.4000 6.4440 0.1200
|
||||
v -2.9000 4.9440 0.0000
|
||||
v -2.6000 4.9440 0.0000
|
||||
v -2.6000 6.4440 0.0000
|
||||
v -2.9000 6.4440 0.0000
|
||||
v -2.9000 4.9440 0.1200
|
||||
v -2.6000 4.9440 0.1200
|
||||
v -2.6000 6.4440 0.1200
|
||||
v -2.9000 6.4440 0.1200
|
||||
v -2.4000 4.9440 0.0000
|
||||
v -2.1000 4.9440 0.0000
|
||||
v -2.1000 6.4440 0.0000
|
||||
v -2.4000 6.4440 0.0000
|
||||
v -2.4000 4.9440 0.1200
|
||||
v -2.1000 4.9440 0.1200
|
||||
v -2.1000 6.4440 0.1200
|
||||
v -2.4000 6.4440 0.1200
|
||||
v -1.9000 4.9440 0.0000
|
||||
v -1.6000 4.9440 0.0000
|
||||
v -1.6000 6.4440 0.0000
|
||||
v -1.9000 6.4440 0.0000
|
||||
v -1.9000 4.9440 0.1200
|
||||
v -1.6000 4.9440 0.1200
|
||||
v -1.6000 6.4440 0.1200
|
||||
v -1.9000 6.4440 0.1200
|
||||
v -1.4000 4.9440 0.0000
|
||||
v -1.1000 4.9440 0.0000
|
||||
v -1.1000 6.4440 0.0000
|
||||
v -1.4000 6.4440 0.0000
|
||||
v -1.4000 4.9440 0.1200
|
||||
v -1.1000 4.9440 0.1200
|
||||
v -1.1000 6.4440 0.1200
|
||||
v -1.4000 6.4440 0.1200
|
||||
v -0.9000 4.9440 0.0000
|
||||
v -0.6000 4.9440 0.0000
|
||||
v -0.6000 6.4440 0.0000
|
||||
v -0.9000 6.4440 0.0000
|
||||
v -0.9000 4.9440 0.1200
|
||||
v -0.6000 4.9440 0.1200
|
||||
v -0.6000 6.4440 0.1200
|
||||
v -0.9000 6.4440 0.1200
|
||||
v -0.4000 4.9440 0.0000
|
||||
v -0.1000 4.9440 0.0000
|
||||
v -0.1000 6.4440 0.0000
|
||||
v -0.4000 6.4440 0.0000
|
||||
v -0.4000 4.9440 0.1200
|
||||
v -0.1000 4.9440 0.1200
|
||||
v -0.1000 6.4440 0.1200
|
||||
v -0.4000 6.4440 0.1200
|
||||
v 0.1000 4.9440 0.0000
|
||||
v 0.4000 4.9440 0.0000
|
||||
v 0.4000 6.4440 0.0000
|
||||
v 0.1000 6.4440 0.0000
|
||||
v 0.1000 4.9440 0.1200
|
||||
v 0.4000 4.9440 0.1200
|
||||
v 0.4000 6.4440 0.1200
|
||||
v 0.1000 6.4440 0.1200
|
||||
v 0.6000 4.9440 0.0000
|
||||
v 0.9000 4.9440 0.0000
|
||||
v 0.9000 6.4440 0.0000
|
||||
v 0.6000 6.4440 0.0000
|
||||
v 0.6000 4.9440 0.1200
|
||||
v 0.9000 4.9440 0.1200
|
||||
v 0.9000 6.4440 0.1200
|
||||
v 0.6000 6.4440 0.1200
|
||||
v 1.1000 4.9440 0.0000
|
||||
v 1.4000 4.9440 0.0000
|
||||
v 1.4000 6.4440 0.0000
|
||||
v 1.1000 6.4440 0.0000
|
||||
v 1.1000 4.9440 0.1200
|
||||
v 1.4000 4.9440 0.1200
|
||||
v 1.4000 6.4440 0.1200
|
||||
v 1.1000 6.4440 0.1200
|
||||
v 1.6000 4.9440 0.0000
|
||||
v 1.9000 4.9440 0.0000
|
||||
v 1.9000 6.4440 0.0000
|
||||
v 1.6000 6.4440 0.0000
|
||||
v 1.6000 4.9440 0.1200
|
||||
v 1.9000 4.9440 0.1200
|
||||
v 1.9000 6.4440 0.1200
|
||||
v 1.6000 6.4440 0.1200
|
||||
v 2.1000 4.9440 0.0000
|
||||
v 2.4000 4.9440 0.0000
|
||||
v 2.4000 6.4440 0.0000
|
||||
v 2.1000 6.4440 0.0000
|
||||
v 2.1000 4.9440 0.1200
|
||||
v 2.4000 4.9440 0.1200
|
||||
v 2.4000 6.4440 0.1200
|
||||
v 2.1000 6.4440 0.1200
|
||||
v 2.6000 4.9440 0.0000
|
||||
v 2.9000 4.9440 0.0000
|
||||
v 2.9000 6.4440 0.0000
|
||||
v 2.6000 6.4440 0.0000
|
||||
v 2.6000 4.9440 0.1200
|
||||
v 2.9000 4.9440 0.1200
|
||||
v 2.9000 6.4440 0.1200
|
||||
v 2.6000 6.4440 0.1200
|
||||
v 3.1000 4.9440 0.0000
|
||||
v 3.4000 4.9440 0.0000
|
||||
v 3.4000 6.4440 0.0000
|
||||
v 3.1000 6.4440 0.0000
|
||||
v 3.1000 4.9440 0.1200
|
||||
v 3.4000 4.9440 0.1200
|
||||
v 3.4000 6.4440 0.1200
|
||||
v 3.1000 6.4440 0.1200
|
||||
v 3.6000 4.9440 0.0000
|
||||
v 3.9000 4.9440 0.0000
|
||||
v 3.9000 6.4440 0.0000
|
||||
v 3.6000 6.4440 0.0000
|
||||
v 3.6000 4.9440 0.1200
|
||||
v 3.9000 4.9440 0.1200
|
||||
v 3.9000 6.4440 0.1200
|
||||
v 3.6000 6.4440 0.1200
|
||||
v 4.9500 3.5940 0.0000
|
||||
v 6.4500 3.5940 0.0000
|
||||
v 6.4500 3.8940 0.0000
|
||||
v 4.9500 3.8940 0.0000
|
||||
v 4.9500 3.5940 0.1200
|
||||
v 6.4500 3.5940 0.1200
|
||||
v 6.4500 3.8940 0.1200
|
||||
v 4.9500 3.8940 0.1200
|
||||
v 4.9500 3.0940 0.0000
|
||||
v 6.4500 3.0940 0.0000
|
||||
v 6.4500 3.3940 0.0000
|
||||
v 4.9500 3.3940 0.0000
|
||||
v 4.9500 3.0940 0.1200
|
||||
v 6.4500 3.0940 0.1200
|
||||
v 6.4500 3.3940 0.1200
|
||||
v 4.9500 3.3940 0.1200
|
||||
v 4.9500 2.5940 0.0000
|
||||
v 6.4500 2.5940 0.0000
|
||||
v 6.4500 2.8940 0.0000
|
||||
v 4.9500 2.8940 0.0000
|
||||
v 4.9500 2.5940 0.1200
|
||||
v 6.4500 2.5940 0.1200
|
||||
v 6.4500 2.8940 0.1200
|
||||
v 4.9500 2.8940 0.1200
|
||||
v 4.9500 2.0940 0.0000
|
||||
v 6.4500 2.0940 0.0000
|
||||
v 6.4500 2.3940 0.0000
|
||||
v 4.9500 2.3940 0.0000
|
||||
v 4.9500 2.0940 0.1200
|
||||
v 6.4500 2.0940 0.1200
|
||||
v 6.4500 2.3940 0.1200
|
||||
v 4.9500 2.3940 0.1200
|
||||
v 4.9500 1.5940 0.0000
|
||||
v 6.4500 1.5940 0.0000
|
||||
v 6.4500 1.8940 0.0000
|
||||
v 4.9500 1.8940 0.0000
|
||||
v 4.9500 1.5940 0.1200
|
||||
v 6.4500 1.5940 0.1200
|
||||
v 6.4500 1.8940 0.1200
|
||||
v 4.9500 1.8940 0.1200
|
||||
v 4.9500 1.0940 0.0000
|
||||
v 6.4500 1.0940 0.0000
|
||||
v 6.4500 1.3940 0.0000
|
||||
v 4.9500 1.3940 0.0000
|
||||
v 4.9500 1.0940 0.1200
|
||||
v 6.4500 1.0940 0.1200
|
||||
v 6.4500 1.3940 0.1200
|
||||
v 4.9500 1.3940 0.1200
|
||||
v 4.9500 0.5940 0.0000
|
||||
v 6.4500 0.5940 0.0000
|
||||
v 6.4500 0.8940 0.0000
|
||||
v 4.9500 0.8940 0.0000
|
||||
v 4.9500 0.5940 0.1200
|
||||
v 6.4500 0.5940 0.1200
|
||||
v 6.4500 0.8940 0.1200
|
||||
v 4.9500 0.8940 0.1200
|
||||
v 4.9500 0.0940 0.0000
|
||||
v 6.4500 0.0940 0.0000
|
||||
v 6.4500 0.3940 0.0000
|
||||
v 4.9500 0.3940 0.0000
|
||||
v 4.9500 0.0940 0.1200
|
||||
v 6.4500 0.0940 0.1200
|
||||
v 6.4500 0.3940 0.1200
|
||||
v 4.9500 0.3940 0.1200
|
||||
v 4.9500 -0.4060 0.0000
|
||||
v 6.4500 -0.4060 0.0000
|
||||
v 6.4500 -0.1060 0.0000
|
||||
v 4.9500 -0.1060 0.0000
|
||||
v 4.9500 -0.4060 0.1200
|
||||
v 6.4500 -0.4060 0.1200
|
||||
v 6.4500 -0.1060 0.1200
|
||||
v 4.9500 -0.1060 0.1200
|
||||
v 4.9500 -0.9060 0.0000
|
||||
v 6.4500 -0.9060 0.0000
|
||||
v 6.4500 -0.6060 0.0000
|
||||
v 4.9500 -0.6060 0.0000
|
||||
v 4.9500 -0.9060 0.1200
|
||||
v 6.4500 -0.9060 0.1200
|
||||
v 6.4500 -0.6060 0.1200
|
||||
v 4.9500 -0.6060 0.1200
|
||||
v 4.9500 -1.4060 0.0000
|
||||
v 6.4500 -1.4060 0.0000
|
||||
v 6.4500 -1.1060 0.0000
|
||||
v 4.9500 -1.1060 0.0000
|
||||
v 4.9500 -1.4060 0.1200
|
||||
v 6.4500 -1.4060 0.1200
|
||||
v 6.4500 -1.1060 0.1200
|
||||
v 4.9500 -1.1060 0.1200
|
||||
v 4.9500 -1.9060 0.0000
|
||||
v 6.4500 -1.9060 0.0000
|
||||
v 6.4500 -1.6060 0.0000
|
||||
v 4.9500 -1.6060 0.0000
|
||||
v 4.9500 -1.9060 0.1200
|
||||
v 6.4500 -1.9060 0.1200
|
||||
v 6.4500 -1.6060 0.1200
|
||||
v 4.9500 -1.6060 0.1200
|
||||
v 4.9500 -2.4060 0.0000
|
||||
v 6.4500 -2.4060 0.0000
|
||||
v 6.4500 -2.1060 0.0000
|
||||
v 4.9500 -2.1060 0.0000
|
||||
v 4.9500 -2.4060 0.1200
|
||||
v 6.4500 -2.4060 0.1200
|
||||
v 6.4500 -2.1060 0.1200
|
||||
v 4.9500 -2.1060 0.1200
|
||||
v 4.9500 -2.9060 0.0000
|
||||
v 6.4500 -2.9060 0.0000
|
||||
v 6.4500 -2.6060 0.0000
|
||||
v 4.9500 -2.6060 0.0000
|
||||
v 4.9500 -2.9060 0.1200
|
||||
v 6.4500 -2.9060 0.1200
|
||||
v 6.4500 -2.6060 0.1200
|
||||
v 4.9500 -2.6060 0.1200
|
||||
v 4.9500 -3.4060 0.0000
|
||||
v 6.4500 -3.4060 0.0000
|
||||
v 6.4500 -3.1060 0.0000
|
||||
v 4.9500 -3.1060 0.0000
|
||||
v 4.9500 -3.4060 0.1200
|
||||
v 6.4500 -3.4060 0.1200
|
||||
v 6.4500 -3.1060 0.1200
|
||||
v 4.9500 -3.1060 0.1200
|
||||
v 4.9500 -3.9060 0.0000
|
||||
v 6.4500 -3.9060 0.0000
|
||||
v 6.4500 -3.6060 0.0000
|
||||
v 4.9500 -3.6060 0.0000
|
||||
v 4.9500 -3.9060 0.1200
|
||||
v 6.4500 -3.9060 0.1200
|
||||
v 6.4500 -3.6060 0.1200
|
||||
v 4.9500 -3.6060 0.1200
|
||||
v 3.6000 -6.4320 0.0000
|
||||
v 3.9000 -6.4320 0.0000
|
||||
v 3.9000 -4.9320 0.0000
|
||||
v 3.6000 -4.9320 0.0000
|
||||
v 3.6000 -6.4320 0.1200
|
||||
v 3.9000 -6.4320 0.1200
|
||||
v 3.9000 -4.9320 0.1200
|
||||
v 3.6000 -4.9320 0.1200
|
||||
v 3.1000 -6.4320 0.0000
|
||||
v 3.4000 -6.4320 0.0000
|
||||
v 3.4000 -4.9320 0.0000
|
||||
v 3.1000 -4.9320 0.0000
|
||||
v 3.1000 -6.4320 0.1200
|
||||
v 3.4000 -6.4320 0.1200
|
||||
v 3.4000 -4.9320 0.1200
|
||||
v 3.1000 -4.9320 0.1200
|
||||
v 2.6000 -6.4320 0.0000
|
||||
v 2.9000 -6.4320 0.0000
|
||||
v 2.9000 -4.9320 0.0000
|
||||
v 2.6000 -4.9320 0.0000
|
||||
v 2.6000 -6.4320 0.1200
|
||||
v 2.9000 -6.4320 0.1200
|
||||
v 2.9000 -4.9320 0.1200
|
||||
v 2.6000 -4.9320 0.1200
|
||||
v 2.1000 -6.4320 0.0000
|
||||
v 2.4000 -6.4320 0.0000
|
||||
v 2.4000 -4.9320 0.0000
|
||||
v 2.1000 -4.9320 0.0000
|
||||
v 2.1000 -6.4320 0.1200
|
||||
v 2.4000 -6.4320 0.1200
|
||||
v 2.4000 -4.9320 0.1200
|
||||
v 2.1000 -4.9320 0.1200
|
||||
v 1.6000 -6.4320 0.0000
|
||||
v 1.9000 -6.4320 0.0000
|
||||
v 1.9000 -4.9320 0.0000
|
||||
v 1.6000 -4.9320 0.0000
|
||||
v 1.6000 -6.4320 0.1200
|
||||
v 1.9000 -6.4320 0.1200
|
||||
v 1.9000 -4.9320 0.1200
|
||||
v 1.6000 -4.9320 0.1200
|
||||
v 1.1000 -6.4320 0.0000
|
||||
v 1.4000 -6.4320 0.0000
|
||||
v 1.4000 -4.9320 0.0000
|
||||
v 1.1000 -4.9320 0.0000
|
||||
v 1.1000 -6.4320 0.1200
|
||||
v 1.4000 -6.4320 0.1200
|
||||
v 1.4000 -4.9320 0.1200
|
||||
v 1.1000 -4.9320 0.1200
|
||||
v 0.6000 -6.4320 0.0000
|
||||
v 0.9000 -6.4320 0.0000
|
||||
v 0.9000 -4.9320 0.0000
|
||||
v 0.6000 -4.9320 0.0000
|
||||
v 0.6000 -6.4320 0.1200
|
||||
v 0.9000 -6.4320 0.1200
|
||||
v 0.9000 -4.9320 0.1200
|
||||
v 0.6000 -4.9320 0.1200
|
||||
v 0.1000 -6.4320 0.0000
|
||||
v 0.4000 -6.4320 0.0000
|
||||
v 0.4000 -4.9320 0.0000
|
||||
v 0.1000 -4.9320 0.0000
|
||||
v 0.1000 -6.4320 0.1200
|
||||
v 0.4000 -6.4320 0.1200
|
||||
v 0.4000 -4.9320 0.1200
|
||||
v 0.1000 -4.9320 0.1200
|
||||
v -0.4000 -6.4320 0.0000
|
||||
v -0.1000 -6.4320 0.0000
|
||||
v -0.1000 -4.9320 0.0000
|
||||
v -0.4000 -4.9320 0.0000
|
||||
v -0.4000 -6.4320 0.1200
|
||||
v -0.1000 -6.4320 0.1200
|
||||
v -0.1000 -4.9320 0.1200
|
||||
v -0.4000 -4.9320 0.1200
|
||||
v -0.9000 -6.4320 0.0000
|
||||
v -0.6000 -6.4320 0.0000
|
||||
v -0.6000 -4.9320 0.0000
|
||||
v -0.9000 -4.9320 0.0000
|
||||
v -0.9000 -6.4320 0.1200
|
||||
v -0.6000 -6.4320 0.1200
|
||||
v -0.6000 -4.9320 0.1200
|
||||
v -0.9000 -4.9320 0.1200
|
||||
v -1.4000 -6.4320 0.0000
|
||||
v -1.1000 -6.4320 0.0000
|
||||
v -1.1000 -4.9320 0.0000
|
||||
v -1.4000 -4.9320 0.0000
|
||||
v -1.4000 -6.4320 0.1200
|
||||
v -1.1000 -6.4320 0.1200
|
||||
v -1.1000 -4.9320 0.1200
|
||||
v -1.4000 -4.9320 0.1200
|
||||
v -1.9000 -6.4320 0.0000
|
||||
v -1.6000 -6.4320 0.0000
|
||||
v -1.6000 -4.9320 0.0000
|
||||
v -1.9000 -4.9320 0.0000
|
||||
v -1.9000 -6.4320 0.1200
|
||||
v -1.6000 -6.4320 0.1200
|
||||
v -1.6000 -4.9320 0.1200
|
||||
v -1.9000 -4.9320 0.1200
|
||||
v -2.4000 -6.4320 0.0000
|
||||
v -2.1000 -6.4320 0.0000
|
||||
v -2.1000 -4.9320 0.0000
|
||||
v -2.4000 -4.9320 0.0000
|
||||
v -2.4000 -6.4320 0.1200
|
||||
v -2.1000 -6.4320 0.1200
|
||||
v -2.1000 -4.9320 0.1200
|
||||
v -2.4000 -4.9320 0.1200
|
||||
v -2.9000 -6.4320 0.0000
|
||||
v -2.6000 -6.4320 0.0000
|
||||
v -2.6000 -4.9320 0.0000
|
||||
v -2.9000 -4.9320 0.0000
|
||||
v -2.9000 -6.4320 0.1200
|
||||
v -2.6000 -6.4320 0.1200
|
||||
v -2.6000 -4.9320 0.1200
|
||||
v -2.9000 -4.9320 0.1200
|
||||
v -3.4000 -6.4320 0.0000
|
||||
v -3.1000 -6.4320 0.0000
|
||||
v -3.1000 -4.9320 0.0000
|
||||
v -3.4000 -4.9320 0.0000
|
||||
v -3.4000 -6.4320 0.1200
|
||||
v -3.1000 -6.4320 0.1200
|
||||
v -3.1000 -4.9320 0.1200
|
||||
v -3.4000 -4.9320 0.1200
|
||||
v -3.9000 -6.4320 0.0000
|
||||
v -3.6000 -6.4320 0.0000
|
||||
v -3.6000 -4.9320 0.0000
|
||||
v -3.9000 -4.9320 0.0000
|
||||
v -3.9000 -6.4320 0.1200
|
||||
v -3.6000 -6.4320 0.1200
|
||||
v -3.6000 -4.9320 0.1200
|
||||
v -3.9000 -4.9320 0.1200
|
||||
v -6.4500 -3.9060 0.0000
|
||||
v -4.9500 -3.9060 0.0000
|
||||
v -4.9500 -3.6060 0.0000
|
||||
v -6.4500 -3.6060 0.0000
|
||||
v -6.4500 -3.9060 0.1200
|
||||
v -4.9500 -3.9060 0.1200
|
||||
v -4.9500 -3.6060 0.1200
|
||||
v -6.4500 -3.6060 0.1200
|
||||
v -6.4500 -3.4060 0.0000
|
||||
v -4.9500 -3.4060 0.0000
|
||||
v -4.9500 -3.1060 0.0000
|
||||
v -6.4500 -3.1060 0.0000
|
||||
v -6.4500 -3.4060 0.1200
|
||||
v -4.9500 -3.4060 0.1200
|
||||
v -4.9500 -3.1060 0.1200
|
||||
v -6.4500 -3.1060 0.1200
|
||||
v -6.4500 -2.9060 0.0000
|
||||
v -4.9500 -2.9060 0.0000
|
||||
v -4.9500 -2.6060 0.0000
|
||||
v -6.4500 -2.6060 0.0000
|
||||
v -6.4500 -2.9060 0.1200
|
||||
v -4.9500 -2.9060 0.1200
|
||||
v -4.9500 -2.6060 0.1200
|
||||
v -6.4500 -2.6060 0.1200
|
||||
v -6.4500 -2.4060 0.0000
|
||||
v -4.9500 -2.4060 0.0000
|
||||
v -4.9500 -2.1060 0.0000
|
||||
v -6.4500 -2.1060 0.0000
|
||||
v -6.4500 -2.4060 0.1200
|
||||
v -4.9500 -2.4060 0.1200
|
||||
v -4.9500 -2.1060 0.1200
|
||||
v -6.4500 -2.1060 0.1200
|
||||
v -6.4500 -1.9060 0.0000
|
||||
v -4.9500 -1.9060 0.0000
|
||||
v -4.9500 -1.6060 0.0000
|
||||
v -6.4500 -1.6060 0.0000
|
||||
v -6.4500 -1.9060 0.1200
|
||||
v -4.9500 -1.9060 0.1200
|
||||
v -4.9500 -1.6060 0.1200
|
||||
v -6.4500 -1.6060 0.1200
|
||||
v -6.4500 -1.4060 0.0000
|
||||
v -4.9500 -1.4060 0.0000
|
||||
v -4.9500 -1.1060 0.0000
|
||||
v -6.4500 -1.1060 0.0000
|
||||
v -6.4500 -1.4060 0.1200
|
||||
v -4.9500 -1.4060 0.1200
|
||||
v -4.9500 -1.1060 0.1200
|
||||
v -6.4500 -1.1060 0.1200
|
||||
v -6.4500 -0.9060 0.0000
|
||||
v -4.9500 -0.9060 0.0000
|
||||
v -4.9500 -0.6060 0.0000
|
||||
v -6.4500 -0.6060 0.0000
|
||||
v -6.4500 -0.9060 0.1200
|
||||
v -4.9500 -0.9060 0.1200
|
||||
v -4.9500 -0.6060 0.1200
|
||||
v -6.4500 -0.6060 0.1200
|
||||
v -6.4500 -0.4060 0.0000
|
||||
v -4.9500 -0.4060 0.0000
|
||||
v -4.9500 -0.1060 0.0000
|
||||
v -6.4500 -0.1060 0.0000
|
||||
v -6.4500 -0.4060 0.1200
|
||||
v -4.9500 -0.4060 0.1200
|
||||
v -4.9500 -0.1060 0.1200
|
||||
v -6.4500 -0.1060 0.1200
|
||||
v -6.4500 0.0940 0.0000
|
||||
v -4.9500 0.0940 0.0000
|
||||
v -4.9500 0.3940 0.0000
|
||||
v -6.4500 0.3940 0.0000
|
||||
v -6.4500 0.0940 0.1200
|
||||
v -4.9500 0.0940 0.1200
|
||||
v -4.9500 0.3940 0.1200
|
||||
v -6.4500 0.3940 0.1200
|
||||
v -6.4500 0.5940 0.0000
|
||||
v -4.9500 0.5940 0.0000
|
||||
v -4.9500 0.8940 0.0000
|
||||
v -6.4500 0.8940 0.0000
|
||||
v -6.4500 0.5940 0.1200
|
||||
v -4.9500 0.5940 0.1200
|
||||
v -4.9500 0.8940 0.1200
|
||||
v -6.4500 0.8940 0.1200
|
||||
v -6.4500 1.0940 0.0000
|
||||
v -4.9500 1.0940 0.0000
|
||||
v -4.9500 1.3940 0.0000
|
||||
v -6.4500 1.3940 0.0000
|
||||
v -6.4500 1.0940 0.1200
|
||||
v -4.9500 1.0940 0.1200
|
||||
v -4.9500 1.3940 0.1200
|
||||
v -6.4500 1.3940 0.1200
|
||||
v -6.4500 1.5940 0.0000
|
||||
v -4.9500 1.5940 0.0000
|
||||
v -4.9500 1.8940 0.0000
|
||||
v -6.4500 1.8940 0.0000
|
||||
v -6.4500 1.5940 0.1200
|
||||
v -4.9500 1.5940 0.1200
|
||||
v -4.9500 1.8940 0.1200
|
||||
v -6.4500 1.8940 0.1200
|
||||
v -6.4500 2.0940 0.0000
|
||||
v -4.9500 2.0940 0.0000
|
||||
v -4.9500 2.3940 0.0000
|
||||
v -6.4500 2.3940 0.0000
|
||||
v -6.4500 2.0940 0.1200
|
||||
v -4.9500 2.0940 0.1200
|
||||
v -4.9500 2.3940 0.1200
|
||||
v -6.4500 2.3940 0.1200
|
||||
v -6.4500 2.5940 0.0000
|
||||
v -4.9500 2.5940 0.0000
|
||||
v -4.9500 2.8940 0.0000
|
||||
v -6.4500 2.8940 0.0000
|
||||
v -6.4500 2.5940 0.1200
|
||||
v -4.9500 2.5940 0.1200
|
||||
v -4.9500 2.8940 0.1200
|
||||
v -6.4500 2.8940 0.1200
|
||||
v -6.4500 3.0940 0.0000
|
||||
v -4.9500 3.0940 0.0000
|
||||
v -4.9500 3.3940 0.0000
|
||||
v -6.4500 3.3940 0.0000
|
||||
v -6.4500 3.0940 0.1200
|
||||
v -4.9500 3.0940 0.1200
|
||||
v -4.9500 3.3940 0.1200
|
||||
v -6.4500 3.3940 0.1200
|
||||
v -6.4500 3.5940 0.0000
|
||||
v -4.9500 3.5940 0.0000
|
||||
v -4.9500 3.8940 0.0000
|
||||
v -6.4500 3.8940 0.0000
|
||||
v -6.4500 3.5940 0.1200
|
||||
v -4.9500 3.5940 0.1200
|
||||
v -4.9500 3.8940 0.1200
|
||||
v -6.4500 3.8940 0.1200
|
||||
v -6.0000 -6.0000 0.1000
|
||||
v 6.0000 -6.0000 0.1000
|
||||
v 6.0000 6.0000 0.1000
|
||||
v -6.0000 6.0000 0.1000
|
||||
v -6.0000 -6.0000 1.3000
|
||||
v 6.0000 -6.0000 1.3000
|
||||
v 6.0000 6.0000 1.3000
|
||||
v -6.0000 6.0000 1.3000
|
||||
f 1 4 3 2
|
||||
f 5 6 7 8
|
||||
f 1 2 6 5
|
||||
f 2 3 7 6
|
||||
f 3 4 8 7
|
||||
f 4 1 5 8
|
||||
f 9 12 11 10
|
||||
f 13 14 15 16
|
||||
f 9 10 14 13
|
||||
f 10 11 15 14
|
||||
f 11 12 16 15
|
||||
f 12 9 13 16
|
||||
f 17 20 19 18
|
||||
f 21 22 23 24
|
||||
f 17 18 22 21
|
||||
f 18 19 23 22
|
||||
f 19 20 24 23
|
||||
f 20 17 21 24
|
||||
f 25 28 27 26
|
||||
f 29 30 31 32
|
||||
f 25 26 30 29
|
||||
f 26 27 31 30
|
||||
f 27 28 32 31
|
||||
f 28 25 29 32
|
||||
f 33 36 35 34
|
||||
f 37 38 39 40
|
||||
f 33 34 38 37
|
||||
f 34 35 39 38
|
||||
f 35 36 40 39
|
||||
f 36 33 37 40
|
||||
f 41 44 43 42
|
||||
f 45 46 47 48
|
||||
f 41 42 46 45
|
||||
f 42 43 47 46
|
||||
f 43 44 48 47
|
||||
f 44 41 45 48
|
||||
f 49 52 51 50
|
||||
f 53 54 55 56
|
||||
f 49 50 54 53
|
||||
f 50 51 55 54
|
||||
f 51 52 56 55
|
||||
f 52 49 53 56
|
||||
f 57 60 59 58
|
||||
f 61 62 63 64
|
||||
f 57 58 62 61
|
||||
f 58 59 63 62
|
||||
f 59 60 64 63
|
||||
f 60 57 61 64
|
||||
f 65 68 67 66
|
||||
f 69 70 71 72
|
||||
f 65 66 70 69
|
||||
f 66 67 71 70
|
||||
f 67 68 72 71
|
||||
f 68 65 69 72
|
||||
f 73 76 75 74
|
||||
f 77 78 79 80
|
||||
f 73 74 78 77
|
||||
f 74 75 79 78
|
||||
f 75 76 80 79
|
||||
f 76 73 77 80
|
||||
f 81 84 83 82
|
||||
f 85 86 87 88
|
||||
f 81 82 86 85
|
||||
f 82 83 87 86
|
||||
f 83 84 88 87
|
||||
f 84 81 85 88
|
||||
f 89 92 91 90
|
||||
f 93 94 95 96
|
||||
f 89 90 94 93
|
||||
f 90 91 95 94
|
||||
f 91 92 96 95
|
||||
f 92 89 93 96
|
||||
f 97 100 99 98
|
||||
f 101 102 103 104
|
||||
f 97 98 102 101
|
||||
f 98 99 103 102
|
||||
f 99 100 104 103
|
||||
f 100 97 101 104
|
||||
f 105 108 107 106
|
||||
f 109 110 111 112
|
||||
f 105 106 110 109
|
||||
f 106 107 111 110
|
||||
f 107 108 112 111
|
||||
f 108 105 109 112
|
||||
f 113 116 115 114
|
||||
f 117 118 119 120
|
||||
f 113 114 118 117
|
||||
f 114 115 119 118
|
||||
f 115 116 120 119
|
||||
f 116 113 117 120
|
||||
f 121 124 123 122
|
||||
f 125 126 127 128
|
||||
f 121 122 126 125
|
||||
f 122 123 127 126
|
||||
f 123 124 128 127
|
||||
f 124 121 125 128
|
||||
f 129 132 131 130
|
||||
f 133 134 135 136
|
||||
f 129 130 134 133
|
||||
f 130 131 135 134
|
||||
f 131 132 136 135
|
||||
f 132 129 133 136
|
||||
f 137 140 139 138
|
||||
f 141 142 143 144
|
||||
f 137 138 142 141
|
||||
f 138 139 143 142
|
||||
f 139 140 144 143
|
||||
f 140 137 141 144
|
||||
f 145 148 147 146
|
||||
f 149 150 151 152
|
||||
f 145 146 150 149
|
||||
f 146 147 151 150
|
||||
f 147 148 152 151
|
||||
f 148 145 149 152
|
||||
f 153 156 155 154
|
||||
f 157 158 159 160
|
||||
f 153 154 158 157
|
||||
f 154 155 159 158
|
||||
f 155 156 160 159
|
||||
f 156 153 157 160
|
||||
f 161 164 163 162
|
||||
f 165 166 167 168
|
||||
f 161 162 166 165
|
||||
f 162 163 167 166
|
||||
f 163 164 168 167
|
||||
f 164 161 165 168
|
||||
f 169 172 171 170
|
||||
f 173 174 175 176
|
||||
f 169 170 174 173
|
||||
f 170 171 175 174
|
||||
f 171 172 176 175
|
||||
f 172 169 173 176
|
||||
f 177 180 179 178
|
||||
f 181 182 183 184
|
||||
f 177 178 182 181
|
||||
f 178 179 183 182
|
||||
f 179 180 184 183
|
||||
f 180 177 181 184
|
||||
f 185 188 187 186
|
||||
f 189 190 191 192
|
||||
f 185 186 190 189
|
||||
f 186 187 191 190
|
||||
f 187 188 192 191
|
||||
f 188 185 189 192
|
||||
f 193 196 195 194
|
||||
f 197 198 199 200
|
||||
f 193 194 198 197
|
||||
f 194 195 199 198
|
||||
f 195 196 200 199
|
||||
f 196 193 197 200
|
||||
f 201 204 203 202
|
||||
f 205 206 207 208
|
||||
f 201 202 206 205
|
||||
f 202 203 207 206
|
||||
f 203 204 208 207
|
||||
f 204 201 205 208
|
||||
f 209 212 211 210
|
||||
f 213 214 215 216
|
||||
f 209 210 214 213
|
||||
f 210 211 215 214
|
||||
f 211 212 216 215
|
||||
f 212 209 213 216
|
||||
f 217 220 219 218
|
||||
f 221 222 223 224
|
||||
f 217 218 222 221
|
||||
f 218 219 223 222
|
||||
f 219 220 224 223
|
||||
f 220 217 221 224
|
||||
f 225 228 227 226
|
||||
f 229 230 231 232
|
||||
f 225 226 230 229
|
||||
f 226 227 231 230
|
||||
f 227 228 232 231
|
||||
f 228 225 229 232
|
||||
f 233 236 235 234
|
||||
f 237 238 239 240
|
||||
f 233 234 238 237
|
||||
f 234 235 239 238
|
||||
f 235 236 240 239
|
||||
f 236 233 237 240
|
||||
f 241 244 243 242
|
||||
f 245 246 247 248
|
||||
f 241 242 246 245
|
||||
f 242 243 247 246
|
||||
f 243 244 248 247
|
||||
f 244 241 245 248
|
||||
f 249 252 251 250
|
||||
f 253 254 255 256
|
||||
f 249 250 254 253
|
||||
f 250 251 255 254
|
||||
f 251 252 256 255
|
||||
f 252 249 253 256
|
||||
f 257 260 259 258
|
||||
f 261 262 263 264
|
||||
f 257 258 262 261
|
||||
f 258 259 263 262
|
||||
f 259 260 264 263
|
||||
f 260 257 261 264
|
||||
f 265 268 267 266
|
||||
f 269 270 271 272
|
||||
f 265 266 270 269
|
||||
f 266 267 271 270
|
||||
f 267 268 272 271
|
||||
f 268 265 269 272
|
||||
f 273 276 275 274
|
||||
f 277 278 279 280
|
||||
f 273 274 278 277
|
||||
f 274 275 279 278
|
||||
f 275 276 280 279
|
||||
f 276 273 277 280
|
||||
f 281 284 283 282
|
||||
f 285 286 287 288
|
||||
f 281 282 286 285
|
||||
f 282 283 287 286
|
||||
f 283 284 288 287
|
||||
f 284 281 285 288
|
||||
f 289 292 291 290
|
||||
f 293 294 295 296
|
||||
f 289 290 294 293
|
||||
f 290 291 295 294
|
||||
f 291 292 296 295
|
||||
f 292 289 293 296
|
||||
f 297 300 299 298
|
||||
f 301 302 303 304
|
||||
f 297 298 302 301
|
||||
f 298 299 303 302
|
||||
f 299 300 304 303
|
||||
f 300 297 301 304
|
||||
f 305 308 307 306
|
||||
f 309 310 311 312
|
||||
f 305 306 310 309
|
||||
f 306 307 311 310
|
||||
f 307 308 312 311
|
||||
f 308 305 309 312
|
||||
f 313 316 315 314
|
||||
f 317 318 319 320
|
||||
f 313 314 318 317
|
||||
f 314 315 319 318
|
||||
f 315 316 320 319
|
||||
f 316 313 317 320
|
||||
f 321 324 323 322
|
||||
f 325 326 327 328
|
||||
f 321 322 326 325
|
||||
f 322 323 327 326
|
||||
f 323 324 328 327
|
||||
f 324 321 325 328
|
||||
f 329 332 331 330
|
||||
f 333 334 335 336
|
||||
f 329 330 334 333
|
||||
f 330 331 335 334
|
||||
f 331 332 336 335
|
||||
f 332 329 333 336
|
||||
f 337 340 339 338
|
||||
f 341 342 343 344
|
||||
f 337 338 342 341
|
||||
f 338 339 343 342
|
||||
f 339 340 344 343
|
||||
f 340 337 341 344
|
||||
f 345 348 347 346
|
||||
f 349 350 351 352
|
||||
f 345 346 350 349
|
||||
f 346 347 351 350
|
||||
f 347 348 352 351
|
||||
f 348 345 349 352
|
||||
f 353 356 355 354
|
||||
f 357 358 359 360
|
||||
f 353 354 358 357
|
||||
f 354 355 359 358
|
||||
f 355 356 360 359
|
||||
f 356 353 357 360
|
||||
f 361 364 363 362
|
||||
f 365 366 367 368
|
||||
f 361 362 366 365
|
||||
f 362 363 367 366
|
||||
f 363 364 368 367
|
||||
f 364 361 365 368
|
||||
f 369 372 371 370
|
||||
f 373 374 375 376
|
||||
f 369 370 374 373
|
||||
f 370 371 375 374
|
||||
f 371 372 376 375
|
||||
f 372 369 373 376
|
||||
f 377 380 379 378
|
||||
f 381 382 383 384
|
||||
f 377 378 382 381
|
||||
f 378 379 383 382
|
||||
f 379 380 384 383
|
||||
f 380 377 381 384
|
||||
f 385 388 387 386
|
||||
f 389 390 391 392
|
||||
f 385 386 390 389
|
||||
f 386 387 391 390
|
||||
f 387 388 392 391
|
||||
f 388 385 389 392
|
||||
f 393 396 395 394
|
||||
f 397 398 399 400
|
||||
f 393 394 398 397
|
||||
f 394 395 399 398
|
||||
f 395 396 400 399
|
||||
f 396 393 397 400
|
||||
f 401 404 403 402
|
||||
f 405 406 407 408
|
||||
f 401 402 406 405
|
||||
f 402 403 407 406
|
||||
f 403 404 408 407
|
||||
f 404 401 405 408
|
||||
f 409 412 411 410
|
||||
f 413 414 415 416
|
||||
f 409 410 414 413
|
||||
f 410 411 415 414
|
||||
f 411 412 416 415
|
||||
f 412 409 413 416
|
||||
f 417 420 419 418
|
||||
f 421 422 423 424
|
||||
f 417 418 422 421
|
||||
f 418 419 423 422
|
||||
f 419 420 424 423
|
||||
f 420 417 421 424
|
||||
f 425 428 427 426
|
||||
f 429 430 431 432
|
||||
f 425 426 430 429
|
||||
f 426 427 431 430
|
||||
f 427 428 432 431
|
||||
f 428 425 429 432
|
||||
f 433 436 435 434
|
||||
f 437 438 439 440
|
||||
f 433 434 438 437
|
||||
f 434 435 439 438
|
||||
f 435 436 440 439
|
||||
f 436 433 437 440
|
||||
f 441 444 443 442
|
||||
f 445 446 447 448
|
||||
f 441 442 446 445
|
||||
f 442 443 447 446
|
||||
f 443 444 448 447
|
||||
f 444 441 445 448
|
||||
f 449 452 451 450
|
||||
f 453 454 455 456
|
||||
f 449 450 454 453
|
||||
f 450 451 455 454
|
||||
f 451 452 456 455
|
||||
f 452 449 453 456
|
||||
f 457 460 459 458
|
||||
f 461 462 463 464
|
||||
f 457 458 462 461
|
||||
f 458 459 463 462
|
||||
f 459 460 464 463
|
||||
f 460 457 461 464
|
||||
f 465 468 467 466
|
||||
f 469 470 471 472
|
||||
f 465 466 470 469
|
||||
f 466 467 471 470
|
||||
f 467 468 472 471
|
||||
f 468 465 469 472
|
||||
f 473 476 475 474
|
||||
f 477 478 479 480
|
||||
f 473 474 478 477
|
||||
f 474 475 479 478
|
||||
f 475 476 480 479
|
||||
f 476 473 477 480
|
||||
f 481 484 483 482
|
||||
f 485 486 487 488
|
||||
f 481 482 486 485
|
||||
f 482 483 487 486
|
||||
f 483 484 488 487
|
||||
f 484 481 485 488
|
||||
f 489 492 491 490
|
||||
f 493 494 495 496
|
||||
f 489 490 494 493
|
||||
f 490 491 495 494
|
||||
f 491 492 496 495
|
||||
f 492 489 493 496
|
||||
f 497 500 499 498
|
||||
f 501 502 503 504
|
||||
f 497 498 502 501
|
||||
f 498 499 503 502
|
||||
f 499 500 504 503
|
||||
f 500 497 501 504
|
||||
f 505 508 507 506
|
||||
f 509 510 511 512
|
||||
f 505 506 510 509
|
||||
f 506 507 511 510
|
||||
f 507 508 512 511
|
||||
f 508 505 509 512
|
||||
f 513 516 515 514
|
||||
f 517 518 519 520
|
||||
f 513 514 518 517
|
||||
f 514 515 519 518
|
||||
f 515 516 520 519
|
||||
f 516 513 517 520
|
||||
127
models/ne555_timer.obj
Normal file
127
models/ne555_timer.obj
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
# generated body mesh (SOIC-8_L4.9-W3.9-P1.27-LS6.0-BL) 4.90x6.00x1.70mm, 8 pads
|
||||
v 1.6110 -3.5925 0.0000
|
||||
v 2.1990 -3.5925 0.0000
|
||||
v 2.1990 -1.5475 0.0000
|
||||
v 1.6110 -1.5475 0.0000
|
||||
v 1.6110 -3.5925 0.1200
|
||||
v 2.1990 -3.5925 0.1200
|
||||
v 2.1990 -1.5475 0.1200
|
||||
v 1.6110 -1.5475 0.1200
|
||||
v 0.3410 -3.5925 0.0000
|
||||
v 0.9290 -3.5925 0.0000
|
||||
v 0.9290 -1.5475 0.0000
|
||||
v 0.3410 -1.5475 0.0000
|
||||
v 0.3410 -3.5925 0.1200
|
||||
v 0.9290 -3.5925 0.1200
|
||||
v 0.9290 -1.5475 0.1200
|
||||
v 0.3410 -1.5475 0.1200
|
||||
v -0.9290 -3.5925 0.0000
|
||||
v -0.3410 -3.5925 0.0000
|
||||
v -0.3410 -1.5475 0.0000
|
||||
v -0.9290 -1.5475 0.0000
|
||||
v -0.9290 -3.5925 0.1200
|
||||
v -0.3410 -3.5925 0.1200
|
||||
v -0.3410 -1.5475 0.1200
|
||||
v -0.9290 -1.5475 0.1200
|
||||
v -2.1990 -3.5925 0.0000
|
||||
v -1.6110 -3.5925 0.0000
|
||||
v -1.6110 -1.5475 0.0000
|
||||
v -2.1990 -1.5475 0.0000
|
||||
v -2.1990 -3.5925 0.1200
|
||||
v -1.6110 -3.5925 0.1200
|
||||
v -1.6110 -1.5475 0.1200
|
||||
v -2.1990 -1.5475 0.1200
|
||||
v 1.6110 1.5475 0.0000
|
||||
v 2.1990 1.5475 0.0000
|
||||
v 2.1990 3.5925 0.0000
|
||||
v 1.6110 3.5925 0.0000
|
||||
v 1.6110 1.5475 0.1200
|
||||
v 2.1990 1.5475 0.1200
|
||||
v 2.1990 3.5925 0.1200
|
||||
v 1.6110 3.5925 0.1200
|
||||
v 0.3410 1.5475 0.0000
|
||||
v 0.9290 1.5475 0.0000
|
||||
v 0.9290 3.5925 0.0000
|
||||
v 0.3410 3.5925 0.0000
|
||||
v 0.3410 1.5475 0.1200
|
||||
v 0.9290 1.5475 0.1200
|
||||
v 0.9290 3.5925 0.1200
|
||||
v 0.3410 3.5925 0.1200
|
||||
v -0.9290 1.5475 0.0000
|
||||
v -0.3410 1.5475 0.0000
|
||||
v -0.3410 3.5925 0.0000
|
||||
v -0.9290 3.5925 0.0000
|
||||
v -0.9290 1.5475 0.1200
|
||||
v -0.3410 1.5475 0.1200
|
||||
v -0.3410 3.5925 0.1200
|
||||
v -0.9290 3.5925 0.1200
|
||||
v -2.1990 1.5475 0.0000
|
||||
v -1.6110 1.5475 0.0000
|
||||
v -1.6110 3.5925 0.0000
|
||||
v -2.1990 3.5925 0.0000
|
||||
v -2.1990 1.5475 0.1200
|
||||
v -1.6110 1.5475 0.1200
|
||||
v -1.6110 3.5925 0.1200
|
||||
v -2.1990 3.5925 0.1200
|
||||
v -2.4500 -3.0000 0.1000
|
||||
v 2.4500 -3.0000 0.1000
|
||||
v 2.4500 3.0000 0.1000
|
||||
v -2.4500 3.0000 0.1000
|
||||
v -2.4500 -3.0000 1.8000
|
||||
v 2.4500 -3.0000 1.8000
|
||||
v 2.4500 3.0000 1.8000
|
||||
v -2.4500 3.0000 1.8000
|
||||
f 1 4 3 2
|
||||
f 5 6 7 8
|
||||
f 1 2 6 5
|
||||
f 2 3 7 6
|
||||
f 3 4 8 7
|
||||
f 4 1 5 8
|
||||
f 9 12 11 10
|
||||
f 13 14 15 16
|
||||
f 9 10 14 13
|
||||
f 10 11 15 14
|
||||
f 11 12 16 15
|
||||
f 12 9 13 16
|
||||
f 17 20 19 18
|
||||
f 21 22 23 24
|
||||
f 17 18 22 21
|
||||
f 18 19 23 22
|
||||
f 19 20 24 23
|
||||
f 20 17 21 24
|
||||
f 25 28 27 26
|
||||
f 29 30 31 32
|
||||
f 25 26 30 29
|
||||
f 26 27 31 30
|
||||
f 27 28 32 31
|
||||
f 28 25 29 32
|
||||
f 33 36 35 34
|
||||
f 37 38 39 40
|
||||
f 33 34 38 37
|
||||
f 34 35 39 38
|
||||
f 35 36 40 39
|
||||
f 36 33 37 40
|
||||
f 41 44 43 42
|
||||
f 45 46 47 48
|
||||
f 41 42 46 45
|
||||
f 42 43 47 46
|
||||
f 43 44 48 47
|
||||
f 44 41 45 48
|
||||
f 49 52 51 50
|
||||
f 53 54 55 56
|
||||
f 49 50 54 53
|
||||
f 50 51 55 54
|
||||
f 51 52 56 55
|
||||
f 52 49 53 56
|
||||
f 57 60 59 58
|
||||
f 61 62 63 64
|
||||
f 57 58 62 61
|
||||
f 58 59 63 62
|
||||
f 59 60 64 63
|
||||
f 60 57 61 64
|
||||
f 65 68 67 66
|
||||
f 69 70 71 72
|
||||
f 65 66 70 69
|
||||
f 66 67 71 70
|
||||
f 67 68 72 71
|
||||
f 68 65 69 72
|
||||
113
models/nmos_power_60v.obj
Normal file
113
models/nmos_power_60v.obj
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
# generated body mesh (D2PAK-7_L10.6-W9.6-P1.27-LS15.9-BR) 15.24x10.10x1.20mm, 7 pads
|
||||
v 0.6271 3.4290 0.0000
|
||||
v 2.5131 3.4290 0.0000
|
||||
v 2.5131 4.1910 0.0000
|
||||
v 0.6271 4.1910 0.0000
|
||||
v 0.6271 3.4290 0.1200
|
||||
v 2.5131 3.4290 0.1200
|
||||
v 2.5131 4.1910 0.1200
|
||||
v 0.6271 4.1910 0.1200
|
||||
v 0.6271 2.1590 0.0000
|
||||
v 2.5131 2.1590 0.0000
|
||||
v 2.5131 2.9210 0.0000
|
||||
v 0.6271 2.9210 0.0000
|
||||
v 0.6271 2.1590 0.1200
|
||||
v 2.5131 2.1590 0.1200
|
||||
v 2.5131 2.9210 0.1200
|
||||
v 0.6271 2.9210 0.1200
|
||||
v 0.6271 0.8890 0.0000
|
||||
v 2.5131 0.8890 0.0000
|
||||
v 2.5131 1.6510 0.0000
|
||||
v 0.6271 1.6510 0.0000
|
||||
v 0.6271 0.8890 0.1200
|
||||
v 2.5131 0.8890 0.1200
|
||||
v 2.5131 1.6510 0.1200
|
||||
v 0.6271 1.6510 0.1200
|
||||
v 0.6271 -1.6510 0.0000
|
||||
v 2.5131 -1.6510 0.0000
|
||||
v 2.5131 -0.8890 0.0000
|
||||
v 0.6271 -0.8890 0.0000
|
||||
v 0.6271 -1.6510 0.1200
|
||||
v 2.5131 -1.6510 0.1200
|
||||
v 2.5131 -0.8890 0.1200
|
||||
v 0.6271 -0.8890 0.1200
|
||||
v 0.6271 -2.9210 0.0000
|
||||
v 2.5131 -2.9210 0.0000
|
||||
v 2.5131 -2.1590 0.0000
|
||||
v 0.6271 -2.1590 0.0000
|
||||
v 0.6271 -2.9210 0.1200
|
||||
v 2.5131 -2.9210 0.1200
|
||||
v 2.5131 -2.1590 0.1200
|
||||
v 0.6271 -2.1590 0.1200
|
||||
v 0.6271 -4.1910 0.0000
|
||||
v 2.5131 -4.1910 0.0000
|
||||
v 2.5131 -3.4290 0.0000
|
||||
v 0.6271 -3.4290 0.0000
|
||||
v 0.6271 -4.1910 0.1200
|
||||
v 2.5131 -4.1910 0.1200
|
||||
v 2.5131 -3.4290 0.1200
|
||||
v 0.6271 -3.4290 0.1200
|
||||
v -13.0989 -5.3300 0.0000
|
||||
v -5.7429 -5.3300 0.0000
|
||||
v -5.7429 5.3300 0.0000
|
||||
v -13.0989 5.3300 0.0000
|
||||
v -13.0989 -5.3300 0.1200
|
||||
v -5.7429 -5.3300 0.1200
|
||||
v -5.7429 5.3300 0.1200
|
||||
v -13.0989 5.3300 0.1200
|
||||
v -7.6200 -5.0500 0.1000
|
||||
v 7.6200 -5.0500 0.1000
|
||||
v 7.6200 5.0500 0.1000
|
||||
v -7.6200 5.0500 0.1000
|
||||
v -7.6200 -5.0500 1.3000
|
||||
v 7.6200 -5.0500 1.3000
|
||||
v 7.6200 5.0500 1.3000
|
||||
v -7.6200 5.0500 1.3000
|
||||
f 1 4 3 2
|
||||
f 5 6 7 8
|
||||
f 1 2 6 5
|
||||
f 2 3 7 6
|
||||
f 3 4 8 7
|
||||
f 4 1 5 8
|
||||
f 9 12 11 10
|
||||
f 13 14 15 16
|
||||
f 9 10 14 13
|
||||
f 10 11 15 14
|
||||
f 11 12 16 15
|
||||
f 12 9 13 16
|
||||
f 17 20 19 18
|
||||
f 21 22 23 24
|
||||
f 17 18 22 21
|
||||
f 18 19 23 22
|
||||
f 19 20 24 23
|
||||
f 20 17 21 24
|
||||
f 25 28 27 26
|
||||
f 29 30 31 32
|
||||
f 25 26 30 29
|
||||
f 26 27 31 30
|
||||
f 27 28 32 31
|
||||
f 28 25 29 32
|
||||
f 33 36 35 34
|
||||
f 37 38 39 40
|
||||
f 33 34 38 37
|
||||
f 34 35 39 38
|
||||
f 35 36 40 39
|
||||
f 36 33 37 40
|
||||
f 41 44 43 42
|
||||
f 45 46 47 48
|
||||
f 41 42 46 45
|
||||
f 42 43 47 46
|
||||
f 43 44 48 47
|
||||
f 44 41 45 48
|
||||
f 49 52 51 50
|
||||
f 53 54 55 56
|
||||
f 49 50 54 53
|
||||
f 50 51 55 54
|
||||
f 51 52 56 55
|
||||
f 52 49 53 56
|
||||
f 57 60 59 58
|
||||
f 61 62 63 64
|
||||
f 57 58 62 61
|
||||
f 58 59 63 62
|
||||
f 59 60 64 63
|
||||
f 60 57 61 64
|
||||
19582
models/opamp_opa356.obj
Normal file
19582
models/opamp_opa356.obj
Normal file
File diff suppressed because it is too large
Load diff
43
models/res_0603_series.obj
Normal file
43
models/res_0603_series.obj
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
# standard R0603 chip mesh 1.6x0.8x0.55mm (shared)
|
||||
v -0.8000 -0.4000 0.0000
|
||||
v -0.4000 -0.4000 0.0000
|
||||
v -0.4000 0.4000 0.0000
|
||||
v -0.8000 0.4000 0.0000
|
||||
v -0.8000 -0.4000 0.1500
|
||||
v -0.4000 -0.4000 0.1500
|
||||
v -0.4000 0.4000 0.1500
|
||||
v -0.8000 0.4000 0.1500
|
||||
v 0.4000 -0.4000 0.0000
|
||||
v 0.8000 -0.4000 0.0000
|
||||
v 0.8000 0.4000 0.0000
|
||||
v 0.4000 0.4000 0.0000
|
||||
v 0.4000 -0.4000 0.1500
|
||||
v 0.8000 -0.4000 0.1500
|
||||
v 0.8000 0.4000 0.1500
|
||||
v 0.4000 0.4000 0.1500
|
||||
v -0.5500 -0.4000 0.0500
|
||||
v 0.5500 -0.4000 0.0500
|
||||
v 0.5500 0.4000 0.0500
|
||||
v -0.5500 0.4000 0.0500
|
||||
v -0.5500 -0.4000 0.5500
|
||||
v 0.5500 -0.4000 0.5500
|
||||
v 0.5500 0.4000 0.5500
|
||||
v -0.5500 0.4000 0.5500
|
||||
f 1 4 3 2
|
||||
f 5 6 7 8
|
||||
f 1 2 6 5
|
||||
f 2 3 7 6
|
||||
f 3 4 8 7
|
||||
f 4 1 5 8
|
||||
f 9 12 11 10
|
||||
f 13 14 15 16
|
||||
f 9 10 14 13
|
||||
f 10 11 15 14
|
||||
f 11 12 16 15
|
||||
f 12 9 13 16
|
||||
f 17 20 19 18
|
||||
f 21 22 23 24
|
||||
f 17 18 22 21
|
||||
f 18 19 23 22
|
||||
f 19 20 24 23
|
||||
f 20 17 21 24
|
||||
8314
models/schottky_ss34.obj
Normal file
8314
models/schottky_ss34.obj
Normal file
File diff suppressed because it is too large
Load diff
1157
models/tvs_smbj.obj
Normal file
1157
models/tvs_smbj.obj
Normal file
File diff suppressed because it is too large
Load diff
5846
models/xtal_8mhz.obj
Normal file
5846
models/xtal_8mhz.obj
Normal file
File diff suppressed because it is too large
Load diff
13
part.html
Normal file
13
part.html
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<title>Part — PromptPCB Parts</title>
|
||||
<link rel="stylesheet" href="/assets/style.css">
|
||||
<header class="top"><div class="wrap">
|
||||
<a class="brand" href="/"><span class="dot"></span> PromptPCB <small>· Parts</small></a>
|
||||
<nav class="main"><a href="/">Catalog</a><a href="/submit.html">Submit a part</a><a href="/mcp.html">MCP / API</a></nav>
|
||||
<span class="spacer"></span>
|
||||
<span class="credits">◆ <b id="cred-n">5</b> credits</span>
|
||||
</div></header>
|
||||
<div class="wrap" id="root"><div class="empty">Loading…</div></div>
|
||||
<script type="importmap">{"imports":{"three":"https://unpkg.com/three@0.160.0/build/three.module.js","three/addons/":"https://unpkg.com/three@0.160.0/examples/jsm/"}}</script>
|
||||
<script type="module" src="/assets/part.js"></script>
|
||||
57
submit.html
Normal file
57
submit.html
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<title>Contribute a part — PromptPCB Parts</title>
|
||||
<link rel="stylesheet" href="/assets/style.css">
|
||||
<header class="top"><div class="wrap">
|
||||
<a class="brand" href="/"><span class="dot"></span> PromptPCB <small>· Parts</small></a>
|
||||
<nav class="main"><a href="/">Catalog</a><a href="/submit.html" class="active">Submit a part</a><a href="/mcp.html">MCP / API</a></nav>
|
||||
<span class="spacer"></span>
|
||||
<span class="credits">◆ <b id="cred-n">5</b> credits</span>
|
||||
</div></header>
|
||||
|
||||
<div class="wrap"><div class="form">
|
||||
<h1 class="dh1">Contribute a curated part</h1>
|
||||
<div class="banner">Add one <b>novel, verified</b> part — 3D model, datasheet, labelled pins & pads, specs, a SPICE model, and what it's used for — and earn <b>5 download credits</b>. Hit <b>Auto-fill with AI</b> to draft the specs, use-cases and SPICE from the datasheet, then <b>review every field</b> before submitting. Honor system: only submit data you've checked.</div>
|
||||
|
||||
<div class="row2">
|
||||
<div class="field"><label>Manufacturer part number (MPN) *</label><input id="mpn" placeholder="e.g. BSS138"></div>
|
||||
<div class="field"><label>Class *</label><select id="class">
|
||||
<option value="">Select…</option>
|
||||
<option>resistor</option><option>capacitor</option><option>inductor</option><option>diode</option>
|
||||
<option>mosfet</option><option>bjt</option><option>led</option><option>mcu</option><option>ic</option>
|
||||
<option>gate_driver</option><option>op_amp</option><option>voltage_regulator_linear</option>
|
||||
<option>voltage_regulator_switching</option><option>crystal</option><option>connector</option>
|
||||
<option>timer</option><option>sensor</option><option>other</option></select></div>
|
||||
</div>
|
||||
<div class="row2">
|
||||
<div class="field"><label>Manufacturer</label><input id="manufacturer" placeholder="e.g. onsemi"></div>
|
||||
<div class="field"><label>Package</label><input id="package" placeholder="e.g. SOT-23"></div>
|
||||
</div>
|
||||
<div class="field"><label>Datasheet URL *</label><input id="datasheet_url" placeholder="https://…/datasheet.pdf"></div>
|
||||
|
||||
<div class="field">
|
||||
<label>Datasheet text / notes (paste key specs — powers Auto-fill)</label>
|
||||
<textarea id="description" placeholder="Paste the electrical characteristics table or a description; the AI drafts specs, use-cases and a SPICE model from this."></textarea>
|
||||
<button class="btn ghost" id="autofill" style="margin-top:10px">✦ Auto-fill with AI</button>
|
||||
<span id="af-status" style="margin-left:10px;color:var(--dim);font-size:13px"></span>
|
||||
</div>
|
||||
|
||||
<div class="field"><label>Summary *</label><textarea id="summary" style="min-height:60px;font-family:var(--sans)"></textarea></div>
|
||||
<div class="field"><label>When to use *</label><textarea id="when_to_use" style="min-height:60px;font-family:var(--sans)"></textarea></div>
|
||||
<div class="field"><label>Use cases * — one per line ("This part can be used to …")</label><textarea id="use_cases" style="min-height:130px"></textarea></div>
|
||||
<div class="field"><label>Specifications * — one per line as <code>name: value unit</code></label><textarea id="params" style="min-height:110px" placeholder="Vds max: 50 V Rds(on): 3.5 ohm Id: 0.22 A"></textarea></div>
|
||||
<div class="field"><label>SPICE model *</label><textarea id="spice" style="min-height:110px" placeholder=".SUBCKT / .MODEL …"></textarea></div>
|
||||
|
||||
<div class="row2">
|
||||
<div class="field"><label>3D model file (.obj / .glb / .step) *</label>
|
||||
<label class="drop" for="model3d"><span id="drop-label">Click to attach a 3D model</span></label>
|
||||
<input id="model3d" type="file" accept=".obj,.glb,.gltf,.step,.stp,.wrl" style="display:none"></div>
|
||||
<div class="field"><label>Your email *</label><input id="email" type="email" placeholder="you@example.com"></div>
|
||||
</div>
|
||||
|
||||
<div style="display:flex;align-items:center;gap:14px;margin-top:8px">
|
||||
<button class="btn" id="submit">Submit part & earn 5 credits</button>
|
||||
<span id="sub-status" style="color:var(--dim);font-size:14px"></span>
|
||||
</div>
|
||||
</div></div>
|
||||
<script src="/assets/submit.js"></script>
|
||||
Loading…
Reference in a new issue