0.0.77 • Published 3 months ago

dsn-converter v0.0.77

Weekly downloads
-
License
-
Repository
-
Last release
3 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

4 months ago

0.0.74

4 months ago

0.0.75

4 months ago

0.0.76

4 months ago

0.0.77

3 months ago

0.0.71

4 months ago

0.0.72

4 months ago

0.0.70

4 months ago

0.0.67

4 months ago

0.0.68

4 months ago

0.0.69

4 months ago

0.0.66

4 months ago

0.0.64

4 months ago

0.0.65

4 months ago

0.0.62

4 months ago

0.0.63

4 months ago

0.0.61

4 months ago

0.0.60

5 months ago

0.0.59

5 months ago

0.0.58

5 months ago

0.0.55

5 months ago

0.0.56

5 months ago

0.0.57

5 months ago

0.0.54

6 months ago

0.0.51

6 months ago

0.0.52

6 months ago

0.0.53

6 months ago

0.0.40

7 months ago

0.0.41

7 months ago

0.0.42

7 months ago

0.0.43

7 months ago

0.0.44

6 months ago

0.0.45

6 months ago

0.0.46

6 months ago

0.0.47

6 months ago

0.0.37

7 months ago

0.0.38

7 months ago

0.0.39

7 months ago

0.0.30

7 months ago

0.0.31

7 months ago

0.0.32

7 months ago

0.0.33

7 months ago

0.0.34

7 months ago

0.0.35

7 months ago

0.0.36

7 months ago

0.0.28

7 months ago

0.0.29

7 months ago

0.0.50

6 months ago

0.0.48

6 months ago

0.0.49

6 months ago

0.0.23

7 months ago

0.0.24

7 months ago

0.0.25

7 months ago

0.0.26

7 months ago

0.0.27

7 months ago

0.0.20

7 months ago

0.0.21

7 months ago

0.0.22

7 months ago

0.0.18

7 months ago

0.0.19

7 months ago

0.0.10

7 months ago

0.0.11

7 months ago

0.0.12

7 months ago

0.0.13

7 months ago

0.0.14

7 months ago

0.0.15

7 months ago

0.0.9

7 months ago

0.0.16

7 months ago

0.0.8

7 months ago

0.0.17

7 months ago

0.0.5

8 months ago

0.0.4

8 months ago

0.0.7

8 months ago

0.0.6

8 months ago

0.0.3

8 months ago

0.0.2

8 months ago

0.0.1

8 months ago