{"id":40680,"library":"build-dxf","title":"build-dxf","description":"A TypeScript library for programmatically building DXF (Drawing Exchange Format) files, suitable for generating CAD drawings in Node.js or browser environments. Latest version 0.1.135 is actively developed with frequent releases. Key differentiators: supports full DXF entities (lines, circles, arcs, text, polylines, blocks), layers, and custom entities; provides a clean builder API; ships with TypeScript definitions; lightweight with no external runtime dependencies. Alternative to complex DXF generators like dxf-writer with a more modern API.","status":"active","version":"0.1.135","language":"javascript","source_language":"en","source_url":null,"tags":["javascript","typescript"],"install":[{"cmd":"npm install build-dxf","lang":"bash","label":"npm"},{"cmd":"yarn add build-dxf","lang":"bash","label":"yarn"},{"cmd":"pnpm add build-dxf","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"Default import, ESM-only. CommonJS require does not work; use dynamic import() if needed.","wrong":"const dxf = require('build-dxf')","symbol":"dxf","correct":"import dxf from 'build-dxf'"},{"note":"Named import for the Drawing class. Both default and named exports exist.","wrong":"","symbol":"Drawing","correct":"import { Drawing } from 'build-dxf'"},{"note":"Alternative export for the underlying writer. Not typically needed; use Drawing for simpler API.","wrong":"","symbol":"DxfWriter","correct":"import { DxfWriter } from 'build-dxf'"}],"quickstart":{"code":"import dxf from 'build-dxf';\n\nconst drawing = new dxf.Drawing();\n\n// Add entities\ndrawing.addLine({ x1: 0, y1: 0, x2: 100, y2: 0 });\ndrawing.addCircle({ x: 50, y: 50, r: 20 });\ndrawing.addText({ x: 10, y: 10, text: 'Hello DXF', height: 5 });\n\n// Add layer\ndrawing.addLayer('myLayer', { color: 1, lineType: 'CONTINUOUS' });\n\n// Set active layer\ndrawing.setActiveLayer('myLayer');\n\n// Generate DXF string\nconst dxfString = drawing.toDxfString();\nconsole.log(dxfString);\n\n// Or save to file (Node.js)\nimport { writeFileSync } from 'fs';\nwriteFileSync('output.dxf', dxfString, 'utf-8');","lang":"typescript","description":"Demonstrates creating a DXF drawing with lines, circles, text, layers, and saving to a string or file using build-dxf."},"warnings":[{"fix":"Update code to handle string output, convert to Buffer if needed: Buffer.from(drawing.toDxfString(), 'utf-8')","message":"Drawing.toDxfString() returns a string, not a buffer. In previous versions (pre-0.1.0), it returned a Buffer.","severity":"breaking","affected_versions":"<0.1.0"},{"fix":"Use numeric color values: e.g., 1 for red, 2 for yellow, etc.","message":"The addLayer method signature changed: color is now a number (AutoCAD color index), not a string. Old string colors are deprecated.","severity":"deprecated","affected_versions":">=0.1.0"},{"fix":"Convert your coordinates to millimeters before passing to build-dxf functions.","message":"Coordinates are always in millimeters. DXF units are not scaled; ensure your values are in mm.","severity":"gotcha","affected_versions":"all"},{"fix":"Always specify height when adding text, e.g., { height: 5 }.","message":"Text entities require height parameter; if omitted, text may not appear in some viewers.","severity":"gotcha","affected_versions":"all"},{"fix":"Use consistent casing when adding and switching layers.","message":"Layer names are case-insensitive in DXF, but build-dxf preserves case. Duplicate layer names with different casing may cause unexpected behavior.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"search_vec":"'0.1.135':27 'activ':29 'altern':65 'api':54,78 'arc':42 'block':45 'browser':23 'build':2,9 'build-dxf':1 'builder':53 'cad':18 'circl':41 'clean':52 'complex':67 'custom':48 'definit':58 'depend':64 'develop':30 'differenti':35 'draw':11,19 'dxf':3,10,38,68,72 'dxf-writer':71 'entiti':39,49 'environ':24 'exchang':12 'extern':62 'file':14 'format':13 'frequent':32 'full':37 'generat':17,69 'javascript':79 'key':34 'latest':25 'layer':46 'librari':6 'lightweight':59 'like':70 'line':40 'modern':77 'node.js':21 'polylin':44 'programmat':8 'provid':50 'releas':33 'runtim':63 'ship':55 'suitabl':15 'support':36 'text':43 'typescript':5,57,80 'version':26 'writer':73","created_at":"2026-06-04T18:48:44.311527+00:00","updated_at":"2026-06-04T18:48:44.311527+00:00","problems":[{"fix":"Use ESM import: import dxf from 'build-dxf' or dynamic import: const dxf = await import('build-dxf')","cause":"Using CommonJS require on the default export.","error":"TypeError: dxf.Drawing is not a constructor"},{"fix":"Add the layer first using drawing.addLayer(layerName, options), then set it active.","cause":"Trying to set active layer before adding it.","error":"Error: Invalid layer: layerName"},{"fix":"Use default import: import dxf from 'build-dxf'; then new dxf.Drawing(); or named: import { Drawing } from 'build-dxf'; new Drawing();","cause":"Incorrect named import usage; probably mixing default and named imports incorrectly.","error":"TypeError: (dxf_1.default || ...).Drawing is not a function"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":null,"github":null,"docs":null,"changelog":null,"pypi":null,"npm":"build-dxf","openapi_spec":null,"status_page":null,"smithery":null,"categories":["storage"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-04","next_check":"2026-09-02","install_tag":null}}