0.0.77 • Published 5 months ago

dsn-converter v0.0.77

Weekly downloads
-
License
-
Repository
-
Last release
5 months ago

dsn-converter

A TypeScript library for converting between DSN files and Circuit JSON format.

Overview

dsn-converter is a powerful tool that enables bidirectional conversion between Specctr DSN format and Circuit JSON. This makes it possible to:

  • Parse Specctra DSN files into a workable JSON format
  • Convert Circuit JSON back into KiCad-compatible DSN files
  • Visualize PCB designs using SVG rendering

Installation

# Using bun
bun add dsn-converter

# Using npm
npm install dsn-converter

Usage

Basic Usage

Converting DSN to Circuit JSON

import { parseDsnToCircuitJson } from "dsn-converter"

// Read DSN file
const dsnContent = await Bun.file("your-design.dsn").text()

// Convert to Circuit JSON
const circuitJson = parseDsnToCircuitJson(dsnContent)

// Save the output
await Bun.write("output.circuit.json", JSON.stringify(circuitJson, null, 2))

Converting Circuit JSON to DSN

import { circuitJsonToDsnString } from "dsn-converter"

// Convert Circuit JSON to DSN format
const dsnString = circuitJsonToDsnString(circuitJson)

// Save the DSN file
await Bun.write("output.dsn", dsnString)

Advanced Usage

Working with DSN JSON Directly

import { 
  parseDsnToDsnJson,
  convertDsnJsonToCircuitJson,
  stringifyDsnJson
} from "dsn-converter"

// Parse DSN to intermediate JSON format
const dsnJson = parseDsnToDsnJson(dsnString)

// Modify the DSN JSON structure
dsnJson.placement.components.push({
  name: "NewComponent",
  place: {
    refdes: "U1",
    x: 1000,
    y: 1000,
    side: "front",
    rotation: 0
  }
})

// Convert to Circuit JSON
const circuitJson = convertDsnJsonToCircuitJson(dsnJson)

// Or convert back to DSN string
const modifiedDsnString = stringifyDsnJson(dsnJson)

Custom Component Processing

import { convertCircuitJsonToDsnJson } from "dsn-converter"

// Create Circuit JSON elements
const elements = [
  {
    type: "pcb_smtpad",
    pcb_smtpad_id: "pad1",
    pcb_component_id: "R1",
    shape: "rect",
    x: 0,
    y: 0,
    width: 0.5,
    height: 0.6,
    layer: "top"
  },
  // Add more elements...
]

// Convert to DSN format
const dsnJson = convertCircuitJsonToDsnJson(elements)

Type Support

The library provides comprehensive TypeScript types:

import type { 
  DsnPcb,
  Component,
  Padstack,
  Network,
  Wire
} from "dsn-converter"

// Use types for type-safe DSN manipulation
const component: Component = {
  name: "R1",
  place: {
    refdes: "R1",
    x: 1000,
    y: 1000,
    side: "front",
    rotation: 0
  }
}

Features

  • Complete DSN Support: Handles all major DSN file components including:

    • Component placement
    • PCB layers
    • Traces and wiring
    • Padstacks and SMT pads
    • Net definitions
    • Board boundaries
  • Accurate Conversions: Maintains precise measurements and positions during conversion

  • Type Safety: Full TypeScript support with comprehensive type definitions

Data Structure

DSN Format

The DSN format is represented as a structured JSON with the following main sections:

  • parser: Contains file metadata
  • resolution: Defines measurement units
  • structure: Describes board layers and rules
  • placement: Component positions
  • library: Component and padstack definitions
  • network: Net connections
  • wiring: Trace routing

Circuit JSON

The Circuit JSON format includes:

  • PCB traces
  • SMT pads
  • Component definitions
  • Layer information
  • Routing data

Development

# Install dependencies
bun install

# Run tests
bun test

# Run specific test file
bun test tests/dsn-pcb/parse-dsn-pcb.test.ts

Acknowledgments

0.0.73

5 months ago

0.0.74

5 months ago

0.0.75

5 months ago

0.0.76

5 months ago

0.0.77

5 months ago

0.0.71

5 months ago

0.0.72

5 months ago

0.0.70

5 months ago

0.0.67

5 months ago

0.0.68

5 months ago

0.0.69

5 months ago

0.0.66

5 months ago

0.0.64

6 months ago

0.0.65

6 months ago

0.0.62

6 months ago

0.0.63

6 months ago

0.0.61

6 months ago

0.0.60

6 months ago

0.0.59

6 months ago

0.0.58

6 months ago

0.0.55

7 months ago

0.0.56

7 months ago

0.0.57

7 months ago

0.0.54

8 months ago

0.0.51

8 months ago

0.0.52

8 months ago

0.0.53

8 months ago

0.0.40

8 months ago

0.0.41

8 months ago

0.0.42

8 months ago

0.0.43

8 months ago

0.0.44

8 months ago

0.0.45

8 months ago

0.0.46

8 months ago

0.0.47

8 months ago

0.0.37

8 months ago

0.0.38

8 months ago

0.0.39

8 months ago

0.0.30

8 months ago

0.0.31

8 months ago

0.0.32

8 months ago

0.0.33

8 months ago

0.0.34

8 months ago

0.0.35

8 months ago

0.0.36

8 months ago

0.0.28

8 months ago

0.0.29

8 months ago

0.0.50

8 months ago

0.0.48

8 months ago

0.0.49

8 months ago

0.0.23

9 months ago

0.0.24

9 months ago

0.0.25

9 months ago

0.0.26

9 months ago

0.0.27

8 months ago

0.0.20

9 months ago

0.0.21

9 months ago

0.0.22

9 months ago

0.0.18

9 months ago

0.0.19

9 months ago

0.0.10

9 months ago

0.0.11

9 months ago

0.0.12

9 months ago

0.0.13

9 months ago

0.0.14

9 months ago

0.0.15

9 months ago

0.0.9

9 months ago

0.0.16

9 months ago

0.0.8

9 months ago

0.0.17

9 months ago

0.0.5

9 months ago

0.0.4

9 months ago

0.0.7

9 months ago

0.0.6

9 months ago

0.0.3

9 months ago

0.0.2

10 months ago

0.0.1

10 months ago