Making Code from Sloppy Drawings

The frustrations of messy drawings, and a parallel discussion of CNC theory vs. reality in terms of function. December 9, 2004

Question
Making code from sloppy drawings… Is it just me, or do other programmers have this problem? I program and set up a lot of curved and angled parts that can be tricky. Sometimes I am expected to do these really quickly. After all, the drawing is already done, right? I should just have to turn the lines that are already drawn into G-code with a program that takes care of all that. Yeah, right. In reality, I have to deal with sloppy drawings that cannot produce code without reworking or redrawing. I am talking about things like lines that should be tangent to an arc but are not, lines on top of lines on top of lines, lines and arcs that do not connect, distances and radiuses that are off by .00124879 of a mm, lines and arcs that are off of 0 in the Z plane by .00000154. You get the picture. I have been pointing this out to the proper authorities here to no avail. I spend a lot of time making up for others' incompetence and feel I don’t get credit for it. I cannot express enough the importance of clean drawings. These are not pencil drawings. Close enough does not get it.

Is this a common problem? Do you see a tendency in drafts people that have a lot of pencil drawing experience to do sloppy CAD drawing? How are others handling this?

Forum Responses
(CNC Forum)
From contributor B:
The only way to do it is the method you are using (fix them), and the only way it gets better is to charge setup fees for the sloppy .dwg and .dxf files that must be modified for the machinery to run productively.

Otherwise, in my experience, the quality of the dwgs will not improve.

As a side note, many draftsmen and CAD operators are pushed to generate dwgs as quickly as possible, and when they were being done, have or had had no idea the dwgs would be used to generate code for a machine.



From contributor J:
If this is an internal company problem, I would request a meeting with management and those who create the CAD drawings. Perform a demonstration of your dxf-to-code software with a drawing that you know will not translate. Make it clear that the drawings must be "clean" for the translation to work. It sounds like your "CADsmen" aren't properly trained in the use of CAD. They should be using modifiers for intersections, tangents, etc.


From contributor E:
Oh, how right you are! The problem is pretty widespread. I charge my setup fees based on the time it takes to clean up their drawings.

On a positive note, there are some excellent CAD draftsman out there as well. I was visiting a prospective customer last month and was talking with his CAD man. After telling him what I needed, he took a 3-D Autocad file and pulled the parts he wanted off it, converted them to 2-D and cleaned up the files for me in 10 minutes. Have not got a bad drawing from him since. Other customers are not so hot, however...



From contributor M:
I have the same problem. I fix everything for a week or so and try and explain to the people who do the drawings that it's not right. Then I get mad and give them what they drew. Only solves the problem for a couple of weeks, though. But it is a break.


From contributor Y:
This may not be a quick fix for you, but it works for me in Surfcam. Build a flat surface where you want to cut. Project these sloppy lines, arcs, and anything else they throw at you onto your new surface in a different color, delete the original mess, and now you have new geometry that you can trim, break or modify that you know is flat to your world. This is the main problem that I have with data that comes from other software.


From contributor T:
I think one thing you need to do is step back for a second. It is easy to become frustrated with other departments or aspects of the business. Before you criticize, you should be certain you understand exactly what it is that the programmers do. Take them to your own turf so they can see and feel exactly what you experience. Right there at your computer and machine, you have every tool you need to teach class and state your case.

Contributor J's advice is 100% accurate and crucial.

“If this is an internal company problem, I would request a meeting with management and those who create the CAD drawings. Perform a demonstration of your dxf-to-code software with a drawing that you know will not translate. Make it clear that the drawings must be "clean" for the translation to work. It sounds like your "CADsmen" aren't properly trained in the use of CAD. They should be using modifiers for intersections, tangents, etc.”

Then you need to go to their workstation and understand, start to finish, how their program is created. Are they creating the drawings from scratch and do they have full control over the accuracy and correctness? Or are they working with existing drawings that were created by an earlier person? Therefore, the root of the inconvenience is deeper and now two teams can tackle this task? Are all parties using software that requires precision and exactness?

In response to some of your points…

“I program and set up a lot of curved and angled parts that can be tricky.”
They’re not only tricky for you, my friend.

“Sometimes I am expected to do these really quickly. After all, the drawing is already done, right?”
I’d be willing to bet just as frequently those drawings are also done really quickly.

You get the point, right? Be fully educated to the issue and seek out the correct avenues, not the authorities.



From the original questioner:
The drawings I have to work off of are all done in-house. We are not a large company, so you would think we would have some control over how our drawings are done. This problem has been brought up many times to the drafts-people themselves, as well as management. I have gone over in detail why I need them clean, and have tried to help improve their drawing habits. For example, I have one draftsman that insisted on keeping the “nearest” snap active all the time. I tried to point out that this could be causing some of the problems in the drawings (snapping to the wrong place by accident), but it didn’t seem to sink in. There are other problems, too. In CAD, I see no excuse for sloppy drawings.


From contributor A:
I have the same problem, but have reduced it by insisting that all contours use polyline edit. I told the draftsmen that if they can not connect the drawing segments, then the machine will not, either. I still have a long way to go, but it's getting better.


From contributor G:
It's true that the draftsman is also under the gun. In the draftsman's eyes, he has done his job if he has conveyed his message on paper with proper dimensioning. Lines over lines and other bad geometry is not relevant to him as long as the error is taken up in the rounding of the dimensioning. Lines that don't quite meet by .00001" do not affect them.

Good draftsmen will give you clean geometry and you are lucky if your company has a good draftsman, but not all draftsmen are that conscientious about their work and you will just be talking to the wall when trying to change their drawing habits. If you have many draftsmen, then forget it. If you are talking about bad geometry in blocks, that's another story.

Ultimately, the responsibility of producing code that does not crash the machine falls on your shoulders. If you had a good draftsman who consistently gave you clean drawings, does that mean you would no longer check the drawings before generating code? If a spindle got trashed because of bad code created from bad geometry, then whose head would end up on the end of a spear? The draftsman, the operator, or the programmer?

I think you know what I'm getting at. You need to make it a ritual of going through each drawing you get and making sure that it's clean. As for the people that want a quick part, they have to go through you to get it, so either they need to wait the amount of time it takes you to do it correctly or they can do it by hand. And if there is someone standing over your shoulder pushing you to move faster, then this is the person you need to go off on.



From the original questioner:
I know, it’s hard to find good CAD drafters. I guess my frustration is in making up for others; incompetence, and not getting credit for it. I spend a lot of time making sure it is right before it leaves my hands. That means checking everything thoroughly, whether I created it or not, and fixing any problems. I don’t always feel that that this is taken into consideration as part of the programmer’s job description. The extra time spent is sometimes not understood by superiors. I still don’t see time as an excuse for sloppy drawings. In my opinion, it is easier to create a clean drawing. Drafts-persons should be allowed the time to do it right. It saves time in the long run. Garbage in, garbage out.


From contributor N:
From my experience, the only way to get good CAD drawings is to make the drafters program their own work. They learn real quick that way, but then you'd be out of a job. Or if your work is repetitive, learn yourself how to automate the drafting by using mathematical formulas. Then they are out of a job, but at least you get accurate drawings.


From contributor S:
There is no excuse for sloppy CAD drawings. Hopefully you can get that taken care of soon. If you are using AutoCAD, I have found the bpoly command helpful for getting rid of double lines. It also ignores small gaps. Thankfully, I am the drafter and programmer for most of the programs that I create, and my boss, whose drawings I occasionally create programs for, is very precise in his drafting techniques. I hope you can get your drafters to see the importance of clean drawings soon.


From contributor W:
For quality drawings, you have to pay money - nothing is free. If you like CAM-ready drawings, you have to find professional drafters, not amateurs, and you will pay extra. Shop drawings printed even in full scale don't have to be accurate to .00001. Drafters are just trying to make some money, so they produce drawings as fast as possible.


From contributor X:
I suggest you find a CAM system that understands these common problems and automatically corrects them. Overlapping lines and disconnected elements should be easy to repair during the import function.


From contributor L:
I'm not a CNC user, but I've been lurking trying to see if it's worthwhile for several projects.

In discussing the drawings from which the commands are generated, several have commented on problems resulting from (what seem to be) minor errors. I'd viewed the CNC as analogous to a vector graphic system or plotter: the tool moves to a designated point, drops, cuts to a second point, and raises. Why would the errors matter? Thanks for any clarification you can offer.



From contributor E:
Ah, but were it that easy.

You're right in that in its simplest form, CNC work is like a plotter, but things go uphill fast from there. When looking at a CAD drawing, all the lines have to be closed vectors if you plan on cutting out a part. Any break, no matter how small, and you can't run a toolpath around it. Loops, crossed end points, end points that don't meet, poorly fitted arcs, line fragments, etc. are the bane of the poor CAM man and his CNC machine.

The worst files I deal with come from graphic artists. They are visually okay but terrible for the purposes they want me to use them for, with a multitude of the above errors being all too common.

Nothing like watching a rush job that you should have looked closer at merrily try to profile a line fragment on the pieces you are trying to cut.



From contributor J:
For anything other than complex shapes and irregular curves, parametric code is the way to go, not dxf translation.


From contributor G:

A CNC router is like a pen plotter in that it responds to commands that make it "draw" lines and arcs. The router draws with tooling and the plotter draws with pens. However, the router comes with a much more robust command set because it has to deal with multiple types of cutting tools and materials instead of just a pen and paper. A plotter draws lines where a router makes cuts that are either to the left of a line, to the right of a line, or down the center of a line. A plotter draws a line in the direction that is most convenient for the plotter driver, whereas the router must either climb cut or conventional cut depending on the tooling and material. A plotter just picks up and puts down a pen while the router must lead in to the material using a variety of lead-in techniques to avoid breaking the tool, burning the tool or material, or damaging the machine. A CNC router also has to deal with all the varying feed rates and spindle speeds associated with all the different types of tooling and materials.

You could write all these commands to run the CNC yourself, but doing it this way is very tedious, confusing and time consuming, let alone error prone. That’s where the CAM package comes in. Generally speaking, most CAM software will allow you to both draw your parts right in the software or somehow import existing drawings into it. Through varying methods, the CAM package will attempt to interpret the drawing and apply cuts to it. Software cannot tell if a rectangle in a drawing was intended to be a cutout for a grommet or the outside perimeter of a part, so somewhere along the line, the CNC programmer had to tell the software what needed to be done with that rectangle. Most CAM packages have a way to set up multiple methods for cutting similar geometry. The user can then pick one of those methods and "associate" it to their part drawing. Most CAM packages also have a way to import parts from a CAD package such as AutoCAD and have the cutting methods automatically "associated" to the lines based on a predefined layer naming convention. For example, you would draw a circle in AutoCAD on a layer called "DOOR_PULL" and you would have a cutting method set up in your CAM program that uses a 3/8 downward spiral router bit to conventional cut to the right of the line at a depth of .5" at such and such feed rate and so and so RPM. When that part gets cut, you will get a pocket for a door pull and all the programmer had to do was put the circle on a layer called "DOOR_PULL". The CAM package will finally write the tedious code for you that the machine will understand.

Your CAM package is still going to do what you tell it to do, even with bad geometry. Generally speaking again, most CAM packages have a feature that will detect and repair open shapes based on user-defined criteria. If a tool path designed for a closed shape is associated to a rectangle with a small gap at the corner and this feature is turned off or outside the range of error defined by the user, then the CAM package would most likely attempt to generate code for that rectangle, even though it really is not a rectangle. Depending on the software and the post processor, just about anything can happen at this point, ranging from mildly amusing to utterly devastating. Lines over lines are another issue. These hidden lines could end up on the wrong layer and end up with a tool path associated to it and you may never see it until it grabs the most expensive tool on the machine and attempts to plunge into the vacuum table or pod system and then do a rapid.

The worst I have seen a pen plotter do is to keep on chugging away as the paper shreds itself on the feed roller.



From contributor L:
Thanks, that makes sense.

The only error I've had on plots were fills and hatches that "leaked" into unwanted areas. I can see the offset problem - similar to template routing with a guide. And I think I see the over-written line problem.

Is there a good article you could cite that would explain what and how to clean/purge a drawing for submission to a CNC shop?



From contributor U:
Getting back to the original post about sloppy drawings… These drawing are created for many uses. They may be used for on-site installations or they may go to a graphic company for who knows what? The point is that these drawings may be used for twenty different applications and to think that a CAD guy will make sure his or her drawing is 100% appropriate for CAM may be asking too much. Maybe the challenge comes with an owner who expects his CAM guy to go zip, zip because the drawing is already done. Owners are sometimes disillusioned by the fact that they spent big bucks on software and a machine that the salesman oversold. Oversold meaning the salesman said, "see, you just make a drawing and the machine cuts it out." Well, we all know it's not magic. It's probably better to make a habit of recreating the drawing yourself and applying the cutter path to that. The seemingly extra time is really a time saver when there is one bad line or arc in a drawing. All this coming from a long-time programmer and owner.

From contributor I:
There are a couple things that everyone seems to be missing on this topic. When it comes to CAD, there are a couple of parameters that can easily affect accuracy and complete connections of elements. Using a grid which typically automates location of points (but doesn't guarantee connected lines) in your drawing is one. Another is dimensional/coordinate readouts set to a rounded-off value can also affect how clean the drawing is. From a printed and dimensioned format, these drawings are as accurate as any... but to a CNC programmer, these will be a nightmare.

When I started programming, sloppy drawings didn't matter because every line of code had to be typed in manually, but for more than 10 years now, I have strived and fought with my co-workers to provide clean and accurate drawings. I even encountered CADsmen that thought simply editing a dimension meant that the now incorrect geometry would be magically located correctly by the CNC post.

What this all comes down to is poor attitude and training of the people making the drawings. It doesn't take any longer or any more effort to do things right the first time!