Code Monkey home page Code Monkey logo

three-dxf-loader's Introduction

three-dxf-loader

three-dxf-loader is a cross platform DXF file loader for THREE.js. It takes URL of a DXF file as input and returns THREE.js mesh entities. It internally uses dxf-parser for parsing DXF file. This library works out of the box with cross platform react-native and react-three-fiber.

Install

yarn add three-dxf-loader three

or

npm i three-dxf-loader three

Usage

import * as THREE from 'three'
import { DXFLoader } from 'three-dxf-loader'

const loader = new DXFLoader();
// loader.setFont(font); // set fonts
loader.setEnableLayer(true); // set EnableLayer
const scene = new THREE.Scene();
onLoad = (data) => {
    if (data && data.entities) {
      data.entities.forEach(ent => scene.add(ent))
    }
}
const onError = (error) => {
  console.log(error);
}
const onProgress = (xhr) => {
  console.log( ( xhr.loaded / xhr.total * 100 ) + '% loaded' );
}
loader.load(url, onLoad, onProgress, onError);

Run Web Viewer Sample

Example of the viewer

# First, compile three-dxf-loader
> yarn install
> yarn build

# then install the sample's dependencies
> cd sample
> yarn install

# go back to the root and run http-server to run the sample
> cd ..
> npm install -g [email protected]
> http-server .
# use `http-server -c-1 .` to prevent caching

After performing the steps above, you can see the example at http://127.0.0.1:8080/sample/index.html. You can use the DXF file included in the sample. NOTE: the latest version of http-server will go into a redirect loop if you exclude "/index.html" from the url.

Supported DXF Features

Supports:

  • Header
  • Most LW entities (lines, polylines, circles, etc)
  • Layers
  • Some support for line types
  • Simple Text
  • Viewport
  • Splines (Quadratic and Cubic)
  • Ellipses

Does not yet support:

  • Attributes
  • 3DSolids
  • All types of Leaders
  • MText
  • other less common objects and entities.

License

The MIT License

three-dxf-loader's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

three-dxf-loader's Issues

not run

TypeError: Cannot read properties of undefined (reading 'prototype')
at Module.eval (three-dxf-loader.js?41ca:16:1)
at t (three-dxf-loader.js?41ca:16:1)
at eval (three-dxf-loader.js?41ca:16:1)
at eval (three-dxf-loader.js?41ca:16:1)
at eval (three-dxf-loader.js?41ca:16:1)
at eval (three-dxf-loader.js?41ca:16:1)
at Object../node_modules/three-dxf-loader/dist/three-dxf-loader.js (19.js:1291:1)
at webpack_require (app.js:854:30)
at fn (app.js:151:20)
at eval (cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/views/modules/site/center-map.vue?vue&type=script&lang=js&:11:74)

Issues with latest three.js Version

I was looking for a capable dxf loader for three.js and stumbled upon your implementation. Unfortunately, the loader does not work with the latest version of three.js (0.133.0). Extending three.js like this

THREE.Math.angle2 = function (p1, p2) {
does not work anymore and causes an error - looks like the object is sealed and therefore not extendable.

I'd love to see a fix for this issue, otherwise I won't be able to keep my dependencies up to date. Happy to help if you need further information ;)

Typescript types

Typescript support

Hi I'm using typescript, and it requires the @types/three-dxf-loader lib, which is non-existant. Has anyone being able to use it with Typescript?

Could not find a declaration file for module 'three-dxf-loader'. '/app/node_modules/three-dxf-loader/dist/three-dxf-loader.js' implicitly has an 'any' type.
  Try `npm i --save-dev @types/three-dxf-loader` if it exists or add a new declaration (.d.ts) file containing `declare module 'three-dxf-loader';`ts(7016)

Loading Errors

I got these errors repetitively when using with r3f, while loading the sample .dxf file on this repo:

image
three-dxf-loader.js?v=c58e8641:4786 Text is not supported without a Three.js font loaded with THREE.FontLoader! Load a font of your choice and pass this into the constructor. See the sample for this repository or Three.js examples at http://threejs.org/examples/?q=text#webgl_geometry_text for more details.
Unsupported Entity Type: ATTDEF

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.