Commit Graph

62 Commits

Author SHA1 Message Date
Abdullah Tahiri
5a435f8d84 Part: geometry extensions minor code clean up 2019-07-14 12:37:35 +02:00
Abdullah Tahiri
11793ba0b2 Part Geometry: get an extension from type or name, also from python 2019-07-14 12:37:33 +02:00
Abdullah Tahiri
afbe1df322 Part:: Geometry container extend hasExtension to type and name 2019-07-14 12:37:33 +02:00
Abdullah Tahiri
854452e2e1 Part: Geometry - methods to remove extensions by name and type 2019-07-14 12:37:33 +02:00
Abdullah Tahiri
9bb2210c92 Part: Geometry extensions set interface
=======================================

unique_ptr is a move only type. Therefore it may only take an rvalue.

It does not make sense a pass by value for move only types (Item 41).
2019-07-14 12:37:31 +02:00
Abdullah Tahiri
1e2c627f26 Part: Excise GeometryExtension from Geometry 2019-07-14 12:37:30 +02:00
Abdullah Tahiri
aedfb6a6a3 Geometry Extension based on smart pointers 2019-07-14 12:37:28 +02:00
Abdullah Tahiri
2400d63d70 Part: Geometry Extensions 2019-07-14 12:37:28 +02:00
wmayer
0c3bfc4ff3 fix minor issues 2019-02-12 11:16:52 +01:00
Abdullah Tahiri
0ceae9ead4 Part: Enable trimmed curves to set their parameter range, from c++ and Python
=============================================================================

>>> geometries = ActiveSketch.Geometry
>>> geo2 = geometries[2]
>>> geo2
ArcOfCircle (Radius : 27.5267, Position : (-70.4702, -31.8933, 0), Direction : (0, 0, 1), Parameter : (1.34187, 2.35619))
>>> geo2.setParameterRange(1,3)
>>> geometries[2]=geo2
>>> ActiveSketch.Geometry=geometries
2019-02-11 19:13:16 +01:00
wmayer
b8455531c1 declare private intersect() function as static to make clear it doesn't belong to a GeomCurve instance 2019-01-03 15:40:59 +01:00
Abdullah Tahiri
6f42f3dacc Part: Geometry tangent with Vector3d overload 2018-11-04 14:43:24 -03:00
Abdullah Tahiri
7effa68eeb Part: Geometry use CADKernelError exception for OCCT
====================================================

Part of the geometry was using CADKernelError and part was using RunTimeError exceptions, so unify criteria.

Runtime is very generic and does not need to stem from OCCT.

- Also rename of a typo basic to basis, to be coherent with OCCT terminology
2018-10-28 18:34:36 +01:00
Abdullah Tahiri
649d115afb Part: Geometry New Bounded-Trimmed-curve inheritance
====================================================

The new hierarchy is as this:
GeomArcOfConic:GeomTrimmedCurve:GeomBoundedCurve:GeomCurve

A bounded curve is one having a start and endpoint, like an arc, a line segment, or a b-spline

A trimmed curve is one arising from trimming a basis curve, line an arc or a line segment, but NOT a b-spline.

An arc of Conic is one arising from a conic section, line an arc, but neither a line segment, nor a b-spline.

This new hierarchy enables a more consistent handling of geometry and it is closer to the OCCT hierarchy.
2018-10-28 18:33:58 +01:00
Abdullah Tahiri
0ed7b1d691 Part: Geometry - refactoring of intersection code 2018-10-28 18:33:45 +01:00
Abdullah Tahiri
b1858f2cf4 Part: Geometry Arcs inheriting from GeomTrimmedCurve 2018-10-28 18:32:15 +01:00
Abdullah Tahiri
f301feec31 Part: New routines for curve intersection 2018-10-28 18:31:06 +01:00
luzpaz
706141b967 Make uniform the use of B-spline visible to users
Forum thread: https://forum.freecadweb.org/viewtopic.php?f=8&t=25411
This commit does not include fixes to source  comments unless they were 'doxygenated'.
No .xml files were altered either.
2017-11-17 19:30:37 -05:00
wmayer
7aec98ffb6 add methods to get normal and curvature information from surfaces 2017-08-14 12:24:42 +02:00
tomate44
cbfc6ae742 Part GeomBezierCurve implement Save() and Restore() 2017-06-26 22:08:38 +02:00
Peter Lama
a75a98ef27 Use OCCT Handle macro for Handle_ classes
This is the result of running OCCT's upgrade script provided
with OCCT 7.0. See
https://www.opencascade.com/content/freecad-occt710-and-windows-rtti-data-missing#comment-form
and
https://www.forum.freecadweb.org/viewtopic.php?f=4&t=21405&start=120#p169019
for why this is necessary for OCCT >= 7.1
2017-04-20 12:27:34 +02:00
Abdullah Tahiri
f6126ba9c0 Part: hiding tag handling functions as protected until a need for them is clear 2017-04-10 08:57:25 +02:00
Abdullah Tahiri
c3c670e162 Part: Geometry refactoring copy/clone 2017-04-10 08:57:25 +02:00
Abdullah Tahiri
7685823ecd Part: Geometry assignTag function 2017-04-10 08:57:25 +02:00
Abdullah Tahiri
9382de15a9 Part: Geometry creation of copy method to distinguish from clone 2017-04-10 08:57:25 +02:00
wmayer
497728a6d2 add method to create new tag id 2017-04-08 13:31:28 +02:00
Abdullah Tahiri
99d64ff33f Part: Geometry - implement missing setHandle functions and refactoring 2017-04-08 12:58:06 +02:00
Abdullah Tahiri
9580440d31 Part: Add unique identifier to Geometry 2017-04-08 12:58:06 +02:00
Abdullah Tahiri
e34788b6fc Part: GeomBSpline enable direct construction from parameters 2017-04-08 12:58:06 +02:00
Abdullah Tahiri
ca48841b8c Part: GeomBSplineCurve extension to get, increase or reduce multiplicity 2017-04-08 12:58:06 +02:00
Abdullah Tahiri
409cbb7199 Part: Geometry add support for getting the number of knots in a B-Spline 2017-04-08 12:58:06 +02:00
wmayer
f2dc8c5d31 Some fixes of pr 538
fix -Wreturn-type
homogenous naming style
use official spelling of B-spline
2017-02-21 13:30:43 +01:00
Abdullah Tahiri
f291942d45 Part: Add support for reversing a geomcurve 2017-02-21 13:24:10 +01:00
Abdullah Tahiri
afd761041d Sketcher: BSpline Increase Degree tool 2017-02-21 13:24:10 +01:00
Abdullah Tahiri
9c10b3219d Part: Geometry functionality extension
======================================

Added for curves:
getFirstParameter
getLastParameter
curvatureAt
length

Modified:
normalAt(double u, Base::Vector3d& dir)

as it was not working properly.
2017-02-21 13:24:10 +01:00
wmayer
5cb17a6036 implement toNurbs for ellipse 2017-02-17 18:43:20 +01:00
wmayer
89925e21a3 implement NURBS converson of circle 2017-02-13 15:13:35 +01:00
wmayer
27fd215e1c add methods to convert a curve to a B-Spline or NURBS 2017-02-13 10:38:09 +01:00
Abdullah Tahiri
609c80b71a Part: Fixes triggered by Werner's comments on my branch 2017-01-10 20:05:18 +01:00
Abdullah Tahiri
b277620138 Part: GeomBSpline extension for basic BSPline Sketcher support
==============================================================

1) Basic set/get interface for poles, weights, knots and multiplicities

2) Introduction of GeomBoundedCurve class replicating OCC hierarchy. Why? To provide seamless start/end point interface for any bounded curve, i.e. Bezier, BSpline,

Note: The ArcOfConic start/end point interface relies on GeomTrimmedCurve, and introduces CCW/CW correcting code which relies on Axis. Axis are introduced in GeomConic and are
not part of GeomBounded.

Note 2: In the future, it may be thought to make GeomArcOfConic (the equivalent of GeomTrimmedCurve) deriving from GeomBoundedCurve, as to fully replicate OCC hierarchy. GeomBoundedCurve
defines the functions as virtual to allow seamless integration.
2017-01-05 11:58:33 +01:00
wmayer
7496eeef18 move methods setXAxisDir/getXAxisDir to base class 2016-12-28 14:22:12 +01:00
Abdullah Tahiri
579cbb280b Part: ArcOfParabola extension to set the symmetry axis 2016-12-18 00:03:53 +01:00
Abdullah Tahiri
8c83f4142b Part: Parabola Extension to support getting occ focus 2016-12-17 22:50:46 +01:00
wmayer
932eab40fc add class GeomArcOfConic to reduce code duplication 2016-12-04 14:20:56 +01:00
wmayer
adf3cc0f95 add class GeomConic to reduce code duplication 2016-12-04 11:36:50 +01:00
Abdullah Tahiri
27a76afa94 In Part:Geometry:
- Fixing Hyperbola classes to get CCW emulation (like Ellipse classes).

In Sketcher:
- The Sketcher representation deals with the right branch of the Hyperbola only.
- Solver model is: Center, Focus1 (focus of the right branch), minor radius (b).
- HyperbolicArcRangeToEndPoints code is the one of Ellipse <= Awaiting DeepSOIC help ;)
- ConstraintPointOnHyperbola solver constraint is now implemented and should be working.
- No InternalAligment constraints implemented yet.
2016-11-27 18:45:33 +01:00
wmayer
9ff8260608 + remove GeomHermiteCurve class and add its methods to GeomBSplineCurve 2016-10-29 15:08:17 +02:00
wmayer
18a5ff83b1 add support of Hermite curves 2016-10-26 10:28:23 +02:00
wmayer
fbaf3a1bbc implement method to get GeomSurface from Geom_Surface 2016-10-17 22:39:17 +02:00
wmayer
2502526e4e extend API of several surface types 2016-10-17 21:59:20 +02:00