@tscircuit/3d-viewer 0.0.587 → 0.0.589

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +28 -16
  2. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -31613,8 +31613,7 @@ var JscadModel = ({
31613
31613
  };
31614
31614
 
31615
31615
  // src/hooks/use-global-obj-loader.ts
31616
- import { useState as useState5, useEffect as useEffect9 } from "react";
31617
- import { MTLLoader, OBJLoader } from "three-stdlib";
31616
+ import { useEffect as useEffect9, useState as useState5 } from "react";
31618
31617
 
31619
31618
  // src/utils/vrml.ts
31620
31619
  import { VRMLLoader } from "three-stdlib";
@@ -31636,6 +31635,7 @@ async function loadVrml(url) {
31636
31635
  }
31637
31636
 
31638
31637
  // src/hooks/use-global-obj-loader.ts
31638
+ import { MTLLoader, OBJLoader } from "three-stdlib";
31639
31639
  if (typeof window !== "undefined" && !window.TSCIRCUIT_OBJ_LOADER_CACHE) {
31640
31640
  window.TSCIRCUIT_OBJ_LOADER_CACHE = /* @__PURE__ */ new Map();
31641
31641
  }
@@ -31661,19 +31661,13 @@ function useGlobalObjLoader(url) {
31661
31661
  const mtlContentArr = text.match(/newmtl[\s\S]*?endmtl/g);
31662
31662
  const objLoader = new OBJLoader();
31663
31663
  if (mtlContentArr?.length) {
31664
- const mtlContent = mtlContentArr.join("\n").replace(/d 0\./g, "d 1.");
31664
+ const mtlContent = mtlContentArr.join("\n").replace(/^d\s+0\./gm, "d 1.");
31665
31665
  const objContent = text.replace(/newmtl[\s\S]*?endmtl/g, "").replace(/^mtllib.*/gm, "");
31666
31666
  const mtlLoader = new MTLLoader();
31667
31667
  mtlLoader.setMaterialOptions({
31668
31668
  invertTrProperty: true
31669
31669
  });
31670
- const materials = mtlLoader.parse(
31671
- mtlContent.replace(
31672
- /Kd\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)/g,
31673
- "Kd $2 $2 $2"
31674
- ),
31675
- "embedded.mtl"
31676
- );
31670
+ const materials = mtlLoader.parse(mtlContent, "embedded.mtl");
31677
31671
  objLoader.setMaterials(materials);
31678
31672
  return objLoader.parse(objContent);
31679
31673
  }
@@ -32710,7 +32704,7 @@ import * as THREE23 from "three";
32710
32704
  // package.json
32711
32705
  var package_default = {
32712
32706
  name: "@tscircuit/3d-viewer",
32713
- version: "0.0.586",
32707
+ version: "0.0.588",
32714
32708
  main: "./dist/index.js",
32715
32709
  module: "./dist/index.js",
32716
32710
  type: "module",
@@ -32740,7 +32734,7 @@ var package_default = {
32740
32734
  "@jscad/regl-renderer": "^2.6.12",
32741
32735
  "@jscad/stl-serializer": "^2.1.20",
32742
32736
  "circuit-json": "^0.0.465",
32743
- "circuit-to-canvas": "^0.0.118",
32737
+ "circuit-to-canvas": "^0.0.119",
32744
32738
  "react-hot-toast": "^2.6.0",
32745
32739
  three: "^0.165.0",
32746
32740
  "three-stdlib": "^2.36.0",
@@ -37224,6 +37218,7 @@ var drawSilkscreenLayer = ({
37224
37218
  layer,
37225
37219
  bounds,
37226
37220
  elements,
37221
+ apertureElements,
37227
37222
  silkscreenColor
37228
37223
  }) => {
37229
37224
  const renderLayer = layer === "top" ? "top_silkscreen" : "bottom_silkscreen";
@@ -37274,8 +37269,9 @@ var drawSilkscreenLayer = ({
37274
37269
  }
37275
37270
  });
37276
37271
  setDrawerBounds5(drawer, bounds);
37277
- drawer.drawElements(elements, {
37278
- layers: [renderLayer]
37272
+ drawer.drawElements([...elements, ...apertureElements], {
37273
+ layers: [renderLayer],
37274
+ clearDrillHoles: true
37279
37275
  });
37280
37276
  };
37281
37277
 
@@ -37285,17 +37281,31 @@ var isSilkscreenElement = (element, layer) => {
37285
37281
  const elementType = element.type;
37286
37282
  return elementType.startsWith("pcb_silkscreen_");
37287
37283
  };
37284
+ var isOpenSurfaceAperture = (element, soldermaskVisible) => {
37285
+ if (element.type === "pcb_cutout") return true;
37286
+ if (element.type === "pcb_via") {
37287
+ return !soldermaskVisible || element.is_tented !== true;
37288
+ }
37289
+ if (element.type === "pcb_hole" || element.type === "pcb_plated_hole") {
37290
+ return !soldermaskVisible || element.is_covered_with_solder_mask !== true;
37291
+ }
37292
+ return false;
37293
+ };
37288
37294
  function createSilkscreenTextureForLayer({
37289
37295
  layer,
37290
37296
  circuitJson,
37291
37297
  boardData,
37292
37298
  traceTextureResolution = TRACE_TEXTURE_RESOLUTION,
37293
- silkscreenColor = "rgb(255,255,255)"
37299
+ silkscreenColor = "rgb(255,255,255)",
37300
+ soldermaskVisible = true
37294
37301
  }) {
37295
37302
  const elements = circuitJson.filter(
37296
37303
  (element) => isSilkscreenElement(element, layer)
37297
37304
  );
37298
37305
  if (elements.length === 0) return null;
37306
+ const apertureElements = circuitJson.filter(
37307
+ (element) => isOpenSurfaceAperture(element, soldermaskVisible)
37308
+ );
37299
37309
  const bounds = getSoldermaskRenderBounds(circuitJson, boardData);
37300
37310
  const canvasWidth = Math.floor(bounds.width * traceTextureResolution);
37301
37311
  const canvasHeight = Math.floor(bounds.height * traceTextureResolution);
@@ -37314,6 +37324,7 @@ function createSilkscreenTextureForLayer({
37314
37324
  layer,
37315
37325
  bounds,
37316
37326
  elements,
37327
+ apertureElements,
37317
37328
  silkscreenColor
37318
37329
  });
37319
37330
  const texture = new THREE33.CanvasTexture(canvas);
@@ -37767,7 +37778,8 @@ function createCombinedBoardTextures({
37767
37778
  circuitJson,
37768
37779
  boardData,
37769
37780
  silkscreenColor,
37770
- traceTextureResolution
37781
+ traceTextureResolution,
37782
+ soldermaskVisible: showMask
37771
37783
  }) : null;
37772
37784
  const fabricationNoteTexture = showSilkscreen ? createFabricationNoteTextureForLayer({
37773
37785
  layer,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tscircuit/3d-viewer",
3
- "version": "0.0.587",
3
+ "version": "0.0.589",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.js",
6
6
  "type": "module",
@@ -30,7 +30,7 @@
30
30
  "@jscad/regl-renderer": "^2.6.12",
31
31
  "@jscad/stl-serializer": "^2.1.20",
32
32
  "circuit-json": "^0.0.465",
33
- "circuit-to-canvas": "^0.0.118",
33
+ "circuit-to-canvas": "^0.0.119",
34
34
  "react-hot-toast": "^2.6.0",
35
35
  "three": "^0.165.0",
36
36
  "three-stdlib": "^2.36.0",