Commit Graph

67 Commits

Author SHA1 Message Date
Abdullah Tahiri
00a1aa6225 Part: Geometry - encapsulate construction access 2020-10-25 03:52:51 +01:00
wmayer
4fbc693014 Part: [skip ci] add method to approximate a B-spline curve with a given max. degree 2020-10-23 00:06:31 +02:00
wmayer
343639640c Part: converter from Adaptor3d_Curve to GeomCurve 2020-09-28 14:53:42 +02:00
wmayer
1f8296736b Part: improve Python interface
+ rename getCurve2dFromGeom2d to makeFromCurve2d
+ add function makeFromCurve and makeFromTrimmedCurve like makeFromSurface
+ implement OffsetCurve.BasisCurve
+ fix memory leak in BRepOffsetAPI_MakePipeShellPy
2020-09-27 23:34:45 +02:00
wmayer
2c8f78b299 Part: [skip ci] return std::unique_ptr from Part::makeFromSurface() to avoid memory leaks 2020-08-29 23:56:12 +02:00
Abdullah Tahiri
006b470a20 Part: geometry extensions minor code clean up 2019-07-14 12:37:35 +02:00
Abdullah Tahiri
8618dfd3c6 Part Geometry: get an extension from type or name, also from python 2019-07-14 12:37:33 +02:00
Abdullah Tahiri
d8e99c1923 Part:: Geometry container extend hasExtension to type and name 2019-07-14 12:37:33 +02:00
Abdullah Tahiri
4d9d3b0c83 Part: Geometry - methods to remove extensions by name and type 2019-07-14 12:37:33 +02:00
Abdullah Tahiri
7488faa99f 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
d082a42351 Part: Excise GeometryExtension from Geometry 2019-07-14 12:37:30 +02:00
Abdullah Tahiri
55be6fdb7f Geometry Extension based on smart pointers 2019-07-14 12:37:28 +02:00
Abdullah Tahiri
622f249dcd Part: Geometry Extensions 2019-07-14 12:37:28 +02:00
wmayer
92716f1361 fix minor issues 2019-02-12 11:16:52 +01:00
Abdullah Tahiri
f4e4f3441f 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
43e5729f54 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
3e85954f6d Part: Geometry tangent with Vector3d overload 2018-11-04 14:43:24 -03:00
Abdullah Tahiri
578ea97647 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
0554944923 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
e5521fe0e1 Part: Geometry - refactoring of intersection code 2018-10-28 18:33:45 +01:00
Abdullah Tahiri
c3592c8ff4 Part: Geometry Arcs inheriting from GeomTrimmedCurve 2018-10-28 18:32:15 +01:00
Abdullah Tahiri
8a134466ed Part: New routines for curve intersection 2018-10-28 18:31:06 +01:00
luzpaz
cc87c20afe 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
3fee9bad3e add methods to get normal and curvature information from surfaces 2017-08-14 12:24:42 +02:00
tomate44
ad2aedbfc2 Part GeomBezierCurve implement Save() and Restore() 2017-06-26 22:08:38 +02:00
Peter Lama
fa4bebf2e0 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
1810164d60 Part: hiding tag handling functions as protected until a need for them is clear 2017-04-10 08:57:25 +02:00
Abdullah Tahiri
621c1d74f1 Part: Geometry refactoring copy/clone 2017-04-10 08:57:25 +02:00
Abdullah Tahiri
52a0ad6e04 Part: Geometry assignTag function 2017-04-10 08:57:25 +02:00
Abdullah Tahiri
f9dd6cace1 Part: Geometry creation of copy method to distinguish from clone 2017-04-10 08:57:25 +02:00
wmayer
3663cfbd0e add method to create new tag id 2017-04-08 13:31:28 +02:00
Abdullah Tahiri
3060e28c81 Part: Geometry - implement missing setHandle functions and refactoring 2017-04-08 12:58:06 +02:00
Abdullah Tahiri
1c34aca8ac Part: Add unique identifier to Geometry 2017-04-08 12:58:06 +02:00
Abdullah Tahiri
6301b814ee Part: GeomBSpline enable direct construction from parameters 2017-04-08 12:58:06 +02:00
Abdullah Tahiri
298e962d26 Part: GeomBSplineCurve extension to get, increase or reduce multiplicity 2017-04-08 12:58:06 +02:00
Abdullah Tahiri
0cf81e2d1f Part: Geometry add support for getting the number of knots in a B-Spline 2017-04-08 12:58:06 +02:00
wmayer
a0aa4fdfef 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
49fe51910c Part: Add support for reversing a geomcurve 2017-02-21 13:24:10 +01:00
Abdullah Tahiri
194dcae963 Sketcher: BSpline Increase Degree tool 2017-02-21 13:24:10 +01:00
Abdullah Tahiri
08a79d7146 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
8c5d7b7386 implement toNurbs for ellipse 2017-02-17 18:43:20 +01:00
wmayer
9baa5e9791 implement NURBS converson of circle 2017-02-13 15:13:35 +01:00
wmayer
becdede5c0 add methods to convert a curve to a B-Spline or NURBS 2017-02-13 10:38:09 +01:00
Abdullah Tahiri
b0dc19eca9 Part: Fixes triggered by Werner's comments on my branch 2017-01-10 20:05:18 +01:00
Abdullah Tahiri
e026378e7d 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
9d8f765738 move methods setXAxisDir/getXAxisDir to base class 2016-12-28 14:22:12 +01:00
Abdullah Tahiri
7f2f9a19c3 Part: ArcOfParabola extension to set the symmetry axis 2016-12-18 00:03:53 +01:00
Abdullah Tahiri
abb3e1d0b5 Part: Parabola Extension to support getting occ focus 2016-12-17 22:50:46 +01:00
wmayer
273f3995c0 add class GeomArcOfConic to reduce code duplication 2016-12-04 14:20:56 +01:00
wmayer
4ba8b565dc add class GeomConic to reduce code duplication 2016-12-04 11:36:50 +01:00