Search Site:

About

Linux

Printers?

Programming

Windows?

Download

Skins

Edit - To Do - AllRecentChanges

Recent Changes Printable View Page History Edit Page

This project has been discontinued as I no longer have the license to use the necessary SDK.


cad2text is a simple Linux command-line utility that automatically reads AutoCAD files (both dwg and dxf) and extract text strings and their drawing co-ordinates.

This utility works and has been tested on Linux. It should work on most x86 Linux distribution without change, and it would certainly not take too much to adapt it to Windows.

Capabilities

Since this is a command-line utility, it is perfect for batch jobs.

Capabilities:

  • Prints on standard output a tab-separated list of 4 columns containing: the text string found and its x, y and z location in the drawing coordinate system.
  • Works with both simple text and mtext strings.
  • Supplied binary does not depend on installed libraries
  • Indicative performance (no formal tests were performed): it took 2.2s to convert a 5.1MB dxf file into the compressed SVG file in the example below on an Athlon XP 1900 with 1GB of RAM.

Limitations

Before you decide if this utility is right for you, note the following limitiations:

  • strings are output as they are stored in the AutoCAD file. It's up to you to interpret the codepage used if it is different from standard latin.
  • AutoCAD special character escape sequences are not interpreted, so you may need to take care of those separately in multiline text (for isntance \P indicates a newline escape sequence.
  • Some software sometimes explodes text into graphic line segments in DXF files. For those files, it may look as if there is text in the drawing, but there is in fact nothing meaningful that can be extracted (your would need some sort of OCR for that).

Please bear in mind that this utility may not be suitable for jobs that require highly accurate information. Do not depend on its output to be accurate enough to replace the original drawing in a decision process!

Example

Below is a sample output from the utility:

# ./cad2text drawing.dwg

LCS\POPB\PCPB 91.5377 279.3607 0.0000
\PBOS 170.8706 422.7293 0.0000
\PBOS 170.8706 275.9461 0.0000

Notice the \P escape sequence within strings that are to be interpreted as newlines.

Why?

This utility is part of a larger drawing management system that collects information from CAD files from our file servers and stores them in a database for easy search.

Being able to make arbitrary searches on drawing content is very useful.

Installation

The download package contains both a pre-compiled binary for Linux RedHat (that should work on any x86 Linux) and the source code.

It is important to note that this utility relies on the OpenDesign Alliance OpenDWG Toolkit and Viewkit libraries. It is free to become a basic Associate Member, but you need to sign an agreement and you cannot redistribute the library or use them in commercial products. This is why there is a pre-compiled version of cad2svg included: you can use this free software, but to compile it yourself, you'll need to obtain the library from the OpenDesign Alliance.

The pre-compiled package is a static binary, so there is no pre-requisite requirements to use it.

Compile

Do this only if you need to. Pre-requisites:

  • binutils (they should be already installed, otherwise, apt-get? install binutils)
  • gcc (any version less than 2 year old should work and should already be installed on your machine, otherwise, apt-get? install gcc)
  • zlib (it is usually pre-packaged for each linux distribution. For RedHat for instance, you need to install the zlib-devel-xxx.rpm package with apt-get? install zlib-devel)

I know it's bad, but there is no makefile for this. Once you have the necessary librairies from the OpenDWG kits, untar the provided cad2svg source and copy the following OpenDWG Linux files in your cad2svg directory:

  • ad2.a, ad2.h
  • ad3.a, ad3.h
  • adinit.a

We first need to transform the adinit.dat into an object file to be able to include it into our binary. This file contains initialisation code and data and must be included in your project for it to work:

objcopy -I binary -O elf32-i386 -B i386 adinit.dat adinit.a

Then just compile it all together:

gcc -Wall -o cad2text cad2text.c ad2.a ad3.a adinit.a -lm --static

License

The source code provided is free to use and modify. If you modify the source code and others could benefit from your change, then I require that you send me back your modifications so I can integrate them in the next version.

The compiled application includes copyrighted software libraries from Open Design Alliance ("Aliance"). These libraries are subject to a membership agreement with the Alliance and are only licensed for use in Applications from members of the Alliance. www.opendesign.com.

You cannot redistribute the provided compiled version of the application, either as a standalone software or as part of a package, unless you have an adequate membership from the Open Design Alliance.

Please note that the source code is inspired in part on the mtext2text example given in the Open Design Alliance Toolkit.

Download

  • As of December 2012, I am no longer licensed to provide the freeware download.

See also

Comments
196.206.10.189Thursday 29 June 2006, at 15:26 GMT+8 [X]
merci
AlexFriday 21 June 2013, at 17:01 GMT+8 [X]
NO! Linux is an operating setsym. Anything cloud is a loose term for providing remote services for client computers. This can include remote access to programs or storage. Hosting on Linux means the machine runs the Linux operating setsym, which is 80 % of the Internet. Cloud services are run over some hosts as an extra.References :
RonaldoSaturday 22 June 2013, at 03:28 GMT+8 [X]
Sp II Guzzi siger:Don't know about the for a band spec, but check out64 Studio andan Ubuntu clone that is for audio / video it may be called mbetaduniu or studiobuntu or something similar do a google search on it
Enter your comment (no links allowed): Author:

Edit Page - Page History - Printable View - Recent Changes - WikiHelp - Search - RSS -
Page last modified on Wednesday 15 May 2013, at 01:23 GMT+8 - Viewed 4342 times