FAQ HarmonyWare, Inc.

Main page
Products Overview
Future Plans
1.7 Changelog


Compatible with:
SMS's NLib
IntegrityWare's SOLIDS++

Neat Stuff

Contact Info:
HarmonyWare, Inc.
PO Box 2717
Midland, MI 48641

Here's the beginning to a list of frequently asked questions and answers about our IGES translators.

I get a lot of error messages when I load this file. Does this mean the file didn't work?

It is normal for the IGES translator to generate TSLib errors when running. (If you are running IGES/Nlib, it emulates the TSLib error mechanism using iwos_ErrorMessage in HWLibs/src/HwNlibStandAlone.cpp.) There are several reasons for this.

It is impossible to write a perfect IGES translator. Wildly incorrect data is found in IGES files generated by CAD programs large and small. Sometimes the problems are small, and we do our best to correct for them. Sometimes the problems are large, and there's nothing that can be done. Sometimes the data is right, and we fumble the ball.

Because we recognize this, HarmonyWare's IGES products are designed to recover from problems and continue processing the remaining data in the file. Normal IwStatus errors are trapped at a high level and reported to the log file. Each problem can lead to a string of messages being generated by iwos_ErrorMessage. This is perfectly normal.

In some cases, it recovers from errors within work on trimming a given surface. For instance, if it get an error trimming a surface using its parameter space loops, it will try to use the model space loops instead. Thus errors may even be generated in the process of a completely successful file read.

Why are ruled surfaces problematic?

A ruled surface is constructed between two lines. Each point on one line is connected by a straight line segment to the equivalent point on the other line. How do you know which point is equivalent? The IGES specification provides two methods: by percentage of arclength along the line (form 0) and by percentage of parameter range (form 1).

To exactly construct a NURBS representation of the ruled surface, you need to have a NURBS curve for each line. The NURBS must be parameterized so that equivalent points on the two curves have the same parameterization. [Note that rational NURBS curves will yield a NURBS surface whose shape is fine, but whose parameterization is incorrect.]

The problem is that NURBS are not perfectly flexible. For example, you can create a NURBS circular arc which has the exact shape of an ideal circle, but it will not have the ideal (R cos t, R sin t) parameterization. (I believe Wayne Tiller has proved this.) You can get close to the ideal parameterization by approximating the circle using a non-rational curve, but it is only an approximation, albeit a good one.

So each different curve entity presents its own unique brand of problems for ruled surfaces. Here's a table summary of what HW IGES can and cannot handle:

Current Ruled Surface Support

Form 0 Form 1
Circle (Type 100) With Advanced Nlib With Advanced Nlib
Composite Curve (Type 102) As per component curves As per component curves
Conic (Type 104) No No
Linear Path (Type 106) Yes Yes
Straight Segment (Type 110) Yes Yes
Cubic Spline (Type 112) No Yes
NURBS Curve (Type 126) No Yes (1)
Offset Curve (Type 130) No No
(1) Rational NURBS curves will produce improperly parameterized NURBS surfaces.

Will ruled surfaces support get better?

Probably not anytime soon. The techniques that create circles should also be able to create conics, but conics are a good bit trickier. As for the rest, as far as we know, there are no accurate general solutions.

What about surfaces of revolution and tabulated cylinders?

The creation of a surface of revolution relies only on the shape of the generating curve -- the parameterization is unimportant. Other than offset curves, all IGES curve shapes can be exactly represented by a NURBS curve. So precise NURBS versions of the surfaces can be created, and HW IGES does so.

The parameterization of these surfaces depends on the parameterization of the generating curve. So if circles or conics are present, the parameterization of the NURBS tabulated cylinder will be wrong. The NURBS parameterization of a surface of revolution is always wrong, because the "revolution" part has the same inaccurate parameterization of a NURBS circle.

We have two solutions for working around this, and hope to have a third in the future.

  • TSLib can trim surfaces using model space trimming curves. If those are present, IGES/TSLib and IGES/SMLib will try to trim this way.
  • Advanced Nlib can approximate a NURBS curve from an arbitrary G1-continuous function. In the case of NURBS circle parameteriztion errors, we use the approximation tool to map the parameter space loop from the ideal parameter space of the IGES surface to the actual parameter space of the NURBS surface.
  • In the future, we hope to be able to use TSLib to create a "virtual" model space loop based on the parameter space loop.
One catch for IGES/Nlib users is that we have no way to produce proper parameter space loops unless you have Advanced Nlib.

Return to the main HarmonyWare page.

Copyright © 1998-2014 Harmonyware, Inc. Last modified: Tue Nov 18 08:45:03 2008