Fixed the cases where the revolve didn't work as expected.

This commit is contained in:
Jeremy Wright 2014-10-17 14:06:55 -04:00
parent 70ef555519
commit 55d659fa9c
3 changed files with 15 additions and 9 deletions

View File

@ -1904,7 +1904,7 @@ class Workplane(CQ):
else:
axisEnd = self.plane.toWorldCoords(axisEnd).toTuple()
r = self._revolve(angleDegrees, axisStart, axisEnd) #returns a Solid ( or a compound if there were multiple )
r = self._revolve(angleDegrees, axisStart, axisEnd) # returns a Solid ( or a compound if there were multiple )
if combine:
return self._combineWithBase(r)
else:

View File

@ -772,8 +772,16 @@ class Solid(Shape):
f = FreeCADPart.Face(freeCADWires)
result = f.revolve(FreeCAD.Base.Vector(axisStart),
FreeCAD.Base.Vector(axisEnd), angleDegrees)
rotateCenter = FreeCAD.Base.Vector(axisStart)
rotateAxis = FreeCAD.Base.Vector(axisEnd)
#Convert our axis end vector into to something FreeCAD will understand (an axis specification vector)
rotateAxis[0] = 0.0 if axisStart[0] == axisEnd[0] else axisEnd[0]
rotateAxis[1] = 0.0 if axisStart[1] == axisEnd[1] else axisEnd[1]
rotateAxis[2] = 0.0 if axisStart[2] == axisEnd[2] else axisEnd[2]
#FreeCAD wants a rotation center and then an axis to rotate around rather than an axis of rotation
result = f.revolve(rotateCenter, rotateAxis, angleDegrees)
return Shape.cast(result)

View File

@ -26,16 +26,14 @@ angleDegrees = 360.0
#Revolve a cylinder from a rectangle
#Switch comments around in this section to try the revolve operation with different parameters
#result = cadquery.Workplane("XY").rect(rectangle_width, rectangle_length, False).revolve()
result = cadquery.Workplane("XY").rect(rectangle_width, rectangle_length, False).revolve()
#result = cadquery.Workplane("XY").rect(rectangle_width, rectangle_length, False).revolve(angleDegrees)
#result = cadquery.Workplane("XY").rect(rectangle_width, rectangle_length).revolve(angleDegrees,(-5,-5))
#I think these two are ok, but I'm having a hard time determining if these are acting properly for sure
result = cadquery.Workplane("XY").rect(rectangle_width, rectangle_length).revolve(angleDegrees,(-5,-5),(-5,5))
#result = cadquery.Workplane("XY").rect(rectangle_width, rectangle_length).revolve(angleDegrees,(-5, -5),(-5, 5))
#result = cadquery.Workplane("XY").rect(rectangle_width, rectangle_length).revolve(angleDegrees,(-5,-5),(-5,5), False)
#Was expecting this to create a square donut, but it didn't
#result = cadquery.Workplane("XY").center(10,0).rect(rectangle_width, rectangle_length, False).revolve(angleDegrees)
#Revolve a donut with square walls
#result = cadquery.Workplane("XY").rect(rectangle_width, rectangle_length, True).revolve(angleDegrees, (20, 0), (20, 10))
#Get a cadquery solid object
solid = result.val()