1 from config import config
2 import time
3 from math import pi
4
7 self.startTime = time.time()
8 self.endTime = None
9 self.inputFilename = None
10 self.outputFilename = None
11
12 self.profileMemory = config.getboolean('general', 'profile.memory')
13
14 self.decimalPlaces = config.getint('general', 'decimal.places')
15 self.layerThickness = config.getfloat('carve', 'layer.height')
16 self.perimeterWidth = config.getfloat('carve', 'extrusion.width')
17 self.profileName = None
18 self.bridgeWidthMultiplier = None
19 self.nozzleDiameter = None
20 self.threadSequence = None
21 self.infillWidth = None
22 self.operatingFeedRatePerSecond = None
23 self.perimeterFeedRatePerSecond = None
24 self.operatingFlowRate = None
25 self.verboseGcode = config.getboolean('general', 'verbose.gcode')
26
27 self.overlapRemovalWidthOverPerimeterWidth = config.getfloat('inset', 'overlap.removal.scaler')
28 self.nozzleDiameter = config.getfloat('inset', 'nozzle.diameter')
29 self.bridgeWidthMultiplier = config.getfloat('inset', 'bridge.width.multiplier.ratio')
30 self.loopOrderAscendingArea = config.getboolean('inset', 'loop.order.preferloops')
31
32 self.layerHeight = config.getfloat('carve', 'layer.height')
33 self.extrusionWidth = config.getfloat('carve', 'extrusion.width')
34 self.infillBridgeDirection = config.getboolean('carve', 'infill.bridge.direction')
35 self.importCoarsenessRatio = config.getfloat('carve', 'import.coarseness.ratio')
36 self.correctMesh = config.getboolean('carve', 'mesh.correct')
37 self.decimalPlaces = config.getint('general', 'decimal.places')
38 self.layerPrintFrom = config.getint('carve', 'layer.print.from')
39 self.layerPrintTo = config.getint('carve', 'layer.print.to')
40
41 self.speedActive = config.getboolean('speed', 'active')
42 self.addFlowRate = config.getboolean('speed', 'add.flow.rate')
43 self.addAccelerationRate = config.getboolean('speed', 'add.acceleration.rate')
44 self.feedRate = config.getfloat('speed', 'feed.rate')
45 self.flowRateRatio = config.getfloat('speed', 'flow.rate.ratio')
46 self.accelerationRate = config.getfloat('speed', 'acceleration.rate')
47 self.orbitalFeedRateRatio = config.getfloat('speed', 'feed.rate.orbiting.ratio')
48 self.perimeterFeedRate = config.getfloat('speed', 'feed.rate.perimeter')
49 self.perimeterFlowRateRatio = config.getfloat('speed', 'flow.rate.perimeter.ratio')
50 self.bridgeFeedRateRatio = config.getfloat('speed', 'feed.rate.bridge.ratio')
51 self.bridgeFlowRateRatio = config.getfloat('speed', 'flow.rate.bridge.ratio')
52 self.travelFeedRate = config.getfloat('speed', 'feed.rate.travel')
53 self.supportFeedRate = config.getfloat('speed', 'feed.rate.support')
54
55 self.dimensionActive = config.getboolean('dimension', 'active')
56 self.filamentDiameter = config.getfloat('dimension', 'filament.diameter')
57 self.filamentPackingDensity = config.getfloat('dimension', 'filament.packing.density')
58 self.oozeRate = config.getfloat('dimension', 'oozerate')
59 self.extruderRetractionSpeed = config.getfloat('dimension', 'extruder.retraction.speed')
60 self.extrusionUnitsRelative = config.getboolean('dimension', 'extrusion.units.relative')
61 self.dimensionDecimalPlaces = config.getint('dimension', 'decimal.places')
62
63 self.extrusionPrintOrder = config.get('fill', 'extrusion.sequence.print.order').split(',')
64
65 self.bridgeFeedRateMinute = self.bridgeFeedRateRatio * self.perimeterFeedRate * 60
66 self.perimeterFeedRateMinute = self.perimeterFeedRate * 60
67 self.extrusionFeedRateMinute = self.feedRate * 60.0
68 self.travelFeedRateMinute = self.travelFeedRate * 60
69
70 self.supportFeedRateMinute = self.supportFeedRate * 60
71
72 self.minimumLayerFeedRate = config.getfloat('cool', 'minimum.layer.feed.rate')
73 self.minimumLayerFeedRateMinute = self.minimumLayerFeedRate * 60
74
75 self.minimumBridgeFeedRateMultiplier = self.minimumLayerFeedRateMinute / self.bridgeFeedRateMinute
76 self.minimumPerimeterFeedRateMultiplier = self.minimumLayerFeedRateMinute / self.perimeterFeedRateMinute
77 self.minimumExtrusionFeedRateMultiplier = self.minimumLayerFeedRateMinute / self.extrusionFeedRateMinute
78 self.minimumTravelFeedRateMultiplier = self.minimumLayerFeedRateMinute / self.travelFeedRateMinute
79
80 nozzleXsection = (self.nozzleDiameter / 2) ** 2 * pi
81 extrusionXsection = ((abs(self.perimeterWidth) + self.layerThickness) / 4) ** 2 * pi
82
83 self.flowRate = self.flowRateRatio * self.feedRate
84 self.bridgeFlowRate = (self.bridgeFlowRateRatio * self.bridgeFeedRateRatio) * (self.perimeterFlowRateRatio * self.perimeterFeedRate) * (nozzleXsection / extrusionXsection)
85 self.perimeterFlowRate = self.perimeterFlowRateRatio * self.perimeterFeedRate
86
87 self.orbitalFeedRateSecond = (self.feedRate * self.orbitalFeedRateRatio)
88 self.orbitalFeedRateMinute = self.orbitalFeedRateSecond * 60
89
90 self.combActive = config.getboolean('comb', 'active')
91