From 30ba4dc31eebad0f459af688a5a7dae5c368e2cc Mon Sep 17 00:00:00 2001 From: Jeremy Wright Date: Fri, 15 May 2015 08:16:13 -0400 Subject: [PATCH] Updated CadQuery lib. --- CadQuery/Libs/cadquery/CQ.py | 10 +++---- CadQuery/Libs/cadquery/contrib/__init__.py | 24 ++++++++--------- .../Libs/cadquery/freecad_impl/__init__.py | 18 +++++++++++-- .../Libs/cadquery/freecad_impl/exporters.py | 2 +- CadQuery/Libs/cadquery/freecad_impl/geom.py | 2 +- .../Libs/cadquery/freecad_impl/importers.py | 2 +- CadQuery/Libs/cadquery/freecad_impl/shapes.py | 12 ++++----- CadQuery/Libs/cadquery/plugins/__init__.py | 26 +++++++++---------- CadQuery/Libs/cadquery/selectors.py | 25 +++++++++--------- 9 files changed, 68 insertions(+), 53 deletions(-) diff --git a/CadQuery/Libs/cadquery/CQ.py b/CadQuery/Libs/cadquery/CQ.py index 4854944..dd09dd8 100644 --- a/CadQuery/Libs/cadquery/CQ.py +++ b/CadQuery/Libs/cadquery/CQ.py @@ -1,5 +1,5 @@ """ - Copyright (C) 2011-2014 Parametric Products Intellectual Holdings, LLC + Copyright (C) 2011-2015 Parametric Products Intellectual Holdings, LLC This file is part of CadQuery. @@ -1160,7 +1160,7 @@ class Workplane(CQ): return self.newObject([self.plane.toWorldCoords(newCenter)]) - def spline(self,listOfXYTuple,forConstruction=False): + def spline(self, listOfXYTuple, forConstruction=False): """ Create a spline interpolated through the provided points. @@ -1196,7 +1196,7 @@ class Workplane(CQ): gstartPoint = self._findFromPoint(False) gEndPoint = self.plane.toWorldCoords(listOfXYTuple[-1]) - vecs = [self.plane.toWorldCoords(p) for p in listOfXYTuple ] + vecs = [self.plane.toWorldCoords(p) for p in listOfXYTuple] allPoints = [gstartPoint] + vecs e = Edge.makeSpline(allPoints) @@ -1336,7 +1336,7 @@ class Workplane(CQ): CadQuery tracks edges as they are drawn, and automatically combines them into wires when the user does an operation that needs it. - Similarly, cadQuery tracks pending wires, and automaticlaly combines them into faces + Similarly, cadQuery tracks pending wires, and automatically combines them into faces when necessary to make a solid. """ self.ctx.pendingWires.append(wire) @@ -1349,7 +1349,7 @@ class Workplane(CQ): if not possible, the wires remain separated FreeCAD has a bug in Part.Wire([]) which does not create wires/edges properly sometimes - Additionally, it has a bug where a profile compose of two wires ( rather than one ) + Additionally, it has a bug where a profile composed of two wires ( rather than one ) also does not work properly. Together these are a real problem. """ wires = self.wires().vals() diff --git a/CadQuery/Libs/cadquery/contrib/__init__.py b/CadQuery/Libs/cadquery/contrib/__init__.py index 6140351..67c7b68 100644 --- a/CadQuery/Libs/cadquery/contrib/__init__.py +++ b/CadQuery/Libs/cadquery/contrib/__init__.py @@ -1,18 +1,18 @@ """ - Copyright (C) 2011-2014 Parametric Products Intellectual Holdings, LLC + Copyright (C) 2011-2015 Parametric Products Intellectual Holdings, LLC - This file is part of CadQuery. + This file is part of CadQuery. - CadQuery is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. + CadQuery is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. - CadQuery 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 - Lesser General Public License for more details. + CadQuery 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 + Lesser General Public License for more details. - You should have received a copy of the GNU Lesser General Public - License along with this library; If not, see + You should have received a copy of the GNU Lesser General Public + License along with this library; If not, see """ diff --git a/CadQuery/Libs/cadquery/freecad_impl/__init__.py b/CadQuery/Libs/cadquery/freecad_impl/__init__.py index 66ed23d..3e041e3 100644 --- a/CadQuery/Libs/cadquery/freecad_impl/__init__.py +++ b/CadQuery/Libs/cadquery/freecad_impl/__init__.py @@ -1,5 +1,5 @@ """ - Copyright (C) 2011-2014 Parametric Products Intellectual Holdings, LLC + Copyright (C) 2011-2015 Parametric Products Intellectual Holdings, LLC This file is part of CadQuery. @@ -39,6 +39,7 @@ def _fc_path(): "/usr/lib/freecad/lib", "/opt/freecad/lib/", "/usr/bin/freecad/lib", + "/usr/lib/freecad", ]: if os.path.exists(_PATH): return _PATH @@ -94,5 +95,18 @@ def _fc_path(): if os.path.exists(_PATH): return _PATH + + #Make sure that the correct FreeCAD path shows up in Python's system path -sys.path.insert(0, _fc_path()) +no_library_path = ImportError('cadquery was unable to determine freecads library path') +try: + import FreeCAD +except ImportError: + path = _fc_path() + if path: + sys.path.insert(0, path) + try: + import FreeCAD + except ImportError: + raise no_library_path + else: raise no_library_path diff --git a/CadQuery/Libs/cadquery/freecad_impl/exporters.py b/CadQuery/Libs/cadquery/freecad_impl/exporters.py index 0633b4d..d78fab1 100644 --- a/CadQuery/Libs/cadquery/freecad_impl/exporters.py +++ b/CadQuery/Libs/cadquery/freecad_impl/exporters.py @@ -1,5 +1,5 @@ """ - Copyright (C) 2011-2014 Parametric Products Intellectual Holdings, LLC + Copyright (C) 2011-2015 Parametric Products Intellectual Holdings, LLC This file is part of CadQuery. diff --git a/CadQuery/Libs/cadquery/freecad_impl/geom.py b/CadQuery/Libs/cadquery/freecad_impl/geom.py index 1b70434..9a111b2 100644 --- a/CadQuery/Libs/cadquery/freecad_impl/geom.py +++ b/CadQuery/Libs/cadquery/freecad_impl/geom.py @@ -1,5 +1,5 @@ """ - Copyright (C) 2011-2014 Parametric Products Intellectual Holdings, LLC + Copyright (C) 2011-2015 Parametric Products Intellectual Holdings, LLC This file is part of CadQuery. diff --git a/CadQuery/Libs/cadquery/freecad_impl/importers.py b/CadQuery/Libs/cadquery/freecad_impl/importers.py index c8786d3..80458be 100644 --- a/CadQuery/Libs/cadquery/freecad_impl/importers.py +++ b/CadQuery/Libs/cadquery/freecad_impl/importers.py @@ -1,5 +1,5 @@ """ - Copyright (C) 2011-2014 Parametric Products Intellectual Holdings, LLC + Copyright (C) 2011-2015 Parametric Products Intellectual Holdings, LLC This file is part of CadQuery. diff --git a/CadQuery/Libs/cadquery/freecad_impl/shapes.py b/CadQuery/Libs/cadquery/freecad_impl/shapes.py index b58a67b..01850ab 100644 --- a/CadQuery/Libs/cadquery/freecad_impl/shapes.py +++ b/CadQuery/Libs/cadquery/freecad_impl/shapes.py @@ -1,5 +1,5 @@ """ - Copyright (C) 2011-2014 Parametric Products Intellectual Holdings, LLC + Copyright (C) 2011-2015 Parametric Products Intellectual Holdings, LLC This file is part of CadQuery. @@ -30,19 +30,19 @@ 1. It allows us to avoid changing key api points if we change underlying implementations. It would be a disaster if script and plugin authors had to change models because we - changed implmentations + changed implementations 2. Allow better documentation. One of the reasons FreeCAD is no more popular is because - its docs are terrible. This allows us to provie good documentation via docstrings + its docs are terrible. This allows us to provide good documentation via docstrings for each wrapper 3. Work around bugs. there are a quite a feb bugs in free this layer allows fixing them 4. allows for enhanced functionality. Many objects are missing features we need. For example - we need a 'forConstruciton' flag on the Wire object. this allows adding those kinds of things + we need a 'forConstruction' flag on the Wire object. this allows adding those kinds of things - 5. allow changing interfaces when we'd like. there are few cases where the freecad api is not - very userfriendly: we like to change those when necesary. As an example, in the freecad api, + 5. allow changing interfaces when we'd like. there are few cases where the FreeCAD api is not + very user friendly: we like to change those when necessary. As an example, in the FreeCAD api, all factory methods are on the 'Part' object, but it is very useful to know what kind of object each one returns, so these are better grouped by the type of object they return. (who would know that Part.makeCircle() returns an Edge, but Part.makePolygon() returns a Wire ? diff --git a/CadQuery/Libs/cadquery/plugins/__init__.py b/CadQuery/Libs/cadquery/plugins/__init__.py index 227406f..3697b9f 100644 --- a/CadQuery/Libs/cadquery/plugins/__init__.py +++ b/CadQuery/Libs/cadquery/plugins/__init__.py @@ -1,18 +1,18 @@ """ - CadQuery - Copyright (C) 2014 Parametric Products Intellectual Holdings, LLC + CadQuery + Copyright (C) 2015 Parametric Products Intellectual Holdings, LLC - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. - This library 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 - Lesser General Public License for more details. + This library 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 + Lesser General Public License for more details. - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA """ diff --git a/CadQuery/Libs/cadquery/selectors.py b/CadQuery/Libs/cadquery/selectors.py index 95bd196..42f0a24 100644 --- a/CadQuery/Libs/cadquery/selectors.py +++ b/CadQuery/Libs/cadquery/selectors.py @@ -1,26 +1,27 @@ """ - Copyright (C) 2011-2014 Parametric Products Intellectual Holdings, LLC + Copyright (C) 2011-2015 Parametric Products Intellectual Holdings, LLC - This file is part of CadQuery. + This file is part of CadQuery. - CadQuery is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. + CadQuery is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. - CadQuery 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 - Lesser General Public License for more details. + CadQuery 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 + Lesser General Public License for more details. - You should have received a copy of the GNU Lesser General Public - License along with this library; If not, see + You should have received a copy of the GNU Lesser General Public + License along with this library; If not, see """ import re import math from cadquery import Vector,Edge,Vertex,Face,Solid,Shell,Compound + class Selector(object): """ Filters a list of objects