parameters: (self, obj)
docstring: opExecute(obj) ... process engraving operation
docstring_summary: opExecute(obj) ... process engraving operation
docstring_tokens: opExecute ( obj ) ... process engraving operation
function: def opExecute(self, obj):
          """opExecute(obj) ... process engraving operation"""
          PathLog.track()
  
          if not hasattr(obj.ToolController.Tool, "CuttingEdgeAngle"):
              PathLog.error(
                  translate(
                      "Path_Vcarve",
                      "VCarve requires an engraving cutter with CuttingEdgeAngle",
                  )
              )
  
          if obj.ToolController.Tool.CuttingEdgeAngle >= 180.0:
              PathLog.error(
                  translate(
                      "Path_Vcarve", "Engraver Cutting Edge Angle must be < 180 degrees."
                  )
              )
              return
  
          try:
              faces = []
  
              for base in obj.BaseShapes:
                  faces.extend(base.Shape.Faces)
  
              for base in obj.Base:
                  for sub in base[1]:
                      shape = getattr(base[0].Shape, sub)
                      if isinstance(shape, Part.Face):
                          faces.append(shape)
  
              if not faces:
                  for model in self.model:
                      if model.isDerivedFrom(
                          "Sketcher::SketchObject"
                      ) or model.isDerivedFrom("Part::Part2DObject"):
                          faces.extend(model.Shape.Faces)
  
              if faces:
                  self.buildPathMedial(obj, faces)
              else:
                  PathLog.error(
                      translate(
                          "PathVcarve",
                          "The Job Base Object has no engraveable element. Engraving operation will produce no output.",
                      )
                  )
  
          except Exception as e:
              PathLog.error(
                  "Error processing Base object. Engraving operation will produce no output."
              )
function_tokens: def opExecute ( self , obj ) : PathLog . track ( ) if not hasattr ( obj . ToolController . Tool , "CuttingEdgeAngle" ) : PathLog . error ( translate ( "Path_Vcarve" , "VCarve requires an engraving cutter with CuttingEdgeAngle" , ) ) if obj . ToolController . Tool . CuttingEdgeAngle >= 180.0 : PathLog . error ( translate ( "Path_Vcarve" , "Engraver Cutting Edge Angle must be < 180 degrees." ) ) return try : faces = [ ] for base in obj . BaseShapes : faces . extend ( base . Shape . Faces ) for base in obj . Base : for sub in base [ 1 ] : shape = getattr ( base [ 0 ] . Shape , sub ) if isinstance ( shape , Part . Face ) : faces . append ( shape ) if not faces : for model in self . model : if model . isDerivedFrom ( "Sketcher::SketchObject" ) or model . isDerivedFrom ( "Part::Part2DObject" ) : faces . extend ( model . Shape . Faces ) if faces : self . buildPathMedial ( obj , faces ) else : PathLog . error ( translate ( "PathVcarve" , "The Job Base Object has no engraveable element. Engraving operation will produce no output." , ) ) except Exception as e : PathLog . error ( "Error processing Base object. Engraving operation will produce no output." )