def calculateLayer(input): # Typically the hatch angle is globally rotated per layer by usually 66.7 degrees per layer d = input[0] zid = input[1] layerThickness = d['layerThickness'] solidPart = d['part'] # Create a StripeHatcher object for performing any hatching operations myHatcher = hatching.Hatcher() # Set the base hatching parameters which are generated within Hatcher layerAngleOffset = 66.7 myHatcher.hatchAngle = 10 + zid * 66.7 myHatcher.volumeOffsetHatch = 0.08 myHatcher.spotCompensation = 0.06 myHatcher.numInnerContours = 2 myHatcher.numOuterContours = 1 myHatcher.hatchSortMethod = hatching.AlternateSort() #myHatcher.hatchAngle += 10 # Slice the boundary geomSlice = solidPart.getVectorSlice(zid * layerThickness) # Hatch the boundary using myHatcher layer = myHatcher.hatch(geomSlice) # The layer height is set in integer increment of microns to ensure no rounding error during manufacturing layer.z = int(zid * layerThickness * 1000) layer.layerId = int(zid) return layer
contours = hatching.simplifyBoundaries(contours, 0.2) """ Scale the coordinates back to the original coordinate systems""" contours = [contour * res for contour in contours] """ We have to scale the coordinates back to the original resolution""" # Create a BasicIslandHatcher object for performing any hatching operations ( myHatcher = hatching.BasicIslandHatcher() myHatcher.stripeWidth = 5.0 # Set the base hatching parameters which are generated within Hatcher myHatcher.hatchAngle = 10 # [°] The angle used for the islands myHatcher.volumeOffsetHatch = 0.08 # [mm] Offset between internal and external boundary myHatcher.spotCompensation = 0.06 # [mm] Additional offset to account for laser spot size myHatcher.numInnerContours = 2 myHatcher.numOuterContours = 1 myHatcher.hatchSortMethod = hatching.AlternateSort() """ Perform the slicing. Return coords paths should be set so they are formatted internally. This is internally performed using Trimesh to obtain a closed set of polygons. The boundaries of the slice can be automatically simplified if desired. """ print('Hatching started') layer = myHatcher.hatch(contours) print('Hatching finished') """ Note the hatches are ordered sequentially across the stripe. Additional sorting may be required to ensure that the the scan vectors are processed generally in one-direction from left to right. The stripes scan strategy will tend to provide the correct order per isolated region. """ """ Plot the layer geometries using matplotlib