As all developers of CAD programs can attest, providing DWG and DXF translators is expensive and difficult, and it's equally as expensive and difficult to support users who struggle with the translators. And users hate this as much as developers.
OpenClip provides a way for developers to offer copy and paste of precision vector objects from one program to another—any combination of 2D or 3D CAD, illustration or drawing program.
Normally, to accomplish something like this, you would have to merge the two companies, and then spend a year or more getting things coordinated between two programs. However, with OpenClip you can implement Copy and Paste with OpenClip in a few days. The programming is simple and very straightforward. There's nothing fancy required or any high level of programming skill needed. And because OpenClip is based on Apple's Cocoa programming tools, it works flawlessly and reliably.
And all that is required is that each program supports OpenClip, either in the program or with an OpenClip plug-in. One OpenClip plug-in is all that is required for each program. It works like this:
Copy in PowerCADD
Paste in FormZ
Extrude a wireframe
Or extrude a shaded model
What is OpenClip
OpenClip is a no-copyrights, no-licenses, royalty-free, nobody-owns-it open standard for implementing vector graphic Copy and Paste using Apple's Cocoa programming tools. Everything you need to implement OpenClip is provided here on this website.
OpenClip works by putting vector graphic objects into an NSDictionary and then putting this on the pasteboard as an OpenClip flavor. Any program that supports OpenClip would then get the NSDictionary from the pasteboard, run through the list of drawing objects and add them to the current drawing.
OpenClip closely follows the Quartz/PDF standard of dealing with drawing objects. The coordinate system is the same as Quartz and all of the terminology will be familiar to any CAD developer. Think of it as "PDF for the rest of us—or at least us CADs."
Drawing objects include lines, rectangles, circles, ellipses, arcs, polygons and béziers. Rectangles can be rounded. Rectangles and ellipses can be rotated. Arcs can be circular or elliptical and rotated.
The drawing geometry is stored in double-precision format so the highest accuracy possible is preserved. Objects can have 2D or 3D geometry, specifically you can have 2D objects, 2D objects with a Z height and full 3D objects with xyz points. If you're a 2D program, you just read the 2D geometry. If you have a 3D program, you read the Z heights and xyz points. Like a book, you only read the parts that you are interested in.
We do plan to add support for 3D objects, solid objects and nurbs.
Pen sizes, dash patterns, arrows, pen and fill colors and transparencies are all supported.
A common problem with translators is that sometimes the objects have to be reduced to the lowest common form used by all programs. Some programs, for example, do not handle Bsplines, or nurbs and if the objects are 'dumbed down' then the accuracy of the drawing suffers. OpenClip provides a solution to this problem by providing that each object can also contain an Advanced object, say a Bspline or nurbs, inside a bézier, for example. A more capable program can read the advanced objects, while less capable programs can stick with the basic objects.
OpenClip does not provide support for bitmapped graphic images or text. Thus it does not support dimension objects, just the basic drawing geometry, which is all most users are interested in when working between a 2D CAD program and a 3D modeling program.
Drawing objects can be in a 'flat file' list of objects (the most common method used in OpenClip), but OpenClip also supports layers, layer scales, layer colors and groups of objects.
OpenClip works equally well in Carbon and Cocoa apps, PPC or Intel.
All of the most common problems with translators are simply absent in OpenClip. If you're not interested in a Z height, a line dash pattern or anything else, then you don't 'ask' for it. You just deal with the information that you are interested in and ignore the rest.
And because all this is stored as key-value pairs in an NSDictionary as a simple property list, it's essentially impossible to create a corrupted file or to cause crashes. Storing the information in the NSDictionary, saving it to a file, or archiving it and putting it on the pasteboard are all handled by Apple's Cocoa routines—and to give credit where its due, Apple deserves all the credit by providing these powerful and reliable tools.
While the OpenClip concept has been begun on a Mac, once it gets going we will quickly come up with a mechanism to do this on Windows. The files are generic xml and there are many mechanisms for handling key-value pair dictionaries out there. So we urge all cross-platform developers to adopt OpenClip on an evaluation basis while we get the Windows side of things worked out.
If your competitors have OpenClip, then your users will want you to have it, too. So why not do it now and lead the charge? Let's get started.
Where to Start
Typically, the first step will be to implement Paste. Start with the sample files, view them with the OpenClip Viewer app, and begin reading them in using the sample code provided.