Wednesday, July 9, 2008

I must be full of BS

My post yesterday highlighted how little I actually know.  I had a number of readers post comments pointing out that the STL format is not at all what I said.  Yes, it is the standard format for rapid prototyping, but no, it has nothing to do with taking thin slices.

After a bit more reading  (something I should have done before yesterday), I see now that the STL format only requires the tessellated surface geometry of the part itself, no sectioning.  There are very easy routines within Wildcat (see WCNurbsSurface::GenerateClientBuffers for example) that can already provide this (even to a nearly-arbitrary accuracy thanks to native 64-bit NURBS geometry).  Since trimmed NURBS surfaces are not actually fully tessellated for display it would require some work to get them to output triangles, but not too much.  I think that I could write that routine in a couple of days.

An outline of an STL exporter would look something like this:
  1. User generates part and executes exporter
  2. Query surfaces of the WCPart object to get list of surfaces
  3. Generate appropriately accurate tessellation for each surface (already includes normals for each triangle)
  4. Order output and write to file
It really should be that easy.  I think.  I was looking around online for documentation of the STL format and only came across one document that looked semi-official, here.  Is this still accurate?

If this is a priority for uses, I can move this up.  It would be way too cool to see parts from Wildcat.  Of course they will be very simple parts, but parts none the less.   Let me know.

Cheers,
   Graham

4 comments:

andyw said...

correct link:
http://www.gom.com/CONTAINER/files/sp_stl_en.pdf

the format described in that doc looks familiar. There are similar descriptions out there but I haven't found anything more 'official'.

Anonymous said...

Hi!

If you read this post[1], you get a general idea what is really required from wildcat to be at least usable for reprap.

I try to sum it up for you:
1. Boolean operation (add, substract, union, difference). This is a MUSTHAVE
2. Blends. The rounded corners.
3. easy of use interface

If we can figure out a way, how to convert wildcat format to .stl, you do not even need a native export function.

The above blogpost generated a forum thread[2], where you can read more opinions.

Anyway, Art Of Illusion is a modelling program with an unintuitive interface, so the bargain is not that high;)

Just need to be easy for the beginners, like google sketchup.

Keep up the good work!
(I have read all of your blogpost, and I really hope that in one or two months we can modell some basic structure for reprap.
Linux version would be a bonus, but as the user base grows, there will be somebody who step ups for the exercise)

Best regards,
Khiraly

[1]: http://hydraraptor.blogspot.com/2008/06/from-illusion-to-creation.html

[2]: http://forums.reprap.org/read.php?12,13723,page=1

Lampbus said...

Actually, now that I think of it, slices generated in wildcat would have nice b-spline (eek, im not good at curve geometry) edges ?
THese would produce very compact comand lists for the RepRap and nice resolution. 'All' we would need is a G code to do them - and that dosnt exist. BUT a special G code with the reprap doing the spline calcs would be seriously cool.

AFAICT most machine drivers convert splines into loads of little straight segments.

Kyle C said...

Hey, I found your project through a forum post on the RepRap website too. We're having a very active discussion at the moment about various alternatives to the current program we use, "Art of Illusion," which for all its rendering goodies is really lousy for a CAD package.

I would urge you to continue developing in your current direction. I haven't had a chance yet to try your software (just found this project about a day ago), but if you are able to make it viable for general design work, I have confidence that the compatibility will come :)

Khiraly summed up the requirements that would make this project a great match for RepRap pretty well. I'd like to add reversible operations/a clear design chain - I think it's important to be able to change the location of a hole you made several steps earlier in the design process, for example, without having to redo all the work you've done since (this is a major gripe with the current software).

I hope I haven't overwhelmed you, but I'm guessing that these features were part of your plan from the beginning anyway - you have a great project here, and I wish you the best of luck!