-
Notifications
You must be signed in to change notification settings - Fork 0
/
print_from_pipe.py
65 lines (47 loc) · 1.84 KB
/
print_from_pipe.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
import inspect
import json
import os
import sys
sys.path.append(os.path.split(os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))))[0])
from mp5slicer.config.config_factory import ConfigFactory
from mp5slicer.legacy.Print_pipeline import print_mesh
from mp5slicer.shapes.mp5totree import get_mc_params
import pymplicit
from stl import mesh
import numpy as np
from mp5slicer.legacy.mock_cpp import to_json_mc_params, m2stl_mesh
# from mp5slicer.shapes.mp5tostl import puppy_magic
def print_from_pipe():
mp5_as_json = "".join(sys.stdin.readlines())
mp5 = json.loads(mp5_as_json)
config_select = {0:"mp5slicer/config/config.json",
1:"mp5slicer/config/config_0.json",
2:"mp5slicer/config/config_1.json"}
dict_conf_file = config_select[mp5['printerSettings']['config_select']]
with open(dict_conf_file) as data_file:
dict_conf = json.load(data_file)
# hack to force config to_file in print_from_file_cpp to true
dict_conf['TO_FILE'] = False
if 'printerSettings' in mp5:
ConfigFactory(dict_conf=dict_conf)
else:
ConfigFactory()
import mp5slicer.config.config as config
config.reset()
stls = []
for son_position in range(len(mp5["root"]["children"])):
mc = get_mc_params(mp5, son_position)
mc_params = to_json_mc_params(mc)
mp5_string = json.dumps(mp5["root"]["children"][son_position])
pymplicit.build_geometry(mp5_string, mc_params)
verts = pymplicit.get_verts()
faces = pymplicit.get_faces()
pymplicit.finish_geometry()
stl = m2stl_mesh(verts, faces)
stls.append(stl.data)
stl = mesh.Mesh(np.concatenate(stls))
# stl = puppy_magic(mp5)
# stl.save("mp5.stl")
print_mesh(stl, "mp5")
if __name__ == '__main__':
print_from_pipe()