1 """
2 Fills the perimeters.
3
4 Credits:
5 Original Author: Enrique Perez (http://skeinforge.com)
6 Contributors: Please see the documentation in Skeinforge
7 Modifed as SFACT: Ahmet Cem Turan (github.com/ahmetcemturan/SFACT)
8
9 License:
10 GNU Affero General Public License http://www.gnu.org/licenses/agpl.html
11 """
12
13 from config import config
14 from importlib import import_module
15 from utilities import memory_tracker
16 import logging
17 import math
18 import sys
19
20 logger = logging.getLogger(__name__)
21 name = __name__
22
35
37 'A class to fill a skein of extrusions.'
39 self.slicedModel = slicedModel
40 self.extrusionWidth = config.getfloat('carve', 'extrusion.width')
41 self.fillStrategyName = config.get(name, 'strategy')
42 self.fillStrategyPath = config.get(name, 'strategy.path')
43
45 'Fills the layers.'
46 if self.extrusionWidth == None:
47 logger.warning('Nothing will be done because extrusion width FillSkein is None.')
48 return
49
50 fillStrategy = None
51 try:
52 if self.fillStrategyPath not in sys.path:
53 sys.path.insert(0, self.fillStrategyPath)
54 fillStrategy = import_module(self.fillStrategyName).getStrategy(self.slicedModel)
55 logger.info("Using fill strategy: %s", self.fillStrategyName)
56 except ImportError:
57 logger.warning("Could not find module for fill strategy called: %s", self.fillStrategyName)
58 except Exception as inst:
59 logger.warning("Exception reading strategy %s: %s", self.fillStrategyName, inst)
60
61 for layer in self.slicedModel.layers.values():
62
63 if fillStrategy != None:
64 fillStrategy.fill(layer)
65