-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathFlatCAMPostProc.py
78 lines (62 loc) · 1.97 KB
/
FlatCAMPostProc.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
from importlib.machinery import SourceFileLoader
import os
from abc import ABCMeta, abstractmethod
from datetime import datetime
import math
#module-root dictionary of postprocessors
import FlatCAMApp
postprocessors = {}
class ABCPostProcRegister(ABCMeta):
#handles postprocessors registration on instantation
def __new__(cls, clsname, bases, attrs):
newclass = super(ABCPostProcRegister, cls).__new__(cls, clsname, bases, attrs)
if object not in bases:
if newclass.__name__ in postprocessors:
FlatCAMApp.App.log.warning('Postprocessor %s has been overriden'%(newclass.__name__))
postprocessors[newclass.__name__] = newclass() # here is your register function
return newclass
class FlatCAMPostProc(object, metaclass=ABCPostProcRegister):
@abstractmethod
def start_code(self, p):
pass
@abstractmethod
def lift_code(self, p):
pass
@abstractmethod
def down_code(self, p):
pass
@abstractmethod
def toolchange_code(self, p):
pass
@abstractmethod
def up_to_zero_code(self, p):
pass
@abstractmethod
def rapid_code(self, p):
pass
@abstractmethod
def linear_code(self, p):
pass
@abstractmethod
def end_code(self, p):
pass
@abstractmethod
def feedrate_code(self, p):
pass
@abstractmethod
def spindle_code(self,p):
pass
@abstractmethod
def spindle_stop_code(self,p):
pass
def load_postprocessors(app):
postprocessors_path_search = [os.path.join(app.data_path,'postprocessors','*.py'),
os.path.join('postprocessors', '*.py')]
import glob
for path_search in postprocessors_path_search:
for file in glob.glob(path_search):
try:
SourceFileLoader('FlatCAMPostProcessor', file).load_module()
except Exception as e:
app.log.error(str(e))
return postprocessors