Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
P
Printrun
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
machinery
Printrun
Commits
53fb79a6
Commit
53fb79a6
authored
Jul 24, 2013
by
Guillaume Seguin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
More factorization and cleanup of plater
parent
4f9c2b2b
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
84 additions
and
67 deletions
+84
-67
plater.py
plater.py
+42
-62
objectplater.py
printrun/objectplater.py
+38
-3
stlview.py
printrun/stlview.py
+4
-2
No files found.
plater.py
View file @
53fb79a6
...
...
@@ -232,6 +232,10 @@ class showstl(wx.Window):
del
dc
class
StlPlater
(
Plater
):
load_wildcard
=
_
(
"STL files (*.stl;*.STL)|*.stl;*.STL|OpenSCAD files (*.scad)|*.scad"
)
save_wildcard
=
_
(
"STL files (*.stl;*.STL)|*.stl;*.STL"
)
def
__init__
(
self
,
filenames
=
[],
size
=
(
800
,
580
),
callback
=
None
,
parent
=
None
,
build_dimensions
=
None
):
super
(
StlPlater
,
self
)
.
__init__
(
filenames
,
size
,
callback
,
parent
,
build_dimensions
)
if
glview
:
...
...
@@ -246,51 +250,18 @@ class StlPlater(Plater):
except
:
pass
name
=
"tempstl/"
+
str
(
int
(
time
.
time
())
%
10000
)
+
".stl"
self
.
writefiles
(
name
)
self
.
export_to
(
name
)
if
cb
is
not
None
:
cb
(
name
)
self
.
Destroy
()
def
export
(
self
,
event
):
dlg
=
wx
.
FileDialog
(
self
,
_
(
"Pick file to save to"
),
self
.
basedir
,
style
=
wx
.
FD_SAVE
)
dlg
.
SetWildcard
(
_
(
"STL files (*.stl;*.STL)|*.stl;*.STL"
))
if
(
dlg
.
ShowModal
()
==
wx
.
ID_OK
):
name
=
dlg
.
GetPath
()
self
.
writefiles
(
name
)
dlg
.
Destroy
()
def
writefiles
(
self
,
name
):
sf
=
open
(
name
.
replace
(
"."
,
"_"
)
+
".scad"
,
"w"
)
facets
=
[]
for
i
in
self
.
models
.
values
():
r
=
i
.
rot
o
=
i
.
offsets
sf
.
write
(
'translate([
%
s,
%
s,
%
s]) rotate([0, 0,
%
s]) import_stl("
%
s");
\n
'
%
(
str
(
o
[
0
]),
str
(
o
[
1
]),
str
(
o
[
2
]),
r
,
os
.
path
.
split
(
i
.
filename
)[
1
]))
if
r
!=
0
:
i
=
i
.
rotate
([
0
,
0
,
r
])
if
o
!=
[
0
,
0
,
0
]:
i
=
i
.
translate
([
o
[
0
],
o
[
1
],
o
[
2
]])
facets
+=
i
.
facets
sf
.
close
()
stltool
.
emitstl
(
name
,
facets
,
"plater_export"
)
print
_
(
"wrote
%
s"
)
%
name
def
load
(
self
,
event
):
dlg
=
wx
.
FileDialog
(
self
,
_
(
"Pick file to load"
),
self
.
basedir
,
style
=
wx
.
FD_OPEN
|
wx
.
FD_FILE_MUST_EXIST
)
dlg
.
SetWildcard
(
_
(
"STL files (*.stl;*.STL)|*.stl;*.STL|OpenSCAD files (*.scad)|*.scad"
))
if
dlg
.
ShowModal
()
==
wx
.
ID_OK
:
name
=
dlg
.
GetPath
()
self
.
load_file
(
event
,
name
)
dlg
.
Destroy
()
def
load_file
(
self
,
event
,
filename
):
def
load_file
(
self
,
filename
):
if
filename
.
lower
()
.
endswith
(
".stl"
):
self
.
load_stl
(
event
,
filename
)
self
.
load_stl
(
filename
)
elif
filename
.
lower
()
.
endswith
(
".scad"
):
self
.
load_scad
(
event
,
filename
)
self
.
load_scad
(
filename
)
def
load_scad
(
self
,
event
,
name
):
def
load_scad
(
self
,
name
):
lf
=
open
(
name
)
s
=
[
i
.
replace
(
"
\n
"
,
""
)
.
replace
(
"
\r
"
,
""
)
.
replace
(
";"
,
""
)
for
i
in
lf
if
"stl"
in
i
]
lf
.
close
()
...
...
@@ -317,7 +288,7 @@ class StlPlater(Plater):
stl_full_path
=
os
.
path
.
join
(
stl_path
[
0
],
str
(
stl_file
))
self
.
load_stl_into_model
(
stl_full_path
,
stl_file
,
translate_list
,
rotate_list
[
2
])
def
load_stl
(
self
,
event
,
name
):
def
load_stl
(
self
,
name
):
if
not
(
os
.
path
.
exists
(
name
)):
return
path
=
os
.
path
.
split
(
name
)[
0
]
...
...
@@ -327,22 +298,21 @@ class StlPlater(Plater):
#Filter out the path, just show the STL filename.
self
.
load_stl_into_model
(
name
,
name
)
self
.
Refresh
()
#print time.time()-t
def
load_stl_into_model
(
self
,
path
,
name
,
offset
=
[
0
,
0
,
0
],
rotation
=
0
,
scale
=
[
1.0
,
1.0
,
1.0
]):
newname
=
os
.
path
.
split
(
name
.
lower
())[
1
]
c
=
1
while
newname
in
self
.
models
:
newname
=
os
.
path
.
split
(
name
.
lower
())[
1
]
newname
=
newname
+
"(
%
d)"
%
c
c
+=
1
self
.
models
[
newname
]
=
stltool
.
stl
(
path
)
self
.
models
[
newname
]
.
offsets
=
offset
self
.
models
[
newname
]
.
rot
=
rotation
self
.
models
[
newname
]
.
scale
=
scale
self
.
models
[
newname
]
.
filename
=
name
model
=
stltool
.
stl
(
path
)
model
.
offsets
=
offset
model
.
rot
=
rotation
model
.
scale
=
scale
model
.
filename
=
name
minx
,
miny
,
minz
,
maxx
,
maxy
,
maxz
=
(
10000
,
10000
,
10000
,
0
,
0
,
0
)
for
i
in
self
.
models
[
newname
]
.
facets
:
minx
=
float
(
"inf"
)
miny
=
float
(
"inf"
)
minz
=
float
(
"inf"
)
maxx
=
float
(
"-inf"
)
maxy
=
float
(
"-inf"
)
maxz
=
float
(
"-inf"
)
for
i
in
model
.
facets
:
for
j
in
i
[
1
]:
if
j
[
0
]
<
minx
:
minx
=
j
[
0
]
...
...
@@ -356,20 +326,30 @@ class StlPlater(Plater):
maxy
=
j
[
1
]
if
j
[
2
]
>
maxz
:
maxz
=
j
[
2
]
self
.
models
[
newname
]
.
dims
=
[
minx
,
maxx
,
miny
,
maxy
,
minz
,
maxz
]
model
.
dims
=
[
minx
,
maxx
,
miny
,
maxy
,
minz
,
maxz
]
self
.
add_model
(
name
,
model
)
#if minx < 0:
#
self.models[newname]
.offsets[0] = -minx
#
model
.offsets[0] = -minx
#if miny < 0:
#
self.models[newname]
.offsets[1] = -miny
self
.
s
.
drawmodel
(
self
.
models
[
newname
]
,
2
)
#
model
.offsets[1] = -miny
self
.
s
.
drawmodel
(
model
,
2
)
#print time.time() - t
self
.
l
.
Append
(
newname
)
i
=
self
.
l
.
GetSelection
()
if
i
==
wx
.
NOT_FOUND
:
self
.
l
.
Select
(
0
)
def
export_to
(
self
,
name
):
sf
=
open
(
name
.
replace
(
"."
,
"_"
)
+
".scad"
,
"w"
)
facets
=
[]
for
i
in
self
.
models
.
values
():
self
.
l
.
Select
(
self
.
l
.
GetCount
()
-
1
)
r
=
i
.
rot
o
=
i
.
offsets
sf
.
write
(
'translate([
%
s,
%
s,
%
s]) rotate([0, 0,
%
s]) import_stl("
%
s");
\n
'
%
(
str
(
o
[
0
]),
str
(
o
[
1
]),
str
(
o
[
2
]),
r
,
os
.
path
.
split
(
i
.
filename
)[
1
]))
if
r
!=
0
:
i
=
i
.
rotate
([
0
,
0
,
r
])
if
o
!=
[
0
,
0
,
0
]:
i
=
i
.
translate
([
o
[
0
],
o
[
1
],
o
[
2
]])
facets
+=
i
.
facets
sf
.
close
()
stltool
.
emitstl
(
name
,
facets
,
"plater_export"
)
print
_
(
"wrote
%
s"
)
%
name
if
__name__
==
'__main__'
:
...
...
printrun/objectplater.py
View file @
53fb79a6
...
...
@@ -18,6 +18,7 @@
from
printrun.printrun_utils
import
install_locale
,
iconfile
install_locale
(
'plater'
)
import
os
import
wx
class
Plater
(
wx
.
Frame
):
...
...
@@ -80,7 +81,7 @@ class Plater(wx.Frame):
self
.
s
=
viewer
self
.
mainsizer
.
Add
(
self
.
s
,
1
,
wx
.
EXPAND
)
def
autoplate
(
self
,
event
):
def
autoplate
(
self
,
event
=
None
):
print
_
(
"Autoplating"
)
separation
=
2
bedsize
=
self
.
build_dimensions
[
0
:
3
]
...
...
@@ -122,7 +123,7 @@ class Plater(wx.Frame):
result
=
wx
.
MessageBox
(
_
(
'Are you sure you want to clear the grid? All unsaved changes will be lost.'
),
_
(
'Clear the grid?'
),
wx
.
YES_NO
|
wx
.
ICON_QUESTION
)
if
(
result
==
2
)
:
if
result
==
2
:
self
.
models
=
{}
self
.
l
.
Clear
()
self
.
Refresh
()
...
...
@@ -139,7 +140,6 @@ class Plater(wx.Frame):
if
i
!=
-
1
:
m
=
self
.
models
[
self
.
l
.
GetString
(
i
)]
m
.
offsets
[
2
]
=
-
1.0
*
min
(
m
.
facetsminz
)[
0
]
#print m.offsets[2]
self
.
Refresh
()
def
delete
(
self
,
event
):
...
...
@@ -150,5 +150,40 @@ class Plater(wx.Frame):
self
.
l
.
Select
(
self
.
l
.
GetCount
()
-
1
)
self
.
Refresh
()
def
add_model
(
self
,
name
,
model
):
newname
=
os
.
path
.
split
(
name
.
lower
())[
1
]
c
=
1
while
newname
in
self
.
models
:
newname
=
os
.
path
.
split
(
name
.
lower
())[
1
]
newname
=
newname
+
"(
%
d)"
%
c
c
+=
1
self
.
models
[
newname
]
=
model
self
.
l
.
Append
(
newname
)
i
=
self
.
l
.
GetSelection
()
if
i
==
wx
.
NOT_FOUND
:
self
.
l
.
Select
(
0
)
self
.
l
.
Select
(
self
.
l
.
GetCount
()
-
1
)
def
load
(
self
,
event
):
dlg
=
wx
.
FileDialog
(
self
,
_
(
"Pick file to load"
),
self
.
basedir
,
style
=
wx
.
FD_OPEN
|
wx
.
FD_FILE_MUST_EXIST
)
dlg
.
SetWildcard
(
self
.
load_wildcard
)
if
dlg
.
ShowModal
()
==
wx
.
ID_OK
:
name
=
dlg
.
GetPath
()
self
.
load_file
(
name
)
dlg
.
Destroy
()
def
load_file
(
self
,
filename
):
raise
NotImplementedError
def
export
(
self
,
event
):
dlg
=
wx
.
FileDialog
(
self
,
_
(
"Pick file to save to"
),
self
.
basedir
,
style
=
wx
.
FD_SAVE
)
dlg
.
SetWildcard
(
self
.
save_wildcard
)
if
(
dlg
.
ShowModal
()
==
wx
.
ID_OK
):
name
=
dlg
.
GetPath
()
self
.
export_to
(
name
)
dlg
.
Destroy
()
def
export_to
(
self
,
name
):
raise
NotImplementedError
printrun/stlview.py
View file @
53fb79a6
...
...
@@ -126,9 +126,11 @@ class StlViewPanel(wxGLPanel):
glMaterialfv
(
GL_FRONT_AND_BACK
,
GL_EMISSION
,
vec
(
0
,
0.1
,
0
,
0.9
))
if
call_reshape
:
self
.
OnReshape
()
if
self
.
parent
.
filenames
:
if
hasattr
(
self
.
parent
,
"filenames"
)
and
self
.
parent
.
filenames
:
for
filename
in
self
.
parent
.
filenames
:
self
.
parent
.
load_file
(
None
,
filename
)
self
.
parent
.
load_file
(
filename
)
self
.
parent
.
autoplate
()
self
.
parent
.
filenames
=
None
def
double
(
self
,
event
):
p
=
event
.
GetPositionTuple
()
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment