# *************************************************************************** # * Copyright (c) 2009, 2010 Yorik van Havre * # * Copyright (c) 2009, 2010 Ken Cline * # * * # * This program is free software; you can redistribute it and/or modify * # * it under the terms of the GNU Lesser General Public License (LGPL) * # * as published by the Free Software Foundation; either version 2 of * # * the License, or (at your option) any later version. * # * for detail see the LICENCE text file. * # * * # * This program is distributed in the hope that it will be useful, * # * but WITHOUT ANY WARRANTY; without even the implied warranty of * # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * # * GNU Library General Public License for more details. * # * * # * You should have received a copy of the GNU Library General Public * # * License along with this program; if not, write to the Free Software * # * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * # * USA * # * * # *************************************************************************** """Define geometry functions for manipulating shapes in the Draft Workbench. These functions are used by different object creation functions of the Draft Workbench, both in `Draft.py` and `DraftTools.py`. They operate on the internal shapes (`Part::TopoShape`) of different objects and on their subelements, that is, vertices, edges, and faces. """ ## \defgroup DRAFTGEOMUTILS DraftGeomUtils # \ingroup UTILITIES # \brief Shape manipulation utilities for the Draft workbench # # Shapes manipulation utilities ## \addtogroup DRAFTGEOMUTILS # @{ __title__ = "FreeCAD Draft Workbench - Geometry library" __author__ = "Yorik van Havre, Jacques-Antoine Gaudin, Ken Cline" __url__ = ["https://www.freecad.org"] # Doesn't need requisites from draftgeoutils.linear_algebra import (linearFromPoints, determinant) # Needs math, Part, and vector tools from draftgeoutils.general import NORM from draftgeoutils.general import (precision, vec, edg, getVerts, v1, isNull, isPtOnEdge, hasCurves, isAligned, getQuad, areColinear, hasOnlyWires, geomType, isValidPath, findClosest, getBoundaryAngles) # Needs general functions from draftgeoutils.geometry import (findPerpendicular, findDistance, getSplineNormal, get_spline_normal, getNormal, get_normal, get_shape_normal, getRotation, isPlanar, is_planar, calculatePlacement, mirror, are_coplanar, is_straight_line, mirror_matrix, uv_vectors_from_face, placement_from_face, placement_from_points, distance_to_plane, project_point_on_plane) from draftgeoutils.edges import (findEdge, orientEdge, isSameLine, isLine, is_line, invert, findMidpoint, getTangent, get_referenced_edges) from draftgeoutils.faces import (concatenate, getBoundary, isCoplanar, is_coplanar, bind, cleanFaces, removeSplitter) from draftgeoutils.arcs import (isClockwise, isWideAngle, arcFrom2Pts, arcFromSpline) from draftgeoutils.cuboids import (isCubic, getCubicDimensions) # Needs geometry functions from draftgeoutils.circle_inversion import (pointInversion, polarInversion, circleInversion) # Needs edges functions from draftgeoutils.sort_edges import (sortEdges, sortEdgesOld) from draftgeoutils.intersections import (findIntersection, wiresIntersect, connect, angleBisection) from draftgeoutils.wires import (findWires, findWiresOld, findWiresOld2, flattenWire, superWire, isReallyClosed, curvetowire, curvetosegment, rebaseWire, removeInterVertices, cleanProjection, tessellateProjection, get_placement_perpendicular_to_wire, get_extended_wire) # Needs wires functions from draftgeoutils.fillets import (fillet, filletWire) # Needs intersections functions from draftgeoutils.offsets import (pocket2d, offset, offsetWire) from draftgeoutils.circles import (findClosestCircle, getCircleFromSpline, circlefrom1Line2Points, circlefrom2Lines1Point, circleFrom2LinesRadius, circleFrom3LineTangents, circleFromPointLineRadius, circleFrom2PointsRadius, findHomotheticCenterOfCircles, findRadicalAxis, findRadicalCenter) from draftgeoutils.circles_apollonius import (outerSoddyCircle, innerSoddyCircle, circleFrom3CircleTangents) # Needs circles_apollonius functions # These functions are not imported because they are incomplete; # they require pre-requisite functions that haven't been written # from draftgeoutils.circles_incomplete import (circleFrom2tan1pt, # circleFrom2tan1rad, # circleFrom1tan2pt, # circleFrom1tan1pt1rad, # circleFrom3tan) ## @}