Fixed the cases where the revolve didn't work as expected.
This commit is contained in:
parent
70ef555519
commit
55d659fa9c
|
@ -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:
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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()
|
||||
|
|
Loading…
Reference in New Issue
Block a user