Skip to content

Commit

Permalink
Support of OpenSCAD offset command
Browse files Browse the repository at this point in the history
  • Loading branch information
KeithSloan authored and wwmayer committed May 2, 2017
1 parent 192dbf1 commit a328e1f
Showing 1 changed file with 27 additions and 12 deletions.
39 changes: 27 additions & 12 deletions src/Mod/OpenSCAD/importCSG.py
Expand Up @@ -347,6 +347,7 @@ def p_operation(p):
| projection_action
| hull_action
| minkowski_action
| offset_action
'''
p[0] = p[1]

Expand Down Expand Up @@ -378,24 +379,39 @@ def CGALFeatureObj(name,children,arguments=[]):
myobj.ViewObject.Proxy = 0
return myobj

#def p_offset_action(p):
# 'offset_action : offset LPAREN keywordargument_list RPAREN OBRACE block_list EBRACE'
# if len(p[5]) == 0:
# mycut = placeholder('group',[],'{}')
# elif (len(p[5]) == 1 ): #single object
# subobj = p[5]
# else:
# subobj = fuse(p[6],"Offset Union")
# newobj=doc.addObject("Part::FeaturePython",'offset')
# OffsetShape(newobj,subobj,p[3]['delta'])
def p_offset_action(p):
'offset_action : offset LPAREN keywordargument_list RPAREN OBRACE block_list EBRACE'
if len(p[6]) == 0:
newobj = placeholder('group',[],'{}')
elif (len(p[6]) == 1 ): #single object
subobj = p[6]
else:
subobj = fuse(p[6],"Offset Union")
if 'r' in p[3] :
offset = float(p[3]['r'])
if 'delta' in p[3] :
offset = float(p[3]['delta'])
if subobj[0].Shape.Volume == 0 :
newobj=doc.addObject("Part::Offset2D",'Offset2D')
newobj.Source = subobj[0]
newobj.Value = offset
if 'r' in p[3] :
newobj.Join = 0
else :
newobj.Join = 2
else :
newobj=doc.addObject("Part::Offset",'offset')
newobj.Shape = subobj[0].Shape.makeOffset(offset)
newobj.Document.recompute()
subobj[0].ViewObject.hide()
# if gui:
# if FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/OpenSCAD").\
# GetBool('useViewProviderTree'):
# from OpenSCADFeatures import ViewProviderTree
# ViewProviderTree(newobj.ViewObject)
# else:
# newobj.ViewObject.Proxy = 0
# return [newobj]
p[0] = [newobj]

def p_hull_action(p):
'hull_action : hull LPAREN RPAREN OBRACE block_list EBRACE'
Expand All @@ -409,7 +425,6 @@ def p_minkowski_action(p):
def p_not_supported(p):
'''
not_supported : glide LPAREN keywordargument_list RPAREN OBRACE block_list EBRACE
| offset LPAREN keywordargument_list RPAREN OBRACE block_list EBRACE
| resize LPAREN keywordargument_list RPAREN OBRACE block_list EBRACE
| subdiv LPAREN keywordargument_list RPAREN OBRACE block_list EBRACE
'''
Expand Down

0 comments on commit a328e1f

Please sign in to comment.