From b1a6187d3eb41a1730e730447b69ac35d0755dd2 Mon Sep 17 00:00:00 2001 From: Jeremy Mack Wright Date: Mon, 23 Nov 2015 21:44:36 -0500 Subject: [PATCH 1/2] Made the normalize to normalized change to make CadQuery match the PythonOCC/OCC symantics. --- cadquery/CQ.py | 2 +- cadquery/freecad_impl/geom.py | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cadquery/CQ.py b/cadquery/CQ.py index 8d21173..2ba78a5 100644 --- a/cadquery/CQ.py +++ b/cadquery/CQ.py @@ -375,7 +375,7 @@ def _computeXdir(normal): normal = normal.multiply(-1.0) #offset origin if desired - offsetVector = normal.normalize().multiply(offset) + offsetVector = normal.normalized().multiply(offset) offsetCenter = center.add(offsetVector) #make the new workplane diff --git a/cadquery/freecad_impl/geom.py b/cadquery/freecad_impl/geom.py index 37ea922..2ae7525 100644 --- a/cadquery/freecad_impl/geom.py +++ b/cadquery/freecad_impl/geom.py @@ -125,7 +125,7 @@ def multiply(self, scale): tmp_fc_vector = FreeCAD.Base.Vector(self.wrapped) return Vector(tmp_fc_vector.multiply(scale)) - def normalize(self): + def normalized(self): """Return a normalized version of this vector""" tmp_fc_vector = FreeCAD.Base.Vector(self.wrapped) tmp_fc_vector.normalize() @@ -343,7 +343,7 @@ def __init__(self, origin, xDir, normal): normal = Vector(normal) if (normal.Length == 0.0): raise ValueError('normal should be non null') - self.zDir = normal.normalize() + self.zDir = normal.normalized() xDir = Vector(xDir) if (xDir.Length == 0.0): raise ValueError('xDir should be non null') @@ -539,8 +539,8 @@ def _setPlaneDir(self, xDir): if (self.zDir.dot(xDir) > 1e-5): raise ValueError('xDir must be parralel to the plane') xDir = Vector(xDir) - self.xDir = xDir.normalize() - self.yDir = self.zDir.cross(self.xDir).normalize() + self.xDir = xDir.normalized() + self.yDir = self.zDir.cross(self.xDir).normalized() def _calcTransforms(self): """Computes transformation matrices to convert between coordinates From 007725a28cfabf977baf4df2a6e03972816c964c Mon Sep 17 00:00:00 2001 From: Jeremy Mack Wright Date: Tue, 24 Nov 2015 15:45:12 -0500 Subject: [PATCH 2/2] Added a label instance attribute to each of the shapes so that they can be identified separately. --- cadquery/freecad_impl/shapes.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/cadquery/freecad_impl/shapes.py b/cadquery/freecad_impl/shapes.py index 27b97a6..d0d14bb 100644 --- a/cadquery/freecad_impl/shapes.py +++ b/cadquery/freecad_impl/shapes.py @@ -62,6 +62,9 @@ def __init__(self, obj): self.wrapped = obj self.forConstruction = False + # Helps identify this solid through the use of an ID + self.label = "" + @classmethod def cast(cls, obj, forConstruction=False): "Returns the right type of wrapper, given a FreeCAD object" @@ -356,6 +359,9 @@ def __init__(self, obj, forConstruction=False): self.Y = obj.Y self.Z = obj.Z + # Helps identify this solid through the use of an ID + self.label = "" + def toTuple(self): return (self.X, self.Y, self.Z) @@ -381,6 +387,9 @@ def __init__(self, obj): FreeCADPart.Circle: 'CIRCLE' } + # Helps identify this solid through the use of an ID + self.label = "" + def geomType(self): t = type(self.wrapped.Curve) if self.edgetypes.has_key(t): @@ -476,6 +485,9 @@ def __init__(self, obj): """ self.wrapped = obj + # Helps identify this solid through the use of an ID + self.label = "" + @classmethod def combine(cls, listOfWires): """ @@ -546,6 +558,9 @@ def __init__(self, obj): FreeCADPart.Cone: 'CONE' } + # Helps identify this solid through the use of an ID + self.label = "" + def geomType(self): t = type(self.wrapped.Surface) if self.facetypes.has_key(t): @@ -602,6 +617,9 @@ def __init__(self, wrapped): """ self.wrapped = wrapped + # Helps identify this solid through the use of an ID + self.label = "" + @classmethod def makeShell(cls, listOfFaces): return Shell(FreeCADPart.makeShell([i.obj for i in listOfFaces])) @@ -614,6 +632,9 @@ def __init__(self, obj): """ self.wrapped = obj + # Helps identify this solid through the use of an ID + self.label = "" + @classmethod def isSolid(cls, obj): """ @@ -915,6 +936,9 @@ def __init__(self, obj): """ self.wrapped = obj + # Helps identify this solid through the use of an ID + self.label = "" + def Center(self): return self.Center()