1.7 Translator Changelog HarmonyWare, Inc.


Main page
Products Overview
Future Plans
Changelog
1.7 Changelog

IGES
VDAFS
STEP

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

Neat Stuff

Contact Info:
HarmonyWare, Inc.
PO Box 2717
Midland, MI 48641
colomon@ralf.org

Changes for HarmonyWare Release 1.7.11  

  • Go down to one definition of HwMakePoint. 2013-09-09.
  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Bump all translators to version 1.7.11 for release. 2013-09-09.
  • Borrow MakeSTEPCircle fix from 1.9. 2013-09-07.
  • STEP: Add HW_STEP_EXPORT_COORDINATE_SYSTEMS define. 2013-09-06.
  • Handle newer SMLib interface to IwSurface::Evaluate for HwTSLibIdealPipeSurface. 2013-05-31.
  • STEP: When replacing a surface with a plane, copy the original surface's attributes to the plane. 2013-03-11.
  • STEP: Make sure a header's file_name actually exists before trying to read it. 2013-03-11.
  • Add HwNlibCompositeCurve::IsEmpty. 2013-03-11.
  • Allow evaluation of squashed cones. 2012-12-11.
  • Rework CurveOnSurface code a bit. Add check to make sure the ApproximateCurve method has not gotten out of control. Allow the InterpolateCurve code to work on surfaces where you can Evaluate points on the curve but nothing else. improved fallback conditions. 2012-11-14.
  • Lack of success at GetEndPoints should not kill HwNlib3DTrimmedCurve::GetMinMaxBox -- at worst we can usually find a dumber approximation that works. 2012-11-14.
  • Pull full HwNlibOperators.h from 1.9.10. 2012-11-14.
  • STEP: Special case handling of an ellipse revolved in a surface of revolution (basically illegal in STEP) to create a valid surface which hopefully is the intended surface. 2012-11-06.
  • DATAKIT: Take loop orientation into account when processing loops. 2012-11-04.
  • Add IwBrepData.h to the includes. 2012-10-05.

Changes for IGES 1.7.10/VDAFS 1.6.4/STEP 1.5.0/SAT 1.3.5/OpenNurbs 1.3.5/Parasolid 1.0.3/DATAKIT-CATIA 1.1.6/DATAKIT-CATIA5 1.1.6/DATAKIT-UG 1.1.6/DATAKIT-PRO/E 1.0.3/SolidWorks 1.0.3  

  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update version numbers for release. 2012-09-18.
  • openNURBS: Add HwTSLibOpenNurbsRead function which returns meshes. 2012-09-18.
  • DATAKIT: Add sphere patch and turn off no longer supported SetProcessed method. 2012-09-18.
  • DATAKIT: Pull in new V74 code from 1.9.9. 2012-09-18.
  • Correct capitalization of filename. 2012-09-17.
  • Pull 1.9.9 code for NMTLib Unicode compatibility into 1.7.9. 2012-09-17.
  • Be more careful approximating min max boxes for trimmed closed curves. 2012-08-13.
  • Get proper attributes when converting from IwCompositeCurve. 2012-08-12.
  • Parasolid: Tweaks needed to handle non-neutral binary files. 2012-07-18.
  • DATAKIT, IGES: Rejigger includes so that we are not using iwtopo_inline.h. 2012-07-06.
  • More attempts to fix SOLIDS++ Unicode interfacing. 2012-07-01.
  • Clean up "Unicode" support, tweak version numbers to switch it on for certain NMTLib calls. 2012-07-01.
  • IGES: Much improved handling of reading NMT B-reps written out by the HWlibs 1.9.x branch. 2012-05-24.
  • Put some sanity checks in place to prevent assertion failures trying to recover from error conditions. 2012-05-24.
  • VDAFS: Trap errors in ProcessGROUP; one item failing should not lead to the entire GROUP failing! 2012-05-18.
  • Change x.p_ascii.IsOkay to HwStdSER at a customer's request. 2012-05-14.
  • Correct spelling error which had been in the code for thirteen years or so. 2012-05-14.
  • Clean up new defines a tad. 2012-05-08.
  • STEP: Implement and start testing HwConvertSTEPStringToUtf32. 2012-05-04.
  • First full implementation of ISO 8895 to Unicode character translator function. 2012-05-03.
  • Start conversion utility. 2012-05-03.
  • Import ISO-8859 conversion mappings to the tool set. 2012-05-03.
  • Differentiate between parts (B-reps) and (trimmed) surfaces in polygon output code. 2012-04-25.
  • Patch for TSLib assemblies turned on 2012-04-20.
  • STEP: Add some special code for composite_curve_segment's transition member, to handle a broken pre-processor. 2012-04-17.
  • Rewrite the HwPolygonExportInterface::Start functions to return a bool, allowing a return value of false to skip the b-rep (or face) in question. 2012-04-16.
  • More NLib Unicode fixes. 2012-04-06.
  • Try fix for NLib Unicode change. 2012-04-06.
  • SolidWorks: Try to allow reading read-only files. 2012-04-03.
  • Move p_include_blanked to protected status. 2012-03-23.
  • Don't go into "Trying to convert parameter space loop to model space" if the parameter loop is off the surface's parameter space and the surface cannot be UV extended somehow. 2012-02-16.
  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update version numbers for next maintenance cycle. 2012-02-15.

Changes for IGES 1.7.9/VDAFS 1.6.3/STEP 1.4.9/SAT 1.3.4/OpenNurbs 1.3.4/Parasolid 1.0.2/DATAKIT-CATIA 1.1.5/DATAKIT-CATIA5 1.1.5/DATAKIT-UG 1.1.5/DATAKIT-PRO/E 1.0.2/SolidWorks 1.0.2  

  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update version number for release. 2012-02-14.
  • New warning-silencing pragma. 2012-02-14.
  • Try to accommodate extra parameters added to IwCurve::Evaluate and IwSurface::Evaluate in latest version of SMLib. 2012-02-07.
  • Tweak new calls for IW_BORLAND compatiablity. 2012-02-03.
  • DATAKIT: Hopefully this will fix the crash. 2012-01-31.
  • DATAKIT: Add HwDtkConvert. 2012-01-30.
  • DATAKIT: Handle points. 2012-01-30.
  • DATAKIT, HwTest: Merge in V72 branch. 2012-01-26.
  • Reverse the changes needed to get GetCharacterElementsAddress to return TCHAR, as SMLib has abandoned that. 2012-01-25.
  • IGES: Fix memory error found in 1.9.x branch. 2012-01-17.
  • Provide a way to get at the HwStdString of a HwUnicodeToAscii 2012-01-11.
  • Remove all inlines from HwFilename, because constructing a wstring in one context and deleting it in another is Very Bad News on Windows. Also improved Unicode handling from PrintableString. 2012-01-11.
  • Another Unicode fix. 2012-01-10.
  • Implement simple HwUnicodeToAscii tool and try to use it to get IwAttribute support working in new SMLib Unicode version. 2012-01-10.
  • HwAsciiToUnicode takes a char *, not a HwStdString. 2012-01-09.
  • Fix preprocessor code for turning on Unicode return values in the IwAttribute strings. 2012-01-09.
  • In some configurations GetCharacterElementsAddress now returns a wchar_t. Make that work. 2012-01-05.
  • IGES: Add sensible default p_field_terminator and p_record_terminator, in case the global section cannot be read at all. 2012-01-05.
  • SAT: Top level WritePoint now writes vertex entity, which sorts to the top with the bodies. 2011-12-30.
  • SAT: Add ProcessVertex which handles vertices as top-level entities. 2011-12-30.
  • HwTest, openNURBS: Merge in OpenNURBS50 branch. 2011-12-27.
  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update version number for next maintenance cycle. 2011-12-26.
  • DATAKIT: Wrap CreateSimpleOffset calls with defined(IW_LIBS). 2011-12-13.

Changes for IGES 1.7.8/VDAFS 1.6.2/STEP 1.4.8/SAT 1.3.3/OpenNurbs 1.3.3/Parasolid 1.0.1/DATAKIT-CATIA 1.1.4/DATAKIT-CATIA5 1.1.4/DATAKIT-UG 1.1.4/DATAKIT-PRO/E 1.0.1/SolidWorks 1.0.1  

  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update version number for release. 2011-12-13.
  • openNURBS: If a B-rep face is missing UV curves, skip it and return the IW_ERR_EXPORT_HAS_ISSUES error when the export is complete. 2011-12-06.
  • Tone down some of the errors in the FixUV code, so that they become issues rather than show-stoppers. 2011-12-06.
  • STEP: Don't do any transforming from the transforms in a shape_representation. 2011-12-05.
  • DATAKIT: Merge V71. 2011-11-29.
  • Parasolid: Hack to handle escape characters in 'c' char type. Doesn't do anything smart with them yet, just gets the file to parse correctly. 2011-11-11.
  • IGES: Don't crash if the string-specified units are garbage. 2011-11-05.
  • Remove blanked attribute from component curves before merging them into a composite curve. 2011-11-03.
  • Copy attributes when making a reversed copy of a NURBS curve. 2011-11-01.
  • Split the loop you just copied swapped rather than this loop. 2011-08-02.
  • DATAKIT: Merge DATAKIT V70 integration branch. 2011-07-25.
  • Watch for null pointers as empty strings. 2011-06-12.
  • Move delete statement to avoid obscure state leaving a reference to a deleted curve. 2011-06-10.
  • Fix SOLIDS++ / SMLib discrepancy. 2011-06-03.
  • STEP: Support weird units for STEP export as well. 2011-05-17.
  • SAT: Add HwNlibExporterInterface::SetUnitsAndScale interface and SAT-specific version. 2011-05-17.
  • STEP: Workaround to handle reading HarmonyWare STEP files written in other locales before we came up with the patch to always use C locale for writing. Basically when a HarmonyWare file is detected, it switches to a mode where (when reading doubles), commas are counted as commas if they are followed by a space, but periods if they are followed by anything else. 2011-05-15.
  • Parasolid: Add HwParasolidDataMap::GetIntOrShort function to provide a proper solution for the issue where some versions of Parasolid use an Int and some a Short. 2011-05-06.
  • Add argument to BuildLoops to control the number of points created along the edge of a surface. 2011-05-04.
  • Add a couple of additional Unicode shields, just in case. 2011-05-02.
  • Tweaks to improve compilation under SOLIDS++ and Unicode. 2011-04-25.
  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update version numbers for the next maintenance cycle. 2011-04-25.

Changes for IGES 1.7.7/VDAFS 1.6.1/STEP 1.4.7/SAT 1.3.2/OpenNurbs 1.3.2/Parasolid 1.0.0/DATAKIT-CATIA 1.1.3/DATAKIT-CATIA5 1.1.3/DATAKIT-UG 1.1.3/DATAKIT-PRO/E 1.0.0/SolidWorks 1.0.0  

  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update version numbers for maintenance release. 2011-04-25.
  • Add libraries for V6 to the V5 build. 2011-04-22.
  • CATIA5, DATAKIT: Quick hack to enable Catia V6 in the V5 translator. 2011-04-21.
  • DATAKIT: V69 merged in. 2011-04-21.
  • Improve DistanceChartToCurve for better results and tweak the tolerance on it. 2011-04-08.
  • SAT: Add dxid-attrib as an alias for DXID-attrib in the parser. 2011-03-10.
  • Add working CanEvaluateDeriv and EvaluateDeriv for HwNlibEllipse 2011-03-04.
  • Add an IwObjDelete wrapper to make sure deletion is reliable in error paths, and then carefully deal with a different IwObjDelete wrapper in an error path. 2011-03-01.
  • Comment out suspicious call to delete. 2011-03-01.
  • STEP: Port 1.9.x fix to use product id as the name if the product name is empty. 2011-02-24.
  • IGES, Parasolid, SolidWorks: Switch some lingering char const * filename arguments to HwFilename const &filename. 2011-02-18.
  • DATAKIT: Tweak things so it utiltslib will compile under IW and Unicode. 2011-02-01.
  • Trivial changes to get the SOLIDS++ Unicode build to work. 2011-02-01.
  • DATAKIT: Merge in DATAKIT V68 branch. 2011-01-31.
  • Port Unicode fix from 1.9.x. 2011-01-31.
  • openNURBS: Properly handle mirroring rational curves. 2011-01-27.
  • Add version number to 1.7.x branch too. 2011-01-26.
  • VDAFS: Check for end-of-file condition if invalid line found while searching for the next entity. 2011-01-23.
  • Fix HwReverseSurfaceU so that it doesn't move the u knot range when the min u knot is not 0. 2011-01-19.
  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update version numbers for next maintenance cycle. 2011-01-18.

Changes for IGES 1.7.6/VDAFS 1.6.0/STEP 1.4.6/SAT 1.3.1/OpenNurbs 1.3.1/Parasolid 0.7.3/DATAKIT-CATIA 1.1.2/DATAKIT-CATIA5 1.1.2/DATAKIT-UG 1.1.2/DATAKIT-PRO/E 0.6.2/SolidWorks 0.6.0  

  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update version numbers for release. 2011-01-10.
  • Fix longstanding SolveTwoVariables bug by adding an additional check. 2011-01-04.
  • Changes to eliminate warnings under certain configurations. 2011-01-04.
  • DATAKIT: Port the blanked status patch back to 1.7.x. 2010-12-22.
  • DATAKIT: Merge in DATAKIT V67 branch. 2010-12-02.
  • STEP: It's possible for an entire list to be short-circuited by $, so allow it. 2010-11-29.
  • Bring up to current Unicode standard. 2010-11-25.
  • Parasolid: Tweak a regular expression to accommodate a minor irregularity in the latest schema files. 2010-11-24.
  • Parasolid: Add more log messages. 2010-11-24.
  • Add new schemas found from DATAKIT. 2010-11-24.
  • Parasolid: Hack to work around tricky binary file word-size issue. 2010-11-23.
  • SAT: Port the TCOEDGE without pcurve patch back to 1.7.x. 2010-11-19.
  • Missed initialized the p_raw_unicode_string variable in a key HwFilename constructor. 2010-11-17.
  • DATAKIT: Use new HwFilename::Unicode. 2010-11-17.
  • Try to implement HwFilename::Unicode (which returns a wchar_t * version of the string). 2010-11-17.
  • SolidWorks: More const to the correct place. 2010-11-17.
  • SolidWorks: Instead of having HwFilename::BString, create a ConvertToBstring function in the SolidWorks translator and use that instead. 2010-11-17.
  • Try adding header to get BSTR. 2010-11-17.
  • SolidWorks: Add HwFilename::BString and use it to replace uses of SysAllocString in SolidWorks translator. 2010-11-17.
  • Add HW_UNICODE wrappers around HwFilename::UnicodeString. 2010-11-17.
  • Add second form of HwNlibPointLoop::AddPoint. 2010-10-29.
  • Add / by float operator for POINT. 2010-10-29.
  • Try again with the IwBrepData::ReadPartFromFile wrapper. 2010-10-12.
  • Revise a couple of version-specific WriteToFile functions based on input from a customer about an old version of IW. 2010-10-12.
  • Update to UV loop fixing code. 2010-10-11.
  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update version numbers for next development cycle. 2010-10-09.

Changes for IGES 1.7.5/VDAFS 1.5.9/STEP 1.4.5/SAT 1.3.0/OpenNurbs 1.3.0/Parasolid 0.7.2/DATAKIT-CATIA 1.1.1/DATAKIT-CATIA5 1.1.1/DATAKIT-UG 1.1.1/DATAKIT-PRO/E 0.6.1/SolidWorks 0.5.9  

  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update version numbers for release. 2010-10-05.
  • IGES: Fix glitch with HwTSLibIgesWrite. 2010-09-30.
  • Rearrange HwReadFromFile so that it works in the non-Unicode SMLib case. 2010-09-30.
  • IGES, SAT, STEP: Update some of the high level interface functions to take HwFilename arguments instead of char * arguments. Because HwFilename arguments automatically convert char *s to HwFilenames, this shouldn't break any existing code. 2010-09-29.
  • Replace uses of IwBrepData::ReadPartFromFile and ::WritePartToFile with HwReadPartFromFile and HwWritePartToFile. 2010-09-29.
  • SolidWorks: Fix Sw_SER for Unicode. 2010-09-29.
  • Try to wrap some unfortunate TCHAR references. 2010-09-28.
  • Switch iwos_WriteBuffer to hw_iwos_WriteBuffer. 2010-09-28.
  • Port hw_iwos_ErrorMessage from 1.9.x. 2010-09-28.
  • DATAKIT: Port a bunch of the 1.9.x Unicode changes back to 1.7.x. 2010-09-28.
  • IGES: Port IEEE 260 support from 1.9.x branch. 2010-09-16.
  • DATAKIT: Merge in changes for DATAKIT V66. 2010-09-14.
  • Add HwStdSER to HwFilename::GetBaseAndExtension. 2010-09-14.
  • Fix major issue with HwFilename::operator += (char const *more). 2010-09-10.
  • DATAKIT: Try to accommodate Unicode. 2010-09-08.
  • CATIA, DATAKIT: Start moving the DATAKIT libraries to HwFilename. 2010-09-08.
  • Add HW_OPTIONAL_TEMPLATE_PREDECLARATION (HwFilename). 2010-09-08.
  • SolidWorks: Try replicating the SysAllocString patch. (Hope it works!) 2010-09-08.
  • SolidWorks: Try SysAllocString to convert from wchar_t * to BSTR. 2010-09-08.
  • SolidWorks: Add HwFilename::UnicodeString. 2010-09-07.
  • DATAKIT: Try to eliminate the use of TCHAR in HWLibs. 2010-09-02.
  • Add HwFilename constructor which takes a std::wstring. 2010-09-01.
  • Don't return a reference to a temporary. 2010-09-01.
  • Add HwAsciiToUnicode class, and use it a few times. 2010-08-31.
  • Add TCHAR constructor to HwFilename. 2010-08-30.
  • Start to add in wchar_t support to HwFilename. 2010-08-30.
  • All: Get HwFilename class integrated, if not necessarily working everywhere. 2010-08-26
  • Add HwFilename class (from 1.9.x) without using it anywhere. 2010-08-17.
  • IGES: If we cannot TrialProcessNMTShell, check to see if we have an open-shell B-rep instead. 2010-08-14.
  • IGES: Make the usages of the TrialProcess functions actually a trial, ie not fatal to the object's import if there is an error. 2010-08-14.
  • Make HW_SER_ASSERT return an error even in release mode. 2010-08-13.
  • Parasolid: Get curve import working. 2010-08-12.
  • Parasolid: Start work on curve import, and refactor fin/edge handling in the process. 2010-08-11.
  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update version numbers for next maintenance cycle. 2010-06-30.

Changes for IGES 1.7.4/VDAFS 1.5.8/STEP 1.4.4/SAT 1.2.9/OpenNurbs 1.2.9/Parasolid 0.7.1/DATAKIT-CATIA 1.1.0/DATAKIT-CATIA5 1.1.0/DATAKIT-UG 1.1.0/DATAKIT-PRO/E 0.6.0/SolidWorks 0.5.8  

  • CATIA, CATIA5, HwTest, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update version numbers for release. 2010-06-30.
  • DATAKIT: Merge in changes from DATAKIT_V64 branch. 2010-06-27.
  • Refactor, add debugging code. 2010-05-10.
  • Simple check to help ensure a loop starts in the correct period. 2010-05-10.
  • Add model space loop output to rough split code, suppress the info that the trim loops are correctly oriented so that the parameter space loop will be output. 2010-05-10.
  • Swap around p1 and p2 in BestPossibility so it actually matches the p6 version (and therefore works properly instead of causing stupid swings in the values). 2010-05-10.
  • Add in ContainsInvertedSurface hack. 2010-05-10.
  • Replace calls to round with HwRound. 2010-05-07.
  • Try to get things working on Windows. 2010-05-07.
  • Make sure output UV curves are parameterized as per surface rather than from 0 to 1. 2010-05-07.
  • Add HwNlibTrimmedSurface::RoughSplit function (untested). 2010-05-06.
  • Changes to get Nlib stand alone version working. 2010-05-06.
  • Get SplitOnU in there! 2010-05-03.
  • Move old static Sort function to HwSort, put it in HwNlibObject, and make it non-static. Start working on implementing HwNlibPointLoop. 2010-04-30.
  • Try to rejigger the IwPoly #ifdefs a tad. 2010-04-28.
  • Add HwNlibTrimmedSurface::DumpLoopsForUVSplit and SurfaceLoopDump (-ld mode in hw_convert). 2010-04-23.
  • STEP: Try to allow enumerations missing their leading and/or trailing dots. 2010-04-14.
  • SAT: Tweak ordering of member variables so it matches the initialization order of member variables. 2010-03-18.
  • CATIA, CATIA5, DATAKIT, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Support for GCC 4 "visibility" attribute. 2010-03-15.
  • SAT: Add parasil and shadowtapersur types to the SAT parser. 2010-03-04.
  • Tweak the IW_TARRAY_TEMPLATE_PREDECLARATION at SMS's suggestion. 2010-02-25.
  • Add IW_TARRAY_BIND_TEMPLATES_H wrapper as suggested by SMS. 2010-02-25.
  • SAT: Splice in a couple of dummy strings for version 19 sweepsur. 2010-01-28.
  • Remove unneeded "unsigned int i" causing trouble for older compilers. 2010-01-26.
  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update version numbers for next release cycle. 2010-01-24.

Changes for IGES 1.7.3/VDAFS 1.5.7/STEP 1.4.3/SAT 1.2.8/OpenNurbs 1.2.8/Parasolid 0.7.0/DATAKIT-CATIA 1.0.9/DATAKIT-CATIA5 1.0.9/DATAKIT-UG 1.0.9/DATAKIT-PRO/E 0.5.9/SolidWorks 0.5.7  

  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update version numbers for release. 2010-01-22.
  • IGES: Allow errors in Count without aborting the entire input. 2010-01-22.
  • Removed ASCII zero. 2010-01-21.
  • DATAKIT: Add #if defined SMLIB wrappers to handle SMLib's extra parameter to CreateSimpleOffset. 2010-01-21.
  • Attempt to account for B-rep attributes when converting a NMTBrep to manifold chunks for export. 2010-01-21.
  • SAT: Add parsing for DXID-attrib type. 2010-01-19.
  • DATAKIT: Merge in the DATAKIT V62 branch. 2010-01-19.
  • Check to make sure both loops were hit by the splitting curves instead of just assuming that if there were two, they must have both been hit. 2009-12-15.
  • SAT: Don't reject an edge curve simply because we cannot calculate GetEndPoints for it. 2009-12-15.
  • HwBlendSection::GetSection refactoring, implementation of HwBlendSkeleton::Evaluate. 2009-12-15.
  • Add crosshatch mode. 2009-12-15.
  • Don't try to access IwAssembly name in SMLib. 2009-11-28.
  • Add 64-bit output for mNlib_POPLib. Add PowerSTL. 2009-11-28.
  • Add missing name declaration. 2009-11-26.
  • Make EndAssembly match StartAssembly. 2009-11-26.
  • If the IwAssemblyInstance doesn't have an attribute name, check if it has a normal name, or if its assembly has a name. 2009-11-25.
  • Try to transfer HwNlibAssembly name to IwAssembly. 2009-11-25.
  • Get TransLib version building. 2009-11-18.
  • Add hack: if a 3D trimmed intersection curve is analytic and only has two points in its intersection chart, make a new intersection curve with the same surfaces and the 3D trimming points as the chart. 2009-11-13.
  • Change HwNlibIntersectionCurve::SetSurfaces to take const surfaces. 2009-11-13.
  • Parasolid: Better tracker support. 2009-11-12.
  • Added virtual destructor for HwTSLibAssemblyEntityReceptacle. 2009-11-12.
  • STEP: Refactor the next assembly usage occurrence name-handling code. Reject names that start with NAUO in general now, not just names that start with NAUO_NAME. And apply the same set of rules to both the first two names we look at. 2009-10-27.
  • Parasolid: Count Pointer Lis Blocks, too. 2009-10-19.
  • Parasolid: Last patch turned out to be a huge mistake (as expected) so this reverts it. 2009-10-01.
  • Parasolid: Skip processing if B-rep count is one and face count is one. Think this patch might be dubious, but want to try it and see what happens in the test suite. 2009-09-30.
  • Turn on B-rep editing before calling FindAndSetInfiniteRegion. 2009-09-30.
  • Turn on HW_NO_LOG by default, to avoid Windows 7 issues. 2009-09-17.
  • SAT: Add support for ACIS ATTRIB_XACIS_NAME attribute (translated to our name attribute). 2009-09-15.
  • Comment with older version of N_toocco call for people without an up-to-date NLib. 2009-08-10.
  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update version numbers for next release cycle. 2009-08-10.

Changes for IGES 1.7.2/VDAFS 1.5.6/STEP 1.4.2/SAT 1.2.7/OpenNurbs 1.2.7/Parasolid 0.6.9/DATAKIT-CATIA 1.0.8/DATAKIT-CATIA5 1.0.8/DATAKIT-UG 1.0.8/DATAKIT-PRO/E 0.5.8/SolidWorks 0.5.6  

  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update version numbers for release. 2009-08-09.
  • DATAKIT: Remove errant ASCII 0 that had snuck in somehow. 2009-08-09.
  • CATIA, CATIA5, DATAKIT, Pro/E, UG: Merge changes in from the DATAKIT V59 branch. (So the code now supports only V59 of the DATAKIT libraries.) 2009-08-08.
  • Special handling for swapped surfaces. 2009-08-07.
  • GetOffsetDistance, not GetDistance. 2009-08-07.
  • Try to get this to compile. 2009-08-07.
  • Try to implement IwOffsetSurface direction reversing in HwReverse. 2009-08-07.
  • Fixed a missing "return IW_SUCCESS". 2009-08-06.
  • Move HwReverseSurfaceV prototype to the header so other source files can use it. 2009-08-06.
  • Introduce HwReverse function, which attempts to handle the work of IwSurface::Reverse in an environment without NLib. 2009-08-06.
  • Turn off mistakenly left on debugging code. 2009-07-30.
  • STEP: Output B-rep name as product name if available. 2009-07-28.
  • Exorcise HwRBTree.h. 2009-07-27.
  • Get rid of RBTree. 2009-07-27.
  • Merge multimap patch from 1.9.x branch into main code in prep for getting rid of RBTRee. 2009-07-26.
  • Replace all calls to N_igs118 with MakeRuledSurface. 2009-07-26.
  • STEP: Fix color output -- previously had STEP indices messed up. 2009-07-22.
  • STEP: First stab at implementing support for invisibility (via the blanked attribute). Note that (crazy as it seems) individual faces may be invisible. 2009-07-06.
  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update version number for next development cycle. 2009-06-26.

Changes for IGES 1.7.1/VDAFS 1.5.5/STEP 1.4.1/SAT 1.2.6/OpenNurbs 1.2.6/Parasolid 0.6.8/DATAKIT-CATIA 1.0.7/DATAKIT-CATIA5 1.0.7/DATAKIT-UG 1.0.7/DATAKIT-PRO/E 0.5.7/SolidWorks 0.5.5  

  • Proper DLL export of new classes. 2009-06-26.
  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update version numbers for release. 2009-06-26.
  • Parasolid, SAT: Merge in variable radius blend branch. (Which implements the data types needed to support variable radius blends, but does not do the actual math.) 2009-06-26.
  • In HwNlibTorus::SetSelectOuterFlag, properly handle the case where a vertex is on both the select inner and select outer forms. 2009-06-19.
  • SAT: Add very small fudge factor to the b-spline range reversing code (rather than relying on double equality). 2009-06-17.
  • SAT: Clean up the code a bit. 2009-06-12.
  • SAT: Given a sumsur, if the v curve is a straight line, create it as an infinite tabulated cylinder. 2009-06-11.
  • SAT: Switch swepttapersur from using the experimental HwNlibSweptTaperSurface to a simple HwNlibTabulatedCylinder. 2009-06-08.
  • Eliminate HwNlibSweptTaperSurface::Evaluate, since we have no idea how to make it work yet. 2009-06-08.
  • SAT: Add blend variable radius processing, but don't do anything with it yet. 2009-06-07.
  • Sketch in HwNlibBlendRadiusBase class family. 2009-06-07.
  • SAT: Merge in the SAT bugs branch, with miscellaneous small patches and the beginnings of support for swepttapersur. 2009-06-07.
  • SAT: Check out spheres, planes, and tori rather than cones and cylinders. 2009-06-07.
  • SAT: Clean up the cone patch. The rules turn out to be very simple, I think... 2009-06-06.
  • SAT: Rewrite the cone parameterization code again. 2009-06-06.
  • SAT: Use the u_parameter_reversed flag if the cone is really a cylinder. 2009-06-05.
  • SAT: More cone debugging tools, and adjust the cone parameterization / normal sense until it works right on at least one good-sized file. 2009-06-04.
  • SAT: New debugging code for TCOEDGE/TEDGE, currently turned off. 2009-06-04.
  • Remove some inverted surfaces on curves on surface. (Target is to remove all of them.) 2009-06-01.
  • Parasolid, openNURBS: Switch HwNlibCurveOnSurface::AssumeCurveAndSurface to return IwStatus. 2009-06-01.
  • Implement CopyWithoutInvertedSurfaces. 2009-06-01.
  • Add ContainsInvertedSurface. 2009-06-01.
  • SAT: Slightly enhanced cone debugging dump info. 2009-06-01.
  • Turn off HwNlibInvertedSurface::EvaluateDeriv, as it was wrong and we do not know how to make it right. 2009-06-01.
  • SAT: Check in tvertex here.... 2009-05-31.
  • SAT: On cones/cylinders, if the u parameter is reversed, invert the surface, so that we get the same surface normal as we did before we fixed the negative reparameterized surface issue. 2009-05-28.
  • Fix the doubly reparameterized surface bug. 2009-05-26.
  • Reverse surface from reparameterized surface as needed. 2009-05-25.
  • openNURBS: Mutate HwReverseSurfaceNormal into HwReverseSurfaceU and HwReverseSurfaceV, and use them to reverse the direction of HwNlibReparametizedSurface if needed. 2009-05-25.
  • SAT: Better unknown radii type error message. 2009-05-24.
  • SAT: Clean up TCOEDGE / TEDGE messages a bit. 2009-05-24.
  • Add Indent and DeIndent functions to HwAbstractMessageLogger interface, simple HwLogIdent class to use it. 2009-05-24.
  • SAT: Get the proper parameterization for straights whose extent is defined by their ACIS parameterization. 2009-05-24.
  • Add static HwNlibReparameterizedCurve::ReparameterizeCurve for easy reparameterization of curves. 2009-05-24.
  • SAT: Attempt to align the tedge curve with the tedge vertices. 2009-05-23.
  • SAT: Undo the broken cone patch. 2009-05-21.
  • SAT: Experimental reworking of cone parameterization -- negative the u parameterization rather than inverting the surface. 2009-05-20.
  • Add HwMessageLogger::~HwMessageLogger which gives the time logging was finished, making it easy to determine the total length of the operation logged. 2009-05-20.
  • Tighten error margin on HwNlibOrthoSurface binding -- should still be reasonable amount. 2009-05-16.
  • Much improved HwNlibOrthoSurface::BoundInfinite. 2009-05-15.
  • HwTest: Turn off all the blend and intersection curve tests. 2009-05-13.
  • Try to reorganize and clean up the basic trimming functionality -- instead of a long tree of different attempts to make in different orders, make an ordered list of methods to try trimming and then do them one by one until one works. 2009-05-12.
  • Tweaks to handle HwNlibOrthoSurface scaling better (we hope). 2009-05-10.
  • Handle scaling in HwNlibOrthoSurface::Transform. 2009-05-09.
  • Turn TSLib assemblies back off! 2009-05-09.
  • SAT: Detect and correct a second sort of reversed parameter range for a curve. 2009-05-08.
  • Add HwNlibInvertedSurface::EvaluateUnitNormal, which does the proper inverting of the normal of the base surface. Re-implement HwNlibOrthoSurface::Evaluate to use the 3D guide curve instead of the UV guide -- since we're still having parameterization issues with ACIS cones. 2009-05-08.
  • Fix HwNlibOffsetSurfaceCurve::GetMinMaxBox to work from the curve (plus the offset distance) rather than from the surface. 2009-05-08.
  • Implement HwNlibOrthoSurface::MakeNurbs. Add HwNlibOrthoSurface and HwNlibOffsetSurfaceCurve to Unserialize dispatch. 2009-05-07.
  • HwNlibCone::DropPoint implemented. 2009-05-07.
  • Implement HwNlibInvertedSurface::DropPoint. 2009-05-07.
  • DropPoint for HwNlibReparameterizedSurface and HwNlibSwappedSurface. 2009-05-07.
  • Implement HwNlibOffsetSurfaceCurve::Evaluate. 2009-05-07.
  • Add HwNlibSurface::EvaluateUnitNormal interface, and use it to reimplement HwOffsetSurface::Evaluate and implement for the first time HwNlibOrthoSurface::Evaluate. 2009-05-07.
  • SAT: Add sketch of HwNlibOffsetSurfaceCurve type. 2009-05-07.
  • Rename HwNlibTaperedSurface to HwNlibOrthoSurface, add v parameter range variables and "infinite" functions. 2009-05-07.
  • SAT: Very rough placeholder implementation of HwNlibTaperedSurface to support tapersur import. Nothing actually works yet. 2009-05-06.
  • SAT: Log issues regarding TEDGE curve generation. 2009-05-03.
  • SAT: When processing a TCoedge, check the results versus the edge vertices and if they are really bad, try the TCoedge's partner to see if it is better. 2009-05-02.
  • Implement simple HwNlibCompositeCurve::DoGapsExist function. 2009-05-02.
  • Add HwNlibPeriodicSurface to the grand unserialize table of object types. 2009-05-02.
  • Add evaluate functions for the HwNlibConic ellipse case. 2009-04-30.
  • openNURBS: Simple HwConvertCurve functions to convert between ON_Curves and IwBSplineCurves. 2009-04-08.
  • STEP: Make NAUO_NAME an ignored name on assembly usages. 2009-04-05.
  • Eliminate first (of two sequential) calls to IwBrep::ValidatePointers. 2009-03-27.
  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update version number for next cycle. 2009-02-24.

Changes for IGES 1.7.0/VDAFS 1.5.4/STEP 1.4.0/SAT 1.2.5/OpenNurbs 1.2.5/Parasolid 0.6.7/DATAKIT-CATIA 1.0.6/DATAKIT-CATIA5 1.0.6/DATAKIT-UG 1.0.6/DATAKIT-PRO/E 0.5.6/SolidWorks 0.5.4  

  • VDAFS: Switch VDAFS to use HwLowLevelAsciiOutput internally, with HwLowLevelAsciiFileOutput as the default when you pass the VDAFS output code a filename. (And do that everywhere, exiling the ofstream stuff.) 2009-02-17.
  • IGES: Switch IGES export from using an ofstream by default to using a FILE by default. (Which should clear up Japanese pathname problem, I hope.) 2009-02-17.
  • Recode HwMessageLogger so that it doesn't use an ostream unless you pass one in to it. 2009-02-17.
  • IGES: Add SolidDesigner to the list of IGES pre-processors which screw up the dependencies on subfigures. 2009-02-13.
  • Add debugging dump (turned off) for extreme curve to surface distance failures. 2009-02-03.
  • STEP: Trivial changes to clear up compiler warnings. 2009-01-31.
  • DATAKIT: Merge in DATAKIT V56 branch. 2009-01-23.
  • SAT: Trap errors in PassObject call, so that errors in one object do not bring the entire model down. 2009-01-22.
  • CATIA5, DATAKIT: Mild improvement to DATAKIT file open error messages. 2009-01-15.
  • Added new debugging output with info on which face failed. 2009-01-13.
  • Post-release tweaks suggested by customers. 2008-12-17.
  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update version numbers for development cycle. 2008-12-12.

Changes for IGES 1.6.9/VDAFS 1.5.3/STEP 1.3.9/SAT 1.2.4/OpenNurbs 1.2.4/Parasolid 0.6.6/DATAKIT-CATIA 1.0.5/DATAKIT-CATIA5 1.0.5/DATAKIT-UG 1.0.5/DATAKIT-PRO/E 0.5.5/SolidWorks 0.5.3  

  • DATAKIT: Merge in DATAKIT V55 branch. 2008-12-12.
  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update version number for release. 2008-12-12.
  • IGES: In SolidWorks files, if you see a type 402, form 16 planar group as a component of a subfigure, incorporate its members into the subfigure. 2008-12-12.
  • IGES: Convert some char pointers to char const pointers to conform to C99 standard. 2008-12-12.
  • STEP: If infinite lines appear in a geometric set, treat them as finite lines by taking the bit of the line defined from 0 to 1 in the line's parameter space. 2008-12-11.
  • Try to limit the scope of the cone vertex patch from a few months back, so that it doesn't create enormously long cone surfaces for no good reason. 2008-12-10.
  • Parasolid: Instead of the previous "special exception" list of schema versions whose files do not have embedded schema info, realize that the files with embedded schemas all have three numbers in their schema version string, whereas the ones that do not have it only have two. At least, that's how it looks in all our sample files. This commit uses that to trigger the embedded schema code, and adds logging of what it is doing. 2008-12-08.
  • SAT: Fix typo in the specification for name_attrib-gen-attrib (which caused problems if the version number of the file was exactly 6.0). 2008-12-08.
  • Parasolid: If we use a new schema that was embedded in the file, log its basic info. 2008-12-03.
  • Remove apparently useless duplicate IW_TARRAY_TEMPLATE_PREDECLARATION define from HwCommon.h. 2008-12-03.
  • Turned off the Borland Nlib-workaround defines -- they're probably obsolete, and they were causing a ton of noise when making makefiles. Also disable deprecated warnings when making makefiles. 2008-12-03.
  • Parasolid: Tweaks needed to the embedded schema to make it work correctly -- added a much-needed i++ to the insert/append command, and delete remaining fields past i when Z is received (which violates the letter of the spec, but is clearly what the Parasolid files we are looking at actually do). 2008-12-03.
  • Parasolid: Realize that if ptr_class is non-zero, then the datum type is 'p', pointer. Duh. 2008-12-02.
  • Parasolid: Try to actually create the I/O command associated with each field in the embedded schema. 2008-12-02.
  • Parasolid: Implement HwParasolidSchema::GetShortUserfieldFlag, which lets the reader know if the user field is a short or an int. This used to be a simple schema version check against 13006, but as that is now what "future" schemas register as, the check had to get more complicated. 2008-12-02.
  • Parasolid: Turn on the embedded schema code that's been lurking in the Parasolid code for years without being used. 2008-12-02.
  • IGES: Tweaks to make stuff happier. 2008-12-02.
  • STEP: Change HwNlibCurveOnSurface::LiftCurve to just use HwNlibCurveOnSurface::Evaluate directly. 2008-11-29.
  • STEP: Implement HwNlibExtrudedLineSurface (representing a simple extruded infinite line) and use it to handle that case in STEP. 2008-11-28.
  • Make the default behavior for HwNlibSurface be that every surface can be evaluated outside of its parameter range, and HwNlibSURFACE only inside its parameter range. This should enable our latest patches to match the old behavior, except when it is better. 2008-11-24.
  • Provide a return value for HwNlibPeriodicSurface::GetParameterRange. 2008-11-22.
  • SAT: Add HwNlibPeriodicSurface wrapper type, and apply it (as specified in the file) on SAT files to solve a bug. 2008-11-22.
  • Rough sketch of HwNlibPeriodicSurface class, and try to improve the smarts of the HwNlibCurveOnSurface class about the underlying surface. 2008-11-20.
  • Eliminate (void *) casts from IwBSplineCurve and IwBSplineSurface constructor calls (at SMS's request). 2008-11-18.
  • Add code for automatically detecting the outer region on B-reps, as per SMS request. 2008-11-11.
  • When evaluating a spine curve, only wrap around back to the beginning if the curve actually is closed. 2008-11-03.
  • IGES: Extend the SolidWorks subfigures need to be marked dependent bug in two ways: Now it is executed even if the preprocessor name has an extraneous space as the first character, and all the marking is done before any other processing is done on the file, so that the case with full trees of mismarked assemblies is handled correctly. 2008-11-03.
  • DATAKIT: Changes to bring build up-to-date with latest version of SMLib. 2008-11-01.
  • SAT: Modify some v15 versus v16 rules based on customer data. 2008-10-27.
  • Modify the vertices version of HwNlibCone::BoundInfinite to always include the cone's vertex. 2008-10-23.
  • STEP: Duplicate HwStepReadHeaderInfo declaration to get the DLL linkage correct. (Sigh.) 2008-10-20.
  • SolidWorks: Patch up another (much more unlikely) buffer hole. 2008-10-15.
  • SolidWorks: Replace "char buffer [200]" with unlimited extent HwStdStrings, to deal with really really long configuration names. 2008-10-15.
  • Try to get non-advanced Nlib working with the new MakePolynomialArc stuff. 2008-10-07.
  • Turn the MakePolynomialArc function into a class with a single class function, because it is always called repeated on the same size set of data, and we can get big efficiency improvements by moving the identical initialization code into class member variables so it doesn't have to be called every time an arc is created. 2008-10-07.
  • Refactor SolveForControlPoints function so that we can break out the repeated matrix calculations (if possible). 2008-10-07.
  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update version numbers for start of next release cycle. 2008-10-03.

Changes for IGES 1.6.8/VDAFS 1.5.2/STEP 1.3.8/SAT 1.2.3/OpenNurbs 1.2.3/Parasolid 0.6.5/DATAKIT-CATIA 1.0.4/DATAKIT-CATIA5 1.0.4/DATAKIT-UG 1.0.4/DATAKIT-PRO/E 0.5.4/SolidWorks 0.5.2  

  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update version numbers for release. 2008-10-03.
  • SAT: First implementation of rulesur (reverse engineered based on new file from customer). 2008-10-02.
  • CATIA5, DATAKIT: Merge in V54 branch, so translators now work with DATAKIT's V54 libraries. 2008-09-23.
  • IGES: Special flag to deal with file from DATAKIT where the bspline polynomial flag logic is reversed. 2008-09-23.
  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update version numbers for next maintenance cycle. 2008-08-27.

Changes for IGES 1.6.7/VDAFS 1.5.1/STEP 1.3.7/SAT 1.2.2/OpenNurbs 1.2.2/Parasolid 0.6.4/DATAKIT-CATIA 1.0.3/DATAKIT-CATIA5 1.0.3/DATAKIT-UG 1.0.3/DATAKIT-PRO/E 0.5.3/SolidWorks 0.5.1  

  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update version numbers for release. 2008-08-27.
  • Add HwNlibTabulatedCylinder::EvaluateDeriv, which allows the evaluation of points on offset tabulated cylinders. 2008-08-26.
  • When converting the faces of a B-rep into a set of stand-alone one-face B-reps, do not assume the resulting faces will be open. It is perfectly possible to have a closed face, too. 2008-08-25.
  • Correct export crash if a B-rep cannot be converted to HwNlibBrep form. 2008-08-25.
  • If the new exact intersection routine fails, just use the old routine. 2008-08-21.
  • Tighten tolerance check for special cases in cone / plane intersection. 2008-08-21.
  • Pretty up the exact plane / analytic intersection code. 2008-08-19.
  • Add cylinder / plane intersection special case to the intersection code. 2008-08-17.
  • Add tolerance comparison to plane / cylinder intersection where the plane's normal is perpendicular to the cylidner's axis. 2008-08-17.
  • Exact cylinder / plane intersection code. 2008-08-17.
  • Exact sphere / plane intersection implemented. 2008-08-16.
  • In the hyperbola case, if the (local) x value is negative, then make the derivative negative as well for the tagent. 2008-08-16.
  • Realizing we have no idea how to handle parameterization on an elliptical cone, turn off evaluation and projecting to non-circular cones. 2008-08-15.
  • Used abs, should have used fabs. 2008-08-15.
  • During a cone / plane intersection, if the result is a hyperbola, actually create the curve! 2008-08-15.
  • Sort out the sign of d in the cone / plane intersection code. 2008-08-15.
  • Make the HwNlibOperators header a little more sensible, and add it to the projects so it will ship properly to customers. 2008-08-15.
  • Factor out the Nlib structure operators we added in HwTSLibMath to a header file so they can be used elsewhere. 2008-08-15.
  • Add HwNlibObject::SystemTransform, which transforms an object based on an HwCoordinateSystem. 2008-08-15.
  • Correctly calculate the angle to determine the sense of a circle. 2008-08-14.
  • Go with base surface type rather than top surface type to determine if we have a cone / plane intersection. 2008-08-14.
  • Fix mistake based on typo in book. 2008-08-14.
  • Sketch in implementation of plane / cone intersection. 2008-08-13.
  • Add HwNlibCone::GetApexPoint function. 2008-08-13.
  • CATIA, DATAKIT: Merge in DATAKIT V53 branch. 2008-08-12.
  • Try to streamline and make more universal the intersection curve sample patch. Something still better is needed. 2008-08-09.
  • Special case to try to deal with an anayltic surface intersection curve with three chart points, one of which is way off in space. Before, the intersection curve constructed in that case would be very inaccurate because it was sampled too few times. Now detect this special case and drastically bump up the sampling rate. 2008-08-08.
  • Hack to smuggle HWO files in as other file types in debugging mode. 2008-08-06.
  • Add colored collection type as a debugging aid. 2008-08-06.
  • IGES: Check in the documentation example files. 2008-08-05.
  • Force split curves to the proper dimension. (Not sure why necessary in general, but seems to help out one customer quite a bit.) 2008-08-05.
  • STEP: Much smarter recovery from problems in the EscapeX sequences. 2008-08-01.
  • STEP: A small slip-up resulted in incorrect escape codes eating the entire text of the file. Fix it so they work "properly" again. 2008-08-01.
  • STEP: Add support for other special string escape codes. 2008-07-23.
  • STEP: Support incoming \X codes (one byte version properly interpreted, longer versions passed through unchanged). 2008-07-22.
  • STEP: Properly export ASCII values outside the normal range in strings. 2008-07-22.
  • Fix export patch so that it works in POPLib. 2008-07-22.
  • Fix unsigned int cast so it works on Linux. 2008-07-21.
  • Make the example files part of the normal build, so we always know if they are compiling correctly. 2008-07-21.
  • Second example file. 2008-07-21.
  • Improve define documentation. 2008-07-21.
  • Get many of the common defines documented. 2008-07-21.
  • Add examples to Doxygen documentation, finish documenting IwAttribute ID types. 2008-07-21.
  • Sample Nlib code file, plus code to include it in the documentation. 2008-07-21.
  • Example code for documentation. 2008-07-21.
  • Start documenting attribute ID numbers. 2008-07-21.
  • Get basic outline of NMTLib attribute stuff in place. 2008-07-21.
  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: C-style docs, HwNlib attribute group (with examples!). 2008-07-21.
  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Add many missing parameter descriptions, and a few other misc tweaks. 2008-07-20.
  • CATIA, CATIA5: More tweaks. (And more needed, alas.) 2008-07-20.
  • IGES: Fix some incorrect-under-Doxygen formatting commands, and predefine some macros to clean up processing. 2008-07-20.
  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, openNURBS: Clean up some errors in the documentation. 2008-07-20.
  • IGES, SAT, STEP, VDAFS, openNURBS: Basic Nlib-export functions defined, bad Doxygen parsing glitch fixed. 2008-07-20.
  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Basic Nlib import functions in documentation group. 2008-07-20.
  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Receptacle interface documentation group. 2008-07-20.
  • IGES, SAT, STEP, VDAFS, openNURBS: Fix export docs so they don't talk about what entity types will be written out (as that info was wrong almost 100% of the time). 2008-07-20.
  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Export functions added, still some tweaking to go. (Er, and import functions too? Did I not check in the last batch of changes before this?) 2008-07-19.
  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Document HW_NO_TSLIB_ASSEMBLIES and add links to it from all the basic import functions. 2008-07-19.
  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Add a round of documentation. 2008-07-19.
  • Updated for latest version, customized a bit more. 2008-07-19.
  • Fix SER_EI and SER_AI so they work under SMLib. 2008-07-16.
  • SAT, openNURBS: Basic implementation of export with issues interface. 2008-07-15.
  • Eliminate warnings. 2008-07-08.
  • Add GetHighestOwner to HwIdentifierNumber, to make it easy to recognize the first body in an SAT file, and things like that. 2008-07-08.
  • Fix unimportant typo so that no warnings are generated. 2008-06-26.
  • IGES: When writing an NMT B-rep, return the proper DE rather than a random number. (Patch ported back from 1.9 branch.) 2008-06-23.
  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Change version numbers to start next development cycle. 2008-06-19.

Changes for IGES 1.6.6/VDAFS 1.5.0/STEP 1.3.6/SAT 1.2.1/OpenNurbs 1.2.1/Parasolid 0.6.3/DATAKIT-CATIA 1.0.2/DATAKIT-CATIA5 1.0.2/DATAKIT-UG 1.0.2/DATAKIT-PRO/E 0.5.2/SolidWorks 0.5.0  

  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update version numbers for release. 2008-06-17.
  • Properly use the 64-bit release libraries string. 2008-06-16.
  • STEP: Turn off coordinate system export, as it wasn't clear it was performing any useful function, and it was clear it was making the STEP Tools validation checker complain. 2008-06-15.
  • STEP: Write bounded_surface_curve instead of surface_curve (because our surface curves are always bounded); then allow bounded_surface_curves to be read in! 2008-06-15.
  • STEP: If nothing else has been created, look for faces just hanging around waiting to be trimmed surfaces. (Based on broken file from customer.) 2008-06-12.
  • SolidWorks: Previously had 32-bit and 64-bit versions of the COM interface file. But it turned out the 64-bit version worked fine in 32-bits, so we switched over to using just that one. 2008-06-12.
  • Add 64-bit build instructions. 2008-06-10.
  • Changes needed to get Win32 release mode to build successfully again. 2008-06-10.
  • Add 64-bit library link instructions for OpenNURBS40. 2008-06-09.
  • Changes to build setup needed to get most of the translators compiling in 64-bits. 2008-06-09.
  • First mod to generate projects with x64 support. 2008-06-06.
  • STEP: Tighten up the last one a little bit, so that something more than coordinate systems is needed. 2008-06-06.
  • Comment out CountAssemblyInstanceEntities, which is a fantastically inefficient function. 2008-06-06.
  • STEP: The assembly object counting function is massively wasteful, so don't use it to test for whether any actual objects exist in an assembly. 2008-06-06.
  • DATAKIT: Merge in changes needed to make DATAKIT V52 work. 2008-05-23.
  • VDAFS: Fix VDAFS so that product name I/O works. 2008-05-21.
  • STEP: Fix STEP so the file name field is the file name rather than the product name. 2008-05-21.
  • IGES: "Product name" HwHeaderInfo support for IGES. 2008-05-21.
  • Turn on the check for circles with more than 360 degrees -- previously Nlib converted circles with between 360 and 360.1 degrees to exactly 360, now not all versions do, so we add the code back in on our end. 2008-05-20.
  • IGES: Add HW_MSC_HEADER class of messages, and apply it to the standard header/footer messages in file translation. 2008-05-08.
  • IGES: Add proper assembly shared tree structure back into the code, with an emphasis on the sharing this time. 2008-04-16.
  • Add HW_USE_BASIC_NLIB wrapper so code will compile correctly under mNlib. 2008-04-14.
  • When creating a short connector edge, check the edge being created against both 2d and 3d tolerance (instead of the previous code, which just checked the UV length versus 1e-8). 2008-04-11.
  • openNURBS: Fix get parameter range glitch on wrapped ON surface type. 2008-04-10.
  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update version numbers for next release cycle. 2008-04-08.

Changes for IGES 1.6.5/VDAFS 1.4.9/STEP 1.3.5/SAT 1.2.0/OpenNurbs 1.2.0/Parasolid 0.6.2/DATAKIT-CATIA 1.0.1/DATAKIT-CATIA5 1.0.1/DATAKIT-UG 1.0.1/DATAKIT-PRO/E 0.5.1/SolidWorks 0.4.9  

  • DATAKIT, Pro/E, UG: Merge in the V51 branch. 2008-04-05.
  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update version numbers for release. 2008-04-05.
  • Rework the graph output patch a touch, expand it to work in for HwNlibSolidFaces as well. 2008-03-27.
  • Add DumpUVLoop function, which dumps the UV components of an IwLoop in a format that can be converted to a graph by graph_uv/graph.pl. 2008-03-27.
  • Rewrite the last patch so that it works in release mode too. 2008-03-25.
  • Check to make sure there's something in the curves array before referencing element zero of it. 2008-03-25.
  • SolidWorks: Allow SolidWorks license key to be passed into the C-style import interface. 2008-03-24.
  • UG: Add path to parasolid schemas parameter to the C-style UG importer. 2008-03-24.
  • Trap HwNlibObject to Nlib conversion errors during C-style import, allowing the import to continue despite them. 2008-03-24.
  • CATIA, CATIA5, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, openNURBS: Change C-style import functions to set tolerances. 2008-03-21.
  • CATIA, CATIA5, Pro/E: Add HwImportOptions parameter to Nlib-only import functions. 2008-03-05.
  • CATIA, CATIA5, DATAKIT, Pro/E, SolidWorks, UG: Merge DATAKIT_V50 branch into the main branch. This provides support for DATAKIT V50 and compiling the DATAKIT (and SolidWorks) libraries in Nlib-only mode. 2008-03-05.
  • Make HW_WMAX and HW_WMIN broader. (Nlib must have changed while I wasn't looking.) 2008-03-04.
  • openNURBS: Patch needed to make the last change compile. 2008-03-04.
  • SAT, openNURBS: Remove baked in default tolerance for trimming edge curves, replacing it with file tolerance instead. The old default made sense when we didn't have the HwNlib3DTrimmedCurve entity, but that was years ago now. 2008-03-04.
  • Add code to attempt to work around the NMTLib bug where a complicated drop starting on a seam will get the first point of the UV curve on the wrong side of the seam, have three additional wonky points, and then settles down to a nice sensible UV curve. (Update -- a better patch for this should be coming in the next release.) 2008-02-28.
  • Merged code from DATAKIT V50 branch. 2008-02-20.
  • Parasolid: When reading a pointer, skip only the next whitespace character (unless that character is a control character, in which case skip until the control characters stop). This allows import of character array entities whose first character is a space. 2008-02-19.
  • SAT: Embed color-overriding code as a debugging aid. 2008-02-18.
  • STEP: Escape backslashes when writing STEP strings (like, say, the filename). 2008-02-17.
  • SAT: Debugging switch (turned off) that lets you always create a blend surface, even with blendsurs that have NURBS versions included. 2008-02-17.
  • SAT: Improved debugging name tagging to include spline-surface subtype. 2008-02-14.
  • STEP: Allow STEP translator to use keyword shortcuts, with a list of shortcuts extracted from a STEP spec found on-line (plus one determined by observation). 2008-02-13.
  • SAT: Merge changes from branch which implements HwNlib-based SurfaceToBrep function and uses it to export HwNlibSurface objects to SAT files. 2008-02-11.
  • Allow evaluation of reparameterized curves. 2008-02-05.
  • Parasolid, SAT: Add fit tolerance concept to HwNlibBlendSurface. Extract fit info from SAT blends and use it instead of model tolerance when dropping points to the a support NURBS surface. 2008-01-31.
  • SAT: Support parsing for offsurfintcur. 2008-01-24.
  • SAT: Parsing support for orthosur type. 2008-01-24.
  • SAT: Do not allow a half-constructed subtype object to be stored in the subtypes table. This means the subtypes table must be changed to allow null objects in it. 2008-01-24.
  • STEP: Trap errors that occur if a file cuts off in mid-stream. 2008-01-24.
  • SAT: Add blendsupzro type -- even though we have no idea exactly what it is, it makes the files parse correctly, which is a big win. 2008-01-24.
  • Add much-needed return statement. 2008-01-22.
  • Add simple function to classify blend surfaces. 2008-01-22.
  • Trial implementation of the new analytic surface-surface intersection code, hacked into the old curve intersection code. 2008-01-14.
  • Add CanConvertToHwAnalyticSurface function. 2008-01-14.
  • STEP: Workaround to handle bad axis2_placement_3ds on spheres, when the center is present and valid. 2007-12-17.
  • Refactor new intersection code so we can get the linear curve starting point used to calculate the intersection curve point. 2007-12-10.
  • Only use the analytic degenerate torus object for degenerate "select inner" tori. 2007-12-06.
  • DATAKIT: Properly handle surface entity and parametric surface types when they are high-level objects in a file. 2007-12-06.
  • In the new intersection curve code, when setting up the chart_t array, use the distance between the two corresponding chart points, rather than the distance between the first two chart points. 2007-12-05.
  • Implement simple HwAnalyticIntersectionCurve class. 2007-11-29.
  • Fix glitch in new intersection code (sizing array and then adding to it rather than assigning as it should have been). 2007-11-28.
  • Some more efficiency refactoring of the new intersection code. 2007-11-28.
  • Refactor a touch to keep matrices for the duration of the existance of an intersection object, instead of creating them fresh each time through the loop. 2007-11-28.
  • CATIA5: Better error messages for CATIA v5 file opening. 2007-11-20.
  • Add .CATDrawing to the CATIA V5 file extensions. 2007-11-20.
  • STEP: Fix shell-based surface model errors on a shell-by-shell basis, rather than waiting until the entire shell is done and then looking for an error (which is never seen because the errors are trapped). 2007-11-15.
  • DATAKIT: Merge in changes for DATAKIT V49. 2007-11-14.
  • Parasolid: Add another exception (in the version 18 path) to the embedded schema rule. Based on emperical evidence (from file ITEM_2.x_t). 2007-11-14.
  • CATIA5: Nice message if your sub-assembly file is completely missing. 2007-11-08.
  • CATIA5: Clean up assembly tree processing messages a bit, and try to eliminate potential buffer overflows from extremely long filenames. 2007-11-08.
  • CATIA5: Better error message when a component part file cannot be read. 2007-11-08.
  • SolidWorks: Use the temporary file deleter class to delete the temporary files created during SolidWorks import. 2007-11-06.
  • UG: Support temporary file path override. 2007-11-06.
  • HwTest: Update temporary file path override test to support UG. 2007-11-06.
  • SolidWorks: Honor temp file path override, and use the new safer OLE class code every place else OLECHAR buffers were used. 2007-11-03.
  • SolidWorks: Define simple class to manage arbitrary-sized OLE_CHAR buffer and use it to handle temporary filenames. 2007-11-03.
  • SolidWorks: Framework for new path_for_temporary_files import option, which allows the user to control where any temporary files needed for import are created. (Or at least, will allow the user to control that once the internals are implemented.) 2007-11-02.
  • IGES, openNURBS: Merge in IGES rewrite from branch. Basically, the old version of IGES built up a table of objects in the model, starting at the front and working to the end, and building all the sub-objects along the way. The new IGES scans the file looking for interesting objects to create, and only creates sub-objects when they are needed. This matches the way newer translators have always worked, and should be significantly more memory efficient. 2007-11-01.
  • STEP: Modify HwNlibSimpleImporter to have an optional HwHeaderInfo parameter, and use it to implement a STEP Nlib import function which returns a HwHeaderInfo parameter. 2007-10-26.
  • Fix IGES Nlib receptacle import so that it actually uses the STACK parameter passed to it. 2007-10-24.
  • Try to eliminate warnings from the POPLib-less. 2007-10-18.
  • Added Borland compiler test to typename section, at customer request. 2007-10-18.
  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update version number for next development cycle. 2007-10-17.

Changes for IGES 1.6.4/VDAFS 1.4.8/STEP 1.3.4/SAT 1.1.9/OpenNurbs 1.1.9/Parasolid 0.6.1/DATAKIT-CATIA 1.0.0/DATAKIT-CATIA5 1.0.0/DATAKIT-UG 1.0.0/DATAKIT-UG 0.5.0/SolidWorks 0.4.9  

  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update version numbers for release. 2007-10-11.
  • DATAKIT: Check for DATAKIT error in face and loop processing. 2007-10-11.
  • DATAKIT: More minor cleanups. 2007-10-11.
  • DATAKIT, UG: Modernize the generic DATAKIT color code based on the latest UG code. Then refactor the latest UG code to call the new generic code. Clean up formatting. 2007-10-11.
  • DATAKIT: Rename some more ugly variables, clarify comments, delete obsolete code. 2007-10-11.
  • DATAKIT: Rename variables called "l" to something much more readable and slightly more meaningful. 2007-10-11.
  • Pro/E: Attempt to implement datakit_log_file option for Pro/E -- but logging does not appear to exist in Pro/E translator at the moment. 2007-10-10.
  • UG: Implement datakit_log_file option for UG. 2007-10-10.
  • CATIA5: Implement datakit_log_file option for CATIA V5. 2007-10-10.
  • CATIA: Implement datakit_log_file option for CATIA V4. 2007-10-10.
  • UG: Add HwDeleteFileDuringDestruction and HwRandomTemporaryFilename to help manage the creation and deletion of temporary files needed for some exports. Use them to help with UG. 2007-10-09.
  • UG: Add basic units support -- only valid the top of the assembly tree, but that's better than nothing. 2007-10-09.
  • UG: Bring use of fre_part_xmt, ugr_FrePartXmt, and ugr_InitXmtPart up to current standards, as per e-mail from DATAKIT on 10/9/2007. 2007-10-09.
  • CATIA5: Clean up the assembly code a tad. 2007-10-08.
  • CATIA5: More comment cleanup and another log message added. 2007-10-08.
  • CATIA5: Clean up comments, switch fatal error to error message and continue with next shell. 2007-10-08.
  • CATIA: Delete long commented out dead code, clean up formatting a tiny bit. 2007-10-08.
  • UG: Clean up the high-level processing code. 2007-10-05.
  • SolidWorks: Got rid of a couple of ASCII 0s which had snuck in. 2007-10-05.
  • UG: Added error/warning messages to logging. 2007-10-05.
  • UG: Clean up UgReadTrimmedSurface. 2007-10-05.
  • UG: Refactor AddIdToObject, fix color code. 2007-10-05.
  • Pro/E: TSLib Pro/E banner fixed (previously said UG). 2007-10-05.
  • SAT: Got rid of a printf accidentally checked in with the last check-in. 2007-10-04.
  • SAT: Support for importing Revit named integer types with a special attribute for them. 2007-10-04.
  • SAT: Add structure for integer_attrib-name_attrib-gen-attrib type. 2007-10-04.
  • DATAKIT: Merge in changes for DATAKIT V48. 2007-10-03.
  • Allow non-uniform or inverted z scaling when transforming a circle -- as the z axis is completely irrelevant to the circle, it can't cause any harm. 2007-10-03.
  • Add proper cone support to CanOnlyEvaluateInParameterRange interface. 2007-10-02.
  • More meaningful implementations for CanEvaluateOutOfParameterRange for cylinders, inverted surfaces, swapped surfaces, and reparameterized surfaces. 2007-10-02.
  • SAT: Remove the previous hack, and use an HwStdSet to track when a coedge has already been processed, breaking out of the coedge processing loop if it has. 2007-09-25.
  • SAT: Watch for infinite loops when creating wires, and bail if one is found. 2007-09-25.
  • Allow HwCoordinateSystem::Transform to return a negative z_scale if the transform was left-handed. If this happens during cone transform, also switch the sign of the semi-angle. 2007-09-24.
  • openNURBS: Add IGES Level info to HwLayerInfo class. Make the OpenNURBS layer number always be the layer index -- previously it might be the IGES level number if there was one, but now that information is returned in the HwLayerInfo structure instead. 2007-09-20.
  • Invalidate parameter space curves if we realign the sphere of a trimmed surface. 2007-09-14.
  • Change the RealignSphere hack to only fire if a fallback sphere face cannot be created -- this allows it to fix cases which are currently broken without breaking cases that currently work. 2007-09-14.
  • Add debugging dump for failed trimmed surfaces. 2007-09-12.
  • Pro/E: Clean up Pro/E code. 2007-09-12.
  • HwDetermineFileType can now return HW_TC_MULTIPLE, which means more than one file type has the extension. In that case you need to call HwDetermineFileTypeMultiple to get the list of possible file types. 2007-09-06.
  • Pro/E: Add units (always MM because of rescaling). 2007-09-06.
  • Pro/E: Support for IDs and other common attributes. 2007-09-06.
  • Pro/E: Add error messages when there are processing problems. 2007-09-06.
  • Pro/E: Clean up code to delete created surfaces ASAP instead of queuing them for deletion later (and not deleting if there is an error). 2007-09-06.
  • Pro/E: Change whitespace. 2007-09-06.
  • Patch bug with V range in sphere realign, and turn it back on for B-rep faces. (At least for long enough to test it.) 2007-09-05.
  • SolidWorks: Check the status returned by CloseDoc, and report it to the log. 2007-09-04.
  • Tweaking whitespace formatting on one line. 2007-09-04.
  • STEP: Fix the CADSTAR detection routine so that it checks the originating system field rather than the preprocessor version field. 2007-08-16.
  • STEP: For CADSTAR models, merge shape representations if multiple ones are connected to a single product. 2007-08-16.
  • Rework tesselation code so that it only processes 500 faces at a time. 2007-08-01.
  • STEP: Start sketching in an implementation of coordinate system export. 2007-08-01.
  • DATAKIT, UG: DATAKIT v47 branch merged in. 2007-07-30.
  • my_dump_print is no longer exported from NMTLib, so we implement our own copy of the two calls we make, and rename everything to hw_dump_print to avoid conflicts. 2007-07-27.
  • IGES: Add new flag to ignore 126 curve trimming info, and set it to true if the file preprocess version starts "HT IGES". 2007-07-13.
  • openNURBS: Import vertex normals on meshes, if they are available. 2007-07-10.
  • Implement simple system to track vertex normals and vertex texture coordinates on HwNlibMesh objects. 2007-07-10.
  • Cosmetic tweaks to HwCommon. 2007-06-27.
  • Tweaks for the Nlib-only version. 2007-06-26.
  • Fix vcproj creator to use OUT_LIBRARY if it is set. Add new mNlib_nlib project. 2007-06-25.
  • Proper directory paths for the MNlib projects. 2007-06-23.
  • CATIA, CATIA5, IGES, Parasolid, Pro/E, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Change version numbers for start of next development cycle. 2007-06-19.

Changes for IGES 1.6.3/VDAFS 1.4.7/STEP 1.3.3/SAT 1.1.8/OpenNurbs 1.1.8/Parasolid 0.6.0/DATAKIT-CATIA 0.9.1/DATAKIT-CATIA5 0.9.1/DATAKIT-UG 0.9.1/DATAKIT-UG 0.4.0/SolidWorks 0.4.8  

  • CATIA, CATIA5, IGES, Parasolid, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: New version numbers for release. 2007-06-18.
  • Changes needed to handle SMLib version of IwPolyBrep. 2007-06-17.
  • Changes needed to get full libraries to build under TransLib -- mostly wrappers around IwPolyBrep references, plus tweaking the file from DATAKIT to work even when IwHCR.h is not present. 2007-06-16.
  • DATAKIT: Merge in the DATAKIT v46 branch -- changes needed to make the HW DATAKIT libraries work v46 of the DATAKIT DLLs. 2007-06-15.
  • openNURBS: Merge in Nlib_Mesh experimental branch. This adds an HwNlibMesh class for polygonal meshes and adds it to the basic HwNlibObject I/O classes. It provides code to convert HwNlibMesh objects to IwPolyBrep objects and vice versa, and adds support for IwPolyBrep to the basic HwTSLib I/O classes. Finally, it implements HwNlibMesh I/O in the openNURBS translator. 2007-06-15.
  • Borrow the surface extending code from the experimental intersection project and use it for every intersection curve it can be used on. 2007-06-12.
  • SolidWorks: Add delete wrappers on a couple more pointers. 2007-06-12.
  • SolidWorks: Rough in OLE version of auto_ptr, use it for main SW document classes. 2007-06-12.
  • Implement and test new import option which allows you to specify whether or not you would like to break up independent curves into G1 continuous segments. 2007-06-02.
  • Create a min_tolerance based on the length of the diagonal of the B-rep being processed. 2007-06-02.
  • SolidWorks: Break apart error conditions from a file open, so we can tell (by looking at the error line number) which particular error has occurred. 2007-06-02.
  • If an assembly instance has no name attribute but its assembly does have a name, use that name as the name of the instance. 2007-05-30.
  • Parasolid: Apply the change to process the entire linked list of regions to the counting code as well! 2007-05-24.
  • Parasolid: Change ProcessRegion to ProcessRegion, which walks through the entire linked list of regions. (Might this lead to face duplicatation? We only take the front faces of each region...) 2007-05-24.
  • When converting surfaces in model-only mode, trap planar ruled surfaecs and convert them to actual planes. 2007-05-20.
  • Instead of doing all the hard work to calculate N_gprpal for the 100% of the curve case, just take the curve's ending parameter value. This should be slightly faster and unlike N_gprpal, should never fail. 2007-05-14.
  • openNURBS: First stab at implementing mesh to B-rep code. (Turned off in favor of new HwNlibMesh type and IwPolyBrep converstion.) 2007-05-06.
  • If the linear path you are trying to arclength parameterize is degree 1 with 2 control points, return success while you are ahead. 2007-05-04.
  • IGES: Fix broken attribute-handling code in system/plane export. 2007-05-04.
  • Parasolid: Pragmas to turn off optimizations on two files that seem to cause VC 2005 to hang. 2007-05-03.
  • Add Pro/E to the build. 2007-04-29.
  • Parasolid: Handle it cleanly if a surface's auxiliary data isn't available. 2007-04-20.
  • DATAKIT: Merge in v45 DATAKIT support. 2007-04-20.
  • CATIA: Factor in the matrix in sessions. 2007-04-19.
  • CATIA: Handle session components as aassemblies. 2007-04-19.
  • CATIA: Move the session functions into a new class, HwCatiaSessionProcessor. 2007-04-19.
  • CATIA: Simple tool used to restore the system path after a session import. 2007-04-19.
  • CATIA: Activate session file support. 2007-04-18.
  • SAT: Fix the parsing of EDGE laws, by removing a fudge factor that turned out to be completely unnecessary. 2007-04-13.
  • Patch (from Gary) to get better knot adjustments when two knots are very close together. 2007-04-07.
  • Add name to independent type 514. 2007-04-06.
  • File with points and groups and levels. 2007-04-06.
  • IGES: Change the way we handle IsVoidShellIgnorable so that it is sensible. Don't even try to call it unless all faces have been created for the shell, because otherwise it will always return true! 2007-04-05.
  • DATAKIT: Tweaks to HW_DATAKIT_EXPORT use intended to make the Datakit/TSLib compatibility layer play nice. 2007-03-16.
  • IGES: Treat Metrologic files the same way we treat Darkstar files -- ignore independent flags on components of other objects. 2007-03-14.
  • STEP: Clean up STEP entity class memory usage so it works across DLLs. Read STEP file into a temporary array and then sort it before passing it to the map. 2007-03-14.
  • IGES: Commit the IGES parameter releasing patch into the main source code branch. 2007-03-13.
  • IGES: Don't mark independent entities independent. (Mostly this saves unnecessary and confusing messages in the log.) 2007-03-09.
  • SAT: Modify basic SAT file classes to allow examination of subtype data, use that to create a simple utility which dumps the count of subtypes found in the file. 2007-03-07.
  • First working version of the Pro/E translator. 2007-03-01.
  • Rough prelim version of ProE translator based on UG translator. 2007-03-01.
  • Fix Homogeneous to Euclidean translation code use in sumsur creation code -- previously it thought every weight was always 1.0. 2007-03-01.
  • SAT: Reimplement sumsur code using the new sumsur creation function. 2007-03-01.
  • Start of sum surface implementation, with appropriate test code (but no test cases yet). 2007-02-28.
  • openNURBS: Tidy up spacing. 2007-02-27.
  • Up the number of iterations to find the spine point on a blend support blend, as the new tighter tolerance causes some cases which previously worked to fail. 2007-02-23.
  • Tighten the blend support blend spine tolerance from 1e-6 to 1e-8 to prevent the wiggles we were seeing in some solutions. 2007-02-22.
  • Parasolid: Change "Unable to create face" message to "Unable to make face" so that it matches SAT and will get treated the same way in our test harness. 2007-02-22.
  • Parasolid: Check for undefined Parasolid parameter ranges before creating an extended surface. 2007-02-20.
  • SAT: Only use pcurve member on a pcurve if the pcurve_type is 0. 2007-02-19.
  • SAT: Fix "surfcur" to add a final bool parameter in version 16 and above. 2007-02-18.
  • SAT: Get blend surfaces working in version 16. 2007-02-18.
  • SAT: Based on further examination of the file, conclude that the mysterious number before the summary knot data is actually a part of the summary, most likely the degree. Rearrange the code to match this. 2007-02-17.
  • SAT: Don't try to create a null bspline, which can happen if the parser gets screwed up. 2007-02-17.
  • SAT: Read v16 summary curve in mysterious tail of v12 and beyond intcur. 2007-02-16.
  • SAT: Handle loops marked "hole". 2007-02-16.
  • Parasolid: Fix parameterization correction on swept surfaces so that it works even if the section curve starting parameter is not zero. 2007-02-16.
  • Allow smaller big_tolerances (but still require it to be greater than tolerance). 2007-02-15.
  • Previously, we set "big tolerance" (for surface-surface intersection processing) to be one-tenth of the minimum distance between the first and second points in the chart given. This failed catastrophically if the first two chart points were very, very close. Change to take one-tenth of the maximum span between consecutive chart points instead, and add a mimimum value of 10 times regular tolerance. 2007-02-13.
  • Parasolid: Undo the 100x scaling patch. It caused far more problems than it fixed. 2007-02-11.
  • Parasolid: Fix units and tolerance for the experiment, just to be thorough. 2007-02-09.
  • Parasolid: Experimental patch -- scale everything up by 100 (putting it in centimeters instead of meters, and using the standard 1e-6 tolerance NMTLib likes, though we haven't adjusted those two things to match, yet). 2007-02-09.
  • SAT: Patch sweepsur definition for ACIS R16. 2007-02-09.
  • Removed in_middle_of_blend and allow_rational parameters to GetSection, as the first didn't help, and the second was never used and potentially caused other problems if it was used. 2007-02-08.
  • Try to manually rollback the GetSection code to have the same functionally (only cleaner) as the first Unitized version. 2007-02-07.
  • Add in_middle_of_blend parameter to GetSection, allowing two different behaviors -- "correcting" very small sections in the middle of the blend so the resulting surface does not have an internal singularity, while allowing them at the end of the blend, where singularities are fine. 2007-02-07.
  • Try to make the original GetSection version (plus Unitize) smarter and cleaner. 2007-02-06.
  • Backed out GetSection rewrite. 2007-02-06.
  • Check in last finished revisions of GetSection rewrite. (Planning on backing the entier change out, but if it is checked in, it can be retrieved at a future date. 2007-02-06.
  • Don't be quite so restrictive, there's no reason a blend cannot be wider than a quarter pipe. 2007-02-06.
  • Overhaul GetSection to be much smarter. 2007-02-06.
  • Unitize vectors before calling CCWAngleBetween on them. 2007-02-05.
  • CATIA, CATIA5, IGES, Parasolid, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Updated version numbers for next development cycle. 2007-02-02.

Changes for IGES 1.6.2/VDAFS 1.4.6/STEP 1.3.2/SAT 1.1.7/OpenNurbs 1.1.7/Parasolid 0.5.9/DATAKIT-CATIA 0.9.0/DATAKIT-CATIA5 0.9.0/DATAKIT-UG 0.9.0/SolidWorks 0.4.7  

  • CATIA, CATIA5, IGES, Parasolid, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update version numbers for release. 2007-02-02.
  • Fix the release build for the new DATAKIT libraries. 2007-02-02.
  • CATIA5: Delete a lot of unnecessary includes. 2007-02-01.
  • CATIA: Cleanup a tad and add more error logging. 2007-02-01.
  • CATIA: Trap errors in pipe surfaces so that the remainder of the pipe will be created even if an error occurs in one segment. 2007-02-01.
  • CATIA, UG: Cleaned up includes. 2007-02-01.
  • CATIA: Pulled in the session case code from example, only to realize it was quite funky and probably not ready for prime time. It is all there, but commented out now. Will study further in the future. 2007-02-01.
  • CATIA: Delete a bunch of dead code. 2007-02-01.
  • CATIA, UG: Hook back up tolerance and units. 2007-02-01.
  • UG: More cleanups, dedicated IW_ERR_NOT_A_UG_FILE error. 2007-02-01.
  • UG: Clean up includes, fix the ID code so it's a bit smarter, and bump all IDs by one so you never get ID 0. 2007-02-01.
  • UG: Comment out some debugging printfs. 2007-02-01.
  • UG: Build framework to get decent IDs and names through the UG assembly tree, and make the IDs work. 2007-01-31.
  • UG: Start to add support for UG properties. 2007-01-31.
  • DATAKIT, UG: Get transformations hooked up for wireframe objects. 2007-01-31.
  • UG: Fix crucial reversed logic test in the wireframe code, rearrange the wireframe variable declarations a bit to put them in more reasonable scopes. 2007-01-31.
  • DATAKIT, UG: First stab at wireframe entity support. 2007-01-31.
  • UG: Rework to use latest DATAKIT functions. 2007-01-30.
  • CATIA5: Try to use the __GNUC__ define to automatically make the changes needed to get Linux compiling. (Most of which will probably need to be removed when the next DATAKIT release comes out.) 2007-01-30.
  • CATIA5: Add proper IDs to systems, points, and curves, too. 2007-01-30.
  • CATIA5: Proper names and IDs for B-reps and assmeblies. 2007-01-30.
  • CATIA5: Proper assembly error logging. 2007-01-30.
  • CATIA5: Add proper destructor to clean up the assemblies created in the new code. 2007-01-30.
  • CATIA5: Remove the const from Transform's Dtk_transfo argument, as apparently the functions called are not properly const member functions. (GCC complains, MSVC++ 6.0 does not.) 2007-01-30.
  • CATIA5: Eliminate printfs in main assembly code, add some basic logging. 2007-01-30.
  • CATIA5: Make transforms work. 2007-01-29.
  • CATIA5: First stab at real first-order assembly support. Positioning still just roughed in. 2007-01-29.
  • SolidWorks: Move HwNlibImportToAssembly class to HwNlibGeneric source files so that all translators can use it. 2007-01-29.
  • CATIA5: Got rid of a bit of dead code from a previous version. 2007-01-29.
  • CATIA5: Merge dump convert_assembly into the established class structure. 2007-01-29.
  • CATIA5: Direct assembly handling code, directly borrowed from the DATAKIT sample code. This is just a first approximation, and needs to be converted to more of an HW style, and then to proper assembly structure code. 2007-01-28.
  • CATIA5: Get rid of hard tabs! 2007-01-27.
  • CATIA5: Finish refactoring / cleanup of the main import function. 2007-01-27.
  • CATIA5: Factor out wireframe and point entity handling as well. 2007-01-27.
  • CATIA5: Factor out the code for reading surface-based entities. 2007-01-27.
  • CATIA5: Another tweak to ease the transition to Linux. 2007-01-27.
  • CATIA5: Clean up includes, provide Linux version for initialization function. 2007-01-27.
  • DATAKIT: More tweaks (mostly added consts) from linting. 2007-01-27.
  • Tweaks needed to get Lint working on DATAKIT code. 2007-01-26.
  • Can't comment out include of iwgu_tsect.h, it's needed for the SOLIDS_PLUSPLUS configuration. Instead, add an ifdef around it so it is only included in the SOLIDS_PLUSPLUS configuration. 2007-01-24.
  • DATAKIT: Made some minor tweaks based on PC-Lint. 2007-01-24.
  • A few tweaks suggested by PC-Lint. 2007-01-24.
  • CATIA5: Only read visible entities, as invisible ones currently seem to be crashing DATAKIT. 2007-01-24.
  • When an intersection curve has to bound an infinite surface it is supposed to intersect, make sure that the span-size bounding box tweak always is at least 1e-5 in size. This helps prevent intersections across a cone or cylinder from generating a surface which is too small to actually use. 2007-01-23.
  • Include poplib_example in the (Windows) makefile, and update it so that it compiles on current SOLIDS++. 2007-01-22.
  • Try to get more info when you zap failing blend surfaces. 2007-01-22.
  • Add debugging code to dump (to stdout) the name of faces which fail B-rep tests. 2007-01-18.
  • DATAKIT: Integrate the latest versions from DATAKIT. 2007-01-17.
  • Try to include line numbers in debugging output, to help trace down problems with strange configurations of the libraries. 2007-01-15.
  • When creating an IwBrep, if we have a "success" flag but the B-rep itself is NULL, set the flag to an error. 2007-01-12.
  • IGES: Add new p_ensure_components_are_physically_dependent flag to the IGES translator. By default false. If it is true, when we find an object is a component of another object, we mark it dependent right away. For now, only set true if the file was created by DarkStar, but this could be easily changed in the future if needed. 2007-01-12.
  • SolidWorks: Don't allow errors to propagate up from Parasolid file processing -- just log the error and go on. 2007-01-12.
  • Change interface to importer_interface 2007-01-11.
  • CATIA5: Add two new blocks from the sample DATAKIT code. 2007-01-11.
  • openNURBS: Change to work with the latest version of OpenNURBS 4.0. 2007-01-10.
  • Parasolid: Trap errors in assembly instance creation. 2007-01-09.
  • CATIA: Bring piping function up-to-date with the latest DATAKIT, and turn it back on. 2007-01-05.
  • DATAKIT: Put return-status trap and report wrappers arounf the two main DATAKIT object processing functions, so that errors in one entity are not fatal to the entire import process. 2007-01-04.
  • DATAKIT: DATAKIT seems to have changed the useful define from DTK_TYPE_CARTESIAN_POINT to DTK_TYPE_CARTESIAN_POINT_WITH_INFOS, so we do too. 2007-01-04.
  • CATIA: Tell DATAKIT that analytic surfaces are okay. 2007-01-02.
  • SolidWorks: Add some more messages to the log to aid in understanding what is going on in complicated assembly models. 2006-12-29.
  • CATIA: Handle groups of models in a V4 file? Not sure what this represents, but it's in the DATAKIT sample code. 2006-12-23.
  • CATIA: Clean up the code a touch. 2006-12-21.
  • CATIA: Basic import functionality working again. 2006-12-21.
  • CATIA: Start sketching in basic import loop. 2006-12-21.
  • CATIA: Turn off lire_ functions in V4, too. Add the datakitread library to Catia v4 linking, as well. At this point, the mostly commented out v4 code compiles and links, though it will not import anything yet. 2006-12-21.
  • SolidWorks: When reading an assembly, if the sub-configuration name is blank, read all the configurations of that file. 2006-12-21.
  • Make the build work with DATAKIT's default paths. 2006-12-20.
  • CATIA: Start trying to get V4 to compile, but it's not even close yet. 2006-12-18.
  • Change standard library linking model to /MDd; add datakit_read library to UG library list. 2006-12-13.
  • CATIA: Non-functioning partial update for latest DATAKIT release. 2006-12-12.
  • Partial update for latest DATAKIT libraries. 2006-12-12.
  • Add ifndef around the code that doesn't work in SOLIDS++. 2006-12-12.
  • CATIA5, UG: Update to use the new HwCheckInitFunctionReturn function. 2006-12-12.
  • DATAKIT: Add HwCheckInitFunctionReturn function to gather the common DATAKIT Init function error check code to a single location. 2006-12-12.
  • Parasolid: Don't try to create empty bodies. 2006-12-11.
  • CATIA, CATIA5, DATAKIT: Reestablish unfinished first stage of DATAKIT update (previously taken out to allow release). 2006-12-07.
  • CATIA, CATIA5, IGES, Parasolid, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Change version numbers for next development cycle. 2006-12-07.

Changes for IGES 1.6.1/VDAFS 1.4.5/STEP 1.3.1/SAT 1.1.6/OpenNurbs 1.1.6/Parasolid 0.5.8/DATAKIT-CATIA 0.5.9/DATAKIT-CATIA5 0.5.8/DATAKIT-UG 0.5.2/SolidWorks 0.4.6  

  • CATIA, CATIA5, IGES, Parasolid, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Change version numbers for release. 2006-12-07.
  • CATIA, CATIA5, DATAKIT: Back out the changes for the latest DATAKIT, as it will take about a week to get them all working, and we need to release ASAP. 2006-12-07.
  • Parasolid: Set the proper locale for Parasolid import, too. 2006-12-05.
  • IGES, SAT, STEP, VDAFS: Make sure the import channels use the proper "C" locale. 2006-12-05.
  • IGES, VDAFS: Substitute HwStringToDouble for atof throughout the code. 2006-12-05.
  • Add HwStringToDouble function (which uses the HwTempLocale locale even in Windows DLLs). 2006-12-05.
  • IGES, SAT, STEP, VDAFS: Add HwTempLocale member variables in the appropriate output classes for each translator, so that the system should shift to the "C" locale for the duration of CAD file output. 2006-12-05.
  • IGES, Parasolid, SAT, STEP, VDAFS: Convert sprintfs of double values that will be output into CAD files to HwDoubleToString calss, so that they will use the locale defined in the core. 2006-12-05.
  • Add HwDoubleToString which should honor the HwTempLocale even in Windows DLLs, and use it to fix TestChangingLocale on Windows. 2006-12-05.
  • More HwTempLocale out of the HwCommon header. On the Windows DLL build, this means that only the core DLL is affected when HwTempLocale changes the locale. 2006-12-05.
  • Rename HwTempCLocale to HwTempLocale (since it can change to any locale now). 2006-12-04.
  • HwTempCLocale class added. 2006-12-04.
  • CATIA, CATIA5, DATAKIT: Changes to try to get things up to date with latest DATAKIT. 2006-12-04.
  • Added debugging dump code to CheckFace. 2006-12-04.
  • Don't try to convert exploded Nlib B-reps to normal IwBreps -- instead use the exploded B-rep code for the conversion. 2006-12-01.
  • Parasolid, SolidWorks: Get rid of obsolete path_to_schemas argument in HwParasolidFile::Read. 2006-12-01.
  • CATIA5: Comment out two obsolete prototypes which were just messing up the Linux version. 2006-11-27.
  • CATIA5, DATAKIT: Fix include path slashes to be Linux compatiable. 2006-11-27.
  • DATAKIT: Fix DATAKIT include filename case -- utilUV to utiluv. 2006-11-27.
  • SAT: Two more tweaks to handle SAT R16. 2006-11-21.
  • SAT: Change rules for name_attrib-gen-attrib in version 16, based on a sample file. 2006-11-21.
  • In IntersectSurfacesToGetCurveSMS, check the start of the curve for correctness, as we have found a case which gets it wrong. 2006-11-17.
  • IGES: If no geometry was found and an assembly instance is marked (wrongly) as a definition entity, switch it to geometry. 2006-11-17.
  • Perform sanity checking on lifted curves, and use an approximation to the HwNlibCurveOnSurface object instead if the sanity check fails. 2006-11-10.
  • Parasolid: We were comparing the (possibly) extended parameters with the original parameters to decide if we needed an HwNlibExtendedSurface. But Parasolid marks this even if it has explicitly expanded the NURBS surface already, in which case we do not want an HwNlibExtendedSurface. So change the comparison to be against the NURBS surface's actual UV domain. 2006-11-09.
  • If possible, when we convert an HwNlibOffsetSurface whose base surface is an HwNlibExtendedSurface, make it an extended IwOffsetSurface. 2006-11-09.
  • Add HwNlibExtendedSurface::GetBaseSurface accessor function. 2006-11-09.
  • Hook up the HwNlibExtendedSurface evaluation routines to the new HwNlibSURFACE extended evaluation routines. 2006-11-07.
  • Parasolid: Add some logic to ProcessSurface so that we can flag when we want an HwNlibExtendedSurface to be wrapped around b_surfaces which are extended, and use it to make sp_curve's better. 2006-11-07.
  • Extended derivative evaluation function working. 2006-11-07.
  • Add HwNlibExtendedSurface to the unserializing tool. 2006-11-07.
  • Sketch out a new HwNlibExtendedSurface class for extended evaluation of HwNlibSURFACEs, and implement HwNlibSURFACE::ExtendedEvaluate to eventually do it. 2006-11-07.
  • SAT: Don't write out curve attributes on the curve's lump and shell. 2006-11-06.
  • Improve attribute handling on HwNlibImporterInterface::PassNMTBrep (default version). 2006-11-06.
  • Add tools to modify the values of a color attribute. (For ease in testing.) 2006-11-06.
  • STEP: Log the component processing error we caught in the previous patch with a proper error message and reason. 2006-11-01.
  • STEP: If you get an error processing a component of an assembly, do not stop processing the entire assembly. 2006-11-01.
  • Tweak to NMT IwBrep to HwNlibNMTBrep conversion to handle a problem case I was looking at. Further tests are definitely needed in this area. 2006-11-01.
  • STEP: Add color export support to open B-reps. 2006-10-31.
  • SAT: When copying IwSurfaces to IwBreps for export, copy the surface's attributes to the B-rep. 2006-10-31.
  • STEP: Move curve color code to highest level HwNlibCurve export function. Add surface color code to highest level HwNlibSurface export function. 2006-10-31.
  • STEP: Write trimmed surface color info. 2006-10-31.
  • STEP: Hook up the curve color export code to the curve export code. 2006-10-31.
  • STEP: Add WriteCurveColor. 2006-10-31.
  • STEP: Change WriteColor to WriteSurfaceColor, because WriteCurveColor will be different. (Thank you STEP.) 2006-10-31.
  • STEP: Create new (local) HwStepColorMapper class to manage colors on faces. Basically, when you create it, it replaces the current face to color map (on the HwStepCreator object) with a new one. When a face is added, it adds its color info (if it has any) to the current face to color map. When the B-rep is fully created, HwStepColorMapper::WriteColors is called, which writes the top level B-rep color (if there is one) and then over rides it (or doesn't, if there is no top level) with the color for each face in the map. When the HwStepColorMapper destructor is called, it deletes the face to color map it created and puts the previous face to color map back in control. 2006-10-31.
  • STEP: Refactor WriteColor code so it can be applied to the face code as well. 2006-10-30.
  • STEP: Working WriteColor function. 2006-10-30.
  • Change the AddColor function to be SetColor, working on functions which already have a color attribute as well as those that have no color. 2006-10-30.
  • Better debugging dump code for lift curve routine. 2006-10-27.
  • Change back modification to CurveIW intersection -- adding the edge cases tested very poorly. 2006-10-26.
  • Make the previous change affect only builds that cannot use surface extensions. 2006-10-24.
  • Try AddEdgeCases in the CurveIW intersection code. 2006-10-24.
  • Move GetParameterValue to HwTSLibMath and prototype it so everyone can use it. Use it to check the results of closed intersection curves to make sure they're not too far from correct. 2006-10-20.
  • Parasolid: Realize that the swept surface patch logic (ignore generating curve orientation flag, at least at a low level) probably does apply to blend surface spines. Implement it to see what happens. 2006-10-19.
  • Add new warning-error / info message combo for the case when the 3D trimming points on a curve are a significant distance away from the curve. 2006-10-19.
  • Parasolid: Removed the untested bits of the spun surface patch -- it dubious at this point anyway, after the mods to the swept surface patch. Might be partially reinstated if we ever get a sample file which applies. 2006-10-19.
  • Parasolid: After doing a sweeping study of swept surfaces with inverted profiles, conclude that we want to invert such surfaces only if the profile curve is an ellipse. No idea why this should be, but it makes every case we know now have the correct orientation. 2006-10-18.
  • Parasolid: Tweak debugging code a bit to be smarter about skipping faces. 2006-10-18.
  • SolidWorks: Pass Parasolid header and tolerance to the SolidWorks import interface. This is a bit of a hack, as multiples of each will be passed -- but then, it should be the same values each time, so no great harm done. 2006-10-17.
  • Parasolid: Spun surface code added to look for reversed profile curves. 2006-10-17.
  • Parasolid: Add info on inverted section curves to swept surface output. 2006-10-17.
  • Parasolid: Try the swept surface patch on the surface of revolution -- it seems like it belongs there, too. 2006-10-16.
  • Parasolid, SolidWorks: Add options variable to the standard array SolidWorks Nlib import, and fix the SolidWorks DLL export control define. 2006-10-16.
  • SAT: Fixed up meaningless SAT glitches from the last version -- lots of meaningless defines generated by an out of control Perl script and a typo. 2006-10-16.
  • Patch obivous memory leaks in the bounding box generation code. 2006-10-16.
  • Parasolid: Modify the previous swept surface patch -- the curve is reversed, leave the curve the same, but invert the surface. That should get the parameterization and the surface orientation both correct. 2006-10-14.
  • Parasolid: Ignore the curve reverse flag for the sweep surface definition curve. 2006-10-13.
  • IGES: Implement HwImportOptions::create_unused_dependent_objects. 2006-10-12.
  • Tests for HwImportOptions::create_unused_dependent_objects. 2006-10-12.
  • openNURBS: If it's a static openNURBS library link (on Windows) we don't want ON_DLL_IMPORTS to be set, so add a define, HW_USE_STATIC_OPENNURBS, if you are using the static version of the openNURBS library. (That is to say, you are linking a static openNURBS library into the (static or DLL) HarmonyWare OpenNURBS translator.) 2006-10-11.
  • openNURBS: Include HwOpenNurbs.h, so you get HW_OPENNURBS_EXPORT defined properly. 2006-10-10.
  • CATIA, CATIA5, IGES, Parasolid, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Set version numbers for next development cycle. 2006-10-09.

Changes for IGES 1.6.0/VDAFS 1.4.4/STEP 1.3.0/SAT 1.1.5/OpenNurbs 1.1.5/Parasolid 0.5.7/DATAKIT-CATIA 0.5.8/DATAKIT-CATIA5 0.5.7/DATAKIT-UG 0.5.1/SolidWorks 0.4.5  

  • CATIA, CATIA5, IGES, Parasolid, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update versions for release. 2006-10-09.
  • Update to use Perl library Crypt::RandPasswd to generate passwords, rather than the old password file. 2006-10-07.
  • Add support for HW_TRANSLIB_ONLY define so we can tell the difference between TransLib builds and normal POPLib builds. 2006-10-07.
  • Allow a little more flexibility in the match between the end of an intersection curve and the equivalent chart point. 2006-10-04.
  • Fixed some signed/unsigned comparison warnings. 2006-10-03.
  • Create HW_CDECL define and add it to functions called by qsort. 2006-10-03.
  • CATIA, CATIA5, IGES, Parasolid, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Change GW_EXPORT instances to match the new DLL export scheme. 2006-10-03.
  • Fix the DLL settings on a couple of hacked-in prototypes. 2006-10-03.
  • Add Catia v4 library to the release builds of Catia v5 and UG. No idea why this is needed, but it is. 2006-10-02.
  • Add HW_NO_DEBUG to release builds of utils and tests. 2006-10-02.
  • Properly create DLL defines for SMLib and TSLib (both accidentally left off previously). 2006-10-02.
  • File added for to make the DLL change work, but accidentally not checked in with the last batch. 2006-10-02.
  • CATIA, CATIA5, DATAKIT, IGES, Parasolid, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Overhaul DLL construction components of translators. IW_EXPORT is translated to translator specific versions like HW_IGES_EXPORT. Two new defines control the defintion of HW_IGES_EXPORT -- HW_USING_DLL specifies that we are building DLLs, and HW_IGES_EXPORTS specifies that the DLL we are building is the IGES one. (And so on for the other translators.) These defines are automatically handled by our standard generated DLL project files. 2006-10-02.
  • Add latest Parasolid schemas, versions 17 and 18. 2006-09-26.
  • In ProcessNMTFaces, don't stop processing if an individual face cannot be processed -- just skip it and continue. 2006-09-25.
  • openNURBS: Juggle things slightly so we only define ON_DLL_IMPORT on Windows builds. 2006-09-24.
  • openNURBS: Add call to the Polish funcion so that all the "i"s are dotted and the "t"s crossed for exports. 2006-09-24.
  • openNURBS: Rewrite HwONXModelWrapper so that the Write functions take a logger (and optionally an HwExportOptions instead of an int for the version), and then rewrite the standard Nlib and TSLib output functions to use HwONXModelWrapper instead of ONX_Model directly. 2006-09-24.
  • Add ON_DLL_IMPORT define to make the new/delete stuff compile correctly. 2006-09-24.
  • openNURBS: Clean up comments in header file. 2006-09-24.
  • openNURBS: Originally we directly included ONX_Model code from openNURBS. Then we commented it out and included the actual openNURBS cpp file directly in our code. As of version 4.0, that code is included in the openNURBS DLL, so we drop it here (unless a define says we are building against openNURBS 2.0 or 3.0). Also take the previous commented out code (mentioned above) completely out of our code. 2006-09-23.
  • SolidWorks: Output the file's version number and the document manager DLL's version number to the log file. 2006-09-22.
  • VDAFS: Rewrite the code borrowed from Nlib to use the IwStatus error recording system. 2006-09-22.
  • VDAFS: Since we renamed the local (cs)plrep functions, change the calls to those functions in this file to use the local versions. 2006-09-21.
  • VDAFS: First stage of converting VDA-FS code to not use ERROR and OUT. 2006-09-21.
  • Rewrite the borrowed Nlib functions to use the NMTLib IwStatus error reporting system. 2006-09-21.
  • A little stub function voodoo with MakeSameTypeNewId to make sure it can be called without bringing in the entire HwTranslatorGeneric header. 2006-09-21.
  • openNURBS: First changes for 4.0 compatibility. 2006-09-20.
  • openNURBS: Switch #ifndef to consistently use HW_USE_OPENNURBS20 (previously some were that, some simply OPENNURBS20). 2006-09-19.
  • IGES: Change form_number from unsigned int to int, because the IGES standard allows negative form numbers. 2006-09-18.
  • SAT: Removed a "static" declation on GetBounds that was messing an apparently antiquated Sun compiler. 2006-09-18.
  • Turn blend caching back off, as it adds complexity for a very small time benefit. 2006-09-15.
  • Update the blend cache code to use serialized Nlib blend surface info as a key, and turn it on. 2006-09-15.
  • Back out the change which tried the non-pipe blend surface first for intersection, as it sometimes yielded incorrect answers. 2006-09-15.
  • The pipe surface substitution has proved to be a double-edged sword. It handles a number of tricky blend surface intersection cases. But it causes frequent huge spikes in memory usage because the caches built for the NURBS pipes are huge -- that's as in 15+ megs. As a quick solution to this, try the old intersection code first, and only go to the pipe surface version if the old intersection fails. 2006-09-12.
  • Make ConvertSurfaceModelOnly work with blend surfaces which are "hidden" (in, for instance, inverted surface), by bypassing the HwNlibSurface::MakeNurbs call. 2006-09-12.
  • Turn the HwTSLibIdealPipeSurface back off, as it was more memory efficient but drastically slower. 2006-09-11.
  • Try using the new HwTSLibIdealPipeSurface object for blend surface intersections. 2006-09-11.
  • First stab at HwTSLibIdealPipeSurface class code, based on the old HwTSLibSurfaceInternalNlib class. 2006-09-11.
  • SAT: Process lawsurs which have an embedded NURBS surface. 2006-09-07.
  • SAT: Parse support for lawsur, and proper parsing of v15 lawintcur. 2006-09-07.
  • Do not muck around with a blend's orientation just because its spine was reversed. 2006-09-05.
  • Function to unserialize a trimmed surface directly from a filename. 2006-09-04.
  • Parasolid: Get rid of debugging code accidentially checked in the last merge. 2006-09-04.
  • Parasolid: Expand to handle the 1401178 schema and userfield data. 2006-09-04.
  • Windows Map template declartion for the intersection curve memoization object. 2006-09-01.
  • Having "warning errors" for more locations where a face's surface normal orientation is flipped. 2006-09-01.
  • Flip the orientation of blend surface constructed with our skinning algorithm rather than the NMTLib/Nlib version. This should primarily affect TSLib/POPLib builds, and will hopefully make them work more like the NMTLib builds. 2006-09-01.
  • Closed up some memory leaks in the pipe for blend surface code. 2006-08-31.
  • Memoize intersection curves. 2006-08-30.
  • Add SerializeToString to aid in memoization attempts. 2006-08-30.
  • Start with a singularity width of 0.0, since we no longer need it to also stand in for tolerance in the comparisons. 2006-08-28.
  • Tweak to the singularity width tweak to also consider tolerance as before, since sometimes tolerance gets expanded after the singularity width calculation. 2006-08-28.
  • Come up with reasonable default value (1.5 * tolerance) for the singularity width if there are no singularities in the surface. 2006-08-27.
  • Introduce a new concept, called singularity width, which is the length of the longest singularity on the currently active surface. Use it to check for loop gaps in 2d lighted to 3d space. 2006-08-27.
  • Remove an ascii zero that had snuck in. 2006-08-27.
  • Improve DoesCurveOrientationMatchChart so that it is used a little whenever the curve is closed within tolerance (as the trim curve routines work) and when there are at least three distinct chart points to look at. Then make the chart point drop routine more robust. 2006-08-26.
  • Turn back on closed pipe surfaces, and take steps to ensure the circles along the pipe have raesonably consistent orientations. 2006-08-26.
  • Don't create pipe surface for blend in intersections if the blend spine is closed. This is a temporary measure, because it isn't working right now, and I thought it would be interesting to run tests like this while I try to improvement the closed situation. 2006-08-26.
  • Add debugging output for intersection curve blend pipe surfaces. 2006-08-26.
  • Refactor high level intersection curve code so that the setup code can be used by the test code -- then use it. Also add another intersection curve test case. 2006-08-25.
  • Allow 30 tries at projecting to spine instead of just 20, to help things work out if the coordinate values are larger. 2006-08-25.
  • Extract out the code to create a polynomial arc, and use it to make a blend pipe surface if Advanced Nlib is not available. 2006-08-24.
  • When blend surfaces are intersected to get curves, use a pipe surface along the blend's spine rather than the actual blend surface. 2006-08-24.
  • Clean up a pair of memory leaks. 2006-08-22.
  • Don't force an error if we cannot find a support intersection with our new blend surface as support code -- that's why we have an intersection found flag! 2006-08-21.
  • STEP: Get shell based surface model to properly import open shell breps again. 2006-08-21.
  • STEP: If we find two or more layer "styles" on the same entity, create a HwNlibLevel attribute which contains all of the layer numbers instead of conflicting duplicate single-layer attributes. 2006-08-21.
  • STEP: Process shell_based_surface_model type to create a series of B-rep objects in an assembly rather than a single open shell B-rep object. (Because closed shells are apparently allowed.) 2006-08-21.
  • Turn off the new blend as pipe surface code for closed spines. 2006-08-19.
  • Experimental special case code to treat support surfaces which are blends as "analytic" pipe surfaces along the blend's spine. 2006-08-19.
  • Add (turned-off) complete blend section debugging dump to section failure code. 2006-08-17.
  • Add some better debugging tools for blend surfaces. 2006-08-17.
  • Move HwPtrDiff further back, so it is after the prototype for hw_assert. 2006-08-17.
  • Fix HwPtrDiff so it checks in debug mode and does not check in non-debug mode, including limits.h in the process so UINT_MAX can be legally used. 2006-08-16.
  • Instead of trying every section and then erroring out if there were more than two failures, error out as soon as there are more than two failures. 2006-08-16.
  • Move the template function which uses HW_ASSERT to after the definition of HW_ASSERT. 2006-08-16.
  • Add the name of a trimmed surface in a comment to the HWO dump of a trimmed surface. 2006-08-16.
  • Try to detect very narrow 4-edged faces and adjust tolerance accordingly. 2006-08-16.
  • Turn on comments for HWO files. 2006-08-16.
  • Add a comment to test the HWO comment facility. 2006-08-16.
  • Rework in the UnSerialize functions so they are based on the HwLowLevelAsciiReader class rather than the HwLowLevelAsciiInput class. 2006-08-16.
  • Correct the Nlib knot error message so it makes a bit more sense. 2006-08-15.
  • IGES: Fix HwIgesReadGlobal so that it works again after the recent overhaul of the low-level input code. 2006-08-14.
  • Add KERNEL_SOLIDS and KERNEL_POPLIB defines for IW libraries. 2006-07-29.
  • Introduce the HwPtrDiff template function to substract two pointers and return the difference as an unsigned int, and use it to get rid of lots of 64-bit warnings. 2006-07-28.
  • Clean up trivial details to get a cleaner compile. 2006-07-28.
  • Changes to help get the build working under Visual Studio 2005 and the latest ActiveState Perl. 2006-07-27.
  • Changes needed to block all those idiotic "Microsoft deprecates standard C library" warnings. 2006-07-27.
  • Change obsolete /GX to /EHsc for Microsoft projects and makefiles. 2006-07-27.
  • Add HW_IW_TESS_AVAIL define. 2006-07-25.
  • SAT: Add degenerate_curve type. 2006-07-21.
  • Last change to make all connector on surface tests pass. 2006-07-05.
  • Partially working copy of new connector on surface code. 2006-07-05.
  • Refactor connector on surface code in preparation for re-write. 2006-07-03.
  • Add debugging dump code to HwTSLibTrimLoop3d object. 2006-07-02.
  • Fix the compile on older versions of SMLib. 2006-06-29.
  • SAT: Rewrite the sphere object to have the proper parameterization info, if that is available. 2006-06-28.
  • SAT: Add the mysterious bool & six double field found in late ACIS releases to the wire entity type. 2006-06-28.
  • SAT: Look for situations where the end parameter value of bounds of a curve is less than the start knot value, and reverse and negate their parameter bounds. 2006-06-28.
  • Parasolid, STEP: Refactor a couple more locations which can use the new AddId. 2006-06-28.
  • SAT: Factor out a new generic AddId function, which takes a HwAbstractIdentifier pointer and applies it to an HwNlibObject, either extending the object's existing ID property with another owner, or creating a new ID property if the HwNlibObject does not already have one. 2006-06-28.
  • Don't endl after every output to an ostream. 2006-06-26.
  • Version number patches for older POPLib. 2006-06-23.
  • openNURBS: Process B-spline weights through the core function which normalize them if they go out of range. 2006-06-22.
  • CATIA, CATIA5, IGES, Parasolid, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Set version numbers for next development cycle. 2006-06-22.

Changes for IGES 1.5.9/VDAFS 1.4.3/STEP 1.2.9/SAT 1.1.4/OpenNurbs 1.1.4/Parasolid 0.5.6/DATAKIT-CATIA 0.5.7/DATAKIT-CATIA5 0.5.6/DATAKIT-UG 0.4.6  

  • Fix a double-deletion in the TSLib assembly surface output code. 2006-06-21.
  • CATIA, CATIA5, IGES, Parasolid, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Change version numbers for release. 2006-06-21.
  • openNURBS: If a face cannot be processed, note the fact and continue rather than shutting down the entire B-rep import process. 2006-06-20.
  • Add TSNLib to the list of names. 2006-06-16.
  • Remove the ifdef POPLIB then define HW_IW_TESS_AVAIL, as POPLIB wasn't defined when we needed it anyway. 2006-06-16.
  • Changes needed to make HWLibs properly compatiable with TSNLib. 2006-06-16.
  • Refactor build system a bit, and add tsnlib type. 2006-06-16.
  • For surface-surface intersections, smarten up the domain a pinch and do not allow the margins on extended offset surfaces to redefine points so much. 2006-06-15.
  • For SMLib surface-surface intersection, enable out of bounds calculations for B-spline surfaces and autoamtically extend offset surfaces. 2006-06-14.
  • Add second version of OutputPolygon callback for new versions of SMLib. Cleverly, I'm pretty sure this change will work on all geometry engines our code is compatiable with without any #ifs! 2006-06-14.
  • Another intersection test. 2006-06-13.
  • Use given tolerance for the IwCurve::IsClosed test, rather than letting it generate a tolerance of its own, since it sometimes generates ludicrously tight tolerances. 2006-06-13.
  • Work around a SOLIDS++ bug which messes up IwBSplineCurve::JoinWith on very small curves. 2006-06-13.
  • Keep track of whether or not the offset surface was useful for dropping points, and only use it if it is actually useful. 2006-06-10.
  • Make the N-point charted make intersection end curve routine the primary one even in the cases when N=2. Make the old two-point routine the backup in case the N-point routine fails. 2006-06-09.
  • Add debugging code to construct and dump HWO version of any attempted intersection curves -- this allows us to test the intersection AFTER the surfaces involved have been converted to NURBS. 2006-06-08.
  • Fix HwIntersectionCurveSMS version to compile again. 2006-06-06.
  • Only create the expandable offset surface (during intersection curve creation) if one of the points does not project to the basic surface (and therefore we can try expanding the surface). 2006-06-06.
  • Patch memory leak introduced by the previous refactoring. 2006-06-06.
  • Create new (internal) HwIntersectionSurface class, and refactor the higher level surrface-surface intersection curve code to use it. The functionality should be exactly the same, this is just a refactoring prior to a rewrite. 2006-06-06.
  • Special case sphere blend support optimization. 2006-06-03.
  • Refactor the existing blend torus support code a bit, and add a somewhat fancy blend degenerate torus class. 2006-06-03.
  • Refactor blend support surface code, make plane special case work if the base surface is a plane, not just the top surface (as previous). 2006-06-02.
  • Add "degenerate torus" to GetTypeString command, and reposition the blend support surface type reporting to come before the special case code rather than after it. 2006-06-01.
  • Cleaned up debugging surface type info dump. 2006-06-01.
  • Add quick debugging stuff, to be cleaned up on Windows box. 2006-06-01.
  • Preliminary blend support torus implementation. 2006-06-01.
  • Get the proper number of samples for a cylinder support surface, so that it works the same way cylinders did before. 2006-06-01.
  • Try adding analytic cylinder blend supports. 2006-05-31.
  • Fix the last blend surface added so it is a surface and not a trimmed surface. 2006-05-31.
  • Refactor the HwNlibSupportPlane class so that the global/local support it has are now in a HwNlibSupportSystemSurface class so it can be used by further analytic classes. 2006-05-31.
  • Experimental change to see if we can make blend surfaces on planes more efficient. 2006-05-31.
  • Parasolid: Add some basic heartbeats to the Nlib to TSLib conversion code, and hook them up from the Parasolid translator. 2006-05-30.
  • Add a convenient hook for outputing debugging info during blend surface construction. 2006-05-26.
  • Refine edge intersection not found failure to have a regular error on the t = 0.0 case (which is at least plausible) and a SER assert otherwise (which seems to indicate a major programming problem). 2006-05-25.
  • New routine to handle end curves (of intersections) if they have more than two points. 2006-05-25.
  • SAT: Add the parameterized torus normal invert call back in. 2006-05-23.
  • Duplicate the last case for the SMS version. 2006-05-22.
  • Change the IW intersection code to allow intersections with bad internal points, even if the skip factor is 1. 2006-05-22.
  • Define a new HwNlibTorus function, SetSelectOuterFlag, which looks at a list of vertices to try to determine whether or not we're interested in the inner or outer portion of a degenerate torus. Then do some magic in the B-rep code to automatically try to use this function if it is needed. 2006-05-22.
  • When looping on k, increment k, not i. 2006-05-20.
  • Fix another stupid fatal mistake in the Nlib import HWO code. 2006-05-20.
  • Fix HwNlibIO.cpp's HWO code so that it doesn't delete the trimmed surface before returning it! 2006-05-20.
  • Buggy code to convert a trimmed surface with trimming loops into (tslib-processed) surface with curves. 2006-05-20.
  • Correct a major error in the HwNlibTabulatedCylinder "bind infinite" code, which was only correct if the direction the curve was extruded was of length 1. 2006-05-18.
  • SAT: Try to undo one of the last SAT changes to see how that affects the SAT files. 2006-05-15.
  • Clean out an ASCII zero that snuck in somehow. 2006-05-14.
  • SolidWorks: Add an HwStdSER on the license key. 2006-05-12.
  • SAT: Rewrite SAT torus code in an attempt to support Acis UV parameterization. 2006-05-11.
  • Add _CRT_SECURE_NO_DEPRECATE to make the latest Microsoft compilers happy. 2006-05-09.
  • Bring SMLib version in line with the recent changes to the IW version to plug memory leaks. 2006-05-09.
  • Rearrange the HwNlibAbstractSolid::MakeTrimmedSurfaces function a bit so that it can take an optional logger parameter, and use that to provide feedback if there are problems converting an HwNlibBrep to a collection of trimmed surfaces. 2006-05-09.
  • Partial patch for problem face notification. 2006-05-09.
  • Switch MakeAndAddIntersectionEndCurve to take an HwStdAutoPtr of an IwBSplineCurve, and then switch IntersectSurfacesToGetCurveIW to use an auto ptr instead of IwObjDelete. 2006-05-08.
  • Plug memory leak when an intersection curve was created but then rejected as incorrect. 2006-05-08.
  • Delete offset surfaces constructed for intersection curve math. 2006-05-08.
  • Fix FindFirstAndLastGood so it correctly signals an error if there are no good points at all! 2006-05-08.
  • If a chart point in the middle of the intersection was not dropped successfully to both surfaces (at least in the case I'm looking at, this was a problem with point dropping, not with the actual data), and there are plenty of chart points, skip the troublemaker and go on to the next chart point. 2006-05-07.
  • Add debugging code to dump only the points in the intersection chart which did not drop properly to both surfaces. 2006-05-07.
  • Add eval derivative function to HwNlibTorus. 2006-05-06.
  • Add a few trivial HwNlibCone functions, and use them to figure out which half of the cone to take when cone is a blend support surface. 2006-05-06.
  • Add (turned off) debugging output code for blend support surface offset failures. 2006-05-06.
  • Create new version of HwNlibSurface virtual function BoundInfinite which takes a series of vertices (as POINTs) as well as a bounding box. (By default it simply forwards to old version without the vertices.) Change HwNlibSolidComponent::BindInfinite to use this version, and implement the new function for HwNlibCone, to help figure out which side of the cone apex we are interested in. 2006-05-05.
  • Previously 80-column files shorter than 1K were always assumed to have newlines, because we couldn't tell whether or not the full 997 characters requested in the newline test were read in or not. Now add a check for end-of-file in there, so if the entire file has been read and no newlines found, assume there are no newlines in the file. 2006-05-04.
  • Remove #ifdef IW_LIBS which was actually wrong now that we have working SMLib point based surface intersections. 2006-05-04.
  • With the SMLib version of the PointBasedSurfaceIntersection calling routine, adjust the tolerance based on the max distance from the points to the surfaces, IF that distance is greater than the tolerance. 2006-05-04.
  • IGES: Put the newlines back in after every line written to the file. 2006-05-04.
  • IGES, VDAFS: Fix IGES and VDAFS read protocol for new input path -- instead of calling ReadLine and then checking for EOF, now we need to check for EOF and then ReadLine. We always validate the line anyway, so that should handle partial lines nicely. Change IGES reader and writer allow overriding the input source. 2006-05-04.
  • IGES, VDAFS: Lots of minor changes to enable input overvide for IGES and VDAFS. 2006-05-03.
  • IGES, VDAFS: Change HwLowLevelAscii80Reader to work from a (improved) HwLowLevelAsciiInput object; with the related changes needed for IGES and VDAFS. 2006-05-02.
  • Fix some trivial smart low-level input bugs. 2006-05-02.
  • Create new interface for HwLowLevelAsciiInput, and start implementing HwSmarterLowLevelAsciiInput to easily adopt an old-fashioned, stupid HwLowLevelAsciiInput-derived class to a flashy smart one, including GetString, Rewind, and PutBackChar functions. 2006-05-02.
  • Tweak the #ifdefs for the new PointBasedSurfaceIntersection function(s). 2006-05-01.
  • Changes to use the new 3D PointBasedSurfaceIntersection routine. 2006-05-01.
  • Only SetAllowExtension on the offset surfaces for intersection if Nlib is available for surface extension. 2006-04-30.
  • By default, use error callbacks for IW_LIBS translators. 2006-04-29.
  • At least try the IW intersection routine in the POPLib version. 2006-04-29.
  • Don't try to expand a surface unless Nlib is available. 2006-04-29.
  • Undo the previous two changes, going back to the old way of handling the surfaces for surface-surface intersection, as the new way introduced bugs without introducing any of the hoped-for speed up. (Note that a completely rewritten version of this patch is brought in a month later.) 2006-04-29.
  • Add new HwPossiblyExtendedIwSurface class, and rewrite the surface-surface intersection code in terms of it. The goal here is to not create an extensible offset surface to wrap the actual surface we are interested in, unless the extension is needed. 2006-04-29.
  • Fix IntersectSurfacesToGetCurveIW so it can be called with either normal surfaces or resizable offset surfaces (or both). 2006-04-29.
  • Correctly flag the IW blend creation method as needed Nlib. 2006-04-29.
  • Change the version number less than which we delete bspline curves on edgeuses (rather than assuming they will be properly deleted on their own, as happens in later releases of SOLIDS++) from 800061505 to 800060000. This compensates for the change in the SOLIDS++ version numbering, perhaps at the price of letting hypothetical releases from early 2005 have a memory leak. 2006-04-28.
  • Tweak defines to work with latest POPLib. 2006-04-28.
  • Elaboration of "polygon code present" #ifdefs. 2006-04-28.
  • Because we've had repeated problems with PointBasedSurfaceIntersection not returning the entire curve desired, check to make sure the end point of the returned curve matches the end point specified in the intersection chart. (If not, it will presumably fall back to the older, slower method of intersecting, which works nicely for many of these cases.) 2006-04-28.
  • CATIA5: Set flag to convert analytics into surfaces of revolution. 2006-04-28.
  • DATAKIT: When making a face object, make sure we have actually created a valid surface for it. 2006-04-27.
  • CATIA5: Change call to catiav5r_ActivateTopologySettings to add the new parameter to it. 2006-04-27.
  • Parasolid: Fix the parameterization on swept surfaces -- we were getting the reciprocal of the proper parameterization previously. 2006-04-26.
  • When dealing with a two-point chart intersection curve of less than 10 time tolerance in length, short-circuit the entire intersection process and just return a straight line between those two points. 2006-04-26.
  • IGES: Allow degenerate tori, even though they are illegal in IGES files. Assume that they are intended to use the (STEP flag) "select outer". 2006-04-26.
  • STEP: Add low-level output target override (via export options) to STEP. 2006-04-25.
  • STEP: Support input_source option for STEP import. 2006-04-25.
  • Fixed previous patch so it works under Linux. 2006-04-24.
  • When you transform a blend surface, transform its spine as well, and scale the offsets according to the scale of the transform. 2006-04-24.
  • Remove ASCII 0s that have crept into the source code. 2006-04-24.
  • Parasolid: New code to dump color attribute information in a file. 2006-04-21.
  • Add rule to read HwNlibChartedCurves. 2006-04-20.
  • If creating a closed blend rail curve and there is a chart available, make the curve direction match the chart direction. 2006-04-19.
  • Parasolid: Fix carried away cut-and-paste which caused a crash in the new blend bound code. 2006-04-19.
  • Actually reverse a charted curve's base curve when requested, instead of just reversing the chart. 2006-04-19.
  • Parasolid: Implemented charted curves, which are normal curves with a 3D point chart which can help indicate which direction the curve should really go, and use them on Parasolid blend bound curves. 2006-04-19.
  • Parasolid: Refactor the intersection curve chart reading code. 2006-04-18.
  • Make the 3D tolerance requirement for deciding an ellipse is meant to be a commplete 360 degree ellipse (rather than a very very very short ellipse) tighter -- now 1e-9 rather than 1e-6. 2006-04-17.
  • Add a simple mechanism to handle infinite straight lines as blend support curves. 2006-04-14.
  • At Gary's suggestion, use B-rep tolerance rather than point-dropped tolerance to determine the distance between the 3D trimming curve and the surface. 2006-04-14.
  • Double the number of samples sought for the "fancy" blend sampling method. 2006-04-11.
  • Added debugging code to aid in debugging failing trimmed curves. 2006-04-11.
  • SAT: Tweak to the SAT loop definition to handle some undocumented post-version-10 stuff we hadn't seen before. 2006-04-10.
  • Don't go looking for additional parameter values to merge in past the end of the additional parameter values array. (And initialize to pointers to 0 just in case they are actually getting deleted without being initialized later.) 2006-04-09.
  • IGES: Add CADLook to the list of IGES preprocessors which require the p_face_orientation_is_surface_only to be false. 2006-04-06.
  • Fix up the "simple" version of the blend sample parameter value generator. 2006-04-05.
  • #ifdef wrappers for use on SMLib. 2006-04-05.
  • STEP: Recognize microns as a valid unit type. 2006-04-05.
  • Alternate routine for blend parameter sample values 2006-03-30.
  • Add CanOnlyEvaluateInParameterRange functions to the HwNlibCurve and HwNlibSurface classes, so you can determine if the parameter range for an evaluation needs to be bound to the stated parameter range of a curve/surface or not. (So, for instance, on a circle, any parameter value whatsoever will yield a valid point when evaluated.) 2006-03-28.
  • Add some debugging code to the trimmed curve code. 2006-03-28.
  • Add filter which makes the tolerance adjustment code less generous if we think the loop is an inner loop (since in that case the outer loop has already been processed, and we don't want to wildly change the tolerance anymore). 2006-03-28.
  • If we've got fewer sample parameters than the suggested number for this blend, subdivide the parameters until we have enough samples. 2006-03-27.
  • Now that we're doing all the sample parameter generation starting from the spine curve's knot vector, go ahead and use the knot vector of the original curve rather than working from a copy. 2006-03-27.
  • Add the logic to allow going around closed spines and trimming in the parameter value space rather than in the curve. 2006-03-27.
  • Instead of dampening the curve's knots and then extracting the knots from the resulting curve, start with the knot vector and directly dampen it, which is faster and more flexible. 2006-03-27.
  • Add version of the interpolate that takes parameter values for the points, and use it for blend rail curves. 2006-03-27.
  • Back out the patch which disallowed very large tolerance increases because of loop distance from surface -- it seemed to break a surprisingly large number of files. 2006-03-27.
  • Add patch from Gary which tries to handle the case where we've got a closed surface with incorrect orientation, with two closed loops bounding it. 2006-03-27.
  • Use Gary's suggestion to use the spine knot values as the sample parameters. 2006-03-26.
  • Make it a triffle clearer what the angle tolerance is. 2006-03-26.
  • Add angle tolerance to intersection. 2006-03-26.
  • Turn off point-based intersection on SMLib for now. 2006-03-26.
  • Make the tolerance gap from the last patch 100000 instead of 1000, as that was breaking things left and right. 2006-03-24.
  • If the maximum distance from a loop to its surface is over 1000x 3D tolerance, reject it, no matter how big the loop is. (Previously it only checked against the loop size, but in this case the bug in the data which created the big gap between loop and surface also created a very long curve in the loop.) 2006-03-23.

Changes for IGES 1.5.8/VDAFS 1.4.2/STEP 1.2.8/SAT 1.1.3/OpenNurbs 1.1.3/Parasolid 0.5.5/DATAKIT-CATIA 0.5.6/DATAKIT-CATIA5 0.5.5/DATAKIT-UG 0.4.5  

  • CATIA, CATIA5, IGES, Parasolid, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Update version numbers for release. 2006-03-22.
  • CATIA5: Add some suggestions from DATAKIT. 2006-03-22.
  • Turn off (using a new compile-time switch) the facility to cache created blend surfaces, as it wasn't properly accounting for transformations. 2006-03-22.
  • Make the units conversion factor code a little bit more bullet-proof. 2006-03-21.
  • Quick patch to allow a STEP file without units to work -- basically, if asked for a unit conversion factor, always return 1.0 if the two units are the same, even if the actual unit value is "no units specified". 2006-03-21.
  • Patch together different StartAssembly and EndAssembly. 2006-03-20.
  • Add StartAssembly and EndAssembly to TSLib receptacle interface. 2006-03-20.
  • Add StartAssembly and EndAssembly to the Nlib import interface. 2006-03-20.
  • Start and End Assembly functions added to assembly interface. 2006-03-20.
  • Fix the intersection curve end curve bit so that it actually compares the end of each curve to the appropriate point on the chart. 2006-03-20.
  • Only try to extend a given surface once. 2006-03-20.
  • Remove debugging tests in the coordinate system code, which I think is pretty firmly established as working by now, and were only serving to cause stupid problems because of narrow tolerances. 2006-03-18.
  • Make sure all the UV points we send down to the IW n-point surface-surface intersection routine are valid, because if one is not, bad things will happen. 2006-03-15.
  • Change CreateByJoining call to be compatiable with both SMLib and SOLIDS++. 2006-03-14.
  • Try to add the ends to IW intersection curves. Probably doesn't work right, but we're overdue to check in. 2006-03-10.
  • For IW surface-surface intersection, only work on the part of the intersection that is solid. (We'll need to add back in the ends later.) 2006-03-08.
  • Move HwIntersectionChart creation back, so its now shared by both intersection routines. (but not actually used by the IW one -- yet!) 2006-03-05.
  • Extending surfaces now part of the HW curve intersection code. 2006-03-05.
  • Change chart class to take offset surfaces. 2006-03-04.
  • New SIP constructor for extending the surfaces. 2006-03-04.
  • Refactor the two intersection curve routines to take extendable offset surfaces. 2006-03-04.
  • Refactor the intersection curve code a bit more. All in prep for bigger changes. 2006-03-03.
  • More refactoring, this time splitting up the FindUV function. 2006-03-03.
  • Rearrange the debugging code so that it's shared between the IW and HW curve intersections. 2006-03-03.
  • Useful debugging dump added (turned off) to help track down intersection curve crashes. 2006-03-03.
  • Work with the new PointBasedSurfaceIntersection routine interface. 2006-03-02.
  • Tweaks to the HwBlendSkeleton class so it can smoothly handle the case where the spine curve is closed, the start/end are both good spots for the blend, but there are areas in the middle where the blend does not exist. We do this by changing the logical domain of the spine curve so that it starts in the middle. 2006-03-02.
  • Added test of new closed spine code. 2006-03-02.
  • If one or two blend sections cannot be created, just skip them and create the blend anyway. 2006-03-01.
  • Add HW_NO_DEBUG shields around the debugging output code, plus a new section of it designed to help report intersection bugs to IntegrityWare. 2006-03-01.
  • Try to make sure we sample the desired chart points without overloading the IW N-point surface-surface intersection routine (which has a hard 20-point limit). 2006-02-28.
  • Parasolid: Add needed "static". 2006-02-28.
  • SOLIDS_PLUSPLUS wrapper around the call to IntersectSurfacesToGetCurveIW, because it's failing a lot of the tests. 2006-02-28.
  • Make SMLib build work with the new HwNlibBlendSurface interface. 2006-02-28.
  • Fix glitch in reading the new HwNlibBlendSurface serialized. 2006-02-28.
  • Add face test from bearing.sat model -- iso rails meet at point, but UV curves do not. 2006-02-28.
  • SAT: Add support (possibly still buggy) for SAT curve-entity blend support. 2006-02-27.
  • Parasolid: Tweak the difficulty estimating code to work with the new HwNlibBlendSurface setup. 2006-02-27.
  • Parasolid: Remove the cliff edge blend flag from the HwNlibBlendSurface object. Cliff-edge status is now represented by the type of supports for the blend. 2006-02-27.
  • Fix HwNlibBlendSupportCurve constructor so that it releases the auto_ptr it is passed. 2006-02-27.
  • Parasolid: Add full curve support, things might actually work now, though they have not been tested yet. 2006-02-27.
  • Parasolid, SAT: Checked in in-progress -- a complete overhaul of HwNlibBlendSurface to allow curve (and eventually point) supports instead of just surfaces. 2006-02-27.
  • SAT: Enable ellipse spines. 2006-02-25.
  • SAT: First stab at including the spine for blend surfaces. 2006-02-25.
  • Add note to fix later to source code! 2006-02-25.
  • Cosmetic change -- move the "gap from" notice higher in the connector-creating code. 2006-02-25.
  • Add the last line accidentally deleted from the SOLIDS++ version of our PointBasedSurfaceIntersection call. 2006-02-24.
  • Initialize pointer passed to IwBSplineCurve::CreateLineSegment to 0, so SMLib doesn't complain about passing a non-null pointer. (Sigh.) 2006-02-24.
  • Add #ifdef wrapper to handle the fact SMLib PointBasedSurfaceIntersect takes a different number of arguments than the SOLIDS++ version. 2006-02-24.
  • Add actual ZOF file type to the file type set, to carefully distingush between ZOF and IWP files. 2006-02-24.
  • Change IWP reading function for SOLIDS++ r2.3. 2006-02-23.
  • The IW N-point intersection routine can't handle more than 20 points, so if you have more, just use the old HW algorithm. 2006-02-23.
  • Add debugging to the IW-based N-point surface-surface intersection, and set it up so that version is tried first, followed by the old HW-based version of the same function. 2006-02-23.
  • STEP: Give each B-rep its own HwNlibSolidComponents object. Previously each shape representation got its own -- this caused massive problems when there were a large number of B-reps in one shape representation AND each of them got transformed. Now each shape rep and each B-rep gets its own components. 2006-02-22.
  • Change #ifdef POPLIB to #if defined(POPLIB) || defined(SOLIDS_PLUSPLUS) throughout the code. 2006-02-21.
  • Changes needed to accomodate the face that SOLIDS++ now uses SOLIDS_PLUSPLUS instead of the old SMLIB macro, and also that it doesn't have the IwSurfaceSurfaceFS class anymore. 2006-02-21.
  • Initialize p to a meaningless value so the compiler doesn't complain that it isn't initialized. 2006-02-21.
  • Fix IWP import so it works with null curves, null surfaces, etc. 2006-02-17.
  • Provide a workaround for blend surface orientation when the Reverse function is not available because there is no Nlib. 2006-02-17.
  • VDAFS: Rewrite polynomial evaluation code to use low-level Nlib routines. 2006-02-16.
  • Add IWP import decoding for face number attribute. 2006-02-16.
  • VDAFS: Break up CONS parameter space curves where they have C0 discontinuities. 2006-02-14.
  • Add new static function HwNlibCompositeCurve::AbsorbCurvesIntoSingle which consumes its HwNlibCurve * inputs and returns an HwNlibCurve * which represents the entire thing. (Either a composite curve containing the original inputs, or if there is only one curve, just the original input curve returned back out.) 2006-02-14.
  • Parasolid: Modify HwNlibParasolidProcessor::GetPointOnCurve to work on trimmed curves using the rather obvious choice of getting the first trimming point. 2006-02-14.
  • VDAFS: Don't fail to create an entire GROUP just because some of the entities in it cannot be found/constructed. 2006-02-14.
  • Parasolid: Add new HwNlibInternalSurfaceNumberProperty attribute, and use it to tag Parasolid blend surfaces with their Parasolid index, so we can then stash blend surfaces which have been converted to IwBSplineSurfaces in a map and use the already built one rather than building a fresh one if we try to build the same surface (as determined by the HwNlibInternalSurfaceNumberProperty attribute) again. 2006-02-10.
  • Check the "was spine reversed" flag and swap the blend surface V parameterization to match. 2006-02-10.
  • Adjust our new blend surface code to make the U direction of the surface match the direction of the spine rather than that of the section curves. 2006-02-10.
  • Parasolid: Apparently the orientation flip only affects doubly inverted offset surfaces used as blend supports. So this patch rewrites the last one to test blend supports only, and flip their offset distance if they are doubly inverted offset surfaces. 2006-02-09.
  • Parasolid: Implement a crazy rule -- if an offset surface has negative sense and its base surface has negative sense, ignore the negative sense flag on the offset surface. Sounds odd, but we were consistently detecting the orientations of such surfaces (and none others, except blends we created ourselves) as being wrong. 2006-02-09.
  • Parasolid: New debugging code (turned off, of course) to add surface index "names" to surfaces. 2006-02-09.
  • Parasolid: A lot of changes to make this a tool for reporting information about surfaces in the model as well as the surfaces of faces and blends (both of which it did before). 2006-02-09.
  • Upgrade the code to determine the proper offset to use to use a sequence of doubles as the starting point for the drops. This should spot for actual area of interest along the spine curve for most reasonable setups. 2006-02-07.
  • Spot tests for the HwDoubleSequence function. 2006-02-07.
  • Allow straight line curves on blend -- since we can drop the 3D trimming points onto the blend, we can generate our version of the UV points for the curve. 2006-02-06.
  • SAT: Skip any carriage returns or linefeeds at the begining of the string portion of a string object. 2006-02-06.
  • CATIA: Check and ensure that entities for which catiav4r_IsEntityVisible is false have the blanked attribute (if they are created). 2006-02-06.
  • UG: Added no datakit license available for UG translator 2006-02-06.
  • If we're creating a reparameterized surface and we don't care about parameterization, just skip the whole reparmeterization bit. Also, if we don't care about the parameterization of an offset surface, don't worry about the parameterization of its base surface. 2006-02-05.
  • Add debugging code to dump the info when we cannot figure out the direction of offset to use for a surface. Turned off, of course. 2006-02-05.
  • Special case for curves of offset surfaces, since offset surfaces will preserve the underlying parameterization when we convert them to IwOffsetSurfaces. 2006-02-04.
  • Quick refactoring to prep for curve on surface improvements. 2006-02-04.
  • fixed spelling error in reparameterized surface name string. 2006-02-04.
  • Parasolid: get proper parameterization for swept surface entity. 2006-02-04.
  • Curve lift debugging code added, turned off. 2006-02-04.
  • When constructing rail curves, check to make sure we've got a new point before adding it to the list of points to interpolate. This should handle various edges cases gracefully. In addition, check to make sure we've got enough points, and skip curve creation of what would be singular curves. 2006-02-03.
  • Fixed Test3dTrimmedRailCurveStrict so that it actually works! 2006-02-03.
  • New stricter test designed to catch rail curves which can not be created by the new, improved method for creating them. 2006-02-03.
  • Additional debugging code (turned off), warning if the preferred rail creation code does not work successfully. 2006-02-03.
  • When we detect an impossible-to-fix condition in the IW_TRANSLATORS_LIBERAL section of FixTrimLoopOrder, return an error rather than just reporting an error and then trying to do the impossible. 2006-02-02.
  • Tweaks which in theory, should make the trial (and currently turned off by default) new intersection curve code work better at extending surfaces, and in practice don't seem to make any difference whatsoever. 2006-02-02.
  • Sketch out new intersection curve code. Fix intersection curve (old code) off of one surface and across seam on the other. 2006-02-01.
  • Parasolid: Tweak the version tests again. 2006-02-01.
  • Parasolid: Try a slightly smarter test -- one that recognizes that versions where the kernel version number does not match the schema modeler version number seem to not have embedded schema info. 2006-02-01.
  • SolidWorks: Updated for new HwParasolidFile::Read parameters. 2006-02-01.
  • Parasolid: Add a message logger parameter to HwParasolidFile::Read, so we can log the kernel and schema versions used in the file. 2006-02-01.
  • Parasolid: Change the schema detection code for yet another Parasolid file. 2006-01-31.
  • STEP: In the face creation loop, move from using a countdown to using a heartbeat. 2006-01-31.
  • STEP: Improve tracking code in inner loop of object creation -- a heartbeat for each product we try to create, and a countdown of the faces in each shell. 2006-01-30.
  • We were returning IW_SUCCESS when we should have been returning the estimated number of samples to use. Needless to say, that was bad. 2006-01-30.
  • Put an upper limit of 600 on the estimated samples needed for blend code. 2006-01-30.
  • Trimmed curve on blend test that yields 1000+ samples using current code. 2006-01-30.
  • Put an upper limit on the number of points which we try to interpolate, as the algorithm apparently cannot handle large numbers of sample points. We've arbitrarily chosen 1000 as the limit for now, but this may get reduced in the future as we see more test cases. 2006-01-30.
  • Clean up needed to get first working version of the translation program. 2006-01-30.
  • First stab at modifying our existing solidworks code to create a simple system to translator solidworks files to parasolid files. 2006-01-30.
  • CATIA5: Add first stab at tracking. 2006-01-30.
  • SAT: Provide tracking for the initial file reading stage of SAT imports. 2006-01-29.
  • New test to detect heartbeats during processing. 2006-01-29.
  • Fix parameters to knots function so that it can handle parameter ranges that do not go from 0.0 to 1.0. 2006-01-27.
  • Sometimes blends come down to a single point in the middle. We cannot allow this, so this code detects when a section has been requrested that will be too small, and substutes one which will have its sample points just a bit above tolerance apart. 2006-01-27.
  • Try to estimate the complexity of the support curves / support surfaces / intersection surfaces and use that to inform how many sample points we take when intersecting or blending. Also, always take polynomial cross-sections for blends. 2006-01-27.
  • Refine the last test so that we only accept points further from the (offset) surface if the land in the middle of the surface, not at the edges. This serves as a proxy for whether the point was "on" the surface, relative to the surface's normal. 2006-01-27.
  • Add radius to HwBlendSupportSurface class, to allow a more generous yet still sensible tolerance on the drop point operation. 2006-01-26.
  • Reject possible edge points if they are more than desired_span_length away from the line between the two known points. 2006-01-26.
  • Version 16 schemas. 2006-01-26.
  • Try to limit intersection curves to approximately 100 points. 2006-01-25.
  • Fix IwExtent2d constructor to work with SOLIDS++. 2006-01-25.
  • Fixed bug introduced in the reogranization to allow both types of blends to be attempt -- now the HW blend should work again. 2006-01-25.
  • Allow user (not end user, at the moment) control over which skinning algorithm to use for blends. Defaults to NMTLib then TSLib Math if NMTLib is available, or just TSLib Math if it is not. 2006-01-25.
  • Move around the #ifdefs so that the new non-SMLib blend code can actually be used if you do not have SMLib! 2006-01-25.
  • First stab at non-SMLib fillet support for Parasolid. This includes modifying HwBlendSkeleton::GetSection so it can return polynomial curves if requested, and fixing SkinCompatiableCurves to work on polynomial curves. 2006-01-25.
  • Add const to some string arguments for Serialize and UnSerialize, which makes them work when called with a char *. 2006-01-25.
  • New code to serialize CURVEs. 2006-01-24.
  • Serialize function to support Nlib SURFACE export (as a HwNlibSURFACE object). 2006-01-24.
  • Switch error message from "requires SMLib" to "requires SMLib or SOLIDS++". 2006-01-24.
  • Parasolid: Send heartbeats after each face is created in the Parasolid core. 2006-01-24.
  • Parasolid, SolidWorks: Add tracker argument to the HwParasolidFile::Read command, and send it regular info during the file node reading loop. 2006-01-24.
  • Parasolid, SolidWorks: Change internal Parasolid and SolidWorks interfaces to allow progress trackers to be sent in. (Nothing is actually done with either yet.) 2006-01-24.
  • When searching for the proper point to use on a blend support curve (ie in the cliff-edge blend case), use the solution point which is closest to the ideal circle (of the blend radius) around the given spine point. This helps find the best solution in the case where the support curve intersections the of the spine curve point more than once. 2006-01-24.
  • Rewrite HwTSLibTrimLoop2d::ReparameterizeUVSpace so that it uses IwBSplineCurve::GetCanonical and ::SetCanonical rather than ::GetControlPoint and ::SetControlPoint. 2006-01-23.
  • Add test for HwTSLibTrimLoop2d::ReparameterizeUVSpace. 2006-01-23.
  • Fix the rail construction code so it always looks at both the start and end point, to handle the case where both rail curves intersect at one end or the other. 2006-01-23.
  • CATIA, CATIA5, IGES, Parasolid, SAT, STEP, SolidWorks, UG, VDAFS, openNURBS: Change version numbers for start of next development cycle. 2006-01-20.

Changes for IGES 1.5.7/VDAFS 1.4.1/STEP 1.2.7/SAT 1.1.2/OpenNurbs 1.1.2/Parasolid 0.5.4/DATAKIT-CATIA 0.5.5/DATAKIT-CATIA5 0.5.4/DATAKIT-UG 0.4.4  

  • Updated version numbers for release. 2006/01/20.
  • CATIA5: Don't free the curve or point until we are actually done with it. 2006/01/19.
  • CATIA5: Refactor the color code a bit, and use the new code to add curve and point color. 2006/01/18.
  • openNURBS: Name export added. 2006/01/16.
  • DATAKIT: Fix the CATIA v4 color scale, which appears to have changed someplace along the way. 2006/01/16.
  • DATAKIT: Catia v5 face colors. 2006/01/16.
  • CATIA: Turn the creation of blanked entities back on, if the options to include blanked entities is set. 2006/01/14.
  • SAT: Handle new blend surface interface. 2006/01/13.
  • Parasolid: Code to handle infinite spine cases. 2006/01/13.
  • Add "spine is infinite" member to blend surface, to handle the infinite line case seen in a few Parasolid files. 2006/01/13.
  • Use a tighter test to determine if a chart point really lies on both surfaces in the intersection. (In essence, check to see if the projected point is right on the edge of the surface when the distance to the point is 5 times greater than tolerance.) 2006/01/12.
  • Don't allow new big_tolerance to get bigger than 100 times tolerance. 2006/01/12.
  • During intersection curve construction, make the tolerance for determining whether or not a point drop was successful one-tenth of the distance between the first two chart points. (Previously it was 100 times base tolerance, but in the case we were just looking at, that was longer than the curve being calculated!) 2006/01/12.
  • Reverse the logic on rail curve direction, so that it is correct! 2006/01/11.
  • Rewrite the code for creating blend rails to use the new blend skeleton code. 2006/01/11.
  • Move GetBlendPoints from private to public, making it easy to make blend rails. 2006/01/11.
  • Parasolid: Rewrite the code to find the best halfedge so that it A) starts with the first halfedge and B) actually skips halfedges with no curve. 2006/01/10.
  • Parasolid: Change the processing of edges a tad. Previously, if there were no vertices (ie a ring edge), we tried to get a point from the 3D curve. But that doesn't work if there is no 3D curve. Now it tries to create a 3D curve from the fin, and if that works, uses the start point of that curve as the vertex. 2006/01/10.
  • Rearrange the code for handling surface-surface intersection subdivision so it can gracefully handle the case when neither surface support the span we wish to subdivide. 2006/01/09.
  • Instead of using the minimum length between chart points (times .3) for the desired span length, use the average length between chart points (times .3). This helps reduce the negative effects of chart points which are very close together. 2006/01/09.
  • Remove all traces of the old add_non_intersecting_ends argument. Now we always return the full intersection curve specified by the chart. 2006/01/08.
  • When looking for the edge where a surface ends in surface-surface intersection, compare the distance between the new edge point and the first point on both surfaces, and if it smaller than one-tenth the desired span length, simply replace the old point with thew new edge point. 2006/01/08.
  • Reinstate the old code which checked the max distance the given points were from each surface (that they could be successfully projected to) and use two that for tolerance. Set the desired span length to be .3 times the minimum gap between points in the given chart, or the minimum gap once the edge points have been added, whichever is lower. 2006/01/08.
  • If there aren't many points in a surface-surface intersection curve, cut min_distance in 1/3 to generate some additional points so you can make a nice curve. 2006/01/07.
  • Use the minimum difference index found for the best point in the intersection, rather than "i", which will always be out of the array's range. 2006/01/07.
  • Major rewrite of the surface-surface intersection curve code. Untested. 2006/01/07.
  • Refactor to IsBetween function, clean up a bit of debugging code. 2006/01/07.
  • Have the destructors for HwBlendSupportCurve and HwBlendSupportSurface delete the curves/surfaces they point to; I guess I should now say, that they hold. Greatly simplifies code that uses these classes. 2006/01/06.
  • Stop special-casing spine curve conversion. Now we always want (and get) the longest intersection curve possible. 2006/01/06.
  • Fix one error return that should have been a success with a failure flag set. Make tolerance on section calculation more generous. 2006/01/06.
  • Clean up a bit after last change, removing code which will now never be called. 2006/01/05.
  • Rewrite the cliff-edge blend support to use the new blend tools, then realize that rolling-ball blend (with spine) support just requires a slight tweak of the new cliff-edge code. 2006/01/05.
  • Switch cliff-edge blend to use new blend code as well. 2006/01/05.
  • Clean up the cliff-edge blend code in preparation for rewriting it. 2006/01/05.
  • Fix the new blend code so that it only looks at the valid region of a blend. 2006/01/05.
  • Blend skeletons are parameterized in terms of their spine curves, not from 0 to 1 -- fix GetBlendInterval function to recognize this. 2006/01/04.
  • Refactor fillet code a bit, then apply new fillet code to two surface blends where a spine is present. 2006/01/04.
  • Add a bit of const correctness to the blend support classes. 2006/01/04.
  • Implement function to find the proper offset for a Parasolid blend support, and create that offset surface. 2006/01/04.
  • Simple test for simple function to find the real offset direction on Parasolid support surfaces. 2006/01/04.
  • Move the DropPoint functions (renamed to HwDropPoint) and HwBlend classes to HwTSLibMath. This is more appropriate in terms of what the functions/classes are doing, and it will make the new classes much easier to test directly. 2006/01/03.
  • CATIA: Straightened out basic IDs for the new model. 2006/01/03.
  • DATAKIT: Don't warn on entities that DATAKIT does not know. Process type 22 coordinate systems. 2005/12/23.
  • CATIA: Piping callback function added. 2005/12/23.
  • DATAKIT: Support for piping entity via a callback function which must be registered (as piping seems to be v4 specific for now, and we're using it in general purpose code). 2005/12/23.
  • DATAKIT: Update to allow explicit specification of the UnionName, so we can have a Cartesian_point_with_infos object named cartesian_point. 2005/12/23.
  • DATAKIT: Recognize that loop orientation can be -1 for "don't know". 2005/12/22.
  • Code implemented to find the valid range of a blend surface, but not tested. 2005/12/22.
  • DATAKIT: Tool to autogenerate the DATAKIT type -> processing switch functions. 2005/12/21.
  • Turns out the secret of the old intersection edge-finding routine was that it returned the best intersection point found. We were trying to return the best t from which an intersection point could be found, and then calculating the starting point of the intersection calculation rather than the resulting intersecting point! Now we properly make sure the point we return is on the intersection. 2005/12/21.
  • When trying to find the correct edge of the intersection, make sure any intersections found have an intersection point which matches the seed point we put in. 2005/12/20.
  • CATIA: A bit of basic progress tracking, plus basic support for solids. 2005/12/20.
  • CATIA: Support curve bounded surfaces in the new v4 code. 2005/12/19.
  • CATIA: Start of new v4 code. 2005/12/19.
  • HwBuild: Updated for DATAKIT 12/17/2005 release. 2005/12/19.
  • Add additional, easy-to-use unserialize to curve function. 2005/12/17.
  • Make sure there is always a correct value returned by the edge finding code. 2005/12/16.
  • Start to sketch out code to determine the proper extent of a blend. 2005/12/16.
  • Generalized the intersection curve edge finding algorithm to work on finding edges anywhere. 2005/12/16.
  • Sketched in surface-based blend support class, moving a bunch of DropPoint functions earlier in the file to make it work. 2005/12/16.
  • Start refactoring in blend support code. 2005/12/15.
  • Construct a new class-based interface to the debugging logger global, so that the previous value can be restored when the current one goes out of scope. 2005/12/15.
  • Put a simple wrapper around the blend surface creation code, so that (in debug mode) failed blends are written to HWO files. Provide a new, class-based interface to the debugging logger global, so that the previous value can be properly restored when the current value goes out of scope. 2005/12/15.
  • Move the HwOverrideGlobalWrapper template to the highest header, as it might be useful. 2005/12/15.
  • STEP: When trying to work out a transform for a STEP assembly component, historically we have checked to see if the product we are looking at matched the "component" field in the representation relationship with transform structure. Unfortunately, our method for making this comparison fails if there are two (or more) shapes for a given product. (Not that we understand why anyone would ever actually do that in a file, mind you!) This patch tighten ups this check so that we do not switch the direction of the transform unless we can verify that the component we want is the other field ("assembly" rather than "component"), rather than simply assuming it must be. 2005/12/14.
  • UG: Fixed case in include. 2005/12/13.
  • UG: Comment out an unused line that was giving GCC fits. 2005/12/13.
  • UG: Fixed case from HwNlibUgProcessor to HwNlibUGProcessor in includes and comments. 2005/12/13.
  • UG: Changes for latest version of UG. Untested. 2005/12/13.
  • HwBuild: Updates for latest UG. 2005/12/13.
  • DATAKIT: Fix GCC-incompatiable variable declarations in for statements. 2005/12/13.
  • DATAKIT: Fixed path in include statements. 2005/12/13.
  • Parasolid: Special case for the version 1401272 -- we've only got one file, but it doesn't match either the versions before or after. For now we will special case that file. 2005/12/12.
  • Parasolid: Handle Parasolid files whose 1st node is a list of other nodes. (That allows people to send more than one body or assembly tree in a single file.) 2005/12/12.
  • Parasolid: Handle the case of the spun surface which spins an infinite straight line. 2005/12/08.
  • STEP: Support for infinite (straight line) surfaces of revolution added. 2005/12/08.
  • Clean up the second RLS MakeNurbs function -- because it takes u min and u max, we don't care if the surface is infinite, and then we switched it to actually use u min and u max rather than the built in p_start_u and p_end_u. 2005/12/08.
  • Fix RLS transform function -- it was removing the (important!) magnitude of the generatrix direction vector previously. 2005/12/08.
  • Fix two glitches in RLS serialization. 2005/12/08.
  • Test of RLS serialization. 2005/12/08.
  • Properly copy RLSs. 2005/12/08.
  • Test RLS MakeCopy function. 2005/12/08.
  • Switch strict qualities to greater-than-equal / less-than-equal to handle the tricky cases where the MINMAXBOX is not aligned the same way the revolved surface is. 2005/12/08.
  • New HwNlibRevolvedLineSurface, which is a surface of revolution revolving an infinite straight line. 2005/12/08.
  • Add Date field to HwHeaderInfo. 2005/12/07.
  • SAT, STEP: When sending data to the interface, fill HwHeaderInfo with available descriptive info from the header of the file. 2005/12/04.
  • STEP: Properly call HwStdSER for all strings read into a vector of strings. 2005/12/04.
  • VDAFS: Create and implement HwVdafsHeaderSection::HeaderToHeaderInfo, which mines the VDAFS header section for info for HwHeaderInfo. Then use that function to get better header info for VDAFS file reads. 2005/12/04.
  • Replace user of InvertPoint3d with a longer bit that works in both SMLib and SOLIDS++. 2005/12/03.
  • DATAKIT: Couple of minor tweaks for 11/05 DATAKIT compatibility. 2005/11/30.
  • When creating an HwNlibCircle from an IwBSplineCurve which is circular, use the specified start and end param rather than the natural ones of the IwBSplineCurve. 2005/11/29.
  • When converting an IwEllipse to an HwNlibCircle, use the specified parameter range (in terms of the IwEllipse) rather than the entire parameter range of the IwEllipse. 2005/11/29.
  • Allow conversion of IwCompositeCurve to HwNlibCompositeCurve. 2005/11/17.
  • DATAKIT: Merge in latest DATAKIT changes. May not compile. 2005/11/15.
  • Added field to HwFacet to allow additional data to be stored with the triangles. 2005/11/14.
  • STEP: Check to make sure the STEP header file name object is available before trying to use it. 2005/11/07.
  • STEP: Trap errors when reading header fields -- we don't really use them for much anyway, so why stop an entire file read because they cannot be read? 2005/11/07.
  • SAT, IGES: Implement face number attribute I/O. 2005/10/28.
  • Add the new face number attribute, in both HwNlib and Iw versions, with appropriate conversions between them. 2005/10/28.
  • Don't force every NURBS control point to be 2D. 2005/10/28.
  • Handle I/O for reparameterized curves. 2005/10/25.
  • Remove two member variables which are not actually used from HwNlibReparameterizedCurve. 2005/10/25.
  • Add new Nlib debugging tool, dumping HWO files. Primitive yet. 2005/10/25.
  • Add I/O support for HwNlibTrimmedSurfaces, plus fix a major bug in HwNlibCURVE export. 2005/10/25.
  • DATAKIT: Make all the inner loops of a curve bounded surface have the same type (2d or 3d) as the outer loop. 2005/10/24.
  • DATAKIT: Add support for Polylines. 2005/10/24.
  • DATAKIT: For the outer loop of curve bounded surfaces -- if you cannot find a UV loop, try looking for a 3D loop. 2005/10/24.
  • UG: Added very basic assembly component names to items. To be rewritten when proper assemblies are implemented. 2005/10/21.
  • DATAKIT: Make curve bounded surfaces with no loops an error, rather than a naturally bound surface. Still allow the case of a naturally bounded surface with inner loops. 2005/10/21.
  • CATIA5: Take out Guillaume's suggested to_nurbs = 2 switch, as it drastically slowed down the translator. 2005/10/21.
  • Plug a theoretical memory leak. 2005/10/20.
  • Plug a major memory leak. 2005/10/20.
  • Tweaked defines so that we get error logging on both SMLib and SOLIDS++ now. 2005/10/19.
  • Fix the broken Nlib split routine -- somehow I dropped an n++ when I copied the basic logic from HwNlibCurve, which meant I was taking the upper index of the array of segments and using it like it was the number of segments. 2005/10/18.
  • When generating a plane surface, parameterize it from 0 to 1 (each way) rather than by its size. 2005/10/18.
  • Special case the very large planar surface problem. 2005/10/18.
  • I liked the SplitAtDiscontinuities function so much I bought the company! No, actually I just refactored it a bit so it can be used in the 3D case as well. 2005/10/18.
  • Deal with pesky n == 0 case in Nlib version of SplitAtDiscontinuities. 2005/10/18.
  • Change the HwTSLibTrimLoop2d::SplitAtDiscontinuities to use the Nlib discontinuity detection code rather than the NMTLib -- much better results on ugly data, it seems. 2005/10/17.
  • More conditions which allow for shrinking of surface. 2005/10/17.
  • Check to see if the UV space covered by a surface's trimming loops is very much smaller than the actual UV space of the surface. If so, trim the surface back and adjust the loop coords to compensate. 2005/10/17.
  • Add HwTSLibTrimLoop2d::ReparameterizeUVSpace to assist in handling UV curves on surfaces which are massively bigger than the actual area of interest. Not automatically called. 2005/10/17.
  • Split the incoming curves at discontinuities. 2005/10/16.
  • Add HwNewDelete bases to the HwTSLib trimming classes, so that they can be used from outside of the hw_core DLL. 2005/10/15.
  • emergency special case for the end of rail curves if the normal section point gathering method has not worked. 2005/10/14.
  • When putting blend surfaces directly in a B-rep, remove each from the array of surfaces to be deleted after it is inserted in the B-rep. 2005/10/14.
  • Actually set the HwCoordinateSystem's value once you've unserialized it. 2005/10/14.
  • Start to add support for HWO import. 2005/10/14.
  • Before checking the type of the object just read in, make sure it is not null. Output the number of points in an intersection curve chart. Initialize CURVEs and SURFACEs before trying to use them. 2005/10/14.
  • Tweaks to new I/O methods. 2005/10/13.
  • Add HWO format to formats list. 2005/10/13.
  • HwNlibObject direct I/O. Primarily for debugging purposes. 2005/10/13.
  • Remove the ill-advised and not completely implemented "stored transform" code from the HwNlibOffsetSurface class. 2005/10/12.
  • SolidWorks: Read all configurations, not just the first. (The proper way of handling multiple configurations must still be determined.) Print error messages to the file if a given body cannot be read at all. 2005/10/12.
  • Refactored the surface/surface intersection code a bit, and used the resulting FindIntersection function to implement a new method to find the edge where the two surfaces stop intersecting. (Basically binary search using the FindIntersection function.) 2005/10/12.
  • Take the basic technology in the cliff-edge blend code, refactor it, and make it a new general purpose blend surface processor. Still needs debugging, but has potential to be a big improvement, as it works much closer to the Parasolid model of how a blend surface is actually defined. 2005/10/09.
  • SolidWorks: Check to see if SwDocumentMgr.dll is available or not, and report the new IW_ERR_SW_DLL_NOT_REGISTERED error if it is not. 2005/10/08.
  • Added IW_ERR_SW_DLL_NOT_REGISTERED error message. 2005/10/08.
  • Doing intersection curves, if the subdividing fails, do not simply return the last point of the span (thereby creating a doubled point). 2005/10/07.
  • CATIA5: Get all data as NUBS, as suggested by Guillaume. Seems like maybe a bad idea, but what the heck, we'll give it a try. 2005/10/06.
  • DATAKIT: Use the HwCatia tools to automatically delete the edge curves constructed for v5 edges. 2005/10/05.
  • If available, use the spine curve to bound the extent of infinite blend supports. 2005/10/05.
  • Refactor HwNlibIntersectionCurve code a tad. 2005/10/05.
  • UG: Actually detect the missing / incorrect schema problem in UG and report that specific error. 2005/10/05.
  • SolidWorks: Log fatal errors. 2005/10/04.
  • Parasolid: Report fatal errors to message file. 2005/10/04.
  • UG: Report fatal errors to message file. 2005/10/04.
  • Parasolid: When reading a value in a Parasolid header, quit reading the current value if you hit an end-of-line character followed by an asterisk to start the next line. 2005/10/02.
  • Two new errors for SolidWorks. 2005/09/29.
  • SolidWorks: Make sure the file's version is actually supported by SwDocumentMgr.dll -- introduce two new errors to use if it is not. 2005/09/28.
  • STEP: Corrected an uninitialized variable affecting torus processing, added flag to process PRO/ENGINEER curve bounded surfaces as if they were IGES 144 rather than IGES 143 (which is what the standard defines). 2005/09/27.
  • CATIA5: Comment out unused Feature code that no longer links. 2005/09/26.
  • DATAKIT: Two changes needed for the 9/23/2005 version of DATAKIT v5 library -- make sure we clean up allocated memory for a face, and ignore loop orientation info. 2005/09/26.
  • SolidWorks: Workaround for a Borland compiler bug. 2005/09/26.
  • DATAKIT: Changes to bring in line with latest DATAKIT. 2005/09/23.
  • DATAKIT: Update for latest datakit. (Even though the file was only introduced two days ago. Things change fast in this modern world...) 2005/09/23.
  • DATAKIT: Latest DATAKIT update. 2005/09/23.
  • Hack in the assert torus code to handle when our sample point has x and y coordinates of 0 (only happens in degenerate toruses). 2005/09/20.
  • DATAKIT: New DATAKIT file. 2005/09/20.
  • Turned off unnecessary (but nice) knot removal for arclength NURBS reparameterization. It's just too slow to do automatically, I fear. 2005/09/20.
  • Fix loop scoping. 2005/09/20.
  • Add new experimental function to remove excess knots (that is, greater than the order of the curve), which is then applied to the arclength version of NURBS curves. 2005/09/17.
  • DATAKIT: If the outer loop is null, go with the natural outer loop for the surface. 2005/09/10.
  • Do not allow floating point numbers greater in magnitude than 1e50. 2005/09/09.
  • If you get an isolated shell into the ConvertSolid routine, explode it rather than rejecting it outright. 2005/09/07.
  • When intersecting two surfaces, if the chart points are further than tolerance away from one or both of the surfaces, bump up tolerance so they are still within (adjusted) tolerance. 2005/09/06.
  • Updated version numbers for development. 2005/08/27.

Changes for IGES 1.5.6/VDAFS 1.4.0/STEP 1.2.6/SAT 1.1.1/OpenNurbs 1.1.1/Parasolid 0.5.3/DATAKIT-CATIA 0.5.4/DATAKIT-CATIA5 0.5.3/DATAKIT-UG 0.4.3  

  • Update version numbers for 1.5.6 release. 2005/08/26.
  • SolidWorks: Move getimportbody tests to the outer loop, so they apply to all versions. 2005/08/26.
  • CATIA5: Use #if to turn off experimental FDT code. Can easily be turned back on, of course! 2005/08/26.
  • Delete the IwFilletExecutive internal B-rep it doesn't delete automatically. 2005/08/25.
  • When unpacking an assembly, report a non-fatal error if you encounter something you do not know how to process, rather than a fatal error which will shut down the entire assembly unpacking process. 2005/08/25.
  • UG: Handle blanked faces properly. Don't create an error if no faces could be created (they might just be all blanked, after all). Create a B-rep even if it has no transform on it. 2005/08/25.
  • DATAKIT: When processing a UG-style shell, check to see if faces are blanked and unless the include blanked flag is set, skip them if they are. 2005/08/25.
  • Patch long-standing memory leak when a surface cannot be trimmed. 2005/08/24.
  • Got over-enthusiastic in the memory leak patching and patched something that was already being deleted. This patch corrects that. 2005/08/23.
  • Patched memory leaks in the trickier bits of fillet code. 2005/08/23.
  • Patch a couple of memory leaks in fillet code. 2005/08/22.
  • CATIA5: Points are now returned as cartesian_point_with_infos. 2005/08/22.
  • UG: Make build with latest DATAKIT library. 2005/08/20.
  • Plug memory leak. 2005/08/20.
  • Patched two memory leaks. 2005/08/19.
  • DATAKIT: Merge in latest DATAKIT release. 2005/08/19.
  • Delete AddSamplePoints in favor of the existing GetSamplePoints function; fix that function so it works on HwNlib3dTrimmedCurves. 2005/08/16.
  • Do not fail the blend creation if we can not figure out what its orientation should be -- instead, just indicate the new error and get on with things. Also, sample points from model space loops when doing a model space trim (trimmed surface construction path) to help figure out which fillet we should use if there is more than one solution. 2005/08/16.
  • Blend orientation confusion error message. 2005/08/16.
  • When creating a filler curve on a surface from 3D points, check to see if one (or both!) of the points lie on a seam, in which case the other side of the seam might yield a better connecting curve. (We're using "shorter" as a first-approximation to better here.) 2005/08/15.
  • Ferreted out some stray ASCII 0s that had snuck into the code. 2005/08/13.
  • Use a finer grained test when you try to figure out the surface orientation. 2005/08/12.
  • Refactor the code for converting the spine curve from HwNlibCurve to IwBSplineCurve, as it needs to handle intersection curves in a special fashion. 2005/08/12.
  • Refactor the rail code a tad, to allow a fallback to the older method if the rail method fails. 2005/08/11.
  • Turn off the sphere / torus realign code -- it seems to cause more harm than good. 2005/08/10.
  • Don't try to orient the blend surface based on the spine unless you actually have a valid spine. 2005/07/28.
  • Add a couple of reverse cases to try to get the UV curve on blend surfaces to come out properly. 2005/07/28.
  • Turn back on the smart trimmed curve on blend surface code, and make it smart enough it works somewhat. 2005/07/28.
  • Refactor ConvertTrimmedCurve so we can use the logic on IwBSplineCurves as well as HwNlibCurves. Turn off the new rail code temporarily for test. 2005/07/28.
  • More detail on blend surface type string -- now reports cliff-edge blends. 2005/07/28.
  • Start using preiously developed rail code to create implicit edges for blend curves. 2005/07/28.
  • New tool to properly orient blend surfaces so they match their spine. 2005/07/27.
  • Add new attribute type IW_AIH_NLIB_SURFACE_TYPE for debugging. 2005/07/27.
  • Better type string for offset surfaces. 2005/07/27.
  • Add debugging code to log the Nlib surface type of faces which have to be flipped to get a proper trim. 2005/07/27.
  • Set up global debugging interface to allow the use of the logger anywhere in the code, rather than simply places with a logger variable passed to them. 2005/07/27.
  • HwUnitTest: Make work with the new version of the blend surface. 2005/07/25.
  • Proper ANSI pow call. 2005/07/25.
  • Completely rewrite the surface offseting code for blend surface supports. 2005/07/25.
  • Better offset surface type string. 2005/07/25.
  • Make the filleting offset code a little smarter, before rewriting it yet again. 2005/07/25.
  • Added additional SplitAtSeams debugging code, turned off. 2005/07/25.
  • Since we've loosened up the conditions under which we try switching the offset direction of a fillet support, don't make the switch permanent until we verify that the switched version works! 2005/07/24.
  • Previously we tried to use the opposite offset for a surface (during blend surface construction) only if the spine curve was successfully dropped to the original offset, but had too great a distance. Now we also try to flip the offset if the spine curve could not be successfully dropped to the original offset. 2005/07/23.
  • Use the new logical spine reverse flag to potentially reverse curves on blend surfaces. 2005/07/20.
  • Add a flag to blend surface to specify whether or not the spine curve had a logical reverse flag set in the file. (Important for Parasolid.) 2005/07/20.
  • Parasolid, SAT: Add a flag to blend surface to specify whether or not the spine curve had a logical reverse flag set in the file. (Important for Parasolid.) 2005/07/20.
  • Turn off new enhancements to curve on blend, tweak the ending edge orientation. Probably not right yet, but let's do something testing. 2005/07/20.
  • Next stage of curve on blend surface improvements checked in partially done. 2005/07/20.
  • If blend bounds on blend surfaces go across the blend (rather than along it), create a circular cross-section of the ideal blend rather than creating a real blend surface and then lifting an appropriately constructed UV curve onto it. (Ack! This was a stupid mistake, backed out later.) 2005/07/19.
  • Parasolid: Correct the blend bound curve to use a UV curve which, while still not generally correct, is at least now along the correct coordinate. 2005/07/19.
  • Loosen the tolerance just a tad on singularty detection, so that it matches the later assumptions we make about loop correction near singularitis. 2005/07/15.
  • openNURBS: Fixed memory leak in previous patch. 2005/07/14.
  • openNURBS: Add HwNlibOpenNurbsSurface class, which is a simple wrapper around an ON_Surface designed to allow the evaluation functions to be called, so that we can use the ON_Surface calculations directly to lift a uv curve onto the surface. 2005/07/14.
  • Added a surface type to the enum to allow for non-core surface types -- either translator specific or created by an end user. 2005/07/14.
  • openNURBS: Undo the incorrect fix of the closed edge curve problem recently checked in. If the edge is closed, then we cannot rely on the 3D curve because of uncertain orientation -- period. 2005/07/13.
  • Cleaned up nurbs.h include. 2005/07/13.
  • file HwNurbsHeaderWrapper.h was initially added on branch HWLibs_1_5_stable. 2005/07/13.
  • Switch from including nurbs.h to HwNurbsHeaderWrapper.h. 2005/07/13.
  • Made wrapper header to handle in one place all the tangled #define problems involving nurbs.h. 2005/07/13.
  • openNURBS: When closing an ONX_Model_Wrapper, don't call Destroy on the ONX_Model member unless it is non-null. 2005/07/13.
  • Properly copy the attributes when you make a copy of an HwNlibAnnotation object. 2005/07/09.
  • Add experimental annotation handling code, intended primarily for XXX's amusement for now. 2005/07/09.
  • CATIA5: Analyze some more drawing stuff in the annotations. 2005/07/08.
  • HwBuild: Make nmtlib and smlib packages. 2005/07/07.
  • HwBuild: Upgrade to faciliate debug versus release versions, and the smarts to make the SMLib build work that way. 2005/07/07.
  • Add HwNlibAnnotationText::MakeCopy and use it as needed in the HwNlibAnnotation::Set function. 2005/07/06.
  • CATIA5: Use the new annotation text object. 2005/07/06.
  • Switch HwNlibAnnotation from using strings for its text fields to using a new HwNlibAnnotationText object (which has lots of extra goodies). 2005/07/06.
  • When converting an IwBrep to an HwNlibAbstractSolid, only convert the attributes on it once. 2005/07/05.
  • openNURBS: Adds code for directly processing surfaces of revolution, but keep it turned off for now, as it seems to have some problems. Smarter code for deciding when to use 3D edges and when to use the 2D curve lifted to the surface. 2005/07/05.
  • Change the edgeuse fixup for the same orientation case. (Fixes one major crash, doesn't seem to hurt anything else.) 2005/06/29.
  • Plugged memory leak. 2005/06/27.
  • CATIA5: Add name to HwNlibAnnotation objects. (Duh.) 2005/06/23.
  • CATIA5: Deal with type and associated FDTs for annotations. 2005/06/23.
  • Add type and associated FDTs fields to HwNlibAnnotation. 2005/06/23.
  • CATIA5: Print out the tolerance modifier information. 2005/06/23.
  • CATIA5: FDT associated FDTs dumped. 2005/06/23.
  • Add anchor point as point to annotation debug info. 2005/06/23.
  • CATIA5: Add anchor points to FDT annotation, and try to draw the resulting info as straight line segments. 2005/06/23.
  • Add anchor points to FDT annotation, and try to draw the resulting info as straight line segments. 2005/06/23.
  • Add anchor points to HwNlibAnnotation class. 2005/06/23.
  • Use the proper (if unnecessary) include shields for the functions we cannot export. 2005/06/22.
  • DATAKIT: Added offset surface function for DATAKIT. 2005/06/18.
  • CATIA5: Refactor name code, add it to coordinate system and infinite plane code. 2005/06/17.
  • DATAKIT: Translate infinite planes to coordinate systems with plane display sizes. 2005/06/17.
  • Report plane display size attribute. 2005/06/17.
  • Provide a way of getting at the data in an HwNlibAnnotation. 2005/06/17.
  • Actually return the copied annotation in HwNlibAnnotation::MakeCopy. 2005/06/17.
  • Annotation support. 2005/06/17.
  • Add annotation type to message logging. 2005/06/17.
  • Add PassAnnotation function. 2005/06/17.
  • Added HwNlibAnnotation to the import interface. 2005/06/17.
  • CATIA5: Start to code in use of HwNlibAnnotation type. 2005/06/16.
  • CATIA5: More FDT development stuff. 2005/06/16.
  • Added skeleton of HwNlibAnnotation type. 2005/06/16.
  • We had a delete statement that patched a memory leak in NMTLib. SOLIDS++ 2.1 fixes that memory leak, so we added a #if so our patch will no longer be used for SOLIDS++ 2.1 and above. 2005/06/16.
  • CATIA5: Further FDT experiments. 2005/06/15.
  • CATIA5: More code to dump out FDT data. 2005/06/14.
  • Try to make SplitAtSeams more robust when dealing with B-reps with more than one face. 2005/06/13.
  • CATIA5: More FDT stuff. 2005/06/13.
  • CATIA5: Start unravelling the data in the FDT structure, with its name and running through the list of 2D entities looking for text. 2005/06/13.
  • CATIA5: Add in feature stubs, and print the type of each FDT annotation. 2005/06/13.
  • CATIA5: Go through the FDT entities in the file, just to see what is there. 2005/06/13.
  • Handle attempts to find the bounding box of 3d trimmed curves whose base curve is also a 3d trimmed curve. 2005/06/12.
  • During a fillet, generate the UV curves by intersecting if either of the drop operations generated more than one UV curve (as if there is more than one, there's no way to know what it goes with otherwise). 2005/06/12.
  • Check for invalid surfaces before filleting -- prevents a crash. 2005/06/11.
  • Fillet cleanup done. (For now, anyway.) 2005/06/09.
  • If more than one pair of uv curves has been created during the fillet process, just create a fillet surface for each and let the code further down the line sort out which we are actually interested in. 2005/06/09.
  • Cleaned up a bunch of stuff. 2005/06/09.
  • Memory leaks fixed. 2005/06/09.
  • Clean up the fillet code a bit. 2005/06/09.
  • Add some relaxed tolerance fixes. 2005/06/08.
  • If a surface to be filleted has a B-rep owner already, use that as the IwFace rather than trying to create a new IwFace. 2005/06/08.
  • STEP: Simplify unit exporting code (reusing the code in HwTranslatorGeneric!). 2005/06/08.
  • Wrappers based on NMTLib version. 2005/05/31.
  • DATAKIT: Fixed to work with new DATAKIT libraries. (UG now fails with crash.) 2005/05/31.
  • SAT: Dodge silly infinite loop in wire on ASM Acis 7.0 file. 2005/05/30.
  • Tweak to improve 3d trimmed curve creation. 2005/05/28.
  • Parasolid: Try to find the simplest pcurve to use, rather than just the first handy one. 2005/05/28.
  • Parasolid: Tweaks to TSLibNlibObject, start refactoring Fin p-curve creation code. 2005/05/26.
  • Reduced number of sections to something sane. 2005/05/26.
  • Fixed linux compiling bug in new code. 2005/05/26.
  • Instead of reversing the surface normal if the fillet cannot be done, switch the fillet offset direction. Report a informational error in the process. 2005/05/26.
  • Lots of blend surface changes. Nothing quite works properly yet. 2005/05/26.
  • Intersection code now has flag saying whether to include the part of the chart which is only on one of the surfaces. 2005/05/26.
  • Don't send rails to skin surface code (in cliff-edge), they weren't helping at all. 2005/05/26.
  • Cliff edge halfway hooked up. 2005/05/26.
  • Intersection fixes. 2005/05/25.
  • Tweaked debug code a bit in intersection curve code. 2005/05/25.
  • Don't signal an error if the intersection point generated is too close to an existing point -- just quietly drop it. 2005/05/25.
  • During improved intersection curve code, don't add duplicate points to the chart, don't include one wrong point as correct, and error out if there are no good points. 2005/05/25.
  • Generalize the last patch to make it handle cases with more than one point off one of the surfaces. 2005/05/25.
  • When doing an intersection curve, if the first (or last) chart point isn't actually on both surfaces, intersect the edges of the surface that isn't big enough with the surface that is, and use the "best" intersection point instead of the incorrect chart point. 2005/05/25.
  • Add endpoints to cliff-edge debugging info. 2005/05/24.
  • Rework debugging, add error to inform when we have dropped chart points from an intersection curve. 2005/05/24.
  • Rework debugging, add error to inform when we have dropped chart points from an intersection curve. 2005/05/24.
  • Cleaned up offset surfaces a bit more. 2005/05/24.
  • When constructing an IwOffsetSurface, take care to make sure it is not a double-offset surface. 2005/05/24.
  • Set global units on blend surface debugging output in a fashion much more useful for Parasolid. 2005/05/24.
  • If there's a problem dropping the spine, go back to the old method. 2005/05/24.
  • Added (turned off) fillet debugging code. More importantly, if the spine of a fillet is available, use that as the start of the fillet rather than trying to recalculate it by intersecting offset surfaces. 2005/05/24.
  • Parasolid: Changes to allow examination of what is in a HwParasolidData object. Use that to make extract bit smarter. 2005/05/24.
  • Parasolid: Rearrange things to make it easier to add more rules, plus copy over the NULL object which ends the file. 2005/05/23.
  • Parasolid: Null out the various face linked lists, so that this is the only face we care about. 2005/05/23.
  • Parasolid: For the various Set functions on HwParasolidDataMap, check the incoming string with HwStdSER (so it can be called with raw char *s). 2005/05/23.
  • Parasolid: Allow the retrieval of the "schema string" (eg "SCH_100000_10000") and allow a blank Parasolid file to set a schema using one. 2005/05/23.
  • Parasolid: Add MakeCopy interface and functions to HwParasolidDatum and HwParasolidData. 2005/05/23.
  • Parasolid: Final changes needed to get an exact match for the first Parasolid file round tripped through it. (In the body, header still skipped.) 2005/05/22.
  • Parasolid: More writing updates. 2005/05/22.
  • Parasolid: More updates for low-level writing code. 2005/05/22.
  • Parasolid: First stab at making Parasolid export work. 2005/05/21.
  • Parasolid: For the write functions, pass home-grown classes by const reference. 2005/05/21.
  • Previously, when sorting out loops, we had two types, inner and outer. If the counts were wrong in certain ways, we used this info to flip the face's surface's orientation, switch outer and inner loops. This, however, did not recognize that inner loops which are not closed (ie slits) always register as inner loops no matter what the surface orientation is, and always should be inner loops. So now we treat them separately, making the code just a bit smarter. 2005/05/19.
  • Tolerance tweaks to hyperbolic surface code. 2005/05/17.
  • Tweak the tolerance tests on hyperbolic surface creation. 2005/05/17.
  • openNURBS: Fix a couple of stupid C++ errors to make the new assembly generating code actually get past stage one. 2005/05/17.
  • openNURBS: Trap error to prevent a crash when we hit a bad assembly. 2005/05/16.
  • Actually hook up the top-level stand alone object passing using the old PassObject interface we had sitting around. 2005/05/16.
  • openNURBS: Actually call HwBuildingOperations::FinishOperations. 2005/05/16.
  • Fix use of "interface" as a variable name, which as always conflicts with Microsoft headers. (Sigh.) 2005/05/16.
  • When we need a random ID, use HwNoIdentifer. (We used to use a fake IGES ID, but that doesn't work if we're not linking in IGES!) 2005/05/12.
  • openNURBS: More tweaks to new structure. Lots more work to be done. 2005/05/12.
  • HwBuild: Include HwSolidWorks.h in the list of SolidWorks files. 2005/05/12.
  • Tiny clean up. 2005/05/12.
  • Proper HW_NO_TSLIB_ASSEMBLIES wrapper for compiling with old NMTLib. 2005/05/12.
  • Add HwHeaderInfo argument to find tolerance. 2005/05/12.
  • Patch exporting translators to use the following approach to determine tolerance: 1) Look for tolerance in HwExportOptions argument. 2) Look for tolerance in HwHeaderInfo argument. 3) Scan all the objects passed to it which contain tolerances. 4) Fall back on the default for the translator (probably unimportant anyway, because this can only happen if there are no IwBreps present). 2005/05/12.
  • In the FindTolerance routine, once you've gone through the trouble of finding the tolerance from the IwBrep data passed in, actually use it. 2005/05/11.
  • Changes to make things compile on the old VC++ with cranky old SMLib. 2005/05/11.
  • Parasolid: Cone parameterization patch from maintenance branch. Not nearly enough to make cones actually work properly. 2005/05/11.
  • SolidWorks: When constructing an assembly, trap errors returned from the ReadConfiguration call and log them to the message file. 2005/05/11.
  • Parasolid: Improve the parameterization of cone surfaces. (Note -- there is some, albeit confusing, evidence the cone surface definition may be entirely wrong for Parasolid. However, we have not been able to come up with a correct one, and this is definitely needed in one form or another.) 2005/05/11.
  • SolidWorks: Update so the SolidWorks license key is provided as an option rather than being embedded in the code. 2005/05/09.
  • STEP: Fixed a logic error, where we created a valid closed shell and then later rejected it because it wasn't open, with the assumption that meant it was empty. Now we actaully check to see if it is empty! 2005/05/07.
  • Add newer TSLib error messages to Nlib-only section of code. 2005/05/06.
  • Move the tesselation parameters in HwPolygonExportingReceptacle to "protected" status, so they can be manipulated by derived classes. 2005/05/06.
  • Turn off the UV/3D mismatch warning error, as we found apparently valid instances where it would give warnings. 2005/05/06.
  • Added HwCoordinateSystem::SetSystemRMatrix function, which sets a system and returns scale and mirror information at the same time. 2005/05/06.
  • STEP: When adding a usage name to a component (presuambly an assembly instance), overwrite the component's existing name if it has one. 2005/05/05.
  • Automatically detect duplicate attribute types on the same linked list (in debug mode), and report it with a "warning" error message. 2005/05/05.
  • STEP: If the "name" string on an object is just a reiteration of the object's internal STEP ID, ignore it. 2005/05/04.
  • Add new HwTrimWithDomain function which duplicates the functionality of IwBSplineSurface::TrimWithDomain for customers who do not have Basic Nlib. 2005/05/04.
  • Factored code to adjust UV extent to knot vector to HwAdjustParametersIfNearKnot. Used that as a core piece of a new HwTrimWithDomain function, which does the same thing as IwBSplineSurface::TrimWithDomain, but works without Basic Nlib. 2005/05/04.
  • Parasolid: Change the simple concept of (schema) version number into modeller and schema version numbers. Switch several of the checks to be based on modeller version number rather than schema version number. 2005/04/29.
  • Parasolid: Testing of a new file suggests that two changes we thought switched in at schema 14000 actually switch in at schema 14001. 2005/04/29.
  • SolidWorks: Additional safety check in the form of an HW_SER_ASSERT. 2005/04/26.
  • SolidWorks: When opening a file, check the error code to see if it opened properly. 2005/04/26.
  • More HwStdVector template pre-declaration to HwStdVector.h (now that we no longer need the definition of HwNlibObject to do it). 2005/04/26.
  • HwNlibIgesCollection::MakeCopy and HwNlibVdafsCollection::MakeCopy were relying on their respective versions of IsOkay, which we took away in the last change. This fixes it so they just work. 2005/04/26.
  • Removed HwNlibObject::IsOkay and all of the derived class versions of it; they were completely useless, as far as I could tell. 2005/04/25.
  • Move HwStdVector pre-declaration to HwStdVector.h. 2005/04/25.
  • Version numbers updated for maintenance branch, STEP bug fixed, StepTo3dm demo period extended. 2005/04/24.
  • STEP: Cleaned up debugging code so it compiles in modern environment again. 2005/04/23.
  • STEP: Actually, you do have to scale coordinate system's origins. Put that back in. 2005/04/19.

Changes for IGES 1.5.5/VDAFS 1.3.9/STEP 1.2.5/SAT 1.1.0/OpenNurbs 1.1.0/Parasolid 0.5.2/DATAKIT-CATIA 0.5.3/DATAKIT-CATIA5 0.5.2/DATAKIT-UG 0.4.2  

  • Turn off TSLib assemblies (due to major memory leak). 2005/04/16.
  • IGES: Allow illegal negative values to be read into the note entity without complaint. (since we just ignore the value anyway!) 2005/04/12.
  • IGES: If we are unable to read a note, issue an error message and continue reading notes. 2005/04/12.
  • Attempt at better automatic tolerance adjustment. 2005/04/11.
  • DATAKIT: Support vertex loops. 2005/04/11.
  • UG: Properly include the transformation for the X_B files read in. 2005/04/08.
  • HwBuild: Add error define files. 2005/04/06.
  • Now that we've sorted out the error message definitions, use the new code to replace the old one. 2005/04/06.
  • Make one list of error defines. 2005/04/06.
  • Actually hook up the polygon export versions of Start and End for IwAssemblyInstance. 2005/04/06.
  • Rearrange last change to pass IwAssemblyInstance pointers rather than strings. Add simple PassAssemblyInstance definition to HwPolygonExportingReceptacle. 2005/04/06.
  • Add HwTSLibAssemblyEntityReceptacle::StartAssembly and HwTSLibAssemblyEntityReceptacle::EndAssembly interface functions (with do nothing default implementations), and call them when disassembling TSLib assemblies. 2005/04/06.
  • Fix minor memory leak from WAAAAAAY back. (2000, maybe?) 2005/03/30.
  • CATIA5: Try to factor in scaling. (Don't know if we have a useful test for this.) 2005/03/30.
  • DATAKIT: Move ConvertSystem from private to public. 2005/03/30.
  • CATIA5: Factor in the matrix when processing shells. 2005/03/30.
  • DATAKIT: Actually assign a value to the mirror return value in ConvertSystem. 2005/03/30.
  • Plug several blend-related memory leaks. 2005/03/29.
  • Incorporate a version of N_conci2 into HwNlibCurve.cpp, so we can use it consistently in all possible Nlib configurations. 2005/03/28.
  • Plug a memory leak in the blend surface curve on surface code. 2005/03/25.
  • More tweaks to the orientation of blend surface edge curves -- this one attempts to notice when the curve has been reversed, and reverse the resulting curve we generate. However, the patch is actually a bit weirder than that -- but tests show this version works better. 2005/03/23.
  • Parasolid: Allow '?' to indicate an unset (infinite?) interval. This is not in the Parasolid specs, but we've got a real file which demonstrates it. 2005/03/23.
  • Parasolid: Catch IwStatus to prevent a run-away file read error. 2005/03/23.
  • Enhanced fillet debugging tools. 2005/03/21.
  • Check to see if the direction of the IW blend surface goes the same direction the Parasolid (or other) blend surface did. 2005/03/20.
  • Add optional spine parameter to HwNlibBlendSurface. Actually give it a value in the Parasolid version. 2005/03/20.
  • Switch the orientation of the blend surface edge curve to match the natural direction of the outer bounding loop of the blend surface. 2005/03/19.
  • Only use the blend fudge factor if the blend surface is infinite -- if it is finite, we can just use the usual GetMinMaxBox on it. 2005/03/19.
  • Another ExpandBoxAbsolute. 2005/03/19.
  • If a trimmed curve on blend has identical end points, assume it is a closed blend surface and take an iso-curve of it's entire width. 2005/03/18.
  • Change ExpandBox into ExpandBoxRelative (takes a percentage) and ExpandBoxAbsolute (takes a distance), then figured out which usage of ExpandBox should go where. 2005/03/18.
  • CATIA: Add warning message. 2005/03/18.
  • Use ExpandBox where it is useful. 2005/03/18.
  • Check in more blend debugging code (all turned off). 2005/03/18.
  • When creating a blend surface, try to bind two component surfaces so they are not infinite. Do this by trying to get a reasonable bounding box for their intersection. At the moment, handle the case where one is finite, and the case where one is a tabulated cylinder and the other a plane. 2005/03/18.
  • Improved IsClosed functions for the wrapper surfaces. 2005/03/16.
  • CATIA: #if out debugging code (so it will compile on older versions). 2005/03/16.
  • CATIA: fixed the piping surface so it works correctly if the ends are have different radii. 2005/03/15.
  • CATIA: Improved piping using the HwNlibPipeSurface object. (Not everything it should bew yet, however.) 2005/03/15.
  • Send time at beginning of HwMessageLogger log file. 2005/03/15.
  • Move parameter clamping from last change so that it works better. 2005/03/14.
  • Clamp parameters returned by curve intersect to the parameter range of the appropriate curve (because SMLib cannot be trusted to return valid values). 2005/03/11.
  • Include HwNlibIO.o in hw_dump. 2005/03/10.
  • Replaced call to IwCurve::CalculateBoundingBox with inline version of same function which doesn't have slop factor added. 2005/03/10.
  • When trying to decide if the inner loop is really the outer, look at the size of their bounding boxes in both U & V rather than just comparing the areas of the bounding boxes. 2005/03/10.
  • Unitize calculated y_axis before sending it to IwAxis2Placement::SetCannonical so it is Just Right. 2005/03/09.
  • Proper HwLowLevelAsciiOutput option template declaration. 2005/03/08.
  • CATIA: Made debugging code smarter. 2005/03/08.
  • SAT: Write number of records in the file. 2005/03/08.
  • openNURBS: Add HwOnxModelWrapper so that you can make an ONX_Model outside of the HW OpenNurbs DLL. 2005/03/08.
  • Instead of making tesselations which produce non-triangles fail, just record an error and otherwise pretend everything is okay-dokey. 2005/03/07.
  • Instead of using IwBSplineCurve::CalculateBoundingBox to figure out the approximate size of a UV trimming loop, use IwCurve::CalculateBoundingBox, which is much more accurate, if slower. 2005/03/07.
  • Add IW_ERR_FORCED_TO_FLIP_SURFACE_ORIENTATION error message, and use it to signal problems which force us to flip the surface normal orientation on surfaces which are supposed to already have the correct orientation. 2005/03/05.
  • SAT: Add support for AutoDesk "truecolor" attribute. 2005/03/04.
  • Detect and error-out cliff edge blends. 2005/03/04.
  • Parasolid: Proper (?) support for cliff-edge blends. (At the low-level only, see next.) 2005/03/04.
  • Extend HwNlibBlendSurface to support cliff edge blends (by adding a flag). 2005/03/04.
  • Enable the new Nlib debugging interface from HwTSLibIO.cpp. (Which may seem a big backwards, but will be most useful for our general use, I think.) 2005/03/01.
  • SAT: Bring in line with new SAT export option handling. 2005/03/01.
  • SAT: Improved export option handling. 2005/03/01.
  • SAT: Add version of HwSatStandardASCIIOutput::Open which takes an HwExportOption, so it can output to a receptacle class rather than a file if needed, based on the HwExportOption::output_target option. 2005/03/01.
  • Add output_target option to HwExportOptions. 2005/03/01.
  • Abstract interface for ascii output (duplicates the existing ascii input setup). 2005/02/28.
  • New version of static function DropPoint which allows us to avoid annoying error messages during correct behavior of code. 2005/02/28.
  • Use circular approximation for fillets -- more robust than pure rational arcs. (Also debugging code added, turned off.) 2005/02/28.
  • Correct patch intended to make sure the error logging code only appeared on modern versions of SMLib -- because we accidentally used IW_VERSION instead of IW_VERSION_NUMBER, it was never appearing at all! 2005/02/28.
  • CATIA5: Started to implement visibility flag, only to discover it doesn't actually work in DATAKIT's library yet. 2005/02/28.
  • Don't call HW_FAILURE if there are seemingly irrational mismatches between distance in 2d and and distance in 3d; in theory, they can be caused if one of the distances involved is so close to zero that squaring it suffers underflow. In practice, odds are against this happening, but what the hey, the code should recognize the fact it might happen. 2005/02/27.
  • CATIA: Use the proper info for pipe surfaces. 2005/02/26.
  • DATAKIT: Only add a name attribute if there is a non-zero length name present in the infos. 2005/02/25.
  • Make recent changes work with old SMLib. 2005/02/24.
  • SAT: Create code ASM to check Autodesk Shape Manager flag, and use it to handle the branching of the SAT format. 2005/02/24.
  • SAT: Support for Autodesk Shape Manager flag (SAT version greater than 20000). 2005/02/24.
  • When working on correcting the order of loops (so the orientation is assumed to be correct), if there is exactly one inner and one outer loop, check to see which of the two loops is bigger in UV space, and flip the normals, if necessary, to make that the outer loop. 2005/02/16.
  • DATAKIT: Move the direct rational b-spline conversion code from private to public so the Catia 4 translator can use it for pipe surfaces. 2005/02/16.
  • CATIA: Add support for pipe surfaces. 2005/02/16.
  • Fixed stupid typo which meant we never considered the distance to the second surface when finding a starting point. 2005/02/15.
  • If the initial points given aren't within tolerance of the surfaces, bump tolerance so they are. (Because if it's something like a blend surface that we had to construct, our version may be ever-so-slightly off from the Parasolid version.) 2005/02/15.
  • Make the code to find an intersection starting point smarter, so that it doesn't get confused by points on opposite sides of a seam. 2005/02/14.
  • CATIA5: Add names for curves and points. 2005/02/14.
  • Implement HwNlibBlendSurface::IsClosed to override the default implmentation (which will never work because we cannot create a NURBS surface for a blend sur.) 2005/02/14.
  • Replace the old intersection curve code with new code that uses IntersectSurfacesToGetCurve. 2005/02/14.
  • Rename the surface-surface to curve intersection function and make it actually generate a curve! 2005/02/14.
  • Add GetDebuggingCadExportInterface to let other files access the export function (if available). 2005/02/13.
  • When finding a bounding box to bind infinite surfaces in an intersection curve, include a fudge factor equal to the max distance between chart points. 2005/02/13.
  • Prototypes IntersectCurve function. 2005/02/13.
  • More sophisticated attempt at IntersectionCurves. Still doesn't work completely. 2005/02/13.
  • Eliminated spurious comma in HwNlibCurveMinorType enum. Added declaration of HwCoordinateSystem class so you can include HwTSLibGeneric.h without first including HwNlibObject.h. 2005/02/09.
  • DATAKIT: Factor AddIdToObject to a template which tells what sort of ID to add, commenting out the two old translator-specific versions of this function. 2005/02/08.
  • Dump layer name info from HwHeaderInfo. 2005/02/08.
  • Add facilities to copy HwLayerInfo objects, and do so when copying a HwHeaderInfo. Plus allow iteration through all the layers in a header. 2005/02/08.
  • UG: Support latest DATAKIT libs. 2005/02/08.
  • CATIA: Update to work with latest DATAKIT release. 2005/02/08.
  • Derive HwLayerInfo from HwNewDelete so it can properly be allocated and deleted across DLL boundaries. 2005/02/08.
  • CATIA5: Update for latest release of DATAKIT. Support body names. 2005/02/08.
  • openNURBS: Add layer name info to the header. 2005/02/08.
  • Add HwLayerInfo class, and interface for it to the HwHeaderInfo. This is preliminary. 2005/02/08.
  • DATAKIT: First step to fix IwContext bug. 2005/02/07.
  • DATAKIT: Don't allow really big points. 2005/02/07.
  • Much smarter version of GetStaringPoint. 2005/02/07.
  • Rough intersection curves now created. 2005/02/07.
  • First working test of ability to find an intersection point between two intersections points. 2005/02/07.
  • Modified to work with dumb old SOLIDS++. 2005/02/07.
  • First stab at surface-surface intersection tools. 2005/02/07.
  • DATAKIT: Normalize the direction vector for surfaces of linear extrusion. (Not sure exactly why math-wise, but this makes them work 1000% better.) 2005/02/04.
  • CATIA5: Set tolerance to official Catia 5 value, and add comment noting that MM is correct for the units and not just a guess. 2005/02/03.
  • In AdjustBrepTolerance, try to adjust the tolerance of the edges if needed/possible. 2005/02/02.
  • SolidWorks: Name components included as assemblies for the file name of the component. 2005/02/02.
  • Refactor BindInfiniteFace to clean up the logic, and make it a bit smarter about handling curves on blend surfaces. 2005/02/01.
  • If something goes wrong aligning a sphere or a torus, abort the align rather than the entire creation of the face involved. 2005/02/01.
  • Provide a (tight) tolerance for surface-to-surface intersections. This seems to make them work much better. 2005/02/01.
  • Add ability to evaluate offset surfaces (if the base surface can evaluate derivatives). 2005/02/01.
  • If there are no intersections found between two surfaces, error out right away instead of wasting time trying to sort non-existance intersections. 2005/01/31.
  • For the TSLib import functions, invoke a TSLib function so we can odd TSLib error message reporting to the logger file. 2005/01/31.
  • Parasolid: Detect and reject cliff edge blends. 2005/01/31.
  • Parasolid: Minor tweaks to debugging code. 2005/01/31.
  • Use the new callback mechanism to establish the general I/O function as the function to use for debugging export. 2005/01/31.
  • Add callback mechanism to allow CAD file export from debugging sections of code in the core module. 2005/01/31.
  • Slightly better error message in blend surface construction. 2005/01/28.
  • Parasolid: Slight fix in debugging tools. 2005/01/28.
  • When processing an intersection curve, stick its endpoints into p_current_vertices so that if one of the surfaces being intersected is a blend/fillet with multiple pieces, we can choose the right piece to use for the intersection. 2005/01/28.
  • Add tool for analyzing the structure of a Parasolid file. 2005/01/27.
  • Parasolid: Add tool for analyzing the structure of a Parasolid file. 2005/01/27.
  • Parasolid: Blend bounds plus Parasolid file node iterator type and Begin/End functions. 2005/01/27.
  • Parasolid: First stab at blend_bound support. Plus new (commented out) face name debugging tool. 2005/01/27.
  • Parasolid: Try to clean up the Parasolid shell processing a tad. Still very stupid, alas. 2005/01/26.
  • Parasolid: Reparameterize cylinders to use radians rather than degrees. 2005/01/26.
  • Include IwExtent2d.h before IwBrepData.h for old versions of SMLib. 2005/01/26.
  • SolidWorks: Factor ISwDMApplication acquisition into a new HwNlibSolidWorks::Initialize function. (Eventually HwNlibSolidWorks should clean up whatever needs to be cleaned up there as well.) 2005/01/26.
  • Parasolid: Add BCurve handler for GetPointOnCurve. 2005/01/26.
  • DATAKIT: Remove use of "vector" as a variable name so the VC++6 wouldn't complain. (Possibly it was confusing it with std::vector?) 2005/01/26.
  • Removed "unsigned int i" declaration from for loop (because it's not compatiable with older compilers). 2005/01/26.
  • Change HwGetExtension to HwGetExtensionLC (which returns the lower-case version of the extension). 2005/01/26.
  • SolidWorks: Actually store assemblies and reuse them in the same component in the same configuration is requested again. 2005/01/26.
  • SolidWorks: Refactor assembly creation code. 2005/01/25.
  • SolidWorks: Add the proper transforms to assemblies. 2005/01/25.
  • SolidWorks: Massive rewrite to bring in assembly support. 2005/01/25.
  • HwNlibAssembly::AddCopyOfObject function added. 2005/01/25.
  • SolidWorks: Start to implement assemblies. 2005/01/25.
  • Allow .sldasm extension for SolidWorks. 2005/01/25.
  • SolidWorks: Factor check for results of attempting to get a body. 2005/01/25.
  • SolidWorks: A bit more refactoring. 2005/01/25.
  • SolidWorks: Prep for assembly support -- create HwNlibImportToAssembly class and factor HwSolidWorksSendToInterface into a class framework. 2005/01/25.
  • STEP: Make GetName handle shape representations. When processing a mapped item, if there is no name on the mapped item object, add the name of the item being mapped, unless that item is an assembly containing exactly one object, whose name already is the name we would otherwise add. 2005/01/25.
  • SolidWorks: Fix potential null pointer reference. 2005/01/25.
  • SolidWorks: Use an adaptor to add owning IDs to the Parasolid IDs created, so that each Parasolid file processed during a SolidWorks read will get unique IDs. 2005/01/25.
  • Parasolid: Add tolerance support for WORLD files. 2005/01/25.
  • SolidWorks: Use real filenames instead of tmpnams (for debugging purposes) and check to see if a body was written out before trying to read it in. 2005/01/25.
  • SolidWorks: Use tmpnam to make temporary files for both other modes of operation as well. 2005/01/24.
  • Parasolid: Tweak for compatibility with stupid Windows headers. 2005/01/24.
  • SolidWorks: Transfer old-style part to Parasolid filereader. 2005/01/24.
  • SolidWorks: Fixes to make SolidWorks build and plug into hw_dump/hw_convert. 2005/01/24.
  • SolidWorks: Version number added. 2005/01/24.
  • SolidWorks: First version. 2005/01/24.
  • SolidWorks: Get it to compile and link. 2005/01/24.
  • SolidWorks: Check in initial work. 2005/01/24.
  • Parasolid: Fix HwParasolidLinkedListIterator::Next to avoid spurious error messages when the linked list is empty. 2005/01/24.
  • Parasolid: Try to handle assemblies in WORLD as well. (No sample files to test so far.) 2005/01/24.
  • Parasolid: First stab at processing WORLD object. 2005/01/24.
  • Parasolid: Count all the bodies in a WORLD object. 2005/01/24.
  • Add Parasolid partition file extensions. 2005/01/24.
  • Parasolid: Check to see if a header is present before trying to read it. This allows us to read headerless Parasolid files. 2005/01/24.
  • SAT: Each sweepsur contains a spline_info member with B-spline info for the surface in it. A bug made us only pay attention to this in versions 5.0 and up. Fix it so it pays attention in previous versions as well. 2005/01/21.
  • Parasolid: Try to determine whether we're on a little-endian or big-endian system when reading binary files. 2005/01/19.
  • Took out now-unneeded includes. 2005/01/19.
  • Switch hw_convert -nlib -class to use HwNlibIO code. 2005/01/19.
  • New aid for generic low-level exporting. 2005/01/19.
  • SAT: Added new HwNlibSatCreator constructor which takes a HwExportOptions object rather than a version number, then extracts the version number from the object. 2005/01/19.

Changes for IGES 1.5.4/VDAFS 1.3.8/STEP 1.2.4/SAT 1.0.9/OpenNurbs 1.0.9/Parasolid 0.5.1/DATAKIT-CATIA 0.5.2/DATAKIT-CATIA5 0.5.1/DATAKIT-UG 0.4.1  

  • openNURBS: Takes all the openNURBS stuff from HwOpenNurbs files (leaving the version number and ID class only). 2005/01/11.
  • Before determining filetype, run HwStdSER on the filename (in case someone passed in a standard char *). 2005/01/10.
  • DATAKIT: Switch the normal orientation of surfaces of revolution. (Based on experimental evidence.) 2005/01/07.
  • CATIA5: Support coordinate system creation. 2005/01/03.
  • Lots of changes (mostly #ifdef wrappers) to accommodate very old TSLibs. 2004/12/28.
  • Add function to copy IwCurves, to ease dealing with antique TSLib code. 2004/12/28.
  • UG: Updated to handle flow-control and error-handling better on UG B-reps/shells. 2004/12/27.
  • Fine-tuned the IsLine #if wrapper a bit. 2004/12/23.
  • CATIA5: If something goes wrong with the fancy new topology code, fall back to the old trimmed surface code. 2004/12/23.
  • DATAKIT: Try to detect that the topology of a shell is failing -- the only cause we know for this so far are pre-v7 CATIA 5 files. 2004/12/23.
  • Old Catia5 file error added to error list. 2004/12/23.
  • DATAKIT: Better error messages, lots of commented out debugging code. 2004/12/22.
  • Don't use the new HW sweep surface code unless Nlib sweep surface is not available. 2004/12/21.
  • Actually use the dimension argument to the create curve function, rather than just always creating a 3D curve. 2004/12/20.
  • MakeSweepSurface comes alive. 2004/12/20.
  • Added HwShieldedPointerVector template to be the vector's answer to auto_ptr. 2004/12/19.
  • Remove unnecessary BindInfiniteFace call, plus tweaks for compatiability with old TSLib. 2004/12/18.
  • IGES, Parasolid, SAT, STEP: Since AddNewFace now handles infinite faces properly, remove the old BindInfiniteFace calls. 2004/12/18.
  • CATIA5: Try to skip infinite planes. 2004/12/17.
  • DATAKIT: Added support for planes, fixed a stupid bug in the new code. 2004/12/17.
  • AddFace automatically binds infinite surfaces if needed. 2004/12/17.
  • CATIA5: Rewritten to support topology instead of just trimmed surface geometry. 2004/12/17.
  • DATAKIT: There's more than one way to do it -- support for Dtk_shell class of solid info. 2004/12/17.
  • openNURBS: Actually use the new SortShellsIntoSolid refactoring. 2004/12/17.
  • Implemented SortShellsIntoSolid using code from the openNURBS translator. Still calls for lots of improvement, but at least now it's generic between translators. 2004/12/17.
  • If IW_PTR_ARRAY isn't already defined (probably because we're compiling against headers from a very old TSLib) define it here with the standard definition. 2004/12/16.
  • DATAKIT: Added support file from DATAKIT. 2004/12/16.
  • CATIA5: Updated to work with new DATAKIT libraries. 2004/12/15.
  • IGES: Check to see if the end parameters are reversed in a 126 NURBS curve, and reverse the parameters and then the curve if they are. 2004/12/13.
  • Add Nlib errors to HarmonyWare IW_ERR list, provide text explanations for them, and update Gw_SER to automatically use them. 2004/12/12.
  • STEP: Enable parabola curve type. 2004/12/09.
  • Add HwNlibParabola class. 2004/12/09.
  • STEP: Create a new GetConic function that gets a working coordinate system from the conic base object (a subclass of circle, parabola, etc), and convert the various GetCircle, GetHyperbola, etc functions to use GetConic. Also add a GetParabola function. 2004/12/09.
  • DATAKIT: Change to use updated MakeSTEPCircle interface. 2004/12/09.
  • Change MakeSTEPCircle to take a coordinate system object rather than a point and two vectors. 2004/12/09.
  • Parasolid: Get tolerance from the top item in the model. 2004/12/09.
  • Add new function to convert from HwCoordinateSystem to IwAxis2Placement. Large swept surface debugging section added, but turned off. 2004/12/09.
  • Parasolid: Mark all the older Parasolid files as requiring the mystery value always equal to zero to be an int rather than a short int. 2004/12/07.
  • Parasolid: Count B-reps and faces in the file before import starts. 2004/12/07.
  • Parasolid: Replace other instances of linked list loop code with new iterator. 2004/12/07.
  • Parasolid: Implement HwParasolidLinkedListIterator class, to aid going through all the linked lists in Parasolid files. Use it in the assembly class. 2004/12/07.
  • Add GetBaseSurface to go with GetBaseType, and refactor GetBaseType to use it. 2004/12/06.
  • Make a new header to handle common TSLib declarations, so we don't get looped trying to include them. 2004/12/06.
  • Parasolid: Allow non-attribute types in an attribute chain. (Apparently features and members of features can be in the chains too. Don't know what to do with them, but we certainly can skip them and continue going through the chain.) 2004/12/06.
  • Parasolid: Adjust binary format based on third binary sample file. 2004/12/06.
  • Plug memory leak in new exploded B-rep code. 2004/12/05.
  • Removed a (already turned-off) block of code intended to delete control characters from the start of lines; the new code for deleting them from the end of lines should handle things nicely. 2004/12/05.
  • Retool the system for handling weird end-of-line control sequences when reading 80-column files (ie IGES and VDA-FS). The new system expands upon the old code we had to handle Macs -- now if it detects multiple end-of-line control characters in a row when scanning the beginning of the file, it automatically reads all the \r's and \n's at the end of lines until it encounters a non-control character. 2004/12/04.
  • DATAKIT: Implemented offset surfaces. 2004/12/03.
  • DATAKIT: Add ruled surfaces, clean up main surface function a tad. 2004/12/03.
  • IGES: Fix the 194 cone AutoCAD degrees versus radians patch so it doesn't automatically assume any angle greater than pi/2 is obviously in radians. (Whoops.) 2004/12/03.
  • Add ResetCollection virtual functions to the HwNlibAbstractSolid family of classes, and use it to properly handle the Transform functions. (Which had been hosed on HwNlibNMTBrep since day one.) 2004/12/02.
  • IGES: Switch silly reference to p_components to GetComponents (). 2004/12/02.
  • Sanity check in intersection curve code to prevent a crash. 2004/12/02.
  • Parasolid: Check to make sure ProcessAssemblyInstance has returned a non-null pointer before adding it to an assembly. 2004/12/01.
  • IGES: Make all shells in a B-rep dependent, whether they are marked that or not. 2004/12/01.
  • Recognize .CATProduct as a CATIA5 file. 2004/11/30.
  • Put the IwVector3d vector template predeclaration in both files, but triggered to only fire once. 2004/11/30.
  • Const IwContexts for style points, plus allow interpolating 2d curves. 2004/11/30.
  • Add "xmt_bin" to allowable Parasolid extensions. 2004/11/29.
  • Parasolid: Send header with fake tolerance and METERS for units (which may or may not be correct). 2004/11/29.
  • Parasolid: Properly add IDs on B-reps, assembly instances, and assemblies. 2004/11/29.
  • Parasolid: Read n_elts in an embedded schema field as a short int. Then never read the transmit field, because n_elts returns different values depending on whether we do X_T or X_B, and it appears the xmt_code should never be needed. (I hope.) 2004/11/29.
  • Parasolid: Properly compare types on Parasolid schema fields. This means if a node field changes type (but not name) between versions, our inline schema system will properly make a new version and change the type. 2004/11/29.
  • Parasolid: Turn the "mystery 0" field back on for binary files, but make it a short int rather than a plain int. Then make the node type field a short int as well. 2004/11/29.
  • Doubles have eight bytes, not four. Duh. 2004/11/29.
  • Parasolid: Read pointer index instead of unsigned int when you get the index of a node. Read schema update number fields as an unsigned char rather than an int. 2004/11/29.
  • Parasolid: Enabled neutral binary input, along with first two fixes that attempt to make it work. 2004/11/29.
  • Implemented HwLowLevelBinaryConversionInput class for converting an ASCII input to a binary input. Also recognize X_B files as Parasolid files. 2004/11/29.
  • Parasolid: Slight refinement to the binary file reading classes -- use unsigned chars instead of chars as the primary input format. 2004/11/29.
  • Start work on non-Nlib sweep surface implementation. 2004/11/29.
  • Parasolid: Lay the groundwork for X_B format, but don't actually turn it on yet. 2004/11/29.
  • First stab at binary import classes, plus switch unformatted ASCII import to use binary file reads (as every translator just reads whitespace rather than specifically looking for endline). 2004/11/29.
  • Clean up the Parasolid (well, UG) schema stuff a bit. 2004/11/25.
  • Reconfigure a bit to be easier to use for people who don't have every translator. 2004/11/25.
  • If the B-rep you are exploding was already exploded, don't create the exploded attribute a second time on it. 2004/11/25.
  • Improved MakeExplodedBrep to handle the case where some faces are closed, or where there are no faces to explode. 2004/11/25.
  • Fixed for declaration goof. 2004/11/24.
  • Cleaned up using lint. 2004/11/24.
  • Implement MakeExplodedBrep (which properly cleans up the edges and vertices on an exploded B-rep so they are topologically distinct to each face) and then use it in two translators. 2004/11/23.
  • Added function to explode solid components, so every face has its own unique edges and vertices. 2004/11/22.
  • Add and test full interpolate curve function. 2004/11/22.
  • Code to create an polynomial IwBSplineCurve from our control points, knots, and degree. Code mostly drawn from test code, which was then refactored to use the new function. 2004/11/22.
  • Code to figure out good knot values to use based on the parameters of the sample points. 2004/11/22.
  • Parasolid: Don't try to create loops on a face if there are none. Don't try to create a name if it is null. 2004/11/20.
  • Parasolid: Proper assemblies (I think) plus assembly attributes. 2004/11/20.
  • Parasolid: Try to process assemblies correctly. (Probably not there yet.) Don't all attribute processing failures to affect the handling of the entity they are attached to. 2004/11/20.
  • Include new HwTSLibMath.h to get vectors of IwPoint3d. 2004/11/18.
  • Files to hold functions for some heavy-duty NURBS math. (HwTSLibMath.cpp and HwTSLibMath.h.) 2004/11/18.
  • IGES: Provide support for the (obsolete) convention of using a type 402 form 9 in conjunction with two or more 108 plane entities to indicate a bounded planar surface with inner loops. 2004/11/17.
  • Parasolid: Swap rows and columns in transform processing. (Example files showed our initial guess was wrong.) 2004/11/16.
  • SAT: Turn off sti_colour_lwattr attribute type, because we have no real idea how the attribute translates to actual RGB color info. 2004/11/15.
  • SAT: Overhaul color processing to make sure only one color attribute is put on each object, and revamp colour-tsl-attrib so that it generates the correct colors (determined by experimentation). 2004/11/15.
  • Parasolid: As we now handle Schemas internally, do not require a schema path to be present (but pass one if it is). 2004/11/15.
  • Parasolid: Support inline schema construction, and switch to using it instead of reading from a Schema file. 2004/11/12.
  • Autogenerate the Parasolid schema inline creation code as part of the standard build process. 2004/11/12.
  • Parasolid: Refactor HwParasolidSchema::ReadType and HwParasolidObjectIO::AddField to create a version which does all the work of adding a field once the I/O has been handled. This should help support the in-line Schema system. 2004/11/12.
  • Fix the last patch. 2004/11/05.
  • Make the curve check to see if the arc is too flat much smarter. 2004/11/05.
  • When you call BoundInfinite on a plane, don't allow it make an infinite plane, even if the bounds given would result in a zero width (and thus by our short-hand, infinite) plane. 2004/10/29.
  • Parasolid: Try to handle toruses with negative radii and blended_edges. 2004/10/28.
  • New version of HwNlibSurface::SetDegenerateTorus which takes an HwCoordinateSystem. 2004/10/28.
  • Parasolid: Flip the logic on reading the transmit code flag in the embedded schema parsing scheme. No idea why the code worked previously, then mysteriously stopped working until I fixed this. 2004/10/27.
  • Add HwStringMap<>::size function. 2004/10/27.
  • Parasolid: Create the HwParasolidDataMapIndex class and make all HwParasolidDataMap point to an instance of it. This allows all HwParasolidDataMap objects of a given type to share the same set of strings in memory, which should make the Parasolid reader drastically more memory efficient (and with any luck faster, too). 2004/10/27.
  • Parasolid: Patched a memory leak in the body creation code. 2004/10/23.
  • Parasolid: Add destructor for HwParasolidDataMap. 2004/10/22.
  • DATAKIT: More Lint changes, plus try to handle scaling in transformations. 2004/10/21.
  • Factor out the code for creating a transform that scales, and set it in a function of its own in the HwNlibObject.h. 2004/10/21.
  • STEP: Factor out the code for creating a transform that scales, and set it in a function of its own in the HwNlibObject.h. 2004/10/21.
  • DATAKIT: Rejoin the CATIA and "DATAKIT" versions of the AddAttribute and AddObjectToList commands, sticking them in HwNlibDatakitTools and renaming them with an "Hw" prefix to help avoid name conflicts in the future. 2004/10/21.
  • DATAKIT: Lots of pointer parameters made const to make Lint happy. 2004/10/18.
  • Parasolid: Try to add created attributes to all objects created as part of a body. 2004/10/18.
  • Parasolid: Add support for name attribute. 2004/10/18.
  • CATIA: Support coordinate system object (CATIA type 8). 2004/10/18.
  • DATAKIT: Added coordinate system support, refactoring axis processing a tad. 2004/10/18.
  • CATIA: Fix a bug in the handling of transformations, and turn on the HwCatia_Cartesian_transformation_operator_3d class. 2004/10/18.
  • IGES: Initialize redundant entity_type_number field in constructor. 2004/10/18.
  • STEP: Eliminated unnecessary header file. 2004/10/18.
  • CATIA: Fix broken destructor/free code, allow # comments, and include cartesian_transformation_operator_3d class, commented out because it doesn't work yet. 2004/10/18.
  • Straighten out "new"s and don't require a case for each and every member of an enum. 2004/10/16.
  • CATIA: Change the non-template version of AddObjectToList to AddObjectToListInfos, so that it won't conflict with the template version in stupid compilers. 2004/10/16.
  • Ignore the spurious warnings caused because the type name of the POINT, CURVE, and SURFACE types are actually point, curve, and surface. Also don't complain about C-style casts. 2004/10/15.
  • Add a version of hw_assert2 which takes a bool for its first argument. 2004/10/15.
  • CATIA: Remove unnecessary #includes. Prettify generated destructors so that PC-Lint is happy with them. 2004/10/15.
  • CATIA: Modify the template parameter on AddObjectToList so that the function's instantiations take a const pointer. 2004/10/15.

Changes for IGES 1.5.3/VDAFS 1.3.7/STEP 1.2.3/SAT 1.0.8/OpenNurbs 1.0.8/Parasolid 0.4.1/DATAKIT-CATIA 0.5.1/DATAKIT-CATIA5 0.4.0/DATAKIT-UG 0.4.0  

  • If there are problems converting an IwBrep to a HwNlibBrep or a HwNlibNMTBrep, fall back on creating an open shell B-rep with each face of the IwBrep in an unconnected shell of its own. 2004/10/14.
  • UG: Get the proper units for the file, and report them (along with a fake tolerance) using PassHeader. 2004/10/14.
  • CATIA: Try to use the correct Infos for solid objects. Set the new HwNlibTrimmedSurface invert flag if the solid face orientation is not correct. 2004/10/14.
  • Reimplement the previously broken HwNlibTrimmedSurface::Invert function to just toggle a "revbit" on the HwNlibTrimmedSurface object indicting it the desired orientation of the trimmed surface is opposite its natural one. 2004/10/14.
  • UG: Removed completely obsolete include of HwUGAuto.h. 2004/10/13.
  • Include iwos_extern.h in HwTSLibGeneric.h so that the IW includes will work properly if this file is included on its own. 2004/10/13.
  • CATIA5: Establish units for Catia5 (always millimeters, actually). 2004/10/12.
  • CATIA: Refactor processing of solids. Properly implement solid face color. Added units and passed a header containing that info. 2004/10/12.
  • Parasolid, UG: Use the path_to_parasolid_schema import option to provide paths to the Schema file directory, and The translators will not run unless a path is provided. 2004/10/11.
  • Add path_to_parasolid_schemas option to ImportOptions, so the UG and Parasolid translators can find the Parasolid schemas needed for their operation. 2004/10/11.
  • Parasolid: Instead of constructing a curve on surface by hand, use new HwNlibCurveOnSurface::CreateByAssuming to do it properly. 2004/10/11.
  • Add a useful HwNlibTabulatedCylinder::Evaluate function. 2004/10/11.
  • Move the SAT processor's CreateCurveOnSurface to HwNlibCurveOnSurface as a static function, renaming it HwNlibCurveOnSurface::CreateByAssuming. 2004/10/11.
  • Parasolid: Give the face index number for failed faces. 2004/10/11.
  • Parasolid: Add ID to faces. 2004/10/09.
  • Parasolid: Create simple Parasolid ID type. 2004/10/09.
  • Added PassObject function which tries to get the ID from the ID attribute on the object, rather than requiring it to be passed in. 2004/10/09.
  • Intersection curve memory handling cleaned up. 2004/10/09.
  • Wrap IsLine with #ifdef that makes sure it is available. Improves to intersection curves. 2004/10/09.
  • Parasolid: Add support for reporting names of unrecognized attribute types, and scan (but don't do anything with) the body attributes looking for them. 2004/10/08.
  • Parasolid: Allow curves to be trimmed by either position or parameter. Properly implement spun surfaces. 2004/10/08.
  • Parasolid: Switch to defines (HW_PS_NULL_FLOAT & HW_PS_NULL_INT) to handle the Parasolid null values. 2004/10/08.
  • Parasolid: Add rough attribute framework, and support for color attributes on faces. 2004/10/07.
  • Parasolid: Process transforms. 2004/10/07.
  • Handle gracefully the case where an open IwShell has two or more sections which are not connected. 2004/10/07.
  • SAT: Add generic attrib-name and string attributes. 2004/10/07.
  • Add face sorter mechanism to HwImportOptions, and make the simple receptacle constructor that takes an options parameter honor it. Also add a sorter which sorts on color and blanked status. 2004/10/07.
  • Added HwTSLibSimpleReceptacleFaceSorter and its first example subclass, HwTSLibSimpleReceptacleBlankedSorter. Switch the HwTSLibSimpleReceptacle to use this class to determine how to collect faces into "one" B-rep. (Actually this one produces two, one normal and one blanked, and future versions may produce even more.) 2004/10/07.
  • A lot more work on intersection curves, but they still don't work right in complicated cases. 2004/10/05.
  • Replace drop tolerance constants with a drop_tolerance variable, then make the tolerance 100x larger. 2004/10/01.
  • Modify the code to estimate the amount of memory used by N_apposs to account for the new code which tries to shrink the approximation set if it looks like it will be ridiculously big. 2004/09/30.
  • Smarter (I hope) code for HwNlibOffsetSurface::IsClosed. 2004/09/30.
  • Bring a stupid first stab at real intersection curves on-line. 2004/09/30.
  • IGES, openNURBS, SAT, STEP, VDAFS: Support the new analytic curve and surface export options. (In the processing, we don't necessarily write out analytic curves/surfaces for all of these yet.) 2004/09/30.
  • Lots of small changes to support exporting analytic curves (at least, lines and arcs). Rearranged and renamed the code for converting from IwAxis2Placement to HwCoordinateSystem. 2004/09/30.
  • SAT: Check to make sure p_tracker is non-null before calling functions on it. 2004/09/29.
  • IGES: Added virtual modifiers to SetModelSpaceLoopsOnly and SetParameterSpaceLoopsOnly (as they are now part of the base HwNlibExporterInterface virtual interface). 2004/09/29.
  • Add two new export options, output_analytic_curves and output_analytic_surfaces. 2004/09/29.
  • Added HwNlibExporterInterface::SetStandardOptions function to the HwNlibExporterInterface interface, to simplify passing export options to the various export classes. Then added a call to it in all of the TSLib export functions. (This won't add new functions -- yet -- but will make it easier to add more the future.) 2004/09/29.
  • STEP: Implement functionality to turn off edge and vertex lookup in a HwNlibSolidComponentsAid object, and use it to untangle shells in the STEP MakeExplodedFaces function. 2004/09/29.
  • Untested first incomplete stab at proper curve intersection code. 2004/09/27.
  • Parasolid: First stab at handling assemblies, plus rational B-spline surfaces. 2004/09/24.
  • Parasolid: Add support for SP Curves -- in the process, properly implement 2D and 3D rational and non-rational B Curves. 2004/09/24.
  • Parasolid: If an edge has a null curve pointer, use its fin's curve object, properly oriented. 2004/09/24.
  • Parasolid: Handle edgeuses which have no edge, just a vertex (ie probably the sole vertex in a vertex loop). 2004/09/24.
  • Parasolid: Added support for Sphere surface. 2004/09/24.
  • Added xmt_txt as another form of the Parasolid x_t file extension. 2004/09/24.
  • Parasolid: Support for trimmed curve type. 2004/09/24.
  • Parasolid: Cleaned up the ProcessCurve functions quite a bit, started to rough in spun and swept surfaces, improved error handling. 2004/09/23.
  • SAT: Added a countdown for faces processed, and cleaned up the code for passing objects to the interface to just use PassObject while I was at it. 2004/09/23.
  • Added HwVerboseTracker as a debugging tool. 2004/09/23.
  • Parasolid: Add first attempt at b_curve, based on the b_surface type. 2004/09/22.
  • Parasolid: Provide local Linux pathname, turned off. 2004/09/22.
  • Parasolid: Refactor the "don't know how to handle" message and apply it to both curve processing functions as well as the surface function. 2004/09/22.
  • Parasolid: Only print the "some faces left out" warning message the first time through each shell. 2004/09/22.
  • Parasolid: Turn off debugging output, add cone surface. 2004/09/22.
  • Parasolid: Better error messages. Turn off debugging code. 2004/09/22.
  • Parasolid: Buffer face reading so that we have a fallback path in case face creation fails for some faces. 2004/09/21.
  • Parasolid: Read each list of faces using a loop rather than recursion. 2004/09/21.
  • Parasolid: A bunch of changes needed to parse files with embedded schemas. Note that we don't do anything useful with the new embedded info yet, just skip it. 2004/09/21.
  • Parasolid: Rearranged the Schema code a good bit. It now will try to read the embedded schema info for files version 14 and later, though most of the reading code isn't there yet. Also, the version variable and version functions are all in the HwParasolidSchema class now. 2004/09/20.
  • Parasolid: Refactor schema code a bit to make it easier to determine version numbers. 2004/09/20.
  • Parasolid: Fixed the node type number for BODY. 2004/09/18.
  • Parasolid: Add GetSchema function. 2004/09/18.
  • Parasolid: Analyze the type of the top node, instead of just assuming it is a body. We still can only handle bodies, but at least we print a nice error message now if it is not one. 2004/09/18.
  • Create the intersection curve NURBS form on the stack passed in rather than the local stack. 2004/09/18.
  • Change trimmed surface rules so that if both types of loop will work and the file says it prefers the model space loops, we will use the model space loops. 2004/09/17.
  • Add support for surface of linear extrusion. 2004/09/16.
  • Make GetBaseType support HwNlibReparameterizedSurface. 2004/09/16.
  • Added GetBaseSurface members to HwNlibReparameterizedSurface. 2004/09/16.
  • CATIA5: Added parameter space loop dumping, now turned off. 2004/09/16.
  • DATAKIT: Convert circle parameters to degrees before passing them in. Then prefer to use the positions instead of the parameters anyway, in case it isn't always in radians. (And how do you measure ellipses, anyway?) 2004/09/16.
  • CATIA5: Add the AddIdAsName as a debugging aid. 2004/09/16.
  • Turn off the code to switch out-of-bounds parameter loops on closed surfaces to model loops -- it seems problematic at the moment (need to figure out the orientation first, I think) and we have another solution for the problem it was trying to solve. 2004/09/16.
  • When trimming a surface of revolution, try to match the surface's parameterization to the UV curves used to trim it. 2004/09/16.
  • Add HwNlibSurfaceOfRevolution::SetAnglesRadians function to allow you to override the start and end angles of a surface of revolution. 2004/09/16.
  • DATAKIT: Add GetParameterTrimloopBox function to get the UV space covered by a surface's parameter space loops. 2004/09/16.
  • Added DumpCurve debugging function. 2004/09/15.
  • CATIA5: Better error trapping on curves and points, plus IDs for them. 2004/09/15.
  • CATIA5: Try to have better error checking for trimmed surfaces. 2004/09/15.
  • Add "null entity" error. 2004/09/15.
  • CATIA5: Add a decent first stab at an ID to trimmed surfaces. 2004/09/15.
  • DATAKIT: Changed surfaces of revolution to be parameterized in radians, not degrees. 2004/09/15.
  • First-stab at code to check and compensate for out-of-main-period parameter space curves. 2004/09/15.
  • CATIA5: Add Nlib-import interface for Catia v5. 2004/09/14.
  • DATAKIT: Add tools to convert axis1_placement and surface_of_revolution objects. 2004/09/14.
  • Add static function call "in-place" (via HwStdAutoPtr) surface conversion tools to replace a surface with a swapped or reparameterized version of itself. 2004/09/14.
  • Work on the intersection curve type. 2004/09/14.
  • Parasolid: Provide a tolerance. 2004/09/14.
  • CATIA5: Trap errors when reading trimmed surfaces. Pass a tolerance. 2004/09/13.
  • Started to rough in support for intersection curves. 2004/09/12.
  • Added recognition for the .catpart CATIA v5 file extension. 2004/09/12.
  • CATIA5: First version of CATIA V5 translator to compile and link. 2004/09/12.
  • Don't try to sample points on an intersection curve -- take the curve's chart instead. 2004/09/11.
  • Parasolid: Read intersection curves from Parasolid file. 2004/09/11.
  • Implement HwNlibIntersectionCurve, to represent intersection curves from Parasolid. 2004/09/11.
  • Parasolid: Add HwParasolidSchema::GetName (which gets the type name corresponding to a type ID number) and HwParasolidFile::DebugDump, which dumps a human-readable form of the file to std::cout. 2004/09/11.
  • Log the approx 3D length of UV curves deleted because they are too short in 3D space. 2004/09/11.
  • CATIA5: First versions in development, based on Catia v4 translator. 2004/09/11.
  • Patched a major memory leak in the "exploded B-rep" code. 2004/09/10.
  • CATIA: Add STACKS parameter to interface. 2004/09/07.
  • CATIA: Now it compiles, albeit with an enormous hack (#includeing an IW header functions). 2004/09/07.
  • CATIA: First version of Nlib CATIA harness, not yet compiled. 2004/09/07.
  • Parasolid: Factor in the face's sense flag. 2004/09/06.
  • If skipping newlines, skip \n and \r. 2004/09/06.
  • Add one Parasolid file extension to the list of file extensions. 2004/09/05.
  • Parasolid: Read from the schema file indicated in the X_T file. (Directory path to it is still hard-coded.) 2004/09/05.
  • Added ReverseCurve and InvertSurface functions which take a reference to an HwStdAutoPtr to a curve/surface and change it to the reversed/ inverted version. 2004/09/05.
  • Parasolid: Massive changes -- can now read in BODYs as collections of trimmed surfaces, with several common curve and surface types supported. 2004/09/05.
  • Parasolid: Added DebugDump series of commands, so that node data can be examined. 2004/09/05.
  • Parasolid: New files based on the SAT equivalents, with the writing code turned off. (For now.) 2004/09/05.
  • During a SplitAtSeams call, if there is no intersection between the seams and the face's loops, we have to call compute loop orientation. We used to use the 3D version of ComputeLoopOrientation, but it turns out that gives incorrect results in some cases. So this change switches it to use the UV version instead. In theory, this may lead to issues with surfaces it is very hard to project to cleanly. In practice, it seems to improve our test suite's handling of several models without causing any regressions at all. 2004/09/03.
  • openNURBS: Provide slightly more abstract interfaces to the openNURBS material handling code we have written, and use that to construct ON_Brep to IwBrep and IwBrep to ON_Brep conversion functions. 2004/09/01.
  • HwUnitTest: Simple (not yet really automatic) test of the ON to IW and IW to ON direct B-rep conversion facilities. 2004/09/01.
  • DATAKIT: Handle trimmed ellipses. 2004/09/01.
  • CATIA: Bring CATIA into the new refactoring of the Datakit toolset. 2004/08/31.
  • DATAKIT: Fixed stupid spelling error ("Geomtric") and moved HwNlibDatakitGeometricSetProcessor to header. 2004/08/31.
  • UG: Add the new HwNlibDatakitTools files to the UG projects, make UG use HwNlibDatakitProcessor rather than HwNlibUGGeometryProcessor, and rip out the now redundant code in the HwNlibUGProcessor files. 2004/08/31.
  • DATAKIT: Changed "Parasolid" (what was it doing as a general term in the UG translator?!?) to "Datakit". 2004/08/31.
  • DATAKIT: Strip the UG names (and tools) from the file, get it to compile on its own and link cleanly with the (otherwise unmodified) UG translator. 2004/08/31.
  • DATAKIT: Copy over HwNlibUGProcessor files to use as a basis for the HwNlibDatakitTools files. 2004/08/31.
  • Fixed reversed logic on ADVANCED_NLIB wrapper. 2004/08/31.
  • HwUnitTest: Fixed Parasolid I/O test so it works again after weekend of Parasolid development. 2004/08/31.
  • Added needed ADVANCED_NLIB wrapper. 2004/08/31.
  • Parasolid: Raw beginning of standard file to Nlib processing tools for Parasolid. 2004/08/30.
  • Parasolid: Lots of changes needed to get the first test file to parse successfully. 2004/08/30.
  • Parasolid: Add two types we don't properly understand, add HwParasolidData::p_type field so that the HwParasolidData knows its node type, and add GetLength/SetLength virtual interface to the DatumIO classes, to allow fixed length vector fields to be imported. 2004/08/30.
  • Add newline skipping option (for Parasolid) and allow doubles to start with a '.'. 2004/08/30.
  • Don't allow null curves to be added to a composite curve. 2004/08/25.
  • Add DropPoint to HwNlibSURFACE. Still needs ADVANCED_NLIB wrappers. (Or maybe just BASIC_NLIB?) 2004/08/25.
  • HwUnitTest: Add test that loops sphere b-reps to TSLib and back, to make sure the basic round trip works. 2004/08/20.
  • Work around the fact that the IwShellData::m_bOrientation flag doesn't seem to actually do anything when creating a manifold B-rep. 2004/08/20.
  • Where possible, change HW_ASSERT to HW_SER_ASSERT. Loosen the tolerance on the GlobalToLocal coordinate shift correctness check. 2004/08/18.
  • SAT: When creating a cylinder or cone, factor in the u parameterization reversed flag. 2004/08/11.
  • VDAFS: Change the translator to not stress out if it cannot create the model space curve for a CONS. (Since it is currently never used anyway...) 2004/08/10.
  • Finish up assembly dumping code so that it actually dumps the complete IwAssemblyInstance/IwAssembly structure (though it shortchanges the objects involved). 2004/07/28.
  • Include IwAssemblyInstance.h before trying to delete a pointer to an IwAssemblyInstance object. 2004/07/27.
  • Fixed deleting of assemblies. 2004/07/27.
  • Add proper (??) delete calls for the class-based interface. 2004/07/27.
  • Start to sketch in code for assembly dumping. 2004/07/27.

Changes for IGES 1.5.2/VDAFS 1.3.6/STEP 1.2.2/SAT 1.0.7/OpenNurbs 1.0.7/DATAKIT-CATIA 0.5.0  

  • Update version numbers for release. 2004/07/26.
  • Turn off untested portions of the analytic face export code. 2004/07/26.
  • Fixed HwStringMap memory allocation so that it uses HwAllocate and HwFree, which makes it much easier to use correctly in DLLs. 2004/07/23.
  • Parasolid: Added ReadUnicodeCharacter and ReadInt functions, tweaked formatting of other read functions. 2004/07/23.
  • Parasolid: Tighten const correctness, set up the map between types and type readers. 2004/07/23.
  • Parasolid: Added breaks at the top level of the big double switch in HwParasolidDatumIO::Make. 2004/07/23.
  • Parasolid: Finish writing the code to read a Schema. Testing to commence soon. 2004/07/23.
  • Parasolid: Add HwParasolidDatumIO::Make function to create a HwParasolidDatumIO subclass object based on the character type flag and the quantity data. 2004/07/23.
  • Once you've created an n-sided surface, sew the resulting faces together. 2004/07/23.
  • Check to see (via sampling, so admittedly with less than 100% confidence) if the sole trimloop of an n-sided surface lies on the surface's boundaries. (Previously we just assumed it always would -- and maybe it will, but now we check to make sure.) 2004/07/22.
  • Parasolid: Added the character field flag for each type, plus two types which had been inadvertently skipped. 2004/07/22.
  • Parasolid: Added I/O classes for the variable-length fields. 2004/07/22.
  • Parasolid: Add working (or at least compiling and linking) vector tools. 2004/07/22.
  • Parasolid: Read the schema, but don't do anything useful with it yet. 2004/07/22.
  • Parasolid: Start to read full schemas. 2004/07/22.
  • Parasolid: Added function to read the (useless?) info between the header proper and the body of the Schema file. 2004/07/21.
  • UG: Eliminated the vertex scaling hack, as the latest UG library from DATAKIT doesn't have the bug. 2004/07/20.
  • Parasolid: Added tools to get at the data in a header. 2004/07/20.
  • Parasolid: Fixed the evil crash caused by inline constructor/destructor for HwParasolidHeader. 2004/07/20.
  • Parasolid: Skip whitespace after reading PARTn header. 2004/07/20.
  • Parasolid: Added (untested) code to read a Parasolid header. 2004/07/20.
  • UG: This seems to work (sort of) but contains some debugging stuff and a couple of nasty hacks. 2004/07/19.
  • Added UG. 2004/07/19.
  • UG: Add a mapping aid so that the solid is actually built correctly. 2004/07/19.
  • Modify HwNlibSolidMappingAid to allow different types for the names of edges and vertices as well as different types for their indices. 2004/07/19.
  • UG: Handle surface curves in ProcessCurve. 2004/07/19.
  • UG: Use the main shell function instead of the backup one. 2004/07/19.
  • UG: Add version number, feedback. 2004/07/18.
  • UG: Implement the rest of the shell code, however, no proper sorting on edges and vertices yet. 2004/07/18.
  • UG: Face processing added, loop processing still needed. 2004/07/18.
  • UG: Fix up the old, broken, and possibly unworkable shell handling functions, and start to add proper ones. 2004/07/18.
  • Add UG file type detection. 2004/07/18.
  • Add UG. 2004/07/18.
  • Parasolid: Start of implementation for object I/O class. 2004/07/18.
  • Parasolid: Defined HwParasolidASCIIOutput class. 2004/07/18.
  • UG: Good bit of work to getting something primative but functional hooked up. 2004/07/17.
  • CATIA: Modified to work in an environment with v4 and v5. 2004/07/17.
  • Parasolid: Add the basic data reading functions. 2004/07/17.
  • Parasolid: Create new HwPsInterval, HwPsVector, and HwPsBox types to use instead of the equivalent Nlib types. 2004/07/17.
  • Parasolid: Start of low-level file classes. 2004/07/17.
  • Parasolid: Added reader/writer base class destructors, so we can compile and link everything happily again. 2004/07/17.
  • Parasolid: Implement basic logical I/O tools, from which the actual I/O code will be subclassed and/or built. 2004/07/17.
  • Parasolid: Add first stabs at the more complex geometry types. 2004/07/17.
  • Parasolid: Replaced by tools/parasolid_to_cpp.pl and tools/hwlibs_parasolid_data. 2004/07/17.
  • Parasolid: Get the automatic file generator working as well as the old hand-coded types. 2004/07/17.
  • Parasolid: First version of tools for handling Parasolid low-level type grunt work. 2004/07/17.
  • Reorganization of the N-sided surface code, so that it begins to work a bit. 2004/07/16.
  • IGES: Implement the "Global Defer" flag for types 102 and 408. 2004/07/16.
  • Make MergeAttributeList work the same as MergeAttribute. 2004/07/16.
  • New, smarter version of Nlib MergeAttributes which allows the caller to decide whether we prefer the outer or inner attribute. 2004/07/16.
  • Parasolid: Sketch things out a bit further. 2004/07/15.
  • Parasolid: First stab at data class. 2004/07/15.
  • Switch to creating NSided surfaces as IwBreps. 2004/07/15.
  • Fixed use of bad loop parameter declaration. 2004/07/15.
  • Parasolid: Start of Parasolid XT translator. 2004/07/15.
  • First part of N-Sided surface implementation for NMTLib-based code. 2004/07/14.
  • Prefer model space loops to parameter space loops when trimming offset surfaces. 2004/07/13.
  • CATIA: Better error message for the open file error of -3. 2004/07/13.
  • STEP: Modified to use the new MakeSTEPCircle function, and eliminated some now-redundant code. 2004/07/12.
  • CATIA: Handle trimmed curves, including trimmed NURBS and trimmed circles. 2004/07/12.
  • Move the heart of the code for handling STEP circles to the core, so that it can also be used by the CATIA translator. 2004/07/12.
  • CATIA: Improved error reporting and signaling. 2004/07/12.
  • CATIA: Process curve bounded surfaces in geometric sets. 2004/07/12.
  • STEP: Patched long-standing memory leak. 2004/07/12.
  • CATIA: Add IDs to faces in collections of faces. 2004/07/09.
  • CATIA: Add IDs to top-level entity and items contained in a geometric set. 2004/07/09.
  • CATIA: Cleaned up the handling of points and lines in geometric sets. 2004/07/08.
  • CATIA: Add processing of geometric sets at the file level. Add file level feedback for unrecognized entity types. 2004/07/08.
  • CATIA: Be a bit smarter about processing geometric sets. 2004/07/08.
  • CATIA: Try to properly (if stupidly) process geometric sets and set replicas. 2004/07/08.
  • CATIA: Implement the usual progress announcements. 2004/07/07.
  • CATIA: Header file, with only version number, for now. 2004/07/07.
  • CATIA: Report entity creation counts when the file is read. 2004/07/07.
  • SAT: Process vertexblendsurs to create HwNlibNSidedSurfaces. 2004/07/07.
  • Added an interface for adding sides to an HwNlibNSidedSurface and then retrieving them later. 2004/07/07.
  • SAT: Handle netsurs by using the stored b-spline surface information. 2004/07/06.
  • SAT: Implement file reading code for netsur. 2004/07/06.
  • IGES: If we're reading an AutoCAD file, read the face orientation the bit the way it is defined in the IGES standard, rather than the way most people seem to implement it. 2004/07/05.
  • IGES: Extra sanity check -- make sure the angle looks like it is radians, not degrees, just in case AutoCAD fixed their bug. 2004/07/05.
  • IGES: If an IGES file is from AutoCAD, expect type 194 cones to use radians instead of the standard degrees. 2004/07/05.
  • UG: First batch of edits as we try to get it to compile. 2004/07/03.
  • UG: Copy the CATIA translator to use as base for UG translator. 2004/07/02.
  • Replaced the old extended curve passing code with a call to the new PassCurve function. 2004/07/02.
  • Added "const" to the IwContext parameter for PassCurve. 2004/07/02.
  • SAT: Recognize more of the blendsur subclasses. 2004/07/02.
  • Comment out the WriteToFile calls used during blend testing. 2004/07/01.
  • STEP: When constructing a transformation from an item defined transformation, if you cannot get any data from way the representation items are referenced by the shape representations, assume a standard forward direction for the transformation. 2004/07/01.
  • STEP: Rewrite the code to determine the direction an item defined transformation goes to account for the idea that one single shape represenation might point to both ends of the idt. 2004/07/01.
  • Actually hook up the new pass curve function and use it. 2004/06/29.
  • Improvemnts to the IsArc test. 2004/06/29.
  • Increased buffer size to in HwTSLibTrimLoop3d::CreateConnectorOnSurface to prevent overflow if the floating point numbers all have long ASCII represenations. 2004/06/29.
  • SAT: Realized that the mysterious "11" in the blendsur support type field was actually the length of the string "blendsupsur". Modified the blendsupport reading code to read a string (which has length first) rather than a word (which is just until next whitespace), and then modified the blendsur class to work with the new standard. 2004/06/26.
  • Implement a scheme whereby vertices on the face currently being processed are stored in a vector, so that the blend surface code can choose which is the correct fillet to use if more than one fillet is a valid solution. 2004/06/26.
  • Try to get a couple of blend surfaces working. 2004/06/26.
  • Update blend fudge factor to handle inverted blends. 2004/06/26.
  • Added HwNlibInvertedSurface::GetMinMaxBox. 2004/06/26.
  • SAT: If spline surfaces say they are inverted, invert them. 2004/06/25.
  • Add GetBaseType, for determining the fundamental type of a surface. Some tweaks to improve bounding boxes on blend surfaces. 2004/06/25.
  • Add test for straight lines (and subsequent usage of PassLine) to the TSLib assembly-based unpacking code -- but only if extended curves are turned on. 2004/06/24.
  • SAT: Give HwSatFile the version of AddEntity which allows you to choose the sequence number for the entity being added. 2004/06/24.
  • SAT: Switch unwanted "body" objects to "no-body" so that our SAT processor doesn't report errors when it cannot process them. 2004/06/24.
  • When trimming a curve, don't call GetEndPoints if the curve is a curve on surface and the surface cannot be evaluated (ie, the common blendsur case). 2004/06/24.
  • When you've created a blend surface, instead of copying the surface pointer (which will later prevent the surface from being used in another B-rep) and letting the B-rep leak memory, copy the surface object and delete the B-rep, which is both correct and tidy. 2004/06/24.
  • Added wrappers around uses of IwPoly classes, so that the code will still compile on TSLib installations. 2004/06/24.
  • Previously to check surface orientation, we choose a point on the HwNlibSurface and dropped it to the IwSurface. However, sometimes the HwNlibSurface is substantially bigger than the IwSurface (for instance, a complete sphere rather than a small portion of a sphere). So instead, choose a point on the IwSurface and drop it to the HwNlibSurface. 2004/06/24.
  • Add virtual interface for dropping points to HwNlibSurface, and quick implementations for plane, sphere, and cylinder. 2004/06/24.
  • Added test to determine if the normal of the analytic surface we have just converted from TSLib to Nlib is pointing in the right direction. If not, invert the surface. 2004/06/23.
  • STEP: If a usage of an assembly component does not have its own name, use the name of its product. 2004/06/21.
  • Use the fabs of the offset distance to adjust the boundary box of an offset surface. Harmless if the distance is positive, very important if it is negative. 2004/06/21.
  • Add IW_AIH_NLIB_MINOR_TYPE attribute type, along with commented out code which uses it. Bind infinite cylinders and cones. 2004/06/21.
  • SAT: Proper support for VarRadius types. 2004/06/20.
  • SAT: Added a bunch of variable radius types for blend surfaces, as well as sorting out some of the trickier areas of the blend surface and cross section types. 2004/06/20.
  • SAT: Reformat the AutoCAD color info so it isn't in single super-long lines of code. 2004/06/20.
  • SAT: Added the blndsprngcur, varblendsur, and srfsrfblndsur classes, plus corrected the case on one_radius and two_radii. 2004/06/19.
  • STEP: If you're using the AP203 rules, write oriented_closed_shells for the void shells of a brep_with_voids. 2004/06/18.
  • IGES: When writing (as analytic) an inverted plane, just write the plane with the opposite normal. 2004/06/18.
  • Wrappers so that we don't try to compile the fillet code in POPLib. 2004/06/18.
  • SAT: Check for null_surface before trying to create a blendsur support surface. 2004/06/17.
  • Add derivative evaluation for HwNlibSphere. 2004/06/17.
  • When converting an IwPlane to an HwNlibPlane, make sure the HwNlibPlane is finite. 2004/06/17.
  • Actually initialize the new p_output_analytic_surfaces variable. 2004/06/16.
  • SAT: Modified to work with HwSatBoundaryGeomBase class. 2004/06/16.
  • SAT: Start to rough in vertexblendsur support. 2004/06/16.
  • SAT: Add a way to get the wrapped information out of a HwSatBoundaryGeomWrapper. 2004/06/16.
  • Added first-stab at N-sided patch surface. 2004/06/16.
  • Add a flag (set by SetOutputAnalyticSurfaces) to the HwTSLibToNlibObject, which allows you to request analytic surfaces be output. 2004/06/16.
  • Removed duplicate HW_STD_AUTOPTR_TEMPLATE_PREDECLARATION that had somehow crept into the code. 2004/06/15.
  • SAT: Modifications to add support for the HwSatBoundaryGeom class family. (Used by vertexblendsur.) 2004/06/15.
  • SAT: A whole bunch of types needed for vertexblendsurs. 2004/06/15.
  • STEP: If the first two attempts at generating a name for an assembly fail, try using the ID field. 2004/06/14.
  • Bunch of changes to attempt to handle blend surfaces. 2004/06/12.
  • Add special bounds-handling for blend surfaces (since we don't know their exact shape). 2004/06/12.
  • SAT: Initial support for blend surfaces. 2004/06/11.
  • Add support for HwNlibBlendSurface -- an odd type, as we have no idea how to actually make a surface of it, other than appealing to the IntegrityWare filleting tools to get the job down. 2004/06/11.
  • Add new version of isocurve checking function. Allow curve trimming to work even if you cannot get the endpoints. 2004/06/11.
  • SAT: Started rough-in of vertexblendsur type, then commented it out. 2004/06/11.
  • VDAFS: Added declaration of NORMALIZED for fossil versions of Nlib. 2004/06/11.
  • SAT: Report type of unknown curve to log file. 2004/06/07.
  • When reading numbers in a free-form ASCII file (like STEP or SAT) change any lowercase Ls found to the digit 1. Yes, this is ridiculous, but we've got a sample file here that uses l when it means 1 in a couple of spots. 2004/06/07.
  • Rewrote the function to normalize the weights of a curve to use the much smarter algorithm we were already using to normalize the weights of a surface. 2004/06/06.
  • IGES: Look for reversed NMT shells and use that info if available. 2004/06/05.
  • IGES: If an NMT shell is reversed, write that info out to the file! 2004/06/05.
  • openNURBS: Create a map of colors to materials, so that we do not create unnecessary materials. 2004/06/05.
  • openNURBS: Add simple function which returns the number of materials in the Rhino file object, so we can test whether or not we are correctly squeezing the colors into materials. 2004/06/05.
  • openNURBS: Created HwONMaterialManager to match HwONLayerManager, and used it to clean up the previous export material-handling code. 2004/06/04.
  • openNURBS: Header for the latest src/HwNlibOnWriter.cpp. 2004/06/03.
  • openNURBS: Use a map to control the IGES level to openNURBS layer mapping. 2004/06/03.
  • When converting a B-rep (presumably of a trimmed surface) to a collection of open shell B-reps, make sure each B-rep has the same attributes as the original B-rep. 2004/06/03.
  • When merging attribute lists, treat level the same is color (that is, use the inner if it is available, then the outer). 2004/06/03.
  • openNURBS: Don't use the layer's IGES level number if it is less than 1, as -1 seems to be the default. 2004/06/03.
  • openNURBS: Don't output openNURBS validity check to standard output unless in debug mode. 2004/06/02.
  • HwUnitTest: Fixes to make Rhino tests work more smoothly, and include more checks. 2004/06/02.
  • openNURBS: Added HwONXModelWrapper::CheckModel to validate the objects in a model. 2004/06/02.
  • Moved UV fixing code into new IwBrep export code. 2004/06/02.
  • openNURBS: If the layer has an IGES level number, use that for the HwNlibLevel attribute value rather than the Rhino layer index. 2004/06/02.
  • openNURBS: Actually return the index of the new layer generated. 2004/06/02.
  • openNURBS: Basic HwNlibLevel writing functionality implemented. 2004/06/02.
  • openNURBS: Add simple layer manager -- so far it only creates the default layer, but that's a distinct improvement over no layers at all. 2004/06/02.
  • openNURBS: Read face color information from face material information. 2004/06/02.
  • openNURBS: Write face color information by using the face material settings. 2004/06/02.
  • IGES: Cast to eliminate a completely uninteresting warning. 2004/06/02.
  • openNURBS: Fixed glitch was creating the attributes twice on each entity imported. 2004/06/01.

Changes for IGES 1.5.1/VDAFS 1.3.5/STEP 1.2.1/SAT 1.0.6/OpenNurbs 1.0.6  

  • Export nested B-rep regions. 2004/05/27.
  • Before thinking we've got a manifold void because it only has one flip shell, make sure that the flip shell and the void shell have the same number of face uses. 2004/05/27.
  • Process NMT void shells to make sure faces which have already been used once are not included. 2004/05/27.
  • Handle the case of NMT void shells. (Not well, yet, but at least make sure the shell is exported, and the B-rep is created as an NMT B-rep.) 2004/05/27.
  • Properly handle the case of one NMT shell containing two manifold shells during IwBrep export. 2004/05/26.
  • Try to walk through all the faceuses of a shell, rather than just trying the first faceuse N times. (Duh.) 2004/05/26.
  • openNURBS: Handle NMT B-reps. 2004/05/25.
  • Handle NMT B-reps in PassObject. 2004/05/25.
  • openNURBS: Create NMT B-reps as well as manifold and open shell B-reps. Note that these will not create properly as IwBreps yet, but at least we get them into the system in one piece. 2004/05/25.
  • Added HwNlibNMTBrep::AddShell function, allowing you to add shells one-by-one and have them sorted into the proper bin for you. 2004/05/25.
  • openNURBS: Factor in shell and face orientation when writing out faces. 2004/05/25.
  • Use GetUVTrimCurve rather than GetUVTrimCurvePointer, as the former handles some weird little marginal cases the latter doesn't. (Originally I used it because I was under the mistaken impression GetUVTrimCurve would calculate the trim curve if it was not there.) 2004/05/24.
  • Change ReverseSurfaceNormal from static to exported, renaming it HwReverseSurfaceNormal. 2004/05/24.
  • SAT: Change HwNlibPipeSurface to use HwNlibSweptSurface to generate the NURBS surface when requested. 2004/05/21.
  • SAT: Properly handle writing null_curve. 2004/05/21.
  • Fixed HwNlibReparameterizedSurface so that if the reparameterized surface would be illegal as a NURBS, it is marked as "NURBS parameterization incorrect" and then not reparameterized after NURBS construction. 2004/05/20.
  • SAT: Fix the curve and pcurve writing functions to write the curve type. 2004/05/20.
  • SAT: Code to allow writing unknown entities. 2004/05/20.
  • When importing a manifold B-rep, if there is more than one shell, check to see if we know that the first shell is the outer shell. If not (say the data came from an SAT file), exit the B-rep creation code with an error. 2004/05/20.
  • Improvements to reparameterized surfaces. 2004/05/20.
  • SAT: Normalize the weights in BSpline curves. 2004/05/20.
  • Add an accessor function for the NURBS surface underlying the HwNlibSURFACE class. 2004/05/18.
  • IGES: Allow leading spaces in the separator fields at the beginning of the global section. 2004/05/17.
  • STEP: Handle another case of meaningless name field in the assembly component usage field. 2004/05/15.
  • SAT: Move the stuff we had stashed provisionally in exactcur to intcur, as R13 surfintcurs also had the extra data. 2004/05/13.
  • SAT: Handle the R13 version of offset surfaces. 2004/05/13.
  • SAT: Tweaks to make faces and loops work on SAT R10 files, and bring exact par curves, intcurs, and exactcurs work in R10-R13. 2004/05/13.
  • STEP: Better rules for dealing with these tricky STEP degenerate tori. 2004/05/13.
  • STEP: Patch to deal with misguided degenerate surface normals in OBO-quick-M25.stp model. 2004/05/12.
  • STEP: Beforing indicating that a shape representation has been output, thus stopping STEP file processing at the product level, make sure that there were actually entities output in that shape representation. 2004/05/11.
  • Added CountAssemblyInstanceEntities function to count all the entities in an HwNlibAssemblyInstance. (Note -- it's not terrifically efficient.) 2004/05/11.
  • openNURBS: Add a support for a couple of attributes. 2004/05/11.
  • openNURBS: Handle more cases during B-rep import. 2004/05/11.
  • SAT: Use new SortShellsIntoClasses function. 2004/05/11.
  • Turn off the assertion that the outer shell is first. I'm not sure if it's needed, and I'm sure it's causing trouble. 2004/05/11.
  • Add new SortShellsIntoClasses function, which sorts an array of shells into manifold open, manifold closed, and non-manifold arrays. 2004/05/11.
  • SAT: Fine-tuning of support for versions R11-R13. 2004/05/11.
  • SAT: A bunch of mods to make the file reader compatiable with ACIS R13. 2004/05/11.
  • SAT: Add support for layers/levels via the GSSL IGES Layer attribute. 2004/05/11.
  • Modifies the conversion code to work with the new HwNlibBrep. 2004/05/10.
  • SAT: Don't pretend to know which shell in a B-rep is the outer shell. 2004/05/10.
  • IGES, SAT, STEP, VDAFS: Changed to use the new HwNlibBrep structure. 2004/05/10.
  • Switch HwNlibBrep to use a collection of closed shells rather than an outer shell and a collection of void shells. Use a new flag to indicate if the first closed shell is the outer shell. 2004/05/10.
  • openNURBS: Add a wrapper class for ONX_Model, so that you can write out a model without including the opennurbs.h header. 2004/05/10.
  • SAT: Fix the case of only NMT shells appearing in SortShellsIntoObject -- it used to create an NMT B-rep and then return an empty manifold B-rep. Also reorder output so that manifold B-reps are returned before open shells and NMT B-reps, so that it more closely matches the way the code used to work. 2004/05/10.
  • SAT: If the code for sorting shells encounters a solitary NMT shell, make it a NMTBrep (instead of an assembly containing a NMTBrep, which is what the code did previously). 2004/05/08.
  • SAT: Added proper entity counter to the higher level body assembly construction. 2004/05/08.
  • openNURBS: Clean up headers so that you can include HwNlibONWriter.h without including the opennurbs.h header. 2004/05/07.
  • SAT: Don't try to group shells into a B-rep unless a) there is at least one shell, and b) all the shells it tried to create were successfully created. 2004/05/07.
  • IGES, VDAFS: Fixed it so that very early null characters in a file do not shift the file into "no newlines in file" mode. 2004/05/07.
  • SAT: Smarten up the shell sorting process a touch. Now it will preserve the information that shells should be grouped together into a B-rep if it will make a proper manifold B-rep. 2004/05/07.
  • IGES: Reinstate the previous patch, but with a check so it doesn't run unless we haven't found any independent geometry in the file. 2004/05/07.
  • IGES: Turn off the previous patch, add info about what dependent entities are being turned independent where that happens. 2004/05/07.
  • IGES: After all the entities in the IGES file have been processed, check to see if there are any top-level entities which are not independent. If there are, make them independent. 2004/05/06.
  • SAT: Properly create the case of a multi-lump, all open shell body as a single open shell HwNlibBrep object. 2004/05/06.
  • SAT: Write out open shell b-reps properly as multi-lump bodies. 2004/05/06.
  • SAT: Use the HwSatHolder refactoring on the top-level body object in a B-rep. 2004/05/06.
  • SAT: Change LumpHolder to a template-class that will hopefully work for most HwSatEntity objects. 2004/05/06.
  • SAT: Factor in shell orientation when outputting faces. Factor the wildly overused construction code. 2004/05/06.
  • When exporting an IwBrep, if you have a "non-open" (ie not all the faces have both faceuses in the same shell) shell, give each face which does have both of its faceuses in a single shell their own shell. 2004/05/05.
  • Factor out the test to see if both faceuses of a face are in the same shell. 2004/05/05.
  • IGES: Added an error handling routine for the case where a shell which is not part of a B-rep cannot be created. 2004/05/05.
  • Start support for exporting NMT IwBreps. 2004/05/05.
  • Output parameter space curves in the new B-rep conversion code. 2004/05/03.
  • Add B-rep and face attribute conversion back into the TSLib to HwNlib B-rep conversion code. 2004/05/03.
  • Make multiple open shells in one IwBrep work. 2004/05/01.
  • First step in complete rewrite of code for converting IwBrep to HwNlibBrep. 2004/04/30.
  • Change the IwBrep to HwNlibBrep conversion process to work with the non-void IwRegions rather than the void IwRegions. To make this work, also reversed the shell orientation flags and the shell order during processing (so the last, ie outermost shell becomes the outer shell). [Note -- was wrong about the last shell being outermost. That was an accident of IwBrep construction in my test cases.] 2004/04/29.
  • IGES: Support for reading 212 note entities added. 2004/04/26.
  • Add IGES notes to the header dump. 2004/04/26.
  • IGES: Add support for reading 212 note entities using the GetNotes function. 2004/04/26.
  • IGES: Added HwIgesNote subclass of HwGenericNote. 2004/04/26.
  • Added HwGenericNote class, and include an array of pointers to that class in the HwHeaderInfo class. 2004/04/26.
  • Made HwNlibObjectToTSLib::ConvertPolyBrep work. 2004/04/26.
  • Modified HwNlibSolidComponentsAid to allow different types for the edge and vertex index, and updated places where that class was used. 2004/04/26.
  • SAT: Turn off the reading of law included data info, as the example we have at hand doesn't seem to write it out, and we don't see any signs of having a file in our sample set which actually includes the only sort of law included data we know how to read! 2004/04/20.
  • Start laying out IwPolyBrep import code. Turn off debugging printf mistakenly left in. 2004/04/20.
  • IGES: We were leaking memory if we filled in the gaps in a composite curve. Fix that. 2004/04/20.
  • SAT: Before turning a sweepsur into an HwNlibSweptSurface, see if the sweepsur contains the NURBS version of itself, and use that instead. 2004/04/19.
  • SAT: Fixes to bring sweepsur up to date. 2004/04/19.
  • When copying solid components, copying the attached tolerances. 2004/04/19.
  • New HwNlibCoordinateSystem::MakeTransformTo and ::MakeTransformFrom functions. Added HwMakePoint and HwMakeVector functions. 2004/04/19.
  • Implement HwNlibSweptSurface::MakeNurbs. 2004/04/19.
  • When sorting out a topology object, distinguish between B-reps and trimmed surfaces. 2004/04/17.
  • Modified the code which bumps tolerance if 3D trimming curves are not within tolerance of their surface to perform a sanity check against the length of the loop. If the loop distance to the surface is greater than 10% of the loop length, reject it all together. 2004/04/15.
  • Add HwCoordinateSystem::GlobalToLocalTransform function. 2004/04/14.
  • SAT: Fix MakeTransform so the transforms made correctly, rather than with a rotated matrix. 2004/04/14.
  • Provide proper copy constructor for the new HwFreeFormattedData (can't believe I forgot that). 2004/04/13.
  • IGES, VDAFS: Changes to make things work with the new HwFreeFormattedData. 2004/04/13.
  • Complete rewrite of the HwFreeFormatedData code in an effort to make it use about 43% less memory. 2004/04/13.
  • Try to make the file compatiable with older versions of TSLib. 2004/04/12.
  • Changed many uses of "interface" to "import_interface" to avoid stupid Microsoft header tricks. 2004/04/07.
  • SAT: Added offsetintcur. 2004/04/07.
  • STEP: Use the new name facility for the "Efficient" classes to create a name attribute if one is needed. 2004/04/05.
  • STEP: Support names for the (now slightly less) efficient versions of cartesian point and direction. 2004/04/05.
  • STEP: Try to properly handle stand-alone cartesian points that are represented by the HwStepBaseEfficientCartesianPoint class. 2004/04/05.
  • STEP: Added HwStepBaseEfficientCartesianPoint and HwStepBaseEfficientDirection classes, which derive from HwStep3Doubles. Implemented read and write functions for HwStep3Doubles. This allows the HwStep3Doubles optimization to be used directly, rather than reading in the old cartesian point and direction objects, converting, and deleting them. 2004/04/05.
  • STEP: Switched from 3_doubles prototype to EfficientCartesianPoint and EfficientDirection, and add those two classes at the top of the CreateObject function, so that they are called in preference to the old versions of those classes (which are left in, in case they are needed as base classes). 2004/04/05.
  • STEP: Treat HwStep3Doubles class as if it was the cartesian point class. 2004/04/04.
  • STEP: Add 3doubles class (efficient version of cartesian point) and automatically convert all appropriate cartesian coordinate info to that type. 2004/04/04.

Changes for IGES 1.5.0/VDAFS 1.3.4/STEP 1.2.0/SAT 1.0.5/OpenNurbs 1.0.5  

  • Improved assembly dump code a bit. 2004/04/02.
  • STEP/SAT/openNURBS/CATIA: Report TSLib options on import. 2004/04/01.
  • Refactor and apply the same attribute transfer code that applies to curves in TSLib assemblies to surfaces in TSLib assemblies as well. 2004/04/01.
  • Combined the two different tests to determine if HW_NO_TSLIB_ASSEMBLIES should be set into one, better test. 2004/04/01.
  • When unpacking an assembly, if the IwBrep was originally a HwNlibSurface, and there is only one face in the IwBrep, and surfaces are not set to be output as Breps, then output just the one face's surface rather than the entire B-rep. 2004/04/01.
  • Report whether IwAssembly/IwAssemblyInstance support is turned on in the log file. 2004/04/01.
  • Added #ifdef wrapper so that the code doesn't try to use GetMirrored unless the function is actually available. 2004/03/31.
  • Add test to turn off TSLib assemblies for older (pre-mirror assemblies) versions of POPLib/NMTLib. 2004/03/31.
  • Switched the N_curmep wrapper to incidate that it requires Advanced Nlib (due to a customer report that it was not in his Basic Nlib package). 2004/03/24.
  • Switch wrapper around the pipe surface creation call to check for Advanced Nlib, as Basic Nlib apparently does not contain that function. 2004/03/24.
  • Originally, when we detected a trimming curve which is off it's surface in 3D space, we set the tolerance for that face to be twice the distance. Then for some reason last summer (I forget exactly what), we switched this value to half. That was producing clearly incorrect results. So now we set it to 1.2 times the distance to the surface, which seems to yield okay results.... 2004/03/24.
  • Added HwNlibExporterInterface::WritePolyBrep interface. 2004/03/24.
  • STEP: Implement curve_style color support. 2004/03/19.
  • STEP: Add curve_style type. 2004/03/19.
  • If we're using the new Microsoft compiler, define HW_TYPENAME to be typename. Otherwise, nothing. 2004/03/18.
  • Added typenames (using a define, so they can be left out if needed for older compilers) so that the HwRBTree compiles with the latest Microsoft C++ compiler we have. 2004/03/18.
  • openNURBS: Filter out objects which are the raw components of InstanceDefinitions (ie assemblies) from the high-level object creation. 2004/03/18.
  • IGES: Finished up the mods which try to ensure that properly C0 continuous (within 20 times tolerance) type 102 composite curves are written to the IGES file. 2004/03/18.
  • IGES: Half-finished changes for more intelligent composite curve handling. 2004/03/17.
  • Refactor the composite curve gap filling code so it can be used by const composite curves. (More or less.) 2004/03/17.
  • Tweaks to tolerances on HwNlibRuledSurface::IsSimpleCone code. 2004/03/16.
  • openNURBS: Support the blanked attribute. 2004/03/12.
  • Because the single "placement/mirror/scaling" model wasn't really capable of properly expressing all the possible transformations on chains of assemblies, switch to storing a stack of IwAssemblyInstance pointers, and then run down the list and perform all the "placement/mirror/scaling" operation for each of them. 2004/03/12.
  • Added new HwNlibPoint constructor which takes three doubles. 2004/03/11.
  • Skip big curves when looking for loop self-intersections, as they can trigger really bad performance from the TSLib intersection tools. (This should be undone if those tools are ever fixed.) 2004/03/11.
  • CATIA: Include header file needed for tolerance function. 2004/03/09.
  • CATIA: Get tolerance from the file. 2004/03/09.
  • Wrap IW_ASSERT in brackets so that the code will act the same in debug and non-debug mode. 2004/03/09.
  • CATIA: Added a flag to control whether or not blanked entities are produced, and turned it off by default. 2004/03/09.
  • Added make_blanked_entities options to HwImportOptions. (It used to be true by default, once this change is fully incorporated it will be falsed by default.) 2004/03/09.
  • CATIA: Added blanked attribute. 2004/03/08.
  • CATIA: Added level to the attribute handler. 2004/03/08.
  • Added some functions for examining how things are classified on a face. The code to actually call them is turned off. 2004/03/06.
  • When making trimmed surfaces for B-rep faces, check to make sure the UV edges seem to match the 3D edges before adding the UV edges to the trimmed surface. 2004/03/05.
  • STEP: Try to detect and work around backwards hyperbolas. 2004/03/05.
  • CATIA: Added support for names, cleaned up a touch. 2004/03/04.
  • CATIA: Add color as the first attribute handled. 2004/03/04.
  • CATIA: Actually take a logger from the outside, and pass useful information using it. 2004/03/04.
  • CATIA: Factored out the code for processing an object and passing it to the interface. 2004/03/04.
  • CATIA: Killed the Transformation_Axis_Catia variable, as it does not appear to do anything. 2004/03/04.
  • CATIA: Handle type 47 NURBS surface. 2004/03/04.
  • CATIA: Process high level composite curves. 2004/03/04.
  • CATIA: Hook up several types not found in the first sample file. 2004/03/04.
  • CATIA: Hook up several types not found in the first sample file. 2004/03/04.
  • CATIA: Use the new AddObjectToList function a few times. 2004/03/04.
  • CATIA: Deleted deadwood. Added AddObjectToList function to factor the if object is not null then add to vector thing that cropped up all over the code. 2004/03/04.
  • CATIA: Rearranged functions slightly. Purely cosemtic. 2004/03/04.
  • CATIA: Try it without the windows header. No apparent difference noticed so far. 2004/03/04.
  • Added some Nlib functions (N_conarc, M_makcon, and G_intlnl) to the file, in HW-specific versions which do not check for parallel lines; then call these in HwNlibHyperbola::MakeSingleNurbs. 2004/03/04.
  • A few more standard hyperbolas to test. 2004/03/04.
  • Added a couple of new access functions to HwNlibHyperbola. 2004/03/04.
  • Smarten up HwNlibHyperbola a bit. 2004/03/04.
  • Lots more tests, some of them turned off at the moment. 2004/03/04.
  • Added rules for NlibHyperbola.cpp. 2004/03/04.
  • Tests for the hyperbola class, which is giving us trouble at the moment, and hasn't been particularly well-tested in the past. 2004/03/04.
  • Added other CATIA file extensions to the list. 2004/03/03.
  • STEP: If we are unable to create any of the faces of an open shell, fail rather than creating an empty B-rep which will later lead to a crash. 2004/03/03.
  • SAT: When creating an intcurve, if the requested parameter range is all below the starting parameter of the intcurve, treat it as a request for the curve reversed. (ie negate and swap the parameters, then reverse the output.) 2004/03/02.
  • CATIA: Changed solid face code as well. 2004/03/02.
  • CATIA: More changes. 2004/03/02.
  • CATIA: Added a few more types and another tweak. 2004/03/02.
  • CATIA: Update with new wrapper classes. 2004/03/02.
  • CATIA: Several more types, slightly smarter code. 2004/03/02.
  • CATIA: Rearranged things a bit. 2004/03/02.
  • Add auto-generated Catia files to Catia build. 2004/03/02.
  • Add Catia tools to autogenerate code. 2004/03/02.
  • CATIA: Tools to auto-generate C++ wrappers for the C CATIA structures. 2004/03/02.
  • CATIA: Tools to auto-generate C++ wrappers for the C CATIA structures. 2004/03/02.
  • STEP: Added uniform knot type to BSpline surface creation tools. 2004/03/02.
  • STEP: Reworked the rational BSpline surface code to use new utils. 2004/03/02.
  • STEP: Cleaned up one function using new surface BSpline utils. 2004/03/02.
  • Further BSpline surface types. 2004/03/02.
  • Start refactoring of BSpline surface functions. 2004/03/02.
  • STEP: Rework things a bit so we can handle a multi-type entity which is a B-rep. 2004/03/02.
  • openNURBS: Clean up the new transform handling code a bit. 2004/03/01.
  • STEP: Continue reworking BSpline code. 2004/03/01.
  • CATIA: Deleted local MakeBSplineCurve function, and changed references to it to use the new version in HwNlibBSplineUtils.h. 2004/02/28.
  • STEP: Refactored using MakeBSplineCurve function. 2004/02/28.
  • Added MakeBSplineCurve function to make the curve once you've got all the control points, knots, and weights worked out. 2004/02/28.
  • CATIA: Added support for uniform curves. 2004/02/28.
  • STEP: Support uniform and quasi-uniform bspline curves using the new BSpline utils header. 2004/02/28.
  • CATIA: More refactoring. 2004/02/28.
  • Added QuasiUniformKnots and curve weight functions. 2004/02/28.
  • CATIA: Use new MakeUniformKnots function in HwNlibBSplineUtils.h. 2004/02/28.
  • Add MakeUniformKnots function. 2004/02/28.
  • Added new HwNlibBSplineUtils.h file for common STEP/CATIA code. 2004/02/28.
  • STEP: Use the new common STEP/CATIA code. 2004/02/28.
  • CATIA: Adjust to use new header file. 2004/02/28.
  • Fcator out BSpline code common to STEP and CATIA. 2004/02/28.
  • CATIA: Refactored the b-spline knot creation code, accidentally fixing a bug in the process. 2004/02/28.
  • CATIA: Added uniform surfaces to the mix. 2004/02/28.
  • CATIA: Process composite curves and a few surface types. 2004/02/28.
  • CATIA: Added support for Quasi-uniform curves. 2004/02/28.
  • CATIA: Added bspline curves and rational bspline curves. 2004/02/28.
  • CATIA: Factored out the Line conversion code into a function, started a generic curve conversion class. 2004/02/27.
  • CATIA: Added support for straight line type, plus a tiny bit of refactoring. 2004/02/27.
  • CATIA: Simple hooks into our Catia development code, so we can test using the standard hw_dump utility. 2004/02/27.
  • CATIA: Imported the DATAKIT sample file reading program as a framework to start from. 2004/02/27.
  • Add Catia to the file types. 2004/02/27.
  • Laid groundwork for catia project. 2004/02/27.
  • CATIA: Beginning of the Catia translator project. 2004/02/25.
  • openNURBS: Refactor the high level object creation controls, add first stab at support for "ON_InstanceRef" (ie assembly instances). 2004/02/23.
  • STEP: Came up with better way of calculating hyperbola parameter values from points on it. Use the new generic PassObject to implement the specific STEP version. 2004/02/23.
  • Moved the template declaration of a map from unsigned ints to HwNlibAssembyInstance pointers from HwNlibStepProcessor.h to HwNlibCollection.h (so that it's with the HwNlibAssembyInstance class). 2004/02/23.
  • STEP: Moved the template declaration of a map from unsigned ints to HwNlibAssembyInstance pointers from HwNlibStepProcessor.h to HwNlibCollection.h (so that it's with the HwNlibAssembyInstance class). 2004/02/23.
  • Move the PassObject function, which seems to get called a lot in different variations, to the HwNlibGeneric files. 2004/02/23.
  • IGES: When reading IGES files from "Dr.PICZA", stop once all the control points and been read and don't read any more of the surface data (as it appears to be confused). 2004/02/19.
  • Instead of simply failing if CreateConnectorOnSurface lifts the 2d curve to 3d and ends up with a degenerate curve, replace the lifted curve with a simple straight line segment. 2004/02/13.
  • Turned a ton of HW_ASSERTs into HW_SER_ASSERTs. (Geez, thought I'd chased all those out of the code a year or two ago.) 2004/02/13.
  • Added some missing brackets to the GetSmallUV code. 2004/02/13.

Changes for IGES 1.4.9/VDAFS 1.3.3/STEP 1.1.9/SAT 1.0.4/OpenNurbs 1.0.4  

  • VDAFS: Tweaked around the locations of the included Nlib/Advanced Nlib functions a tad. 2004/02/09.
  • openNURBS: In cases where we create a curve on surface for an edge's 3D curve, try to use the simplest surface which the edge touches. 2004/02/09.
  • Only perform the curve on surface force to base parameterization if the surface is a NURBS surface. (Technically it would be better if we had some way of seeing which p-space coordinates of a surface where hard.) 2004/02/09.
  • Changed CleanGeneratedEdgeCurves to use N_toocsg rather than IwBSplineCurve::Trim, as the latter has sanity checks which make it impossible to trim off very very short segments, which of course was the entire point of calling Trim in the first place. 2004/02/08.
  • Fixed the goofed-up curve versus edge parameterization code in CleanGeneratedEdgeCurves. 2004/02/08.
  • In curve on surface evaluation, force UV point gained by evaluating the curve into the surface's UV space. 2004/02/08.
  • openNURBS: When possible, include parameter curves in edgeuses. 2004/02/06.
  • openNURBS: Added beginning of HwImportOptions framework. 2004/02/06.
  • Added the HwTSLibTrimmingTools::CleanGeneratedEdgeCurves, which goes through edges generated after parameter space trimmed surface construction and tries to fix up illegal or stupid curves. In the process, created a 3D version of the ReplaceCurveWithStraight function. 2004/02/05.
  • VDAFS: Switch the VDA-FS translator to write out B-reps instead of trimmed surfaces. Both should yield VDA-FS FACE entities, but the B-rep version should have much nicer trimming loops. 2004/02/05.
  • Moved a variable declaration to kill a compiler warning. 2004/02/05.
  • VDAFS: Modified N_appgsa in an attempt to work around the uninitialized variable problem in the test around U_surcmp. 2004/02/04.
  • Realized that the last memory leak I patched was actually one I'd patched before, then removed because IwBrepData stopped leaking the memory. After consideration, have added HW_IWBREPDATA_M_PATTRIBUTES_LEAKS define flag -- if it is defined, the memory leak fixes in HwTSLibNlibObject.cpp will be activated. If it is not defined (and it is not, by default), the code assumes that IwBrepData doesn't actually leak. 2004/02/04.
  • Work around for the m_pAttributes memory leak in IwBrepData. 2004/02/04.
  • openNURBS: Changed the export facility to take advantage of the new HwTSLibViaNlibExporter functionality. 2004/02/03.
  • SAT: Use the new HwTSLibViaNlibExporter facility to specify that trimmed surfaces should be output as open B-rep faces. 2004/02/03.
  • Output hw_convert and hw_dump to the Winlibs directory. 2004/02/03.
  • Added optional argument to HwTSLibViaNlibExporter which allows you to indicate that trimmed surfaces should be written out as single-faced B-rep entities, as is needed for SAT and openNURBS. 2004/02/03.
  • When cleaning up the HwStringMap, delete was called to delete a string of chars. Of course it should have been delete []. 2004/02/03.
  • Force all NMT B-reps to be exploded on import. 2004/02/02.
  • Merged the two different trimmed surface functions (create and convert) in HwNlibToTSLib. 2004/02/02.
  • Merged HwNlibToTSLib::CreateBrep and HwNlibToTSLib::CreateNMTBrep to HwNlibToTSLib::CreateSolid, then replaced the existing code with calls to HwNlibToTSLib::ConvertSolid and PassTopologyObjects. 2004/01/29.
  • Added functions PassTopologyObject and PassTopologyObjects to the interface. PassTopologyObject is a simple tweak on the old HwTSLibReceptacleInterfaceReceptacle::PassObject function to allow it to be used by everyone. PassTopologyObjects calls PassTopologyObject for every topology object in a vector. 2004/01/29.
  • Added new HwNlibColor default constructor. 2004/01/29.
  • Merged the high-level control for B-reps and NMT B-reps because they were (or at least, should have been) basically the same function with a single different call into the low-level code. 2004/01/29.
  • Made the high-level NMT conversion code work like the standard B-rep code. They should eventually be merged together, once NMT works properly. 2004/01/29.
  • VDAFS: Added the code to write rational surfaces for those without Advanced Nlib. (Code is mostly copyright GeomWare/Solid Modeling Solutions.) 2004/01/28.
  • VDAFS: Took the (now unneeded) HW_USE_ADVANCED_NLIB wrapper off from the CONS curve writing code. 2004/01/28.
  • VDAFS: Added the GeomWare/SMS function for converting a rational curve to a non-rational and its support functions, to be compiled only if Advanced Nlib is not present. 2004/01/28.
  • VDAFS: Modified the CONS code to work, too. 2004/01/28.
  • VDAFS: Added GeomWare/Solid Modeling Solutions N_gprsnp as hw_N_gprsnp, and modified SURF code to use it. 2004/01/28.
  • VDAFS: Added GeomWare/Solid Modeling Solution function N_gprcnp as hw_N_gprcnp, and used it to simplify the CURV writing code. 2004/01/28.
  • VDAFS: Made similiar modifications to get the SURF entity working. 2004/01/28.
  • VDAFS: Switched CONS builder to use the new hw_N_gprcpn function. 2004/01/28.
  • VDAFS: Added N_gprcpn (Copyright Solid Modeling Solutions) to code, tweaked slightly to use a tolerance which is passed in rather than MTOL. 2004/01/28.
  • VDAFS: Attempted to add N_cplrep for users without Nlib. 2004/01/27.
  • Factored out the static AddTypeAttribute helper function. Switched CreateExplodedBrep to take HwNlibAbstractSolid rather than HwNlibBrep. 2004/01/27.
  • Re-arranged the handling of _T and friends, in a way uses fewer lines of code and will hopefully work better for all platforms. 2004/01/26.
  • Tried moving include of iwos_extern so that HwCommon.h has IW_VERSION_NUMBER available the first time it is included. 2004/01/23.
  • Blocked out another GetWireEdges for old versions of TSLib. 2004/01/23.
  • Tweaked to handle the lack of GetWireEdges in old versions of TSLib. 2004/01/22.
  • STEP: Do not process negative surface side color data. 2004/01/22.
  • In MergeAttributeLists, try taking color from inner, then (if it is not present there) outer. 2004/01/22.
  • Fixed up the area calculation, so that it won't try to take the square root of a negative number if the triangle is just a slit. 2004/01/20.
  • Use the entity's ID attribute for an ID if no ID is passed into the create function. 2004/01/16.
  • SAT: Delete assemblies created reading an SAT file. 2004/01/16.
  • SAT: Store a copy of each assembly instance generated, to keep the contained assembly safe from deletion while the file is being read. 2004/01/16.
  • Predeclared an HwStdVector of HwNlibAssemblyInstances. 2004/01/16.
  • STEP: Invert a degenerate torus whenever "select_outer" is false (previously only inverted if select_outer was false and the torus was not properly declared degenerate). 2004/01/13.
  • SAT: Only allow Autodesk colors from 0-255. 2004/01/13.
  • SAT: Report entity counts at the beginning of the SendToInterface function. 2004/01/13.
  • SAT: Try to add some heartbeats. 2004/01/13.
  • SAT: Count BODYs instead of a base class which can probably never be instantiated. 2004/01/13.
  • SAT: Implemented a first stab at the AutoCAD/Autodesk color attribute. 2004/01/12.
  • Changed the order of the operations in FindTolerance to make the Microsoft optimizer happy in the POPLib version of the libraries. (Mind you, the order should have made absolutely no difference...) 2004/01/12.
  • Solomon Foster married Jennifer Schupska, 2004/01/03.
  • Fixed a very stupid bug that made the face->tolerance double each time the FindMaxLoopDistanceToFace was called on a given face. 2003/12/28.
  • Allow the use of the new MakeOpenFaces function instead of the MakeTrimmedSurface function in the exploded B-rep creation code. (However, it is still set to use MakeTrimmedSurface for the moment.) 2003/12/15.
  • Added MakeOpenFaces function to convert a solid to a collection of single-faced open-face B-reps. 2003/12/15.
  • Improvements (possibly forlorn) to the face tolerance patch. 2003/12/12.
  • Made HwNlibReparameterizedCurve a touch smarter. 2003/12/12.
  • When splitting a face, if the face tolerance is greater than 3D tolerance, use it as 3D tolerance. 2003/12/11.
  • Hacked FindMaxDistanceToFace to actually change the face tolerances instead of returning a value. 2003/12/11.
  • Transfer face and edge tolerances to IwBreps, and enforce the unwritten IW tolerance rules (vertex_tol >= edge_tol >= face_tol). 2003/12/11.
  • STEP: Factored code slightly. 2003/12/11.
  • Added HwNlibOffsetSurface::GetMinMaxBox. 2003/12/10.
  • SAT: Fixed logical problem in offsur. 2003/12/10.
  • SAT: Try to handle flags in the offsur code. 2003/12/09.
  • SAT: Added support for offset surfaces (offsur). 2003/12/09.
  • If, during SplitAtSeams, no loops cross seams and we have an outer loop, skip the rest of splitting code. (This should be faster for this case, and allows the case where we mistakingly find two outer loops to skip by to other code which is more forgiving.) 2003/12/09.
  • Added test project for POPLib. 2003/12/09.
  • Switched ostream to HW_STD::ostream. 2003/12/09.
  • Properly intialize face tolerance. 2003/12/08.
  • Turned off the FindMaxDistanceToFace patch, because it was producing dubious results. 2003/12/08.
  • STEP: Improve STEP face debugging output a tad. 2003/12/02.
  • Try for smarter handling of face and shell attributes when converting a B-rep to trimmed surfaces. 2003/12/02.
  • Allow FindMaxLoopDistanceToFace to work even if some curves cannot return their parameterization. 2003/12/02.
  • Implemented FindDistanceToSurface for HwNlibReparameterizedSurface, HwNlibSwappedSurface, HwNlibIgnoreParameterizationSurface, and HwNlibInvertedSurface. 2003/12/02.
  • Implement HwNlibSphere::FindDistanceToSurface. 2003/12/02.
  • More intelligent handling of small ellipses. 2003/12/01.
  • Make changes to the B-rep tolerance filter up to the rest of the translation. 2003/11/27.
  • Use FindMaxLoopDistanceToFace to see if tolerance is too small on B-reps, and increase the tolerance if it is. 2003/11/26.
  • Added FindMaxLoopDistanceToFace function. 2003/11/26.
  • Added interface for finding the distance from a point to the surface, and a couple of simple implementations of the routine for special analytic cases. 2003/11/26.
  • SAT: Write the blanked attribute. 2003/11/26.
  • SAT: Added support for display_attribute in the case where it means the entity is blanked. 2003/11/25.
  • SAT: Added display_attribute. 2003/11/25.
  • STEP: Add IDs to mapped_items, so that you can track which map each object has gone through. If there is more than one shape_definition_representation for a given product, only map the first one encountered to the product. This fixes a weird situation we have only seen once. 2003/11/25.
  • Dump the comment attribute. 2003/11/24.
  • SAT: Added support for the Nlib/TSLib comment attributes via a new SAT type, comment-harmonyware-attrib. 2003/11/24.
  • Make the generic fallback for writing entities not supported by a given translator a successful no-op rather than an error. This makes writing generic assembly export code much more reasonable. 2003/11/24.
  • SAT: Added framework for writing attributes to SAT file, and the basic color attribute. 2003/11/24.
  • SAT: Added second SAT color type. 2003/11/24.
  • SAT: Tweaked the attribute code a bit and added attributes on faces. 2003/11/24.
  • SAT: Attached attribute conversion to BODY entities. 2003/11/23.
  • SAT: Added framework for processing SAT attributes, plus the color attribute. 2003/11/23.
  • SAT: Switched the names of the new classes. 2003/11/23.
  • SAT: Added attribute base, st attribute base, and rgb color attribute. 2003/11/23.
  • Properly locate, scale, and annotate HwAssemblyInstances converted from IwAssemblyInstances. 2003/11/21.
  • Actually got around to implementing the HwAssemblyInstance::Scale function. 2003/11/21.
  • STEP: Try to eliminate inlined functions from the HwStepAuto.h header, both implicit and explicit. 2003/11/20.
  • STEP: Slightly rewrite the STEP object creation code so that the huge statement with all the if's is much shorter. 2003/11/20.
  • Make sure face errors are reported. 2003/11/19.
  • Prevent errors from writing out one polygon in a tesselation from killing the entire remainder of the tesselation process. 2003/11/19.
  • SAT: Allow the user to set the SAT version to write. WARNING -- 99.9% of the SAT export testing has been using the default 5.0 setting. 2003/11/17.
  • Add another wrapper to deal with older versions of TSLib. 2003/11/14.
  • Made the table mapping IwAssemblies to HwNlibAssemblies last for the duration of the HwTSLibViaNlibExporter. 2003/11/14.
  • IGES: Make sure that if the export object is referencing an HwNlibAssembly pointer, it will not be deleted before the export object is destroyed. 2003/11/14.
  • Handle tolerance detection in assemblies. 2003/11/12.
  • Switched export functions to use new tolerance calculation code. 2003/11/11.
  • Start of overhaul of tolerance control for export functions. 2003/11/11.
  • Added assembly output to the standard export functions. 2003/11/11.
  • Changed IwContext parameter to const reference on BrepClean function. 2003/11/11.
  • Changed IwContext parameter to const reference on BrepClean function. 2003/11/11.
  • Added first stab at TSLib assembly -> Nlib assembly code. Not actually hooked up to anything yet. 2003/11/11.
  • Patched memory leak. 2003/11/10.

Changes for IGES 1.4.8/VDAFS 1.3.2/STEP 1.1.8/SAT 1.0.3/OpenNurbs 1.0.3  

  • Properly handle NMT B-reps in the new TSLib assembly setup. 2003/11/06.
  • Update TSLib assembly code to work with the very latest IntegrityWare code, and use a compile-time test against the IW version to turn off the TSLib assembly code when using older versions of the IW libraries. 2003/11/04.
  • Copy the attributes properly on composite curves. 2003/11/04.
  • STEP: When making an assembly instance, use the next_assembly_usage_occurrence ID as the assembly instance's ID. 2003/11/04.
  • Debugging assembly dumping tools added. 2003/11/04.
  • When replacing a piecewise linear curve with a smooth, keep the attributes of the original curve. 2003/11/03.
  • Added function which treats an array of curves as one. 2003/11/03.
  • Use the new IW_AIH_NLIB_MAJOR_TYPE info to sort IwBreps into their proper types when unpacking a TSLib assembly. 2003/11/03.
  • Added new IW_AIH_NLIB_MAJOR_TYPE attribute type to store information about the HwNlibObject type that makes up the components in an IwAssembly (as everything in there needs to be stored as IwBreps). 2003/11/03.
  • Allow for rescaled coordinate systems in the TSLib assembly code. 2003/11/03.
  • Added a fudge factor to the ellipse code to prevent a very obscure bug involving 80-bit floats compared with 64-bit floats... 2003/11/02.
  • SAT: Add IDs to loose edges and shell components. 2003/11/01.
  • SAT: Added IDs to body output. 2003/11/01.
  • Added IwVertex declaration so that you don't have to load that header first to make everything happy. 2003/10/31.
  • When processing a TSLib assembly to unpack it, unpack points and coordinate systems. 2003/10/31.
  • Include coordinate systems in TSLib assemblies. 2003/10/31.
  • VDAFS: Fixed HwVdafsIdentifier::SetAsOwner, too. 2003/10/30.
  • Fixed the HwIdentifierNumbers::SetAsOwner function to work cumulatively if the current ID already has an owner. 2003/10/30.
  • When unpacking an HwNlibCollection in an assembly context, make sure that the entities in the collection inherit the collection's attributes. 2003/10/30.
  • Added two template functions to simplify the process of creating a new ID with the same type another ID. 2003/10/30.
  • IGES, SAT, openNURBS, STEP: Near complete reworking of the ID classes. Moved the IGES (ie numeric) ID to a new generic base class, then subclassed all the other numeric ID types from it. Added several functions to the base class description as well. 2003/10/30.
  • Process containers of objects in TSLib assemblies. 2003/10/29.
  • For some obscure reason, the two different collection types -- HwNlibIgesCollection and HwNlibVdafsCollection -- have always shared one one type define. Historically, this worked okay, but it's not really practical with the much more translator-generic HarmonyWare code of today. So there are now two defines: HW_NOMT_MAJOR_TYPE_NUMBERED_COLLECTION for HwNlibIgesCollection and HW_NOMT_MAJOR_TYPE_NAMED_COLLECTION for HwNlibVdafsCollection. 2003/10/28.
  • SAT: Write units info when exporting. 2003/10/27.
  • SAT: Move the SAT HwHeaderInfo code into HwNlibSatProcessor, and add units. 2003/10/25.
  • STEP: Allow for different capitalization of broken assembly name. 2003/10/24.
  • STEP: Additional debugging output (turned off) for assemblies. 2003/10/23.
  • In the new assembly code, when unpacking a IwCurve from a wire IwBrep, transfer the IwBrep's attributes to the IwCurve. 2003/10/22.
  • In the new assembly code, put the HwNlibPoint or HwNlibCurve's attributes on the IwBrep that is created, so that they are properly merged with the other attributes in the assembly. 2003/10/22.
  • STEP: Changed the handling of certain illegal degenerate toroidal surfaces. (Namely those with negative major radii.) 2003/10/21.
  • Give IwAssemblyInstances their proper names. (Note that the name attribute on the IwAssemblyInstance will be identical to the IwAssemblyInstance's name field!) 2003/10/20.
  • Added a few more attribute types and a rough start to IwBrep dumping. 2003/10/20.
  • Fixed up to not try to compile the new TSLib assembly code if TSLib assemblies are turned off. 2003/10/18.
  • Added code for dumping a curve's end points and bounding box. 2003/10/17.
  • Properly handle scaling when disassembling assemblies. When disassembling an IwAssemblyInstance, turn wire edges back into curves. 2003/10/16.
  • Properly handling scaling of assemblies. 2003/10/16.
  • Added support for recognizing (but not yet doing using things with) left-handed coordinate systems in assemblies. 2003/10/16.
  • Properly trap errors creating TSLib assembly instances. 2003/10/15.
  • In cases where the parameter space loops are usable (and look okay) and the parameter space loops are all iso curves, prefer parameter space curves over model space curves. 2003/10/15.
  • IGES, VDAFS, STEP, SAT openNURBS: Added new optional array-based assembly interface to standard array import function. 2003/10/15.
  • Add support for first-classs assemblies to HwTSLibSimpleReceptacle. 2003/10/14.
  • openNURBS: Handle the case of the B-rep with no shells. 2003/10/14.
  • When trim loop ordering is supposedly correct, check to see if the first (ie supposedly outer) loop contains the second loop. If it doesn't, go through the loops looking for a loop which does contain it, and make that the outer loop. 2003/10/14.
  • If a trimmed curve would be way too short by parameter values, and of reasonable length (not too long, more than 1e-5 in length) in model space, substitute a straight between the trimming points. 2003/10/13.
  • Handle some marginal B-rep creation cases (like no successful faces) without crashing. 2003/10/13.
  • Backed out the curve length change. It was reported to be causing trouble, and after latter changes, didn't do any perceptable good. 2003/10/10.
  • STEP: Detect and avoid recursive loops when counting entities in the file. 2003/10/10.
  • When trying to smooth a piecewise linear curve, always check to make sure the piecewise version of the curve does not have any doubled control points. 2003/10/07.
  • STEP: Try to smarten up the STEP transformation creation code. 2003/10/06.
  • Reworked a lot of the TSLib assembly code. Code is still in a transitional state. 2003/10/06.
  • Added HwNoIdentifier class, for those cases where we need an ID and there isn't one handy. 2003/10/02.
  • Moved the point, assembly, and generic object to topology functions from HwNlibObjectToTSLib to HwNlibToTSLib as first stage of reorganization. 2003/10/02.
  • Switched the HwNlibToTSLib functions from virtual to normal functions. (They appeared to be left over from a different design of the translators.) 2003/10/02.
  • Added HW_NO_TSLIB_ASSEMBLIES control to allow turning TSLib assemblies off. 2003/10/01.
  • Attach the proper ID to entities output from TSLib assembly flattening (if possible). 2003/09/30.
  • When making the NURBS version of an offset surface, reparameterize it so that the NURBS surface output matches the parameterization of the NURBS form of the base surface. 2003/09/30.
  • When exporting B-reps from TSLib, skip non-shell faces rather than signaling an error. 2003/09/30.
  • Improved error message for assembly problems. 2003/09/29.
  • Added new FindAttribute helper template function. 2003/09/29.
  • Add trial support for offset infinite surfaces. 2003/09/29.
  • Trap and report errors in assemblies in TSLib code. 2003/09/29.
  • Use GetAttributeID instead of GetType to get the attribute ID. 2003/09/29.
  • When converting assemblies from Nlib to TSLib, convert the attributes of each assembly instance. 2003/09/29.
  • First stab at merging TSLib attributes when unpacking assemblies. 2003/09/29.
  • Wire up a first stab at the new assembly handling code. 2003/09/27.
  • Added new PassAssemblyInstance to the HwTSLibReceptacleInterface. This allows TSLib users to get high-level assembly information. The default interface for it just disassembles the assembly into its proper components. (The default interface does not handle atributes properly yet.) 2003/09/27.
  • Optimization in RemoveIntersectionsFromCurves code which help when the loop has a very large number of curves. 2003/09/16.
  • Tweaked for last version of MSVC++. 2003/09/12.
  • When creating an exploded B-rep, give the overall B-rep the same attributes as the source B-rep. 2003/09/10.
  • Added class predeclaration for IwFace. 2003/09/10.
  • Added prototpying stuff needed for HwImportOptions::input_source. 2003/09/10.
  • Added ShouldAllSolidsBeExploded interface. Switched HwPolygonExportingReceptacle to use this instead of ShouldAllSolidsBeSolids. 2003/09/09.
  • Refactored HwNlibToTSLib::CreateBrep. Used refactored code to add support for new ShouldAllSolidsBeExploded interface in CreateBrep. 2003/09/09.
  • SAT: Use input_source from options to override the normal low-level file reading code, if specified. 2003/09/08.
  • Added AttachInput to not-quite-low-level file reader. Added input_source member to HwImportOptions. (Only implemented for SAT so far.) 2003/09/08.
  • SAT: Added AttachInput option to reading code. 2003/09/08.
  • SAT: Added HwImportOptions to all the read functions (other than the legacy TSLib read functions). 2003/09/08.
  • Introduced the HwLowLevelAsciiInput virtual base class, with an implementation named HwLowLevelAsciiFileInput, to create a low level input layer which might be something other than a file. Then reimplemented HwLowLevelAsciiReader to work receiving its input from an instance of HwLowLevelAsciiInput. 2003/09/05.
  • Added vertex point info and edge edgepoint info to the solid dump debugging code. 2003/09/05.
  • Tweaked transform transform scaling check slightly. 2003/09/05.
  • IGES: If a 308 subfigure tries to incorporate objects with DE 0, don't bother trying to process the object -- simply issue the "cannot create object DE 0" message. 2003/09/04.
  • When converting a B-rep into a batch of trimmed surfaces, give each trimmed surface the B-rep's name rather than the face's name. 2003/08/29.
  • Removed _USRDLL from the automatic project/makefile generator, as it seemed to be causing problems for one customer. 2003/08/27.
  • Moved the error notifying up a notch, so that it gets called before the B-rep cleanup code gets called. 2003/08/26.
  • Rewrote error handling again. 2003/08/26.
  • Added SucceessfullyOutput functions to HwPolygonExportInterface, to allow clients of the interface to detect whether or not the face/B-rep was completely written. 2003/08/26.
  • Added new cleaning function for external use. 2003/08/26.
  • Backed out the last changes. 2003/08/26.
  • Check for errors outputting polygon data. 2003/08/25.
  • Imported some POPLib code so we can fix it. 2003/08/25.
  • IGES, VDAFS: If you're using Standard C++ iostreams, check for errors writing file. 2003/08/23.
  • IGES, VDAFS: Added HW_STD to two instances of ofstream. (How did these get missed before?) 2003/08/21.
  • Further tweak to the old TSLib updates. 2003/08/20.
  • Changes to allow the code to work with older versions of TSLib. 2003/08/20.
  • IGES: Added checks for problems writing the file to the disk. 2003/08/20.
  • Expose the IwStatus to string function to the entire world. 2003/08/20.
  • Added new error message to indicate problems writing a file, and used it for HwLowLevelAsciiWriter (ie STEP and SAT). 2003/08/20.
  • Another optimization. 2003/08/14.
  • Another tweak. 2003/08/14.
  • Tweaks. 2003/08/14.
  • Fixes for new code. 2003/08/14.
  • Moved ComputeLoopOrientations to HwTSLibTrimmingTools. 2003/08/13.
  • Make the CheckFace code use the new ComputeLoopOrientations function. 2003/08/13.
  • Added what I believe is a check for slit loops. 2003/08/13.
  • Incorporates code to calculate the orientation of every loop on a face at once, and tests it against the old method. 2003/08/13.
  • Allow HwPolygonExportingReceptacle to not try to rescale the model by specifying HW_U_NO_UNITS_SPECIFIED as the units desired. 2003/08/11.
  • STEP: Worked around ProE assembly naming bug. 2003/08/10.
  • STEP: Tweaks to error handling. 2003/08/06.
  • Modified so that it works with TSLib (no IwPoly.h or IwTess.h). 2003/07/22.

Changes for IGES 1.4.7/VDAFS 1.3.1/STEP 1.1.7/SAT 1.0.2/OpenNurbs 1.0.2  

  • SAT: Added rule for non-manifold shells back in. 2003/07/20.
  • SAT: Switch body from using NMTBrep to Assembly where there are multiple shells. 2003/07/20.
  • Added function to return HwUnits names as a string in (American) English. 2003/07/17.
  • Rearranged HwPolygonExportingReceptacle member variable and constructor list a bit. Added code to support scaling to units. 2003/07/17.
  • Removed \0 that had snuck in somehow. 2003/07/14.
  • When converting a solid face to a trimmed surface, if all the loops are vertex loops, mark the surface as having natural outer loops. 2003/07/14.
  • Simplified and rearranged the HwPolygonExportInterface a touch. 2003/07/13.
  • IGES,VDAFS: Explicitly qualified uses of ofstream. 2003/07/12.
  • openNURBS: Added #define to turn off ON_nil_uuid if needed. 2003/07/11.
  • SAT: Removed very obsolete files. 2003/07/11.
  • Modified the attribute classes so that they have real types (instead of just lying and claiming they were IwVector3dAttributes). 2003/07/10.
  • openNURBS: Changed headers so that HwTSLibOpenNurbs.h can get the version number from HwOpenNurbs.h without loading in all the opennurbs headers. Eliminated dead code from HwOpenNurbs.h. 2003/07/10.
  • Change HwMessageLogger class so that it can accept an external ostream and output to that. Removed "using ofstream" and explicitly qualified all the uses of ofstream as HW_STD::ofstream. 2003/07/10.
  • STEP: Added template predeclarations. 2003/07/09.
  • Predeclare some more useful vector types. Tweak the definition of the predeclare macro so it can handle vectors of template classes. 2003/07/09.
  • STEP: Changed all the generated classes to use IW_EXPORT. 2003/07/09.
  • Automatically turn off the annoying MSVC++ 7.1 Koenig lookup warning. 2003/07/09.
  • Converted char * to HwStdString a number of times in the polygon export code. 2003/07/09.
  • Switched HwPolygonToSTL to the more generically useful HwPolygonExportWrapper. 2003/07/08.
  • IGES: Updated documentation a tad. 2003/07/08.
  • Marked HwPolygonExportingReceptacle IW_EXPORT. 2003/07/07.
  • Added HwPolygonExportInterface::CompletedOutput function. Added HwPolygonExportToSTL class. 2003/07/07.
  • First cut at including geometry to polygon code into the core. 2003/07/07.
  • Fixed for Standard C++ headers. 2003/07/03.
  • SAT: Don't "fix" 0.0 edge tolerance to 1e-6 edge tolerance; the two things have different meanings. 2003/07/03.
  • Fixed insanely stupid typo in HwNlibSURFACE::CanEvaluateDeriv. 2003/07/03.
  • Reflect the move of N_surder into mNlib package. 2003/07/02.
  • SAT: Tolerance sanity check. 2003/07/02.
  • Filter out weird GCC 3.2 psuedo-files from the dependency list. 2003/06/30.
  • Use HarmonyWare evaluation tools before trying TSLib LiftCurve. 2003/06/30.
  • Fixed error in HwNlibCone::EvaluateDeriv. 2003/06/29.
  • Fixed HwNlibSolidLoop::FixUVHoles to handle the case where the edge before a new vertex edgeuse is backwards. 2003/06/29.
  • openNURBS: Fixed bug in handling of vertex edgeuses. 2003/06/29.
  • SAT: Scale parameters on plane correctly. 2003/06/28.
  • Rewrote the code for converting a parameter space only trimmed surfaced to a model space trimmed surface using curves on surface. Added experimental code to try this automatically if there are no model space loops and a trim fails, but the experiment is turned off. 2003/06/28.
  • Added BreakUpCurve function. 2003/06/28.
  • Added body for HwNlibSURFACE::EvaluateDeriv. 2003/06/28.
  • Refactored HwNlibSURFACE::CanEvaluate a bit. 2003/06/28.
  • Removed some obsolete code. 2003/06/28.
  • Added changes from Gary which add a #define (IW_TRANSLATORS_LIBERAL) which makes the translator import correctness checks looser. 2003/06/28.
  • Loosened tolerance in check for near singularity. 2003/06/27.
  • Loosened 2D tolerance a bit for HwTSLibTrimLoop2d::FillInGaps. 2003/06/27.
  • Properly initialize solid edge tolerance. 2003/06/27.
  • Don't try to insert an empty vector of knots. 2003/06/26.
  • SAT: Switched handling of scaled u values on proper cones. Added some debugging tests (currently switched off). 2003/06/26.
  • Improved debugging tools. 2003/06/26.
  • Added HwNlibCurve::GetTypeString functions. 2003/06/26.
  • SAT: Handle the case of a torus which has negative major radius. 2003/06/24.
  • Import edge tolerance from HwNlibBrep to IwBrep. 2003/06/23.
  • Adding tools for cleaning/simplifying HwNlibCurves (including those in the edges of a B-rep) by running them through TSLib. This should convert any and all far out types to simple NURBS. 2003/06/23.
  • Added non-const version of HwNlibSolidComponent::GetEdge. 2003/06/23.
  • IGES,STEP: Use the new NormalizeWeightsIfOutOfRange function when importing NURBS curves. 2003/06/22.
  • Added curve version of NormalizeWeightsIfOutOfRange function. 2003/06/22.
  • If HW_USE_STANDARD_LIBRARY is defined, force HW_STD to be "std". 2003/06/22.
  • Added #undef ERA so it would compile under GCC 3.2.2. 2003/06/20.
  • SAT: Another fix to the reverse_v/reversed_v messup. 2003/06/13.
  • Allow slop in HwNlibCURVE::EvaluateDeriv. 2003/06/13.
  • Added HwNlibCone::EvaluateDeriv, and cleaned up HwNlibCylinder::EvaluateDeriv. 2003/06/13.
  • Added HwNlibPlane::EvaluateDeriv. 2003/06/13.
  • Discovered we needed to add the endpoints before calling ApproximateCurve. 2003/06/13.
  • Added new rule to use IwCurve::ApproximateCurve to calculate the CurveOnSurface value if the HwNlibSurface does not have NURBS parameterization. 2003/06/13.
  • Added HwNlibCurveOnSurface::EvaluateDeriv function. 2003/06/13.
  • Added HwTSLibCurveInternalNlib class for aid in handling the dreaded curve on surface problem. 2003/06/13.
  • Avoid crash deleting non-existent curves if DropCurve fails. 2003/06/12.
  • SAT: When creating an HwNlibCurveOnSurface, bind the surface if it is infinite, using the UV domain of the UV curve. 2003/06/12.
  • SAT: Factored out code for creating curves on surfaces. 2003/06/12.
  • SAT: Added blendsupcur type to type rules. 2003/06/12.
  • SAT: Switch MakeCurve functions to return autoptrs. 2003/06/12.
  • Added UV-based BoundInfinite member to the HwNlibSurface family of classes. 2003/06/12.
  • Corrected the magnitude on the HwNlibSurface::EvaluateDeriv results. 2003/06/12.
  • Allow infinite HwNlibSurfaces to be used to lift curves. Bypass LiftCurve continuity checks. 2003/06/11.
  • Added EvaluateDeriv functions for inverted, swapped, and reparameterized surfaces. 2003/06/11.
  • Added EvaluateDeriv for HwNlibCylinder. 2003/06/11.
  • Glue together the HwNlibExporterInterface::InterfaceRequiresSyncedUVCurves and HwTSLibToNlibObject::SetRequiresSyncedUVCurves so that B-rep export uses the proper settings for each translator. 2003/06/10.
  • Add SetRequiresSyncedUVCurves/GetRequiresSyncedUVCurves members to HwTSLibToNlibObject, and used them in HwTSLibShellExporter::ConvertBrep to control whether or not the UV correction code is called. 2003/06/10.
  • Added virtual function InterfaceRequiresSyncedUVCurves to the export interface. This allows each interface to specify whether it needs cleaned up UV curves for B-rep export. 2003/06/10.
  • Use HwNlibSurface::GetTypeString to diagnose the type of surface involved if we have an HwNlibCurveOnSurface and the surface cannot calculate derivatives. 2003/06/10.
  • Added HwNlibSurface::GetTypeString function for all HwNlibSurface classes. 2003/06/10.
  • Have HwNlibObjectToTSLib::ConvertCurveOnSurface use HwTSLibSurfaceInternalNlib (if possible) if the surface does not have proper NURBS parameterization. 2003/06/10.

Changes for IGES 1.4.6/VDAFS 1.3.0/STEP 1.1.6/SAT 1.0.1/OpenNurbs 1.0.1  

  • SAT: Turn surfcurs off -- always use exactcurs for now. 2003/06/03.
  • SAT: Reverse a pcurve's curve if the face orientation is reversed, and swap and negate its parameter values if the coedge orientation is reversed. 2003/06/02.
  • SAT: Get proper orientation on pcurve surface reference. 2003/06/02.
  • SAT: Switched the ExpParcur to use MakeCopy to copy its surface. 2003/06/01.
  • SAT: First attempt to use new MakeCopy facility. 2003/06/01.
  • SAT: Added BSplineCurve and BSplineSurface ::MakeCopy functions. 2003/06/01.
  • SAT: Added CopyTo and MakeCopy members to the SAT classes. 2003/06/01.
  • SAT: Register subtypes so they are deleted properly. 2003/06/01.
  • SAT: Added HwSatFile::AddSubtype so you can register subtypes to be properly deleted. 2003/06/01.
  • SAT: Changes to pcurve orientation. 2003/06/01.
  • SAT: Added FillInIntcur function to interface. 2003/05/31.
  • SAT: Added renumbering facility to HwSatData/HwSatFile. 2003/05/31.
  • SAT: Try writing intcurs as surfcurs. Several minor bounds modifications. 2003/05/31.
  • SAT: Indicate that closed surfaces are periodic rather than just closed. Output 1, 0 as surface bounds. (Don't know why, exactly, but it's what the files from ACIS seem to do on normal exactsurs.) 2003/05/30.
  • SAT: Calculate singularity info on surfaces so that it can be properly output. 2003/05/30.
  • SAT: Changed BSpline surface class to have (string) members with singularity info, and use those for I/O. 2003/05/30.
  • Changed SplitAtSeams to treat a single loop classified as "unknown" as if it is an outer loop (which seems to be the more common case). 2003/05/28.
  • When trimmed curves off the surface forces a new tolerance, make the new tolerance half the distance from the curve to the surface rather than twice the distance. 2003/05/28.
  • Include the curve length in the logfile when deleting degenerate 3D curves. 2003/05/28.
  • SAT: Export curves as wire bodies or wire shells, as appropriate (I hope!) for the version of ACIS which the file is targeting. 2003/05/27.
  • SAT: Support importing curves from wire data, whether it is a wire body or a wire shell. 2003/05/27.
  • When exporting a B-rep, call FixUVParameterization to make sure the parameterizations of the 3D edge and UV edge cover the same range. 2003/05/27.
  • Added FixUVParameterization function to solid components interface. 2003/05/27.
  • SAT: Added LawData and Lawintcur classes. 2003/05/22.
  • SAT: Added HwSatLawDataWrapper class. 2003/05/22.
  • When doing all-parameter-based curve trimming, check to see if we can simply use the entire curve. Force HwNlibCURVE::Evaluate parameter value to the curve's parameter space. Allow a bigger tolerance for detecting closed curves. 2003/05/19.
  • In MakeEllipse, check for end points (as projected on ellipse) very close together, and assume the entire ellipse is desired if they are. 2003/05/15.
  • SAT: Changed the plane reading code to automatically accept both reverse_v and reversed_v no matter what the version of the ACIS file is. 2003/05/15.
  • SAT: Fixed the real memory leak this time. 2003/05/14.
  • SAT: Undid the last fix, which turned out to be wrong. 2003/05/14.
  • SAT: Plugged two memory leaks. 2003/05/14.
  • Fixed memory leak. 2003/05/14.
  • openNURBS: Change ProcessSurface to return HwStdAutoPtr, plugging a memory leak in the process. 2003/05/14.
  • openNURBS: Changed ProcessBrep to return a HwStdAutoPtr, and eliminated memory leaks in the process. 2003/05/14.
  • openNURBS: Changed ProcessCurve to use HwStdAutoPtr, plugging a few memory leaks in the process. 2003/05/14.
  • openNURBS: Change ProcessPoint to return an HwStdAutoPtr instead of a raw pointer, helping to plug a memory leak. 2003/05/14.
  • openNURBS: Cleaned up memory leak. 2003/05/14.
  • openNURBS: Don't read the Z coordinates in a NURBS curve unless the curve has more than two dimensions. 2003/05/14.
  • Cleaned up new memory leak. 2003/05/13.
  • Changed HwTSLibSurfaceInternalNlib::Evaluate to return the UV derivative if requested. 2003/05/13.
  • Changed HwNlibSurface::EvaluateDeriv to return UV derivative too. 2003/05/13.
  • Refactored the curve lifting code. 2003/05/13.
  • Added EvaluateDeriv to HwNlibStraight. 2003/05/08.
  • Added HwTSLibSurfaceInternalNlib class, to allow us to lift curves to HwNlibSurfaces which can be evaluated. Implemented code to try to do so if there are no usable loops on a surface (ie parameter only and the surface does not have NURBS parameterization and the library is not using Advanced Nlib). 2003/05/06.
  • Added CanEvaluateDeriv and EvaluateDeriv interface to base class, and implemented them for HwNlibSurfaceOfRevolution. 2003/05/06.
  • Added CanEvaluateDeriv and EvaluateDeriv interface to the base class, and implemented them for the HwNlibCURVE class. 2003/05/06.
  • Changed comment to indicate that HW_USE_STANDARD_STREAMS now works. 2003/04/26.
  • Add facility to allow whitespace in double values in standard ASCII files (needed by STEP). 2003/04/25.
  • Added HW_STD:: to uses of ostream. 2003/04/25.
  • Modified to eliminate "using cerr". 2003/04/25.
  • Modified to use new-style header for new.h if HW_USE_STANDARD_STREAMS has been defined. 2003/04/25.
  • TrimAroundCurve and attendant patches for HwNlib3DTrimmedCurve::MakeNurbs. 2003/04/24.
  • Only perform singularity check in HwTSLibIwFaceAssembler::CheckLoop if the surface is closed in one (or both) directions. 2003/04/23.
  • Factor in 3D tolerance in CheckLoop. 2003/04/22.
  • openNURBS: Use the special HwNlibCurveOnSurface processing for all closed curve edge geometry (even if the edge is open). 2003/04/22.
  • STEP: Added progress tracker heartbeat in B-rep construction. 2003/04/20.

Changes for IGES 1.4.5/VDAFS 1.2.9/STEP 1.1.5/SAT 1.0.0/OpenNurbs 1.0.0  

  • Changed Trim calls to use a variable instead of a temporary IwExtent1d. 2003/04/19.
  • Added TSLib-based support for some HwNlibCurveOnSurface objects. Reworked HwNlib3DTrimmedSurface support a bit in the process. 2003/04/19.
  • Added member access functions for HwNlibCurveOnSurface. 2003/04/19.
  • SAT: Always reverse the normal on a cone, whether or not the cosine value is negative. (As the cosine is already factored into the angle of the cone, it does not need to be accounted for again.) 2003/04/18.
  • Detect IwGenericAttributes and convert them to HarmonyWare-specific attributes when appropriate when exporting a file. 2003/04/18.
  • Changed the internal HwTSLibCreateAttribute to an external function named HwTSLibCreateAttributeWithStatus. 2003/04/18.
  • Fix double-delete problem in NMT export code. (Which still doesn't work properly, but at least it doesn't crash at the moment.) 2003/04/17.
  • Made error correction more generous on HwNlibSURFACE::Evaluate. 2003/04/17.
  • SAT: If a plane has x_axis vector which is zero, create a non-parameterized plane instead. Make sure non-parameterized planes are wrapped in an ignore parameterization surface. 2003/04/17.
  • SAT: Changed "unable to make face" error to send the reason for failure as well. 2003/04/17.
  • Added HwNlibSurfaceOfRevolution::Evaluate. 2003/04/17.
  • Added HwNlibCurveOnSurface::GetMinMaxBox. 2003/04/16.
  • Minor changes to clean up HwNlib3DTrimmedCurve::GetMinMaxBox. 2003/04/16.
  • SAT: Changes to handle plane parameterization. 2003/04/16.
  • In HwNlibBrep::MakeCopy, if the B-rep is empty, throw an error. 2003/04/16.
  • STEP: In B-rep fallback path, if we are not able to make any of the faces, signal an error instead of returning an empty B-rep. 2003/04/16.
  • SAT: Fixed extremely stupid order-of-execution bug. 2003/04/16.
  • openNURBS: Automatically write trimmed surfaces as B-reps. 2003/04/15.
  • STEP: Added ability to count shell_based_surface_models. 2003/04/15.
  • STEP: Extended entity counting to handle the fallback cases that SendToInterface uses if it can't get a clean product to send. 2003/04/15.
  • STEP: Extended entity counting to handle the fallback cases that SendToInterface uses if it can't get a clean product to send. 2003/04/15.
  • Added HW_BOOL_IS_INT define for those whose system defines it that way itself. (So HW_NO_BUILTIN_BOOL defines bool to be int and then sets this new define now.) 2003/04/15.
  • STEP: Allow entities to be missing the final closing parenthesis -- we don't really need it, and at least one system was occasionally forgetting to write them out. 2003/04/14.
  • STEP: Took out a check for the plane_angle_unit entity, as some systems don't send it, and the check for radians is probably just as useful in practice. 2003/04/14.
  • STEP: Refactored out a FillInHeader member, to facilitate getting the HwHeaderInfo for the file as quickly as possible. 2003/04/11.
  • Fixed the double-scaling problem in the plane code. 2003/04/10.
  • IGES: Updated for latest HwNlibPlane code. 2003/04/09.
  • IGES: Added color 10101 hack for add in testing. 2003/04/09.
  • Switched HwNlibPlane to use x_min, x_max, y_min, and y_max for boundaries. (In case the plane base isn't anywhere near the interesting area.) 2003/04/09.
  • openNURBS: Changes (from Gary) to use Rhino's memory handler. 2003/04/08.
  • Updated HwNlibPlane to scale its parameter space properly. (I hope.) 2003/04/08.
  • STEP: Treat shell_based_surface_model the same way as a B-rep -- if it fails, create all the available faces. 2003/04/07.
  • STEP: Recover from serious errors reading the data section. 2003/04/07.
  • Turned off the quadratic equation checking. It used a full assert, and it was probably never going to catch anything but tolerance issues anyway. 2003/04/06.
  • Change MakeEllipse so that if asked to create an ellipse greater than 360 degrees, it just makes one 360 degrees. 2003/04/06.
  • SAT: Rewrite the p-curve based MakeCurve function to make it more flexible. Support the imppc parameter curve type. 2003/04/06.
  • Debugging HW_STD::cout code added, appropriately turned off by default. 2003/04/06.
  • SAT: Added imppc. 2003/04/06.
  • SAT: Added mysterious field on many 8.0 topology types. 2003/04/06.
  • SAT: TEdge/TCoedge support added. 2003/04/06.
  • SAT: Add TCoedge and TEdge entity types. 2003/04/06.
  • SAT: Improvements to the static Get function generator. 2003/04/06.
  • SAT: Added very basic sweepsur support. Switched much of the interface to auto_ptrs. 2003/04/05.
  • Added HwNlibSweptSurface class. 2003/04/05.
  • Added auto_ptr version of MakeIgnoreParameterizationSurface. 2003/04/05.
  • SAT: Added a TAPER VERSION #define. 2003/04/05.
  • SAT: Added tapersur family tree. 2003/04/05.
  • SAT: Fixed major bug in "CanCastTo" code. 2003/04/05.
  • SAT: Check to see if we can cast to an intcur before doing so, report error otherwise. 2003/03/27.
  • Improvements to the code for handling 3D trimmed curves where the curve is closed and the start parameter value is greater than the end parameter value. 2003/03/26.
  • Fixed buildfile_dir for hw_nlib_core. 2003/03/25.
  • IGES: Made WriteCurve and WriteSurface (Nlib versions) take const arguments, so that they properly overload the virtual functions in HwNlibExporterInterface. 2003/03/25.
  • IGES: Added support for type 106, form 63. 2003/03/25.
  • SAT: Handle the EDGE case in HwSatLaw. Handle the null_law case in HwSatLaw. Handle the laws in a skinsur (using HwSatLawWrapper). Added faked in pcurve handling for skinsur. 2003/03/24.
  • SAT: HwSatLawWrapper class (to allow use of laws in an array). 2003/03/24.
  • SAT: Read @ before string length for version 7+ files. 2003/03/24.
  • SAT: Added offset surface type. 2003/03/23.
  • SAT: Added CanSafelyCastToType virtual functions. 2003/03/23.
  • IGES: Minor adjustment to compensate for translators too stupid to properly write out 126 bounds. 2003/03/19.
  • SAT: Skip vertex edgeuses when writing B-reps. (Not sure if this is technically right, but it seems to work.) 2003/03/17.
  • Extra test in FixMisplacedEdgeOnSeam to handle the case where the previous edge is the wrong one. (Needed because the other end of the previous curve might be a singularity.) 2003/03/13.
  • Modified use of new primitive singularity check to make sure the end points are close in 3D space before calling it. 2003/03/12.
  • Wrote simple function to check for a singularity between two points on a surface by checking to see if the endpoints are close as well as the midpoint (in UV space) between them. 2003/03/12.
  • Repeatedly try to SplitAtSeams and clean up the ensuing model at broader tolerances if CheckFaces fails. 2003/03/12.
  • Add new check to CheckFaces which should help distinguish between curves on the wrong side of a seam (bad) and curves near singularities (okay). 2003/03/12.
  • IGES: Treat independent annotation entities (which are geometrical in nature) as independent geometry entities, only tagged with the HwNlibAnnotationProperty. 2003/03/12.
  • Added code to convert back and forth between HwNlibAnnotationProperty and HW_AIH_ANNOTATION tags. 2003/03/12.
  • Add IW_AIH_ANNOTATION TSLib attribute (using IwLongAttribute class) and handle it properly for file I/O. 2003/03/12.
  • Added HwNlibAnnotationProperty attribute. 2003/03/12.

Changes for IGES 1.4.4/VDAFS 1.2.8/STEP 1.1.4/SAT 0.5.3/OpenNurbs 0.4.5  

  • STEP: Fixed STEP RGB color scaling value bug. (Previously had assumed colors were coming in scaled 0-100, but actually they were scaled 0-1.) 2003/01/28.
  • IGES: Count 184 entities properly. 2003/01/29
  • IGES: Added import support for entity type 184 (used by Rhino). 2003/01/29.
  • openNURBS: Fixed the case on includes of HwOpenNurbs.h (some files used to call it HwOpenNURBS.h). 2003/01/29.
  • openNURBS: Added an #ifdef _MSC_VER around a declaration so things would work on the Linux box. 2003/01/30.
  • Added HwExportOption member to the main export function for all translators. Also marked all the older export functions as "deprecated", sometimes removing documentation in the process. 2003/02/03.
  • IGES: Changes to allow IGES export to suppress either model space or parameter space loops, using the HwExportOptions system. 2003/02/04.
  • Added HwNlibIgnoredParameterizationSurface type, to help with SAT. 2003/02/05.
  • Modified HwNlibCurveOnSurface to check to see if the surface can be evaluated before trying to do so. 2003/02/05.
  • SAT: Block use of parameter space on analytic surfaces. 2003/02/05.
  • Corrected the start_v value for HwNlibCylinder::GetParameterRange. 2003/02/06.
  • Changed HwNlibInvertedSurface to allow evaluation. 2003/02/07.
  • Added HwStdAutoPtr version of the MakeInvertedSurface function. 2003/02/07.
  • Added needed MS template pre-declaration. 2003/02/07.
  • openNURBS: Use version control member of HwExportOptions to control Rhino export version. 2003/02/07.
  • Added standard_version_to_write to HwExportOptions. 2003/02/07.
  • SAT: Modified cylinder code so it has the proper SAT parameterization (I hope!) 2003/02/07.
  • SAT: Reversed normal orientation on cylinders (which, combined with the reversing effect of the swapped surface, puts it back to where it was before yesterday's changes). 2003/02/07.
  • SAT: Added IgnoreParameterization surfaces after InvertedSurfaces, so that we can safely upgrade the InvertedSurface to allow evaluation (if the underlying surface can be evaluated, that is). 2003/02/07.
  • Adjust tabulated cylinder bound infinite code to accomodate non-planar generating curves. 2003/02/12.
  • Changes from Gary Crocker to work with his latest version of NMTLib. 2003/02/20.
  • Increased HwNlib3DTrimmedCurve::GetMinMaxBox sample size, added logic for complete circles. 2003/02/27.
  • Replaced the extremely stupid HwNlib3DTrimmedCurve::GetMinMaxBox with a very which is much smarter (if more approximate) if we can evaluate the curve being trimmed. 2003/02/27.
  • Adjust v scale properly on BoundInfinite cone/cylinder. 2003/02/27.
  • Tweaks to the HwNlib3DTrimmedCurve::GetMinMaxBox function to make it work well against our sample files. 2003/03/01.
  • openNURBS: Trim edges by vertices. 2003/03/02.
  • SAT: Changes so cones and cylinders are parameterized properly. 2003/03/02.
  • Updated HwNlib3DTrimmedCurve::MakeNurbs to handle the same weird cases that the TSLib equivalent does. 2003/03/05.
  • openNURBS: Updated to properly handle closed edge curves. 2003/03/05.
  • Changed HwNlibCylinder to use p_min_v, p_max_v instead of just p_height. 2003/03/06.

Changes for IGES 1.4.3/VDAFS 1.2.7/STEP 1.1.3/SAT 0.5.2/OpenNurbs 0.4.4  

  • STEP: Allow toroidal_surface to have a negative radius -- treat it the same as a positive radius unless the surface is degenerate, in which case treat it as if select_outer was false. 1/2003.
  • Fixed bug in the code to fix edges ever-so-slightly on the wrong side of a seam -- previously it would reverse the edges half of the time. 1/2003.
  • Added HwTSLibCreateAttribute function. If you write or read IW Part files, it is very important that you add this function to your IwContext so that TSLib knows how to decode HarmonyWare attributes. 1/2003.
  • Added tolerance_scaling member to HwImportOptions, which allows you to scale the tolerance found in the file being imported. 1/2003.
  • Added HwNlibPipeSurface class to help support Acis pipesur entity. Not properly tested yet. 1/2003.
  • Added FindSingularities virtual function to the HwNlibSurface interface. 1/2003.
  • Fix holes in the UV representation of B-rep loops converted from IwBrep to HwNlibBrep format. 1/2003.
  • OpenNurbs: Fixed export so that it should work now. 1/2003.
  • OpenNurbs: Split the HwNlibONProcessor class so that single entities can be processed without reference to an ON file. 1/2003.
  • OpenNurbs: Split the HwNlibONWriter class so that single entities can be processed without reference to an ON file. 1/2003.
  • OpenNurbs: Upgraded to work with OpenNurbs 3.0. 1/2003.
  • SAT: Process sumsur if it is really a tabulated cylinder. 12/24/2002.
  • Realign spheres again. 12/2002.
  • Realign torii the same way spheres once were. 12/2002.
  • SAT: Properly handle spheres with negative radii. 12/17/2002.
  • Changed parameterization for NURBS version of ruled surface to match the IGES spec (ie [0,1] by [0,1]). 12/12/2002.
  • Added parameterization correction for conical ruled surfaces, 12/11/2002.
  • Fixed HwTSLibSurface::FindPlane so that it maintained the normal orientation properly. 12/5/2002.
  • Disabled the code which paid attention to the normal sent with the IGES offset surface entity, as it seemed to be causing trouble with some correct surfaces. 12/4/2002.
  • Made a new version of HwTSLibReceptacleInterface::PassEntityCounts which has the additional information found in the Nlib interface version of the function. By default, the new function simply passes the information along to the old version of the function, for backward compatiability. 12/3/2002.
  • IGES: Report entity counts to the log file. 12/3/2002.
  • IGES: Don't count planes unless they are actually going to generate trimmed surfaces. 12/3/2002.
  • STEP: Fix the Alibre units fix (last release) so it actually works. 12/2/2002.
  • Allow inner loops to register as "unknown" in loop classification. 12/1/2002.

Changes for IGES 1.4.2/VDAFS 1.2.6/STEP 1.1.2/SAT 0.5.1/OpenNurbs 0.4.3  

  • Tweaked HW_STD definition so it will work on with Microsoft Visual .NET (7.0) compiler.
  • Added GetMinMaxBox virtual function to the basic HwNlibObject interface -- it returns a bounding box for any object.
  • OpenNURBS: Entity counting is enabled.
  • SAT: Reworked control flow so that entities are created as needed, rather than being created and stored in case they might be useful in the future.
  • STEP: Given a file using the Alibre schema, use those extra entities to determine what the preferred units for the model are.
  • SAT: Implemented file reading for BlendSupport entities. (We don't know what they mean, yet, but we can read them in.)
  • SAT: Added VarRadius, VarCrossSection, and Radius.
  • SAT: Added summary BSpline surface support.
  • SAT: Added I/O for Blendintcur, Sumsur, and Blendsur. In most cases we can't do anything useful with this information yet.
  • SAT: Support reading 7.0 files. (May not do everything correctly yet, but our 7.0 sample files seem to work about as well as the older versions.)
  • IGES: Handle assembly instances marked as not being geometry correctly. (This worked under the previous assembly setup, and now works again with the new one.)
  • IGES: Try to compensate for the broken Pro/E B-rep handling by subtracting two from the shell DE if the entity pointed to by the DE is not a shell.
  • IGES: When reading 114 entities, check to make sure the number of segments is non-zero in each direction.
  • IGES: Better logging of problems reading subfigures.
  • When correcting circle parameterization, solve for both the x and y coordinates and then take the most accurate answer.
  • Apply scaling to vector transforms.
  • Merge names when creating entities from assemblies, so that an entity's name will reflect all the owning assemblies, too.
  • Allow HwNlibCoordinateSystem entities to be transformed with a scaling transform. (The scaling is ignored; previously it was an error.)
  • STEP: Trim curves using actual tolerance. (Used to be hardcoded to .004.)
  • STEP: Better names for assemblies.
  • STEP: Count mapped items properly.
  • Corrected cone apex calculation when p_scale_v is not equal to one.
  • Corrected AssertSurfaceAndNURBSAgree check in cone code to work properly when p_scale_v is not equal to one.
  • When handling a surface of revolution, check (if possible) in 3D space to see if the surface is closed within tolerance, and make it actually closed in that case.
  • SAT: Improved error handling.
  • SAT: Actually got around to implementing HwSatIdentifier::GetName (it used to just report "Not yet implemented).
  • STEP, OpenNURBS: Report entity counts in the message logger at the beginning of a file read. (This will make it to the other translators in an upcoming release.)
  • Removed ValidatePointers call from HwTSLibSimpleReceptacle::PassTrimmedSurface; this gets rid of a recent speed hit when you pass trimmed surfaces as a single B-rep.
  • If a 3D trimmed curve is closed and has endpoints extremely close together, assume it is meant to be the complete curve rather than an impossibly short segment of it.
  • If a surface is planar within tolerance and you are doing model space trimming, switch to using an actual plane.
  • Handle the case of a B-rep with only one face (which is closed) and no loops at all -- likely a sphere or a torus.
  • Try to adjust tolerance based on the overall size of the model.
  • If trimming loops do not lie on the surface, and the surface is not closed, force them to the surface, no matter how far away they are.
  • Do not remove intersections from 3D loops if the surface is closed. (Because seams can do funny things to loops.)
  • Shrink the tolerance on a surface if its loops are very small.
  • When doing a crude curve drop onto a surface, skip points which lie on a seam.
  • When checking for loop integrity, compare the distance between each coordinate of the edges' endpoints, rather than the 2D distance -- this allows tolerance by coordinate, which is a vast improvement. (Because the scales of U and V may be wildly different.)
  • Use edge interval in SplitAtPoles rather than curve interval.
  • Use tighter parameter space check tolerance in SplitAtPoles.
  • Made FixTrimLoopOrder rather smarter.

Changes for IGES 1.4.1/VDAFS 1.2.5/STEP 1.1.1/SAT 0.5.0/OpenNurbs 0.4.2  

  • Change break angle for MakeSmoothCurvesFromLinearPath. 9/28/2002.
  • VDAFS: Added SetFile interface to HwVdafsFileWriter so that it doesn't require the user to construct an ostream. 9/28/2002.
  • STEP: Create B-rep solid component information on a shape_representation by shape_representation basis, rather than the entire file in one object. (This makes the translator massively more memory efficient on complicated STEP assembly files -- one sample file used a gigabyte less memory to process.) 9/27/2002.
  • IGES: Added SetFile interface to HwIgesFileWriter so that it doesn't require the user to construct an ostream (as I got reports that was dicey in MSVC++ 7.0). 9/26/2002.
  • If torus has equal major and minor radii, make the edge of the torus on the inside. (Otherwise there would be a degenerate point in the middle of the torus surface.)
  • When getting the parameter value of a 3D point to trim a curve with it, adjust that value if it is very near one of the curve's knots.
  • Slightly better error messages on B-rep construction failures.
  • In HwNlibCircle::MakeSingleNurbs, if the circle is very short and so virtually a straight line, just make it a straight line. (As Nlib tends to fail in that case.)
  • Added HwNlibCircle::GetEndPoints function to improve efficiency.
  • Changes which should prevent a crash if the translator runs out of memory copying B-rep internal solid components.
  • STEP: Figure out units on a B-rep by B-rep basis instead of assuming the entire file uses the same units. Translate all B-reps to be in the same units.
  • STEP: When trying to figure out the orientation of a transformation, consider the shape_representation and all of it's associated representations.
  • OpenNurbs: If a face being imported is reversed, reverse the surface and loops instead of using the reversed face flag (which apparently doesn't work). 9/18/2002.
  • Allow creation of a zero-length HwStdString using the char *, length constructor. 9/17/2002.
  • OpenNurbs: If there is no name on a part, do not create a name property for it. 9/10/2002.
  • STEP: If a shape_representation has been output in the product processing phase, do not output anything else once that phase is over. 9/6/2002.
  • STEP: When a B-rep cannot be created at the low-level, report the reason why to the log file. 9/4/2002.
  • When a B-rep cannot be created because something is wrong topologically, have the error reflect what the problem is. 9/4/2002.

Changes for IGES 1.4.0/VDAFS 1.2.4/STEP 1.1.0/SAT 0.4.9/OpenNurbs 0.4.1  

  • IGES: Added analytic surface export during B-rep export. This is currently hard-wired on, but a switch will be provided soon. 9/2/2002.
  • Added analytic surface conversion when going from IwSurface to HwNlibSurface. This is currently hard-wired off, but a switch will be provided soon. 9/1/2002.
  • STEP: If a shape_representation is owned by a property_definition, do not output it as geometry without an enclosing product. 8/30/2002.
  • Added HwNlibSurface::IsClosed virtual function to support the previous fix. 8/29/2002.
  • Fixed logic mistake in HwNlibTrimmedSurface::AreTrimLoopsCorrectlyOrdered. Before, if there was only one loop, it was assumed to be an outer loop. But it could have been the inner loop of a closed surface. 8/29/2002.
  • Added new FixMisplacedEdgeOnSeam function to HwTSLibTrimmingTools. It checks for the case where a loop edge is less than tolerance over a seam, causing it's UV curve to come out on the wrong side of the seam (relative to the rest of the loop). 8/27/2002.
  • Updated HwTSLibTrimmingTools to match the latest IntegrityWare changes in the equivalent code. 8/26/2002.
  • OpenNURBS: Import entity layers/levels. 8/26/2002.
  • OpenNURBS: Import entity names. 8/26/2002.
  • Fixed reversed logic in B-rep void shell code. 8/21/2002.
  • When calculating a minmax box for a generic HwNlibCurve, instead of using a very tight tolerance (which can cause trouble with some curves) use a loose tolerance and then grow the box by that tolerance in all directions. 8/21/2002.
  • STEP: If a B-rep fails to be properly constructed, send its faces as trimmed surfaces and DO NOT signal an error -- the error would cause those surfaces to be immediately thrown out. 8/20/2002.
  • STEP: Make high-level shape_representation processing more robust. 8/20/2002.
  • STEP: Allow '$' as an alternate for '*' when reading indices. 8/20/2002.
  • STEP: When processing angle units, make sure the entities are actually in the file before trying to read them. 8/20/2002.
  • STEP: Do not halt import if you are unable to determine the units used. 8/20/2002.
  • STEP: When processing units, make sure the unit entities are actually in the file before trying to read them. 8/20/2002.
  • OpenNURBS: Import colors. 8/19/2002.
  • Patched export memory leaks. 8/17/2002.
  • Eliminated uninitialized variable glitch in the trimmed surface creation code. 8/17/2002.
  • VDAFS: Patched import memory leaks. 8/16/2002.
  • SAT: Import curves (via edges) as stand-alone entities. 8/16/2002.
  • SAT: Rewrote MoveBodiesUp to MoveEntitiesUp, so that any sorts of entities could be moved to the top of the file. 8/16/2002.
  • SAT: Export curves (via edges) as stand-alone entities. 8/16/2002.
  • If removing degenerate curves removes more than half the length of a 3D loop, reject that loop with an error. 8/15/2002.
  • VDAFS: Moved major data structures from HwStdMap to HwStringMap for efficiency. 8/14/2002.
  • Created HwStringMap template to allow more efficient maps of strings. 8/14/2002.

Changes for IGES 1.3.9/VDAFS 1.2.3/STEP 1.0.9/SAT 0.4.8/OpenNurbs 0.4.0  

  • STEP: Rewrote the entity count functions to understand assemblies.
  • STEP: Rewrote the processing of assemblies.
  • STEP: Implemented mapped_item.
  • On a trimmed surface with no singularities, if the loop is dramatically not closed, reject it.
  • VDAFS: Handle the case when the CONS model space curve is just a point.
  • STEP: When writing inverted surfaces to a B-rep, write the normal surface with a rev bit set.
  • IGES: Write out vertex loops.
  • STEP: Normalize direction entities.
  • IGES: If B-spline curve weights come in with very high numbers, try scaling them down to something sensible.
  • Added new HwNlibBrep construction functions which allows the B-rep to take ownership of the shells passed to it rather than simply copying them.
  • Added functions to convert the various TSLib entities to IwTopology-derived classes. This will support the TSLib-level assembly mechanism in the next release.
  • STEP: Added chain of owning IDs to the HwStepIdentifier class.
  • Added access functions to the HwNlibCylinder, HwNlibCone, and HwNlibSphere classes.
  • STEP: Added ability to write out cone, cylinder, sphere, and plane surfaces to the Nlib-level writer. This won't be visible from the TSLib layer until we hook up analytic conversions in the next release.
  • STEP: Rewrote the processing code to create entities on the fly when needed, rather than storing them all in a collection. This should halve the memory requirements of the Nlib-level STEP processing.
  • Added HwNlibAssembly and HwNlibAssemblyInstance classes to provide direct assembly support at the Nlib-level.
  • MakeFace copies the underlying surface instead of just passing a pointer to it. 5/29/2002.
  • Fixed several minor memory leaks. 5/29/2002.
  • Several minor improvements to SolveQuadraticEquation. 5/29/2002.
  • Fixed longstanding matrix math bug. 5/16/2002.

Changes for IGES 1.3.8/VDAFS 1.2.2/STEP 1.0.8/SAT 0.4.7  

  • Updated documentation and examples, 5/7/2002-5/8/2002.
  • Fixed a crash involving attributes, 5/6/2002.
  • The interface functions which passed the entities in an array of pairs and IDs have been depricated. Their functionality is completely redundant now that we use attributes to pass ID. They have been moved to a #ifdef section which is turned off by default. If there are no complaints, they will be removed entirely this winter. 5/5/2002-5/6/2002.
  • New HwImportOptions class added to the TSLib versions of import functions. This combines several current options with a small host of new ones, and leaves the way for new options without changing the basic function interface. The new import function added to each translator are completely uniform, as well. 5/2/2002-5/5/2002.
  • IGES: Read type 106 forms 1, 2, and 3 as collections of points. 4/25/2002.
  • New internal controls: #ShouldMakeComponentsOfFailedTrim# has been split into two functions, #ShouldMakeComponentsOfFailedTrim# and #ShouldMakeFacesOfFailedBrep#, for greater control. 4/23/2002.
  • Allow loop parameterization correction even when Advanced Nlib is not present, if the loop is entirely composed of iso-curves. 4/22/2002.
  • VDAFS: If a parameter curve is a straight line in shape, replace it with a simple NURBS straight line. (This avoids some very nasty problems arising from sloppy degree 5 approximations to straight lines.) 4/20/2002.
  • Correctly handle tabulated cylinders whose starting v range is not zero. 4/16/2002.
  • Don't trim a surface to its iso-curve boundary if the surface is not parameterized correctly. 4/11/2002.
  • When trying to smooth a piecewise linear curve, if one of the resulting curve segments has length less than tolerance, don't try to output it. 4/8/2002.
  • IGES: Check type 143 trimmed surfaces for infinite surfaces and fix if possible. 4/8/2002.
  • IGES: Properly handle the case where a type 141 loop says it has parameter loops and then doesn't. 4/7/2002.
  • Used MakeInvertedSurface to fix bug writing offset surfaces in B-reps. 4/3/2002.
  • Added MakeInvertedSurface function, which intelligently creates a new surfaces which is the inverted version of the surface passed to it. In particular, it special cases offset surfaces and inverted surfaces. 4/3/2002.
  • Fixed the documentation for bMakeSingleBrep. 3/18/2002.
  • In the B-rep error handling code, if no faces at all are successfully generated, return success (with no output) instead of signalling an error. 3/16/2002.

Changes for IGES 1.3.7/VDAFS 1.2.1/STEP 1.0.7/SAT 0.4.6  

  • Switched to non-fatal asserts in HwTSLIbNlibObject.cpp. This should clear up the fatal crash when exporting an empty B-rep. (Though why on earth are people exporting empty B-reps?) 3/5/2002.
  • SAT: Export curves as wire objects. (Export only tested with our own software -- we do not have access to a CAD program that reads ACIS curves.) 3/2/2002.
  • SAT: Import wire objects as unconnected curves. 3/2/2002.
  • SAT: Fixed major bug where exported faces were oriented incorrectly. 3/1/2002.
  • Fixed bug when handling "exploded" B-reps -- there were problems if the first face in the B-rep could not be created as a standalone trimmed surface. 2/22/2002.
  • STEP: Fixed a bug in the assembly code which caused sub-assemblies to be output as if they were top level assemblies. 2/18/2002.
  • Introduced HwNlib3DTrimmedCurve class, which allows the application of the TSLib point-to-curve projection routines to edge curves trimmed by 3D points. (Benefits mostly for STEP/SAT files.) 2/14/2002.
  • VDAFS: On import, indicate that the file is in millimeters using HwHeaderInfo. (Millimeters are the only allowed units for VDAFS files according to the specification.) 2/11/2002.
  • VDAFS: Fixed serious parameterization bug when exporting non-Bezier NURBS. 2/11/2002.
  • Added HW_NO_TREE to Linux makefiles so they would compile correctly. 2/11/2002.
  • Fixed cylinder scaling code. 2/8/2002.

Changes for IGES 1.3.6/VDAFS 1.2.0/STEP 1.0.6/SAT 0.4.5  

  • Minor changes to make things compile under MSVC 7.0. (We hope; we do not have a copy of the compiler available for testing.) 2/4/2002.
  • IGES: When writing, if there is a single level with numerical value greater than 100000000, write it using the level property. 1/29/2002.
  • IGES: Read Pro-E-style "layers" (ie groups labelled "LAYER") as levels, with 100000000 added to the layer number. This is a temporary fix to allow layers to be used now while we try to figure out a better way to support them. 1/29/2002.
  • If a B-rep cannot be created intact for some reason, create as many of the pieces as possible and group them together into a single "open shells" B-rep. Mark it with an "exploded" attribute. (Not fully implemented for STEP yet.) 1/29/2002.
  • IGES/VDAFS: Handle the case when the last line of the file is not properly terminated by a newline character. 1/17/2002.
  • IGES: Ignore entity type 106 unless it has form 11, 12, or 13. (Eventually we should provide support for the point versions of this entity.) 1/15/2002.
  • IGES: When writing a B-rep, rearrange things so the face orientation flag can be ignored. (Needed because our interpretation of the IGES standard does not match some other companies'.) 1/2002.
  • IGES: If a B-rep is from Pro-E, flip the orientation of surface types 122 and 128. 1/2002.
  • IGES: If a manifold solid B-rep contains open void shells (illegal in the IGES standard), issue a warning message and drop them from the B-rep. 1/2002.
  • IGES: B-rep face orientation is now treated as actually being face surface orientation, unless the file is from HarmonyWare. 1/2002.
  • IGES: Patched a hole in the 402 support which caused trouble if a group referenced an entity which wasn't there. 1/4/2002.
  • Changed FindPlaneNormal to look harder for planes. 12/19/2001.
  • STEP/SAT: Fixed minor ellipse handling bugs. 12/7/2001.
  • SAT: Export code written. 11/2001-12/2001.

Changes for IGES 1.3.5/VDAFS 1.1.9/STEP 1.0.5/SAT 0.4.4  

  • STEP: When processing non-assembly entities in a shape_representation_relationship, process both entities normally. (Temporary patch until a better solution can be found.) 11/7/2001.
  • STEP: Disable face_outer_bound detection, because it turns out to be ambiguous. (One of those damned design-by-committee things, it appears.) 11/7/2001.
  • If we think a working version is available, apply N_toordp to model-space-only surfaces to eliminate degenerate regions. (TSLib/POPLib users who also use Nlib: if you update your TSLib/POPLib to the latest version, you need to update Nlib as well so that you get the patch for this function.) 11/5/2001.
  • VDAFS: Make compatiable with latest version of Nlib. If you get errors about N_gprcnp having too many parameters, you need to comment out the HW_USE_NEW_NLIB_POLYNOMIAL_FUNCTIONS definition in inc/HwCommon.h or update your Nlib -- preferably the latter. 11/5/2001.
  • STEP: Allow $ as default for string. 11/4/2001.
  • SAT: Recognize the 180 degree cone configuration and make it an inverted cylinder. 10/26/2001.
  • SAT: Changed the negative minor radius code to invert the torus surface. This seems to work well. 10/26/2001.
  • SAT: If torus minor radius is negative, take the absolute value. Assuming they use the same torus formula STEP does, this should be an okay way to handle the problem. 10/22/2001.
  • Disallowed the creation of HwNlibTorus objects with non-positive radii. I don't know what that means, or why it keeps cropping up -- I do know it is badly wrong with our current equations. 10/22/2001.
  • SAT: When read an unknown subtype, process any subtypes found normally. 10/19/2001.

Changes for IGES 1.3.4/VDAFS 1.1.8/STEP 1.0.4/SAT 0.4.3  

  • SAT: Preliminary work on export.
  • STEP: Export names on faces.
  • STEP: Added better warning messages during import.
  • Added CreateFacetedPlane function, which takes a series of planar pointwise linear curves and makes a single trimmed B-rep face out of them.
  • Added software name, preprocessor name, author, and organization fields to the HwHeaderInfo class. Export supported to IGES, VDAFS, and STEP; import supported in IGES.
  • STEP: Added message logging for the STEP file read stage.
  • STEP: Added time.h include to the HwNlibStepWrite.h header, which uses time_t.
  • STEP: Fixed up shell error handling code.
  • STEP: Fixed duplicate template predeclaration.
  • Fixed HwNlibHyperbola::GetYAxis.
  • STEP: Check radii directly to detect degenerate torii rather than trusting the information sent in the file. 9/4/2001.
  • SAT: Handle degenerate torus objects properly. 8/28/2001-9/2/2001. (Much harder than it looked!)
  • Fixed major HwNlibTorus::IsDegenerate bug. 8/28/2001.
  • STEP: Write name property when exporting faces. 8/23/2001.
  • STEP: Borrowed some SGI STL code to optimize poly_loop handling, which should make faceted_brep much much faster for large objects. 7/31/2001.

Changes for IGES 1.3.3/VDAFS 1.1.7/STEP 1.0.3/SAT 0.4.2  

  • If a UV curve wanders slightly off the definition of its surface, refine the curve to make it hug its control points and then nudge those points onto the surface.
  • STEP: Implemented over_riding_styled_item import. In particular, this allows faces to have colors distinct from the overall B-rep.
  • HwCoordinateSystem now tries a bit harder to make a correct system from a slightly warped one.
  • IGES: Fix to avoid writing nested composite curves.
  • SAT: Fixed many memory leaks, 6/14/2001-6/30/2001.
  • Added HwTSLibTrimmingTools::AdjustBrepTolerance call to standard B-rep import code. This should help for models whose stated tolerance is significantly tighter than their actual tolerance. 6/12/2001.
  • Made HwNlibCurveOnSurface::MakeSingleNurbs work. 6/9/2001.

Changes for IGES 1.3.2/VDAFS 1.1.6/STEP 1.0.2  

  • Added HW_NO_DEBUG to release mode builds. 6/9/2001.
  • Modified HwNlibTorus to avoid Basic Nlib function calls. 6/8/2001.
  • Optimizations and improvements to HwTSLibTrimmingTools::CheckForBackwardsEdge. 6/7/2001.
  • Modified HwNlibCone and HwNlibCylinder to allow elliptical surfaces. 6/6/2001.
  • Rewrote HwNlibCone and HwNlibCylinder to avoid Basic Nlib function calls. 6/5/2001.
  • Wrote own version of N_surrev and replaced all calls to that function. 6/4/2001.
  • Check for and reject sliver surfaces. 6/2/2001.
  • Changed many asserts to error instead of exiting. 5/30/2001.
  • When transferring B-rep attributes to faces, don't overwrite or duplicate existing face attributes. 5/29/2001.
  • Simple optimization from IntegrityWare which should nearly double the speed of HwTSLibTrimmingTools::EstimateTolerances. 5/24/2001.
  • IGES: Export directory properties attached to a B-rep face. 5/24/2001.
  • IGES: Import directory properties attached to a B-rep face. Not sure if this will be a full-time feature or simply one that can be switched on with a #define. 5/24/2001.
  • If a trimming knot value is below or above the knot vector, force it to the appropriate end of the vector. 5/24/2001.
  • STEP: Fixed a bug in surface of linear extrusion. 5/23/2001.

Changes for IGES 1.3.1/VDAFS 1.1.5/STEP 1.0.1  

  • Adjust knot vector in HwNlibCURVE::MakeSingleNurbs curve sub-section version. 5/10/2001.
  • Check surface for TSLib validity before starting to trim it, 5/9/2001.
  • IGES: Read independent infinite planes as coordinate systems with the HwNlibPlaneDisplaySize attribute. Write coordinate systems with the HwNlibPlaneDisplaySize attribute set as independent infinite planes. 5/6/2001-5/9/2001.
  • IGES: Write coordinate systems. 5/5/2001.
  • STEP (primarily): Try to orient sphere surfaces in B-reps so that the seam of the NURBS version of the surface will cross the trimming curves. (This seems to improve TSLib's behavior.) 4/21/2001-4/22/2001.
  • VDAFS: Mark surfaces which are trimmed as blanked, in case they are used later in some GROUP. 4/19/2001.
  • STEP: Fixed a major bug with sphere orientation. 4/15/2001.
  • STEP: Fixed a bug in an earlier workaround for illegal early STEP files. 4/10/2001.
  • VDAFS: Make sure parameter space loops are properly C0 continuous before turning them into a single NURBS curve to write as a CONS. 4/4/2001.
  • IGES: If a HwNlibCompositeCurve has only one curve in it, write it as that curve only (instead of using a type 102 Composite Curve entity). 4/3/2001.
  • Fixed stupid glitches in the curve self-intersection code. 4/3/2001.
  • IGES: Detect normal-flipped analytic surfaces as analytic when writing a trimmed surface. 4/2/2001.
  • IGES: Write circles as type 100 by default. 3/29/2001.
  • When converting IwBSplineCurve to HwNlibCurve, check for the IwEllipse subclass and if the ellipse is actually a circle, convert it to HwNlibCircle. 3/29/2001.
  • When converting IwBSplineCurve to HwNlibCurve, check for the IwLine subclass and convert it to HwNlibStraight. 3/28/2001.
  • When using model space trimming curves, if the edge tolerance grows to be greatly bigger than the brep tolerance, bump up the brep tolerance. 3/27/2001.
  • IGES: Cleaned up a compiler warning message when certain compile flags were set. 3/27/2001.
  • IGES: Silence entity not found errors when processing subfigures. The appropriate warning still appears in the log file. 3/27/2001.
  • A couple of tweaks to the template code to make it more portable. 3/21/2001.
  • STEP: Allow plane_angle_measure to use either degrees or radians. 3/19/2001.

Changes for IGES 1.3.0/VDAFS 1.1.4/STEP 1.0.0  

  • Renamed variables named interface to import_interface to keep Borland compiler happy. 3/13/2001.
  • Added HwNlibIdProperty and HwTSLibIdAttribute classes, and implemented the attributes on import. (Generally speaking they don't make any sense on export.) 3/5/2001-3/7/2001.
  • If the MakeSingleBrep flag is set, separate blanked breps into their own brep. 3/5/2001.
  • If the MakeSingleBrep flag is set, move all attributes from a IwBrep to each IwFace it contains. 3/5/2001.
  • Added HwAbstractIdentifier::MakeCopy pure virtual function in the HwAbstractIdentifier interface. 3/5/2001.
  • IGES: Import and export blanked entities. 3/4/3001.
  • Added attributed to indicate an entity is "blanked" (ie non-visible). 3/4/2001.
  • Made HwCoordinateSystem::Transform a wee bit more forgiving of errors. 3/2/2001.
  • VDAFS: Fixed a stupid glitch in the call to N_appgsa when writing out a rational surface. 2/28/2001.
  • IGES: If a type 126 curve is marked polynomial, force all the weights to 1.0. 2/27/2001.
  • IGES: If a type 128 surface is marked polynomial, force all the weights to 1.0. 2/27/2001.
  • Don't use the parameter space loop as a first choice unless it passes a couple of obvious tests (like being closed). 2/27/2001.
  • IGES: Write directory attributes when writing a type 100 circle. 2/26/2001.
  • Make the 3D trimming curve code handle the case of the natural outer loop more intelligently. 2/23/2001.
  • IGES: Try to rescale the weights if they are out of the normal range for Nlib/TSLib/NMTLib. 2/19/2001.
  • Added units conversion functions, and used them to simplify STEP non-metric units when possible. 2/19/2001.
  • Removed redundant (and slightly incorrect) debugging check in HwNlibPlane::ProjectToXYPlane. 2/9/2001.
  • VDAFS: If a FACE and the SURF it references both appear in the same GROUP, only pass on the FACE. 2/8/2001.
  • IGES: Handle independent closed shells properly, instead of shutting down the translation. 2/2/2001.
  • IGES: If a physically dependent entity is only referenced by a logical grouping entity (type 402) create it anyway. 2/1/2001.
  • Some very minor tweaks to make GCC happy. 2/1/2001.

Changes for IGES 1.2.9/VDAFS 1.1.3/STEP 0.6.4  

  • Some minor tweaks to accommodate Borland C++ 5.01. 1/30/2001.
  • STEP: Don't add attributes if you didn't find any. 1/29/2001.
  • Don't include the vertex/edge traversal code in the test for manifoldness, because there is one common case it fails miserably on. 1/29/2001.
  • IGES: Fixed bug in the code to process brep components if a brep cannot be created whole. 1/29/2001.
  • STEP: Write lines using geometric_curve_set and geometrically_bounded_wireframe_shape_representation. 1/28/2001.
  • STEP: Apply brep attributes to its components if the brep cannot be created whole. 1/27/2001.
  • Loosen the tolerance to check whether a system is orthogonal, to accommodate systems which don't write out many digits of precision.
  • Change the new NMT brep import code to only work under SMLib, because that's the only place it can compile. 1/23/2001.
  • Added new HwNlibAbstractSolid abstract base class for HwNlibShell, HwNlibBrep, and HwNlibNMTBrep. 1/19/2001.

Changes for IGES 1.2.8/VDAFS 1.1.2/STEP 0.6.3  

  • STEP: Import color information. 1/15/2001.
  • STEP: Import layer information. 1/14/2001.
  • Rewrote HwNlibNMTBrep support. 1/10/2001-1/18/2001.
  • Used topology sorting to improve IwBrep to HwNlibBrep/HwNlibNMTBrep translation. 1/9/2001.
  • Added HwTopology files and classes to the system.
  • Switched HwAdjustIfNearKnot to use a floating tolerance instead of an absolute one, to deal with really big knots. 12/22/2000.
  • Corrected cut-and-paste bug in HwNlibRectangularTrimmedSurface::CorrectForNurbsParameterization. 12/21/2000.
  • STEP: Change the high-level processing to only trigger if the type is one of the high-level ones we will send on. This goes a long way to making the message file more readable without affecting useful functionality at all. (In theory!) 12/20/2000.
  • IGES: Adjusted the rule to determine which kind of trimmed surface to write out to favor type 143 for analytic surfaces. 12/20/2000.
  • STEP: Allow assembly code to work whether or not the file lists the entities in the item_defined_transformation in the correct order. 12/19/2000.
  • STEP: Allow assembly code to work with shape_representation subclasses. 12/18/2000.
  • STEP: Added support for mixin type of surface_curve and bounded_curve. (Why you'd use this instead of bounded_surface_curve I have no idea, but someone did.) 12/18/2000.
  • Added a check to make sure the loops in a brep are correctly ordered, 12/15/2000.
  • Added a couple of #ifdef wrappers so that the code can compile with the no Nlib configuration again, 12/15/2000.
  • VDAFS: Allow CONS elements to be used backwards, 12/13/2000.

Changes for IGES 1.2.7/VDAFS 1.1.1/STEP 0.6.2  

  • Fixed a semi-major bug involving trimmed surfaces with rectangular boundaries and inner loops.
  • IGES: Write parameter loops on trimmed offset surfaces.
  • STEP: Generalized a number of the curve creation subroutines, so they can also be used for the upcoming ACIS translator.
  • STEP: Optimized the adding of simple straight edges for faceted breps.
  • Experimental support for making an arclength version of a NURBS curve, which allows arclength ruled surfaces on NURBS curves.
  • In the process of adding the new interface, rename the high-level IGES functions to conform to the VDAFS and STEP naming standards, ie HwTSLibIgesRead and HwTSLibIgesWrite. (The old functions remain as a legacy interface.)
  • Added new interface members, HwNlibImporterInterface::PassHeader, HwNlibExporterInterface::SetHeader, HwTSLibExporterInterface::SetHeader, and HwTSLibReceptacleInterface::PassHeader to support the HwHeaderInfo interface.
  • Added new TSLib interfaces with HwHeaderInfo for important and export. For now, the primary purpose of this is importing and exporting information on the type of units a model is defined in.
  • IGES: Bugfix to avoid infinite recursion when counting illegally recursive subassemblies.
  • STEP: Added support for edge_based_wireframe_model, 11/20/2000.
  • Improved code for filling in gaps in 3D trim loops, 11/14/2000.
  • Add tiny tolerance adjustment to HwNlibSURFACE::Evaluate, 11/14/2000.
  • When converting a single untrimmed surface to an IwBrep, split the resulting face if it is not C1 continuous. 10/19/2000.
  • When outputting an open shell, always take the "forward" faceuse. 10/16/2000.
  • Changed several HwNlibCoordinateSystem member function debugging checks to use floating tolerances. 10/16/2000.
  • Fixed minor memory leak in the HwNlibBrep to IwBrep attribute conversion code. 10/4/2000.

Changes for IGES 1.2.6/VDAFS 1.1.0/STEP 0.6.1  

  • STEP: Added hyperbola support.
  • STEP: Added edge_based_wireframe_shape_representation I/O support, 9/22/2000.
  • STEP: Corrected trimmed_curve to allow misformated negative trimming values, 9/22/2000.
  • If a parameter space trimmed surface is trimmed by isocurves, create a HwNlibRectangularTrimmedSurface from it and try using the normal HwNlibSurface to IwBrep conversion routine, 9/21/2000.
  • Added HwNlibRectangularTrimmedSurface class, 9/21/2000.
  • Various minor memory leaks cleaned up, 9/11/2000-9/20/2000.
  • IGES: Import transformation matrices with entity labels other than blank or "TRANSFOR" as HwNlibCoordinateSystem objects. 9/4/2000.
  • Added 1e-8 tolerance check to HwNlibSurfaceOfRevolution to handle people who cut off pi a few digits short of a complete circle. 8/31/2000-9/1/2000.
  • Changed HwNlibTrimmedSurface::BindInfinite to take ownership of the surface before binding it, the same way it does when you transform a trimmed surface. 9/1/2000.
  • STEP: Import hw_sbt_axis2_placement_3d as HwNlibCoordinateSystem objects. 8/30/2000.
  • Introduced HwNlibCoordinateSystem class, built around HwCoordinateSystem on the HwNlibObject. 8/30/2000.
  • Introduced HwCoordinateSystem class and inserted it in a number of analytic curve and surface types. 8/28/2000-8/29/2000.
  • STEP: Fixed annoying meaningless error message generated routinely in the course of normal operation. 8/28/2000.
  • STEP: Added support for trimmed_curve. 8/28/2000.
  • IGES: New support for the IGES line font directory field (in its most basic form) as an entity attribute. 8/18/2000.
  • IGES: New support for the IGES line weight directory field as an entity attribute. 8/17/2000.
  • IGES: Allow a geometry entity in a subfigure to be marked as definition entity. I don't understand why, but the standard seems to allow this, and AutoCAD does it. 8/14/2000.

Changes for IGES 1.2.5/VDAFS 1.0.9/STEP 0.6.0  

  • IGES: Detect conical ruled surfaces, and try to process them in a much more sensible fashion. 8/3/2000.
  • Added support for attributes to go with IwPoint3d entities in the class-based interfaces. 8/2/2000.
  • Implemented control of units output in class-based IGES and STEP exporting. 8/1/2000.
  • STEP: Fixed a bug in edge ellipse handling. 7/31/2000.
  • STEP: Changes to the lowest level file reader to properly handle embedded comments. 7/31/2000.
  • STEP: Set up the system to use shell_based_surface_model entities to read and write non-manifold open-shell breps. 7/29/2000.
  • STEP: Read shell_based_surface_model. 7/29/2000.
  • STEP: Properly handle reading manifold_surface_shape_representation. 7/29/2000.
  • STEP: Properly write out files with more than one BRep. 7/28/2000.
  • STEP: Properly write out strings that contain single-quotes. 7/25/2000.
  • STEP: If a representation item is named something other than "NONE", tag the object it creates with a name property. 7/25/2000.
  • IGES: On export, right justify entity label in the directory section. 7/25/2000.
  • IGES: Added attribute support for entity label/subscript. 7/24/2000.
  • VDAFS: Implemented entity counting via PassEntityCount. 7/21/2000.
  • IGES: Reimplemented the code controlling PassEntityCount. Now the entity count more closely reflects what is in the file, rather than what the Nlib-layer can make sense of. The count should come earlier in the process, as well. 7/20/2000-7/21/2000.

Changes for IGES 1.2.4/VDAFS 1.0.8/STEP 0.5.9  

  • Changed the Microsoft project files to use a different directory for each DLL, just like the makefiles have done for a long time. 7/12/2000.
  • Output translator version to log file when reading. 7/12/2000.
  • Found and fixed the true source of the bug below. Not Microsoft, but a change in the IwBrepData specs. 7/10/2000.
  • Rearranged member variables in HwTSLibShellExporter to work around what appears to be a Microsoft optimizer bug. 7/9/2000.
  • Added #ifdef guard to avoid double-defining IW_TARRAY_TEMPLATE_PREDECLARATION. 7/8/2000.
  • IGES: Fixed the IGES type 194 cone to convert the semi angle from degrees to radians. 7/5/2000.
  • STEP: Allow the creation of a faceted_brep as a normal manifold_brep. 6/28/2000.
  • STEP: Create points for use in geometric_set. 6/28/2000.
  • STEP: Implemented proper geometric_set support. 6/28/2000.
  • STEP: Changed data selection rules so that sending a shape representation with zero objects does not count as actually sending a shape representation. 6/28/2000.
  • Force the axes of an HwNlibPlane to be unit vectors, which improves performance when very small vectors are used to create the plane. 6/26/2000.

Changes for IGES 1.2.3/VDAFS 1.0.7/STEP 0.5.8  

  • Added #if blocks around calls to IwBSplineCurve::EditEndPoint to add versions compatiable with the latest versions of TSLib/SMLib, 6/23/2000.
  • IGES: Added support for entity types 190, 192, 194, 196, and 198, 6/22/2000.
  • Added new constructors for HwNlibPlane, HwNlibCone, HwNlibCylinder, and HwNlibTorus. These allow construction without regard to the orientation of the local X and Y axes. This means that there is no meaningful parameterization on these versions of these surfaces. 6/22/2000.
  • IGES: Added back-up plan for Type 186 BReps which cannot create all their faces/shells. If something goes wrong, whichever faces can be created are sent in an open shells brep. 6/21/2000.
  • STEP: Added preliminary support for STEP assemblies and sub-assemblies via representation_relationship_with_transform. 6/19/2000-6/20/2000.
  • Adjustments to TSLib attribute support to make it compatible with the latest release of TSLib/SMLib, 6/16/2000.
  • Added optional parameter to HwMessageLogger constructor which allows you to append to the message file instead of overwriting it. 6/13/2000.
  • Added HwDetermineFileType function to make a guess at a file's type based on its extension. 6/12/2000.
  • Fixed HwNlibCone::MakeNurbs, adding simple tests in the process, 6/10/2000.
  • Improved HwNlibSurface::ProjectToPlane function to work better on marginal cases, 6/9/2000.
  • IGES: Fixed color support for yellow, magenta, and cyan, 6/6/2000.
  • IGES: Added support for importing type 158 as a surface, 6/5/2000.
  • Changed HwBrepToleranceCollector::ScanBrep to look at all the tolerances on a brep, instead of just the main one. 6/4/2000.
  • Added HwNlibTrimmedSurface::Invert and HwNlibTrimLoop::Invert functions to invert the orientation of each type. This is used to make the trimmed surface sense agree with the face sense in HwNlibBrep::MakeTrimmedSurfaces. 6/2/2000.
  • STEP: Juggled the headers so that the HwStepBase definition is available to both inc/HwStep.h and inc/HwStepAuto.h. 6/1/2000.
  • STEP: Eliminated GetObject functions that were getting assaulted by the Windows header files. 5/31/2000.

Changes for IGES 1.2.2/VDAFS 1.0.6/STEP 0.5.7  

  • Reworked IGES file processing to not suffer a speed penalty if the entities are in reverse order, 5/19/2000.
  • Updated 80-column file end-of-line processing to allow CR by itself to be a valid end-of-line character, 5/16/2000.
  • Tweaked HwNlibCompositeCurve::FixupOrientations to be more understanding when outer loops on closed surfaces are involved, 5/10/2000.
  • Changed it so unrecognized IGES 406 forms are not errors. 5/9/2000.
  • Updated the IGES processing logic so that entity 308 subentities are forced to be physically dependent if the file is from SolidWorks. 5/9/2000.
  • Updated the IGES processing logic so that IGES defintion entities are never created when an independent entity is desired. This works around SolidWorks bug. 5/9/2000.
  • Reworked #ifdefs so that surface cropping is controlled by USING_NLIB instead of HW_USE_BASIC_NLIB, as that more closely reflects reality. (Previously, setting the latter and not the former on recent versions on TSLib would result in incorrect results.) 4/28/2000.
  • Renamed HwTGLowLevelReader to HwLowLevelAscii80Reader, 4/12/2000.
  • Added better test for a valid line number to IGES and VDAFS, 4/12/2000.
  • Added proper deletes in the HwIgesFile::RemoveStragglers function, 4/12/2000.

Changes for IGES 1.2.1/VDAFS 1.0.5/STEP 0.5.6  

  • Tweak to gracefully handle errors writing out individual faces/breps of complex breps, 4/11/2000.
  • Fixed the property reading code so that 5000+ properties which were not written by this translator are not reported as errors, 4/10/2000.
  • When converting an IwBSplineCurve to an HwNlibCURVE using an extent which overrides the natural extent, tweak the extent parameters if they are very close to knots on the curve, 4/10/2000.
  • Tweak to allow the first line of a VDAFS file to be line number zero, 4/9/2000.
  • In the STEP Brep error handler, added proper support for vertex loops and faces which only have vertex loops, 4/8/2000.
  • Turned on the STEP Brep with Void support which had been never actually activated, 4/8/2000.
  • Set up STEP to allow linear extrusion surfaces built from ellipses, 4/7/2000.
  • Added capability to skip comments between entities in a STEP file, 4/7/2000.
  • Switched an assertation in the circle parameterization code to an error so that it can fail gracefully, 4/6/2000.
  • Removed incorrect assertation which could trigger when translating a malformed HwNlibBrep into a set of HwNlibTrimmedSurface objects, 4/6/2000.
  • Added code to test for primary colors, plus black and white, on color output, 4/3/2000.
  • Improved code for adjusting tolerance based on the width of a surface, 4/3/2000.
  • Added HwNewDelete as a base class for HwNlibImporterInterface and HwNlibExporterInterface to clear up some wacky DLL problems, 3/26/2000.
  • Modified debugging-only loop test to make sure it doesn't execute when Nlib is not available, 3/25/2000.
  • Added several includes to inc/HwTSLibGeneric.h so it is properly self-contained, 3/24/2000.
  • Fixed define for false in inc/HwCommon.h. How the heck did I screw that up? Why didn't anyone notice before today? 3/24/2000.
  • Added comparison operators for HwIndexAndPointer so that MSVC++ 5.0 doesn't complain, 3/24/2000.
  • Removed the self-referential HwStdAutoPtr from the HwNlibAttribute definition, because the template predeclaration had to be made before the class was fully defined, so that (on at least MSVC++ 5.0) the destructor could not call the HwNlibAttribute destructor when deleting any further attributes up the chain. 3/24/2000.
  • Added HwMakeSphere, just in case you need to make a sphere, 3/24/2000.
  • Changed HwTSLibViaNlibExporter class definition to not require the inc/HwNlibGeneric.h header to be loaded first, 3/21/2000.
  • Moved HwTSLibViaNlibExporter to the inc/HwTSLibGeneric.h header, 3/16/2000.
  • Added an HwFOIsOkay for the long type, 3/14/2000.

Changes for STEP 0.5.4  

  • Extensive silly changes to make STEP output conform to AP203, 2/2000.
  • Added work-around so that older STEP files without a name field in their representation_item data will still read after today's earlier changes. 2/9/2000.
  • Reworked auto-generated STEP code to follow the proper rules for reading/writing base classes, namely each class shall only appear once in the list. (ie virtual multiple inheritance I/O.) 2/9/2000.
  • Added the item_name field to the HwStep_representation_item class, and reworked I/O to handle it, 2/9/2000.
  • Switched STEP output to use good old stdio.h, 2/8/2000.
  • Fixed a C++ error in src/HwNlibStepWrite.cpp. (Big kudos to Microsoft for yet another bug in their compiler, namely not noticing this one in my code.) 2/8/2000.

Changes for IGES 1.2.0/VDAFS 1.0.4/STEP 0.5.4  

Note: There were two major additions in this version: improved brep support and attributes. The debugging of these features is not covered below.

  • Added an option to return objects in local coordinates with a transform attribute attached, rather than in global coordinates, to many of the high-level IGES input routines. Note that this only affects objects which have a transformation matrix on them; in a normal IGES file, most objects do not.
  • Changed the HwNlibBrep from to support multiple open shells at once.
  • Fixed bug which caused every composite curve written by IGES to be closed, 1/27/2000.
  • Overhaul of the IwBrep to HwNlibBrep and vice versa, 1/22/2000-1/28/2000.
  • Added a new HwNlibObject type, HwNlibNMTBrep, for handling non-manifold breps. 1/22/2000.
  • Added HwNlibAttribute linked list structure to every HwNlibObject type. 1/16/2000.

Changes for IGES 1.1.9/VDAFS 1.0.3/STEP 0.5.3  

  • Fixes to 2D calls to IwBSplineCurve::CreateCanonical and IwBSplineCurve::SetCanonical so that they actually return fully 2D objects. 1/6/2000.
  • Spent a lot of time retooling the code immediately before and after a trimmed surface is made, so that it can be separated from the HarmonyWare libraries. In the process, made many improvements and minor bug fixes to it. 12/15/1999-1/6/2000.
  • Don't pass infinite surfaces to the Nlib-to-TSLib convertor. This gets the exact same geometry results, while avoiding silly error messages about not being able to create an infinite surface. 12/15/1999.
  • Fixed a silly little bug which kept the TSLib and SMLib versions of all translators from writing files with no trimmed surfaces or solids, 12/14/1999.
  • Switched HwNlibCylinder to use angles for its parameter range rather than radians. I think angles are silly, but this is consistent with IGES, STEP, and Nlib. 12/13/1999.
  • Added ability to STEP export the offset_surface type, 12/11/1999.
  • Changed HW_NCMT_MAJOR_TYPE and HW_NSMT_MAJOR_TYPE identifiers to just HW_NCMT and HW_NSMT. (Because "NCMT" and "NSMT" stood for "Nlib Curve/Surface Minor Type", and so MAJOR_TYPE was both redundant and wrong.) 12/11/1999.
  • Eliminated printf accidentally left in offset surface code, 12/11/1999.
  • Added conversion from IwOffsetSurface to HwNlibOffsetSurface to the standard TSLib to Nlib conversion routines, 12/11/1999.
  • Added ability to IGES export type 140 offset surfaces, 12/11/1999.

Changes for IGES 1.1.8/VDAFS 1.0.2/STEP 0.5.2  

  • Improved support for older compilers.
  • Addd HwNullLogger class, a simple HwAbstractMessageLogger which just throws out all the information passed to it, 12/10/1999.
  • Added HwIgesReadGlobal to read just the global section of an IGES file, 12/10/1999.
  • Improved progress tracker support for TSLib/SMLib IGES reads, 12/9/1999.
  • Added crude STEP support for entity types we don't recognize. (Basically we store the name and skip the rest of the entity.) 12/9/1999.
  • Generic header section support added to the HwNlibExporterInterface, 12/8/1999.
  • Fixed a bug which caused problems with the negative section of cones, 12/7/1999.
  • Made the STEP brep failure fallback mode recognize face_bound::orientation, 12/7/1999.
  • Implemented full (import) support for IwOffsetSurface, 12/3/1999-12/5/1999.
  • Changed HwTSLibTrimLoop3d::FindModelCurveDistanceToSurface to react gracefully to errors in IwSurface::DropCurve. This keeps this function from blocking the trimming of seam-crossing curves. 12/2/1999.
  • Switched TSLib code to center around IwSurface instead of IwBSplineSurface, 12/2/1999.
  • Made PassEntityCount responsive to the various trimmed surface/brep processing options, 12/1/1999.
  • Improved Nlib entity counting, and made it work with all translators via the HwNlibImporterCounter class, 12/1/1999.

Changes for IGES 1.1.7 (interim release)  

  • Fixed the PassEntityCount function to work (this was also broken in the last release). 11/18/1999.
  • Fixed critical bug in the IGES with identifiers TSLib function interface, added in the last release. Doh! 11/18/1999.
  • Check to see if the parameter range of an IGES surface is outside the knot vector for the surface, and trim it back if it is. 11/18/1999.
  • Worked around Microsoft Visual C++ optimizing bug seen only in Release version. 11/17/1999.

Changes for IGES 1.1.6/VDAFS 1.0.1/STEP 0.5.1  

  • Fixed (new to this version) bug where tolerance was ignored in IGES files. 11/15/1999-11/16/1999. (That's a day and a half to track down the problem causing the regression the test suite, ten minutes to fix said problem.)
  • Created HwProgressTrackerInterface for generic progress reports, and added first-level support for it to the standard import and export functions, 11/10/1999-11/15/1999.
  • Fixed a second manifestation of the old "Nlib curve has dimension 2 but IwCurve containing it has dimension 3" problem, 11/9/1999.
  • Added quasi_uniform_curve and quasi_uniform_surface support to STEP, 11/9/1999.
  • Eliminated old STEP hack which was an early attempt to deal with the multiple DLL problem now solved by HwNewDelete, 11/9/1999.
  • Implemented reverse orientation flag for STEP face bounds, 11/9/1999.
  • Fixed HwNlibBrep pointer initialization problem by switching the pointer to an HwStdAutoPtr, 11/8/1999.
  • If we are fixing the order of the trim loops on a surface, and there is only one loop and it is an inner loop, fix its orientation so it is an outer loop. 11/5/1999.
  • Implemented STEP surface of linear extrusion as HwNlibTabulatedCylinder of infinite width. 11/5/1999.
  • Allow HwFFDIterator::GetReal to handle integers as well, in case some program wrote integers where they should have written integer-valued reals. 11/4/1999.
  • Rewrote the IGES processing code to process subfigures which are not marked as geometry information. (As the standard doesn't force geometry-based subfigures to be marked as geometry information.) 11/4/1999.
  • Fixed STEP crash caused by previous fix of the the HwNlibBrep destructor. 11/4/1999.
  • Changed HwIgesFile to contain maps to pointers instead of maps of actual objects. This should eliminate pauses in the early stages of reading large files. 11/3/1999.
  • Fixed memory leak in the HwStepDataIndex destructor, 11/2/1999.
  • Fixed memory leak in the HwNlibBrep destructor, 11/2/1999.
  • Cached last HwNlibSolidComponents info on IGES write. If the next HwNlibBrep uses the same HwNlibSolidComponents object, the vertices and edges are not written out again. 11/2/1999.
  • Fixed HwNlibBrep bug where the copy of an open shell was a closed one, 11/2/1999.
  • Added open shell code to STEP, 11/2/1999.
  • Rearranged STEP I/O classes and functions a good bit, renaming HwStepInput and HwStepOutput to HwStepLowLevelInput and HwStepLowLevelOutput, and then creating new, higher level HwStepInput and HwStepOutput classes which wrap the majority of the formerly stand-alone I/O functions, 11/1/1999.
  • Accumulated min-max boxes for all the entities output to an IGES file, so that we can determine the maximum coordinate value and store it in the global section, 10/30/1999.
  • Added GetMinMaxBox member functions to HwNlibCurve and HwNlibSurface, 10/30/1999.
  • Fixed the code for determining the approximate width of a surface to work in the case of higher order Bezier surfaces, 10/29/1999.

Changes for IGES version 1.1.5/VDAFS version 1.0.0  

  • Derived HwNurbsCircleParameterizationCorrector from HwNewDelete so that it would work properly across DLLs, 10/27/1999.
  • Revamped the Installation and Basic Interface sections of the documentation.
  • Many minor cosmetic changes, including renaming the high-level TSLib import/export functions for VDAFS and STEP and documentation improvements.
  • Changed the HwFreeFormattedData::CreateStrings to send its output to the new HwFFDStringReceptacle class instead of an array of char *.
  • Proper implementation of HwNlibBrep and HwNlibShell transform functions. 10/21/1999.
  • Total reworking of HwNlibBrep memory management. Now the HwNlibSolidComponents class is reference-counted, so that HwNlibBrep objects can be thrown around like any of HwNlibObject. 10/20/1999.
  • Introduction of HwAbstractIdentifier::GetConcreteType virtual function, so that identifiers can be traced back to the translator they come from. 10/19/1999.
  • Several generalizations of VDAFS code to generic code, promptly used for STEP integration. 10/19/1999.
  • Coded low-level VDAFS parser to check for the beginning of a new entity with each line read in. This because we got a file where entities are ended with a dangling comma (quite illegally, we should add) and that confused our old parser. 10/19/1999.
  • If a surface's trimloops' orientation and order are marked correct, to make sure the order is really correct, and fix it if it is not. 10/15/1999.

Changes for IGES version 1.1.4/VDAFS version 0.5.3  

  • Updated all projects and makefiles. Among many small changes, NMTLib now automatically sets HW_USE_ADVANCED_NLIB. 10/11/1999.
  • Added HW_USE_BASIC_NLIB analogous to HW_USE_ADVANCED_NLIB. If it is not set, only functions used in our miniNlib distribution will be called. If HW_USE_ADVANCED_NLIB is defined, HW_USE_BASIC_NLIB is defined automatically. 10/11/1999.
  • Changed TSLib-style intersection code to allow hourglass intersections on 3D loops. This is necessary to handle simple closed surfaces! 10/11/1999.
  • Created SplitSeamFaces function to handle faces whose loops cross closed seams. All the infrastructure is present, but there are changes needed to TSLib/SMLib before it can be turned on. 10/11/1999.
  • Changed HwNlibIgesCreator::WriteTrimmedSurface to prefer writing IGES type 143 to 144. The latter is more common, but information (sometimes crucial) is lost if the surfaces are written as 144s. 10/10/1999.
  • Created HwNlibGeneric.h/.cpp and HwTSLibGeneric.h/.cpp to contain interface routines common to more than one translator. The HwNlibExporterInterface specifies an interface for writing geometry files from Nlib data. The HwTSLibExporterInterface specifies an interface for writing geometry files from TSLib data. The fledgling HwTSLibReceptacleInterface was also moved here from HwTSLibReceptacle.h, which has been removed. 10/8/1999-10/11/1999.
  • Broke HwNlibObject.h/.cpp into eight files: HwNlibObject.h/.cpp, HwNlibCurve.h/.cpp, HwNlibSurface.h/.cpp, and HwNlibCollection.h/.cpp. A new include file, HwNlibObjects.h, includes all four header files. 10/8/1999.
  • Added two new HwNlibCurve classes, HwNlibEllipse and HwNlibReparameterizedCurve.
  • Added HwNlibSurfaceMinorType enum and HwNlibSurface::GetMinorType virtual function to enable determining the actual type of an HwNlibSurface object.
  • Add new HwNlibSurface classes: HwNlibCone, HwNlibSphere, HwNlibTorus, HwNlibInvertedSurface, and HwNlibSwappedSurface.
  • Added static HwNlibTrimLoop::MakeTrimLoop function to get around wierd MS DLL interactions.
  • Added HwNlibSolidLoop::IsVertexLoop function to see if a loop is a vertex loop.
  • Added HwNlibSolidComponents::BindInfiniteFace to handle infinite surfaces on BReps.
  • Added HwNlibIgesCollection::GetCurve member that doesn't allow a point to be returned. (For some reason I had previously made the special case the general case.)
  • Added a new HwNlibSurfaceOfRevolution creation function to allow the axis of revolution to be defined via a point and a vector.
  • Added a new HwNlibOffsetSurface creation function which doesn't take a reference normal. We never used the reference normal, so this seems reasonable.
  • Changed HwTSLibTrimLoop3d::CreateConnectorOnSurface to handle the case when there are two solutions to the point projection which are extremely close in UV space, 10/6/1999.
  • Fixed HwNlibCircle::Transform to handle transformations which are unevenly scaled a little more gracefully, 10/1/1999.
  • Fixed HwNlibCircle::SetCircle (the IGES version) to handle the case when the start angle is ever so slightly less than zero, 9/29/1999.
  • Improved offset surface memory allocation estimates, 9/24/1999.
  • Fixed the IwBrep extraction code to work properly (we hope!) with IwRegions, 9/21/1999-9/22/1999.
  • Added piecewise linear curve smoothing to TSLib/SMLib curve output. (Previously it was only used on trimming loops.) 9/12/1999.
  • If the tolerance specified in an IGES file is exactly zero, use tolerance 1e-3. 9/12/1999.

Changes for IGES version 1.1.3/VDAFS version 0.5.2  

  • Added HwNlibCylinder, 9/6/1999.
  • Fixed plane projection bug, 9/5/1999.
  • Added some missing SERs to src/HwNlibIgesProcessor.cpp, 9/5/1999.
  • Added code to HwNlibIgesCreator to write out HwNlibCircle as IGES 100 circles. By default, HwNlibStraight are written as 110, HwNlibCircle as IGES 126 (b-spline). (This affects all IGES file writing.) The HwNlibIgesCreator::SetStraightWriting and HwNlibIgesCreator::SetCircleWriting functions allow overriding these defaults. 8/31/1999.
  • (VDAFS) Switched to new circle interface, 8/31/1999.
  • HwNlibCircle revamped to store axes, radius, and start/end parameters internally, rather than the IGES circle format, 8/30/1999.
  • HwNlibStraight objects now written to IGES as IGES entity 110 (straight line segment), 8/30/1999.

Changes for IGES version 1.1.2/VDAFS version 0.5.1  

  • Turned off the special Advanced Nlib code in HwNlibObjectToTSLib::ConvertSurfaceModelOnly because it was causing a crash in certain rare conditions, 8/22/1999.
  • Added "recursive entity" error message for those dreaded recursive IGES entities, 8/22/1999.
  • Added the "owning names" fiedls to the HwVdafsIdentifier class, 8/20/1999.
  • Attempt to estimate the amount of memory creating an offset surface will take, and abort the surface creation if it will take more than 32 megs of memory to produce the NURBS approximation, 8/17/1999.
  • Fixed HwTSLibSurface::Trim to use IwBSplineSurface::TrimWithDomain if it is available, 8/16/1999.
  • (VDAFS) Added code to make the low-level VDAFS file read more robust, 8/15/1999.
  • (VDAFS) Removed a spurious static from the HwVerifyValidVdafsName definition. Why didn't my copy of Microsoft Visual C++ notice this problem automatically? 8/11/1999.
  • (VDAFS) Added HW_USES_ADVANCED_NLIB wrapper around calls to N_appgca and N_appgsa calls. This means HW_USES_ADVANCED_NLIB is required to write rational NURBS to a VDAFS file. 8/11/1999.
  • Fixed parameter space orientation bug (a conflict between IGES notation and TSLib notation) in solids code, 8/11/1999.
  • (VDAFS) Implemented HwNlibVdafsCreator::WriteBrep, 8/10/1999.
  • Implemented HwNlibIgesCreator::WriteBrep, 8/9/1999.
  • Noticed that IGES open shells were being read but not processed properly, and corrected the first stages of the problem. It is still likely that they do not create valid IwBreps, but at least the fallback code should get activated now, 8/9/1999.
  • Added HwFFDAssembler::AddLogical and HwIgesWritingAid::AddLogical to simplify handling logical IGES data, 8/9/1999.
  • Added HwStdMap::clear, HwStdVector::clear, and HwStdVector::resize, 8/9/1999.
  • Fixed HwNlibShell::MakeTrimmedSurfaces so that it only outputs each face once. (Since it ignores the face orientation, outputting it twice would be sort of odd.) 8/9/1999.
  • Fixed HwNlibSolidComponents::MakeLoop so that it worked properly for loops without parameter space (UV) curves, 8/8/1999.
  • Implemented IwBrep to HwNlibBrep translation code, 8/8/1999.

Changes for version 1.1.1  

  • Removed printf's from src/HwTSLibTrim.cpp, 8/5/1999.
  • Renamed HwIgesFFD.h/cpp to HwFFD.h/cpp, since they are used by VDAFS as well, 8/4/1999.
  • Fixed longstanding major bug in HwNlibTrimloop::Translate. Doh! 7/27/1999.
  • Added check for very small surfaces, or very large tolerances, depending on your point of view. If so, reduce tolerance to something more reasonable for that surface. 7/13/1999.
  • Patched memory leak introduced by the new (in 1.0.8) solids code, 7/12/1999.
  • Discovered that HwTGLowLevelReader would try to read from a null FILE * if the file being opened could not be found. Fixed it. 7/10/1999.
  • First pass at VDAFS low-level file writer done, 7/9/1999.
  • Added a TestTweakCurveEndsTogether to the case where the gap between segments is large in 3D space but small in UV space, 7/8/1999.
  • Blocked out basic VDAFS data structures, 7/8/1999.
  • Reworked FFD code to allow it to work with VDAFS, 7/8/1999.

Changes for version 1.1.0  

  • Added a general reparameterization to from 0.0 to 1.0 to the HwNlibObjectToTSLib::ConvertSurfaceModelOnly knot reparameterization routine, 6/30/1999.
  • Removed test to see if the HwTSLibTrimLoop2d::SetupNaturalOuterTrimLoop was working correctly; the test was considerably less reliable than the routine. 6/30/1999.
  • Changed HwNlibIgesInterface::PassBrep to default to converting the BRep to a collection of trimmed surfaces and passing them to PassTrimmedSurface, so as to emulate the old behavior by default. 6/29/1999.
  • Many changes to documentation, 6/28/1999-6/30/1999.
  • Added inline to the several of the HwStdMap member functions, 6/27/1999.
  • Made sure that HW_NO_DEBUG worked when defined, including making HW_ASSERT a no-op in that case, 6/25/1999.
  • Patch to see that trimloops around singularities are written out properly in parameter space, 6/24/1999.
  • Rearranged the order of cleanup operations on 3D trim curves, to make sure the tolerance, if it is going to be changed, is changed before the rest of the cleanup operations are done. This cleared up the problem the patch backed out below was intended to fix. 6/23/1999.
  • Backed out the previous change when it seemed to have a bit of an adverse effect, 6/22/1999.
  • Specified that the maximum width of a surface must be greater than fives times the 3D tolerance, which cleans up some trouble cases in TSLib. 6/21/1999.
  • Removed a syntax error in the HwStdVector constructor template. Borland complained about it, everyone else just worked. 6/21/1999.
  • Added stdlib.h to the includes for HwNlibObject.h so that Geomware's nurbs.h doesn't pull it in. This is because the extern "C" wrapper around our use of nurbs.h interferes with a template declaration in Borland's version of stdlib.h. 6/21/1999.
  • With the HW_USE_ADVANCED_NLIB flag on, do not reparameterize rational NURBS surfaces when doing a model space trim. On our test case, a file with lots of trimmed surfaces of revolution, this yielded a 200% speedup. 6/10/1999.
  • Detect when odd parameter gaps are caused by undetected (presumably interior) singularities, and compensate for this, 6/9/1999.

Changes for version 1.0.9  

  • Changes to help bring the documentation up-to-date, plus added examples, 6/7/1999-6/8/1999.
  • Forced Nlib CURVE dimension to match the TSLib IwBSplineCurve dimension in HwNlibObjectToTSLib::ConvertCurve, 6/7/1999.
  • If a trimmed surface is planar and the model space curves substantially deviate from the surface, project them to the surface, 6/4/1999.
  • Added code to smooth out complex ployline trimming loops, 6/3/1999-6/4/1999.
  • Added mini-wrapper to ensure that the last parameter entry is properly read and processed when the terminate section is missing from the file, 6/2/1999.
  • Removed most news and deletes from the header files, to avoid problems with DLLs and inlining. The HW_AVOID_INLINE_NEW define turns this on for HwStdVector. 6/1/1999.
  • Added wrapper to properly trap errors due to premature end-of-file, 5/25/1999.
  • Added code to force degree 1 parameter space trim curves to be in the parameter space of their surface, 5/25/1999.
  • Added code to detect files without newlines and compensate automatically, 5/25/1999.
  • After seeing the good results of using twice tolerance as the margin of degeneracy in the new HwTSLibTrimLoop3d::RemoveDegenerateCurves, switched HwTSLibTrimLoop2d::RemoveDegenerateCurves to use it as well, 5/24/1999.
  • Added HwTSLibTrimLoop3d::RemoveDegenerateCurves function. Don't know why it wasn't there in the first place. 5/24/1999.
  • Improved error messages, 5/23/1999.

Changes for version 1.0.8  

Note: This release took so long that dates have been forgotten. Sorry.

  • Added #if# block to bits of the new BRep code to make it easy to switch it to work with older versions of TSLib, 5/22/1999.
  • Made curve creation a bit more verbose, 5/21/1999.
  • Moved HwStdString destructor out-of-line to avoid "module" conflicts -- the memory for the string was being newed in the DLL, but deleted in the calling code. It isn't clear whether this was a real problem or a potential one.
  • Added HwNlibObjectToTSLib::ConvertBrep to convert an HwNlibBrep object to an IwBrep.
  • Added HwNlibIgesInterface::PassBrep to handle the new HwNlibBrep type.
  • Added support for reading HwNlibBrep entities.
  • Added two new HwNlibObject subclasses, HwNlibShell and HwNlibBrep to fully support solids.
  • Added new HwNlibCurve::MakeSingleNurbs virtual interface which allows the specification of start and end parameters (so that you get a subset of the curve).
  • Added the HwNlibIgesProgressTracker class so that you can monitor the progress made transferring the HwIgesFile into HwNlib data structures.
  • Added the HwIgesFileReaderProgressTracker class so that you can monitor the progress made reading the IGES file into memory.
  • Added HwIgesParameterIterator::GetLogical to more gracefully handle the "logical" type added recently to the IGES standard. (GetInteger would have worked, but this way we can return a bool and provide a little more automatic validation.)
  • Added HwIgesFile::CountDirectoryEntities to count the size of the directory section, presumably before the parameter section has been read in (at which point it would generally be more sensible to use HwIgesFile::CountValidEntities).
  • New singularity code which recognizes partial singularities along the edge of a surface. 4/21/1999-4/22/1999.
  • Added HwNlibObjectToTSLib::ConvertSurfaceModelOnly for those cases when parameterization is irrelevant. No practical difference at the moment, just a logical one. 4/21/1999.
  • Added IW_ERR_REQUIRES_ADVANCED_NLIB error status, 4/20/1999.

Changes for version 1.0.7  

  • Changed new intersection code to recognize that a closed loop inside a larger loop is normal if it is a model space loop on a closed surface, 4/16/1999.
  • Simplified HwNlibCompositeCurve::MakeSingleNurbs, 4/15/1999.
  • Cleaned up HwNlibCircle::Evaluate to handle reversed curves, 4/15/1999.
  • Eliminated the use of LiftCurve to determine if a parameter space curve is degenerate in model space, 4/14/1999.
  • Discovered that individually deleting Nlib CURVEs and SURFACEs is an O(N^2) operation. Letting them hang around until the stack goes away is slightly less memory efficient, but a big win in terms of speed. 4/13/1999.
  • Tried to make the system smarter about when it needs to ask TSLib to calculateparameter space trimming curves. This yields a small speed up. 4/13/1999.
  • Added PassLine and PassCircle functions to the HwTSLibIgesReceptacleInterface interface. These are now the preferred way to receive line and circular arc info in IGES/TSLib, replacing the HwNlibObjectToTSLib::ConvertCurveRichly function for producing IwLine and IwEllipse objects. 4/12/1999.
  • Found similar weakness in N_igs100, created work around, 4/8/1999.
  • Found bug in N_igs104, submitted patch to GeomWare, 4/7/1999.
  • Implemented first approaches to the linear and functional offset curve types, 4/6/1999.
  • Switched the new intersection code back on, 4/6/1999.

Changes for version 1.0.6  

  • Switched untrimmed surface to IwBrep code to use the full trimming facilities for its first try. This clears up several problems with tricky surfaces. 4/2/1999.
  • Got the parameter curve correction code to recognize and take advantage of isocurves, 4/1/1999.
  • Added new code for dealing with the case when a gap is large in parameter space but small in model space. 3/31/1999.
  • Fixed a glitch that caused the gap fixing code to get overly generous on surfaces of revolution. 3/30/1999.
  • Added an #if block to make it easy to switch the code to work with pre-February 1999 versions of TSLib, 3/30/1999.
  • Added code to detect rectangular, isocurve outer trimloops, trim the surface to that size, and then use the natural outer loop. This helps simplify surfaces, especially in cases very near a singularity. 3/30/1999.

Changes for version 1.0.5  

  • Reworked the stream support a bit. Probably shoudln't make any appreciable difference now, but it is closer to being ready to use the new standard library streams. 3/24/1999.
  • Added IW_ERR_USER_ABORT error condition reserved for customer use. This allows one of the HwTSLibIgesReceptacleInterface Pass functions to cause the translater to exit early. (Actually, any error returned by one of these functions will make the translator shut down early, but HarmonyWare promises never to use this particular error, so you can reliably detect if you wanted everything to shut down.) 3/23/1999.
  • Added HwIgesLookupColorDefinition to simplify getting the color information out of an IGES file, 3/23/1999.
  • Fixed bug that always returned the absolute value of any field in the directory entry, losing the negative sign, 3/23/1999.
  • Fixed single curve loops to do a self-intersection check instead of splitting them into pieces and trying to intersect the pieces, 3/20/1999. [This change was backed out for the release, because it needs a bit more testing.]
  • Added private copy constructor to HwTSLibIgesReceptacleInterface to prevent a compiler-generated (and completely wrong) one from be created by accident. (We don't think the compiler should generate one for a pure virtual class, but we got a report from the field that it was happening, and better safe than sorry.) 3/19/1999.
  • Tweak to reduce memory use in strings, 3/18/1999.

Changes for version 1.0.4  

  • Added code to ensure that composite curves written out by HW IGES are contected, 3/17/1999.
  • Added a check to see if the gap-closing 3D curve created by HwTSLibTrimLoop3d::FillInGaps actually closes the gap; if it doesn't, reject the surface, preventing a possible infinite loop. (In the long term, we need to work out why the curve fails to close the gap.) 3/16/1999.
  • Added the creation of UV trim curves to the HwNlibSurface to IwBrep conversion routine. This catches certain surfaces that will cause problems for TSLib. (In the long term, we need to work out how to do something useful with these surfaces, but avoiding them is important for the short term.) 3/16/1999.
  • Expanded the HwTSLibIgesReceptacleInterface interface to make it full featured, and added a version of hwiges_ReadIges which uses the interface. (Among other things, this enables you to process each entity as it is translated, rather than waiting till the end.) 3/11/1999-3/15/1999.
  • Offset curves implementation started. The code for creating a NURBS version requires Advanced Nlib, and should be considered experiemental -- I only have one offset curve to try it on. 3/10/1999.
  • Added knot reduction for entity types 112 and 114, 3/9/1999.
  • Offset surfaces implemented. The code for creating a NURBS version requires Advanced Nlib, and should be considered experiemental -- I only have one offset surface to try it on, and the routine performs badly in tight tolerance situations. 3/9/1999.

Changes for version 1.0.3  

  • Added code to properly handle HwNlibStraights and HwNlibCircles which are contained in HwNlibCompositeCurves, 3/8/1999.
  • Realized that it wasn't appropriate to generate IwLines and IwEllipses in every situation, and therefore made a HwNlibObjectToTSLib::ConvertCurveRichly function for situations when you'd like to get them. By default, this function is never used. (Presumably, we'll add a flag to one of the interfaces to turn it on. In the meantime, you can only turn it on by modifying the source code by hand.) 3/7/1999.
  • Added code to generate IwEllipses for HwNlibCircles, 3/6/1999.
  • Added code to generate IwLines for HwNlibStraights, 3/5/1999.
  • Added minor HwNlibCurve::GetMinorType functions, 3/5/1999.
  • Added a second "check for small curves" pass on parameter space trimming, in case new small curves have been created by the intersection removing code, 3/4/1999.
  • Fixed ruled surfaces to handle rational NURBS, 3/2/1999.
  • Fixed ruled surfaces to handle rational NURBS, 3/2/1999.
  • Added arclength parameterization for degree 1, non-rational NURBS, 3/2/1999.
  • Switched the ruled surface code to use the new HwNlibCurve::MakeSingleNurbs interface. For the first time, arclength ruled surfaces (form 0) work -- so long as the defining curves are simple things we can make arclength NURBS for. At the moment, only straight lines, I fear, unless you have Advanced Nlib, which allows you to closely approximate circles. 3/1/1999.
  • Got a new version of TSLib which fixed two crashes seen in the standard IGES test file cals/nentity.igs. Unfortunately, the change broke about ten other trimmed surfaces in our test suite. Some days... 3/1/1999.
  • Revised the HwNlibCurve::MakeNurbs and HwNlibCurve::MakeSingleNurbs interfaces so that they are more compact and expressive, 2/27/1999.
  • Plugged a minor memory leak that occurred when a entity could not get its transformation matrix, 2/26/1999.
  • Retooled the new (for 1.0.2) version of HwTSLibIges.h slightly so that it doesn't have to pull in the Nlib headers, which conflict with windows.h, 2/26/1999.
  • A patch to Doc++ 3.3.9 gets rid of most of the junk in the documentation, 2/26/1999.
  • Added IW_EXPORT to HwIgesEffectiveDirectoryCalculator, 2/25/1999.

Changes for version 1.0.2  

  • Many improves to documentation. (Unfortunately, switching to Doc++ 3.3.9 resulted in some additional random garbage showing up, too.) 2/25/1999.
  • Implemented a way to go from an IGES identifier to the effective directory for the entity, including the appropriate fields from any controlling entities, 2/24/1999.
  • Implemented "rich" interface version of the hwiges_ReadIges. This attaches an identifier to each IW entity returned, plus (if desired) the full HwIgesFile structure. 2/24/1999.
  • Fixed a somewhat more substantial memory leak. Basic model now tests clean. 2/23/1999.
  • Cleaned up the error handling involved with the associated data processing, 2/23/1999.
  • Fixed some minor memory leaks, 2/22/1999.
  • Wrote code for scanning and storing the associated data at the end of every parameter data field, 2/20/1999.
  • Laid groundwork for handling the wilder varieties of ruled surfaces, 2/19/1999. [Later discovered that this wouldn't be useful for ruled surfaces at all. Sigh. It will stay in because it may be useful in the future.]
  • Added somewhat experimental code to allow model space trimming on non-G1 continuous surfaces, 2/16/1999.
  • Got updated IwBrep.cpp from IntegrityWare, which fixes several problem surfaces, 2/16/1999.

Changes for version 1.0.1  

  • Properly implemented the ownership flag in HwNlibTrimmedSurface, 2/15/1999.
  • Fixed HwNlibIges::Process bugs that caused an early exit under certain conditions, 2/15/1999.
  • Realized that it was silly to pass the default 3D tolerance to DropCurve when we're trying to find a better 3D tolerance because we know the one we have isn't any good, 2/13/1999.
  • Work on the Doc++ system to enhance the documentation, 2/11/1999.
  • Basic support for using parameter space loops on tabulated cylinders, along the exact same lines as the surfaces of revolution modifiction, 2/10/1999.
  • Added tools for finding the parameter range of a HwNlibCurve, 2/10/1999.
  • When creating entities 126 or 128, check the start and end parameter value to see if they are extremely close to a knot; if so, move them to the knot. (This fixes a crash we were seeing.) 2/9/1999.
  • Fixed a trivial but fatal bug exposed with the first real workout of Subfigures, 2/9/1999.
  • Changed Entity Type 308 (Subfigure Definition) to give a warning instead of a fatal (to the entity's creation) error when one of the entities referenced in the subfigure cannot be created. 2/9/1999.
  • Changed the HwAbstractMessageLogger interface a bit, adding two new virtual (but with defualt definitions) functions: SendWithReason, which attaches an explanation on the line after the message, and LookupReason, which provides a text string to describe a IwStatus value. 2/9/1999.

Changes for version 1.0.0  

  • Changed the trimming harness so that, if both parameter space and model space loops are usable, it will try the other if the first attempt to trim fails, 2/5/1999.
  • Completed the first-pass implementation of surface of revolution parameter space trimming curve adjustment. It requires Advanced Nlib -- if availalble, you need to uncomment the HW_USE_ADVANCED_NLIB define in "HwCommon.h". It's still slow and largely untested, but it seems to have excellent results. 2/4/1999.
  • Used IwBrep::MergeBrep to eliminate the "add instead of create" dataflow path. This new version simplifies the code somewhat. 2/4/1999.
  • Documentation updates, 2/2/1999-2/5/1999.
  • Added preliminary code to allow those with Advanced Nlib to use parameter space trimming curves on surfaces of revolution, 2/1/1999-2/2/1999.
  • Added HwNlibCurve::MakeG1Nurbs using the code from HwTSLibToNlibObject::SplitCurveIfNecessary, which was then deleted, 2/2/1999.
  • Got updates from IntegrityWare fixing the bugs revealed by adding ValidatePointer. Unfortunately, this creates a new interface, so HarmonyWare IGES 1.0.0 will not be compatiable with pre-February 1999 versions of TSLib/SMLib. 2/1/1999.
  • Migrated recent IwFace::ComputeLoopOrientation changes into IGES/TSLib, 2/1/1999.
  • Added ValidatePointer checks, 1/28/1999-1/31/1999.

Changes for version 0.55  

  • Many documentation changes, 1/25/1999.
  • Tweaked HwIgesReader and HwIgesWriter classes while documenting them, 1/23/1999.
  • Made proper TSLib and miniNlib makefiles, 1/23/1999.
  • Renamed some of HwIgesFile members, as the harsh light of documentation revealed their previous names did not really reflect what they did, 1/22/1999.
  • Added the HwIgesParameterIterator::GetUnsignedInteger for better error checking when processing the incoming IGES file, 1/22/1999.
  • Made some changes intended to get the switch to use the STL classes to work again. Unfortunately, Microsoft chokes on putting them in a DLL header, and when I got them all complied with on Linux, I discovered a logical flaw which trips everything up. So this goes on the 1.1 to do list. 1/21/1999.
  • Eliminated use of ostrstream. It was awkward to use, and obsolete too. It may be low-tech, but sprintf gets the job done, and is highly portable. 1/21/1999.
  • Added support for providing not only the DE of the entity in question, but also that of any parent entities, 1/21/1999.
  • Replaced calls to IwFace::ComputeLoopOrientation which were only intended to ensure the UV trim curves on the face had been created with calls to CreateTrimCurves, 1/19/1999.
  • Added code to determine the proper tolerance to write to the IGES file in hwiges_WriteIges, 1/13/1999.
  • Received an IwSurface::DropCurve update from IntegrityWare which cleaned up a number of problems with one particular IGES file, without harming the performance of the others in my test suite. 1/13/1999.
  • Fixed glitch caused by ignoring the interval of edges when writing IwFaces by not ignoring that interval, 1/13/1999.
  • Added support for setting level and color number when writing, 1/11/1999.
  • Suppressed error message if the model space trial trim fails, 1/11/1999.

Changes for version 0.54  

  • Various other tweaks, including new makefiles for Linux, 1/7/1999.
  • Reorganization of the IGES/TSLib surface trimming code. Among other things, this frees it up from the requirement of working with HwNlibObject types, which should allow it to be easily used without the IGES translator. 1/3/1999-1/6/1999.
  • Started adding new error messages, 1/3/1999.
  • Added class for processing group (type 402 form 1/7) information, 1/2/1999.
  • Improved HwAbstractMessageLogger class, 1/1/1999-1/3/1998.
  • Updated code for fixing small gaps in model space curves so that the tweaked curve ends still lie on the surface, 1/1/1999.
  • Rewrote and turned on code to adjust UV space curves which ended very near singularities so that they end exactly on the singularity. (Because of previous change, this makes the curves very nearly exact.) This clears up more than half of the outstanding problem surfaces. 12/28/98.
  • Added code to force logical singularities (edge shorter than 3D tolerance) to physical singularities (edge zero length), 12/27/98.
  • Got a fix from IntegrityWare which eliminated another crash, 12/23/98.
  • Added a continuity check to HwNlibObjectToTSLib::ConvertSurface to weed out overly degenerate surfaces, 12/22/98.
  • Enable the bMakeSingleBrep flag for the hwiges_ReadIges call, 12/20/98.
  • Got the Dec 19, 98 version of TSLib from IntegrityWare, 12/19/98.

Changes for version 0.53  

  • Got an update from IntegrityWare which made more C0 surfaces trim properly, 12/17/98.
  • Added a hack to ensure that 3D tolerance is never smaller than 1e-6. In the long run, the appropriate tolerance should be automatically detected, but in the short run this clears up a lot of problems without introducing any new ones. 12/17/98.
  • Changed parameter loop gap analysis to treat as trivial gaps which are within tolerance in 3D space and less than 1/1000th the size of the surface in UV space, even if they are greater than UV tolerance. It didn't actually improve anything in the test suite, but fixes a problem I was seeing, even if that particular surface still doesn't read in. 12/17/98.
  • Got an update from IntegrityWare which fixed more problems caused by the update before last, 12/17/98.
  • Wrote my own singularity checking code to get around the problems I've been having with IwSurface::IsSingularity. My code is worse at the weird cases, but much better at the normal ones. 12/17/98.
  • Optimized HwNlibCURVE a touch, 12/14/98.
  • Adjusted the parser so that the goofy double "2E-5.0" is read as "2e-5" and not "2e-50", 12/12/98.
  • Coded more detailed analysis of gaps in parameter space loops. The new version reliably handles what the old one could, plus one new case, with several error cases now identified. Two unusual and difficult cases remain to be coded, 12/11/98.
  • Got an update from IntegrityWare which fixed the problems caused by the previous update, 12/10/98.
  • Extended rejection of degenerate trimming curves to include curves smaller than model space tolerance, 12/10/98.
  • Added more informative messages during trimmed surface processing, 12/9/98-12/10/98.
  • Got an update from IntegrityWare which fixed the crashes I had been seeing, 12/9/98.
  • Added logging of loops reversed before sending them to MakeFaceWithCurves, 12/8/98.
  • Fixed it so model space curve ends are not tweaked if they are already exactly co-incident, 12/4/98.

Changes for version 0.52  

  • Added brief documentation for users without Nlib. 12/2/98.
  • Fixed regression caused by model space gap filling code. In the process, moved the 3D tolerance check before this call. 12/2/98.
  • Added code to check for the actual 3D tolerance when trimming with model space curves, adjusting the 3D tolerance on the IwBrep appropriately, 12/1/98.
  • Moved around MakeBrep calls, deleting some unnecessary asserts in the process, so that it is called at the last possible moment, allowing us to easily change the 3D tolerance during the preparation for the IwBrep creation process, 12/1/98.
  • Added fairly crucial SER wrapper, so that an error in when adding a model space loop no longer leads to a seg fault, 12/1/98.
  • Discovered a bug in IwEdgeuse::EvaluateBinormal and got fix from IntegrityWare, 11/25/98.
  • Turned on gap filling for model space loops, 11/24/98.
  • Wrote routine to examine the parameter space trimloop created from model space trimloop and make any necessary small adjustments to make the connectivity exact, 11/24/98.

Changes for version 0.51  

  • Added message logger documentation, 11/23/98.
  • Tweaks to documentation, 11/23/98.
  • Added the capablity to pass points in the NMTLib interface, 11/23/98.
  • Fixed doubled lines in the message log when in the paranoid check for model space outer loop on a closed surface, 11/21/98.
  • Allowed overriding the file tolerance in the NMTLib interface, 11/21/98.
  • Discovered a bug in N_cur1gs and got fix from GeomWare, 11/20/98.
  • Found several pleases where HW_NEW was not used and should have been. Fixed 11/20/98.
  • Eliminated the HW_NEW (p_context) construct. The idea of HW_NEW is to allow the user to replace a standard new with a placement new, but the HW_NEW (p_context) construct was already a placement new, and the construct new (...) (p_context) would be quite illegal. (HW_NEW still used for other uses for new.) Fixed 11/20/98.
  • Changed trim loop intersection code to deal with the case when an entire curve is contained in another curve. Fixed 11/19/98.
  • Changed the trimming routines so that they would work if no trimloops were present. (Thank you, Catia, for sending a trimmed surface with no trimming curves....) Fixed 11/18/98.
  • Logged incorrect messages as to whether parameter space or model space trimming was used. Fixed 11/18/98.
  • Incorrectly oriented model space curves on the seam of a closed surface were sometimes created incorrectly (as opposed to correctly but backwards). Most noticable on trimmed surfaces of revolution. Fixed 11/18/98.

Initial pre-release is version 0.50  

Return to the main HarmonyWare page.


Copyright © 1998-2014 Harmonyware, Inc. Last modified: Wed Apr 29 11:49:33 2015