Commit Graph

82 Commits

Author SHA1 Message Date
Richard Brice 42c49af4e3 Implements business to geometry mapping for alignment cant.
Also fixes problems that were created by this work in other files
2025-03-29 15:30:04 -07:00
Richard Brice 04e07db0a3 Import alignment from csv (#6234)
* Start of the official alignment API

* Import alignment into bonsai model using CSV file
2025-03-14 07:31:50 -07:00
Richard Brice 79046e2970 Compute horizontal project of vertical spiral curve 2025-02-12 16:47:51 -08:00
Scott Lecher a7a9fcc73a adds calculations for projected_length of gradient curve segments (#6006) 2025-01-22 15:37:29 -08:00
Richard Brice 933d845472 Fixes IfcPolynomialCurve when used as IfcCurveSegment.ParentCurve in horizontal alignments 2025-01-06 14:36:37 -08:00
Richard Brice 26ba761c68 Refactors alignment geometry 2025-01-02 11:10:56 -08:00
Richard Brice eadf35f031 Fixes unit conversion for polynomial coefficients 2024-12-02 14:45:05 -08:00
Richard Brice 3672ce90d0 Minor tweak for cant with IfcCosineSpiral and IfcSineSpiral 2024-11-04 15:00:27 -08:00
Richard Brice f3ce57480a Fixes unit conversion problem in IfcCurveSegment 2024-10-31 08:55:01 -07:00
Richard Brice e270583451 Fixes unit conversion on clothoid constant 2024-10-24 08:43:47 -07:00
Richard Brice 647e379c69 Fixes problem with evaluating point on vertical alignment
Fixes evaluation of IfcLine parent curve for IfcGradientCurve. See https://github.com/IfcOpenShell/IfcOpenShell/discussions/5587
2024-10-20 08:19:49 -07:00
Richard Brice abe3d7e5db Fixes problem normalizing IfcDirection direction ratios 2024-09-28 06:19:41 -07:00
Richard Brice cc7171060f Decouples evaluation of a piecewise_function from the function itself (#5344) 2024-09-10 10:11:17 -07:00
Richard Brice c9d2390d9a Implements cant geometry 2024-09-06 10:02:08 -07:00
Thomas Krijnen d80bcd1a94 Unify variant storage (#5118) 2024-08-23 20:29:07 +02:00
Richard Brice c31c34b7d2 reimplements piecewise_function using PIMPL idiom
PIMPL idiom allows implementaiton of piecewise_function to evolve without envoking systemwide recompile (unless the class definition changes)
2024-08-01 12:34:49 -07:00
Richard Brice 60b007d28a Fixes domain of vertical and cant pwf (Issue #5072) 2024-07-29 09:48:15 -07:00
Richard Brice 9bf68db080 Fixes mapping of cant segments without superelevations 2024-07-17 15:46:36 -07:00
Thomas Krijnen a2334f4ce0 More 4X3 non-ADD2 permissiveness in param values on polynomials 2024-06-28 13:39:19 +02:00
Richard Brice 579768c35f Fixes problem with cant values 2024-05-22 13:51:55 -07:00
Richard Brice a45f6f980f Prevents divide by zero when clothoid constant is 0.0 2024-05-20 13:17:18 -07:00
Richard Brice 507e4a8211 Fixes problem with constant cant 2024-05-08 10:28:01 -07:00
Richard Brice a0b4c24224 Updates taxonomy::piecewise_function so it's immutable and implements internal caching. Adds new evaluate2 method that returns loop and vector of distance along for each loop point. 2024-05-07 10:24:46 -07:00
Richard Brice 648ca4d477 Resolves IfcSegmentCurve parent curve parameterization for line and clothoid 2024-05-04 18:07:09 -07:00
Richard Brice 6cb511b681 Removed IfcPolyLine as a parent curve for IfcCurveSegment. 2024-05-04 16:14:15 -07:00
Richard Brice 4dec319333 Re-write of IfcCurveSegment to eliminate recursion problem and provides a more standardized approach for all parent curve types 2024-05-04 16:03:36 -07:00
Thomas Krijnen 710f19af08 Prevent stackoverflow on long alignments in adjustments 2024-04-29 21:02:31 +02:00
Thomas Krijnen e6cc500227 Some basic code to lookup lengths for pre ADD2 schemas 2024-04-29 21:00:59 +02:00
Richard Brice e946e34823 Apparent fix to cant placement matrix 2024-04-15 12:41:36 -07:00
Richard Brice a1d8aaf999 Fixes problems with Helmert curves 2024-04-11 11:13:02 -07:00
Richard Brice 4807e5b432 Fixes curve segment placement issues 2024-04-10 15:15:11 -07:00
Richard Brice a34da81ac5 Fixes tilt slope for cant 2024-04-10 14:09:46 -07:00
Richard Brice 6d5a9f8716 Fixes anon namespace that was causing problems with linking 2024-04-10 11:48:26 -07:00
Richard Brice fda4c674d9 Fixes more problems with mapping IfcCurveSegment 2024-04-09 16:46:43 -07:00
Richard Brice a94d1e53b7 Fixes some problems with mapping IfcCurveSegment 2024-04-06 19:02:18 -07:00
Richard Brice 83a127b570 Implements IfcSegmentReferenceCurve and cant 2024-03-28 15:04:17 -07:00
Richard Brice ebe6015561 Fixes vertical clothoid, vertical circle, and horizontal cubic cases for alignment 2024-03-06 12:00:35 -08:00
Richard Brice fcfeac95bf WIP getting alignment geometry to match unit test from bSI Rail Room 2024-03-01 10:55:20 -08:00
Richard Brice 0baf3dac52 Adds support for IfcCosineSpiral, IfcSineSpiral, and updates implementation to match results from bSI Railway Room test cases. 2024-02-26 16:34:41 -08:00
Richard Brice bb88ba5bdf Updates implementation of IfcXXXPolynomialSpiral curves as parent curve 2024-02-16 13:54:26 -08:00
Richard Brice abddb74bd9 Adds placeholder implementations for IfcXXXOrderPolynomialSpiral - there are some bugs, but the basic implementation framework is good. 2024-01-17 12:59:48 -08:00
Richard Brice 5815417198 Fixes documentation in comment 2024-01-11 15:36:17 -08:00
Richard Brice 662a4bb6e9 Fixes generated geometry based on evolving understanding of IFC 2023-12-13 16:17:10 -08:00
Richard Brice 7fef3efbeb Fixes horizontal alignment issues 2023-12-13 16:17:10 -08:00
Richard Brice 4b933812a7 Generalized calculation of spiral curve tangent vector 2023-12-07 08:01:31 -08:00
Richard Brice 9e32c0ea93 Fixes problem computing Axis vector for cant 2023-12-06 15:31:01 -08:00
Richard Brice 2126381a15 Adds conversion settings to control the granularity of points computed for a piecewise_function 2023-11-22 15:49:24 -08:00
Richard Brice 39c3cac05d Fixes bugs in segment reference curve geometry 2023-11-22 08:32:59 -08:00
Richard Brice 49d9245e29 Fixes problem computing tangent and normal vectors for Circle 2023-11-21 08:49:16 -08:00
Richard Brice 49b3805859 Updates treatment of IfcLine to account for the fact that IfcLine.Orientation.DirectionRatios are generally normalized. 2023-11-20 11:15:35 -08:00