Main Page
From Opencam
Contents [hide]
* 1 OpenCAM
o 1.1 Types of Programs
+ 1.1.1 CAD
# 1.1.1.1 CAD Theory/Algorithms
+ 1.1.2 CAM
# 1.1.2.1 References
* 1.1.2.1.1 Toolpath Generation
* 1.1.2.1.2 Simulation/Backplot/Verify
* 1.1.2.1.3 Misc
+ 1.1.3 Machine Controllers
o 1.2 Toolpath Output formats
o 1.3 Geometry Input formats
o 1.4 Open Source Code, libraries etc
+ 1.4.1 Graphics / OpenGL
o 1.5 Python
+ 1.5.1 components
+ 1.5.2 exporters
+ 1.5.3 geometry creators/modifiers
+ 1.5.4 toolpath generators
+ 1.5.5 postprocessors
OpenCAM
Notes, code, and discussion about opensource CAM software.
This started with a thread on cnczone: http://www.cnczone.com/forums/showthread.php?t=18861&page=1&pp=15 Types of Programs CAD
CAD programs create geometry (points, curves, surfaces, solids, etc.)
OpenSource CAD:
* Blender http://www.blender.org/ * Free-CAD http://free-cad.sourceforge.net/ * A link page with Linux CAD links: http://www.tech-edv.co.at/lunix/CADlinks.html * BRLCad, a powerful Constructive Solid Geometry (CSG) solid modeling system, http://www.brlcad.org/ * PythonCAD, a Python based 2D? CAD program http://www.pythoncad.org/ * Cadvas, small python based program, http://members.localnet.com/~blanding/cadvas/ * Varkon, framework for a CAD system, http://www.tech.oru.se/cad/varkon/index.htm * Graphite One, open source but commercial CAD written in python, using Opencascade, http://www.graphiteone-cad.com/en/index.htm * QCad, uses QT, http://www.ribbonsoft.com/qcad.html * Open CASCADE, 3D modeling & numerical simulation development platform, http://www.opencascade.org/
Commercial CAD:
* Autocad * Rhino * Multisurf * too many to list...
CAD Theory/Algorithms
* Relational Geometry Synthesis: Part I Framework, JS Letcher, DM Shook, SG Shepherd - Computer Aided Geometric Design, 1995. An introduction to relational geometry, the authors work at Aerohydro who make MultiSurf. They claim to have patents related to relational geometry - how do these affect an opensource project ? http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TYR-3YF4NFX-C&_coverDate=11%2F30%2F1995&_alid=419586168&_rdoc=1&_fmt=&_orig=search&_qd=1&_cdi=5625&_sort=d&view=c&_acct=C000050221&_version=1&_urlVersion=0&_userid=10&md5=3d945696f657f477185ce132675b0a29
CAM
CAM programs take geometry as input and create toolpaths(usually G-code).
* OpenSource CAM:
o gCncCam Linux CAM Tool for converting CAD Drawings like DXF-Files to G-Code http://gcnccam.sourceforge.net
o dxf2gcode by christian kohloeffel, verified to work on qcad-generated dxf files http://www.christian-kohloeffel.homepage.t-online.de/dxf2gocde.html (en)
o "Optimal Controller for a 5-axis Machine Tool", GPL, http://olivier.coma.free.fr/opencascade/opencascade.html (I've got it to compile w/OCC61,QT3.3,AMD64 - mpictor.aT.yahoo)
o GnuCAM or GCAM, http://gcam.js.cx/ , Linux with Windows package available as of January.
o Image to G-code http://timeguy.com/cradek/image-to-gcode
o HP2XX, HP-GL plotter to G-code converter http://www.gnu.org/software/hp2xx/hp2xx.html
o APTOS, open source project to update APT http://sourceforge.net/projects/aptos
o dxf2cnc, C sourcecode to convert dxf to G-code http://www.mgl.ca/~ecp/gobweb/cnc.c
o cam.py, MIT written program to convert different formats to G-code http://cba.mit.edu/~neilg/fab/dist/cam.py
o ACE converter, dxf to G-code converter http://www.dakeng.com/ace.html
o ps2gcode, postscript to G-code converter http://www.chiark.greenend.org.uk/~alanb/ps2gc.html
o Codeg, command line tool to convert dxf to G-code http://sourceforge.net/projects/codeg/
o image-to-gcode, Chris Radek's image-to-gcode program in python http://timeguy.com/cradek/image-to-gcode
o SPCE, Bitmap to GCODE converter http://www.sico.at/spce/spce.html
o bmp2cnc- download a *.tgz file that Matt Shaver wrote for converting bitmaps to g-code http://www.erols.com/mshaver/bmp2cnc-0.22.tgz
o Chris Radek's TrueTypeTracer http://timeguy.com/cradek/truetype
o cxf2cnc - single line font tracer http://fennetic.net/pub/irc/cxf2cnc.py
o Jon Elson's C Source Code to create GCODE http://jelinux.pico-systems.com/gcode.html
o SagCAD 2D CAD/CAM http://sagcad.sourceforge.jp
o cam.occ A CAM program based on the OpenCASCADE libraries http://cam.occ.googlepages.com/
o CNC-Suite is an Free & Open Enviroment for 2D and 3D CNC-Machines http://cnc-suite.sourceforge.net/cnc/index.html
* Freeware CAM (not open source):
o gCAD3D 3D CADCAM software for windows and linux, http://www.cadcam.co.at/freiter/gCAD3D_en.htm -- new URL http://www.gcad3d.org/
o CNC Toolkit - http://www.rainnea.com/cnc_toolkit.htm also http://groups.yahoo.com/group/CNC_Toolkit
o CAM-BAM! http://www.brusselsprout.org/CAMBAM/
o GCODE enabled xfig http://www.harbaum.org/till/cnc/index.shtml
* Commercial CAM:
o http://www.mastercam.com/
o http://www.surfware.com/
o http://www.freesteel.co.uk/ an interesting adaptive clearing toolpath generator
o http://www.super-tech.com
o http://www.onecnc.co.uk/
o http://www.sprutcam.com/
o http://www.bobcad.com/
o http://www.webersys.com/
o http://www.ugs.com
o http://www.nccs.com/
References
To search for papers, use scholar.google.com; then click the web search link to (try) to find the full text of the paper on-line. Also see http://www.inspire.net/otherstates.html for statewide virtual libraries Toolpath Generation
*
o Curvilinear Tool Paths for Pocket Machining, Michael Bieterman, Mathematics & Computing Technology, The Boeing Company, http://www.ima.umn.edu/industrial/2000-2001/bieterman/bieterman.pdf
+ shape morphing http://www.cs.bath.ac.uk/pubdb/download.php?resID=192
o Cutter path generation for 2.5D milling by combining multiple different cutter path patterns http://www.glue.umd.edu/~skgupta/Publication/IJPR04_Yao.pdf
*
o A Classified Bibliography of Literature on NC Tool Path Generation Preprint version of article that appeared in Computer-Aided Design, Vol 29, No 3, March 1997. http://www.cgl.uwaterloo.ca/~smann/Papers/survey2.pdf
o Algorithms for Real-Time Tool Path Generation http://www.bmf.hu/conferences/Neumann/Hermann.pdf
o Toolpath generation along directions of maximum kinematic performance; a first cut at machine-optimal paths, Kim T.; Sarma S.E., Computer-Aided Design, Volume 34, Number 6, May 2002, pp. 453-468(16)
o Curve fitting with arc splines for NC toolpath generation, Yeung, Millan K; Walton, Desmond J, Computer Aided Design. Vol. 26, no. 11, pp. 845-849. 1994
o Robust Feedrate Selection for 3-Axis NC Machining Using Discrete Models, B. K. Fussell, R. B. Jerard, and J. G. Hemmett, Journal of Manufacturing Science and Engineering -- May 2001 -- Volume 123, Issue 2, pp. 214-224
o Circular hole recognition for STL-based toolpath generation, Xiuzhi Qu, Brent Stucker, Rapid Prototyping Journal, 11/3 (2005)
o Die and mold finishing--how fast?, Mason, F, Manufacturing Engineering (USA). Vol. 115, no. 3, pp. 35-36, 39-40, 42, 45, 47-48. Sept. 1995
o Boundary-conformed toolpath generation for trimmed free-form surfaces via Coons reparametrization, Yang D.C.H.1; Chuang J.J.; Han Z.; Ding S., Journal of Materials Processing Technology, Volume 138, Number 1, 20 July 2003, pp. 138-144(7)
o Guide curve based interpolation scheme of parametric curves for precision CNC machining, YUWEN SUN (1) ; JUN WANG (2) ; DONGMING GUO (1) ; , (Int. j. mach. tools manuf.) , 2006, vol. 46, no3-4, pp. 235-242 [8 page(s) (article)] (16 ref.)
o Integrated Steepest-Directed and Iso-Cusped toolpath generation for three-axis CNC machining of sculptured parts, CHEN Z. C. (1) ; VICKERS G. W. (2) ; DONG Z. (2), (J. manuf. syst.) , 2003, vol. 22, no3, pp. 190-201 [12 page(s) (article)] (13 ref.)
o Tool Path Generation for Freeform Surface Models, Elber, G. and Cohen, E., CAD, Vol. 26, pp. 490-496, June 1994, http://www.cs.utah.edu/gdc/publications/papers/elber94d.pdf
Simulation/Backplot/Verify
*
o A CUTTER MOTION SIMULATION SYSTEM http://www.sdpsnet.org/journals/vol4-1/cutter.pdf
o Proof is in the pudding - or toolpath simulation, Kindilien, B, Tooling and Production (USA). Vol. 66, no. 4, pp. 42, 44-45. July 2000
Misc
*
o CAM for moldmaking, Ragan, J, Tool. Prod. (USA). Vol. 61, no. 2, pp. 73-75. May 1995
o CAD/CAM's expanding toolkit, Destefani, J D, Molding Systems (USA). Vol. 56, no. 2, pp. 36-41. Feb. 1998
o Volume Graphics http://www.cs.sunysb.edu/~vislab/projects/volume/Papers/index.html
Machine Controllers
Machine Controllers take G-code as input and control actual CNC machines
OpenSource Machine Control:
* EMC http://www.linuxcnc.org * AXIS, a Python GUI for EMC/EMC2, http://axis.unpy.net/index.cgi/ * TurboCNC http://www.dakeng.com/turbo.html
Commercial Machine Control:
* Mach 3 http://www.machsupport.com/ * Siemens * Fanuc * IBH Automation http://www.ibhautomation.com/ * etc.
Toolpath Output formats
G-Code:
* RS274, definition of G-code: http://www.isd.mel.nist.gov/documents/kramer/RS274NGC_1.pdf * RS274, version 2: http://www.isd.mel.nist.gov/documents/kramer/RS274NGC_22.pdf
HP/GL:
* ?
STEP-NC:
* An article on STEP-NC: http://www.manufacturingcenter.com/tooling/archives/1205/1205step_nc.asp
Something else
* ?
Geometry Input formats
DXF (Autodesk Drawing eXchange Format):
* Definition by autodesk: http://www.autodesk.com/techpubs/autocad/acad2000/dxf/ * http://www.autodesk.com/techpubs/autocad/acadr14/dxf/ * From the Graphics File Formats FAQ: DXF is probably one of the most widely supported vector formats in the world today. DXF is rich in features, including: support for 3D objects, curves, text, associative dimensioning, and is an easy format to parse. The DXB format is a binary representation of a DXF file and they are usually smaller and faster to load than the equivalent DXF file.
* SDXF, a Python library for writing DXF files http://dxf.stani.be/
IGES (=Initial Graphics Exchange Specification (?)):
* "IGES is a set of protocols for the transfer and display of graphical information on remote devices via a telephone or computer communications network. IGES does not define any new graphical file formats, but instead uses existing formats (such as CGM) to encapsulate graphical data. * IGES in the Graphics File Formats FAQ: http://www.faqs.org/faqs/graphics/fileformats-faq/part3/section-68.html * An article on IGES http://nvl.nist.gov/pub/nistpubs/sp958-lide/246-249.pdf
STL (Stereolithography Interface Format):
* Stl Format Description http://www.sdsc.edu/tmf/Stl-specs/stl.html * http://en.wikipedia.org/wiki/STL_%28file_format%29
STL to DXF conversion
* http://timeguy.com/cradek/stl-to-dxf
ISO 10303 "STEP" AP203 and AP214
* http://en.wikipedia.org/wiki/ISO_10303
Open Source Code, libraries etc
* VTK,The Visualization ToolKit, http://www.vtk.org/ * OpenSceneGraph http://www.openscenegraph.org/ * Coin3D a high-level 3D graphics toolkit for developing cross-platform real-time 3D visualization and visual simulation software. http://www.coin3d.org/ * NIST Manufacturing Engineering Laboratory http://www.mel.nist.gov/product/software.htm o FBICS, Feature-Based Inspection/Control System - fbics_task (NC code gen) code is at fbicsTaskCc * OpenCascade, http://www.opencascade.org/ o OpenCascade Sketcher, simple use of OpenCascade libraries,http://www.laduga.ru/software/occsketcher/index.html o PythonCascade, python bindings to OpenCascade, http://www.pythonizer.org/pythoncascade/pythoncascade.html (Stale! not updated since 2003)
Graphics / OpenGL
* OpenGL tutorials http://nehe.gamedev.net/ * Nate Robbins OpenGL tutorials http://www.xmission.com/~nate/tutors.html * NURBS and OpenGL http://www.mat.ucsb.edu/~c.ramakr/articles/dls/nurbs.pdf * http://www.geometrictools.com seems to contain a number of useful geometry algorithms * Building Block Software, The Boundary Offset Experts, http://www.buildingblock.com
Python
* Language: http://www.python.org/ * GUI: http://wxpython.org * OpenGL: http://pyopengl.sourceforge.net/ * BOA Constructor: http://boa-constructor.sourceforge.net/ * Design Patterns in Python: o http://www.python.org/workshops/1997-10/proceedings/savikko.html o http://www.suttoncourtenay.org.uk/duncan/accu/pythonpatterns.html * NURBS library for Python http://runten.tripod.com/NURBS/ * NumPy examples http://www.scipy.org/Numpy_Example_List#head-801a34f50ffaa194c390aa6b0f5cc79a4551b0b9 * Skencil, a vector drawing program written in Python http://www.skencil.org/index.html
components
These components should be "plug-ins" i.e. it should be possbile to write more of them without modifying the rest of the architecture.
1. importers read geometry from file (which format?) and import to native geometry format (what?) 2. exporters write native geometry to file in some format 3. geometry creators/modifiers create or modify geometry 4. toolpath generators given geometry, create toolpath. 5. postprocessors given a toolpath, create output in some format
Low priority in the beginning... write native geometry to file in some format:
* an exporter should be able to read geometry
- DXF exists (pythoncad) geometry creators/modifiers
geometry creators/modifiers: create/modify geometry
* a gcreator should be able to create geometry
o point
+ abspoint
o curve
+ line
+ polyline
+ arc
+ Bezier, Spline
o surface
* a gmodifier should be able to modify/create/delete geometry
o delete
o translate
o rotate
o scale
o mirror
o copy
o extrude? (+other surface generators)
toolpath generators
toolpath generators: given geometry + tool(?), create toolpath.
* a toolpathgen should be able to read geometry
* this is a form of geometry creator/modifier, i.e. a subclass of gcreator
* Toolpath can output geometry (lines, curves, FEED/RAPID), canned cycles, M-codes, Toolchanges, coolant etc.
* eventualy implement similar milling strategies to mastercam/surfcam
o "1D" Drilling, Canned Drill Cycle, Peck Drill, Rigid Tap
+ for optimizing drill canned cycles: some solution to traveling salesman problem ?
o "2D" follow curve with cutter compensation, rough/finish modes?
o "3D" Parallell, Radial, Flowline etc. rough/finish modes
o "4D" etc. hard... :)
o Simplifying toolpaths consisting of many short line segments can be done with the Douglas-Peucker algorithm. One implementation is found here http://cvs.linuxcnc.org/cvs/emc2/lib/python/rs274/author.py?rev=1.1
* some interesting notes on toolpath generation from http://www.freesteel.co.uk o Basic Cutter Location Studies http://www.freesteel.co.uk/wpblog/?p=59 details on how a cutter Z coordinate is located given (x,y), the cutter definition, and an STL surface. Interestingly the authors claim that most existing CAM software make little use of academic knowledge on the subject. o More machining questions http://www.freesteel.co.uk/wpblog/?p=63 o Sample rate from machining tolerance http://www.freesteel.co.uk/wpblog/?p=64 how to calculate the sample rate for machining operations o The structure of a CAM system http://www.freesteel.co.uk/wpblog/?p=84 some useful notes on code reusability etc. o Automatic feature detection http://www.freesteel.co.uk/wpblog/?p=44 o Intelligent machining algorithms http://www.freesteel.co.uk/wpblog/?p=43 o Vertical Scallops http://www.freesteel.co.uk/wpblog/?p=31 o http://www.freesteel.co.uk/wpblog/?p=29
postprocessors
postprocessors: given a toolpath, create output
* a post should be able to read toolpaths postp- a post processor for apt360 and more: http://aptos.cvs.sourceforge.net/aptos/postp/
- i.e. map native toolpath to eg. G-code Retrieved from "http://www.editthis.info/opencam/Main_Page

