Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
B
blender-addons
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
blender
blender-addons
Commits
b791b9e7
Commit
b791b9e7
authored
6 years ago
by
Campbell Barton
Browse files
Options
Downloads
Plain Diff
Merge branch 'master' into blender2.8
parents
84d556d3
6c3a46dc
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
io_coat3D/coat.py
+626
-0
626 additions, 0 deletions
io_coat3D/coat.py
with
626 additions
and
0 deletions
io_coat3D/coat.py
0 → 100644
+
626
−
0
View file @
b791b9e7
# ***** BEGIN GPL LICENSE BLOCK *****
#
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# ***** END GPL LICENCE BLOCK *****
import
bpy
from
bpy.props
import
*
from
io_coat3D
import
tex
import
os
bpy
.
coat3D
=
dict
()
bpy
.
coat3D
[
'
active_coat
'
]
=
''
bpy
.
coat3D
[
'
status
'
]
=
0
def
set_exchange_folder
():
platform
=
os
.
sys
.
platform
coat3D
=
bpy
.
context
.
scene
.
coat3D
Blender_export
=
""
if
(
platform
==
'
win32
'
):
exchange
=
os
.
path
.
expanduser
(
"
~
"
)
+
os
.
sep
+
'
Documents
'
+
os
.
sep
+
'
3D-CoatV4
'
+
os
.
sep
+
'
Exchange
'
if
not
(
os
.
path
.
isdir
(
exchange
)):
exchange
=
os
.
path
.
expanduser
(
"
~
"
)
+
os
.
sep
+
'
Documents
'
+
os
.
sep
+
'
3D-CoatV3
'
+
os
.
sep
+
'
Exchange
'
else
:
exchange
=
os
.
path
.
expanduser
(
"
~
"
)
+
os
.
sep
+
'
3D-CoatV4
'
+
os
.
sep
+
'
Exchange
'
if
not
(
os
.
path
.
isdir
(
exchange
)):
exchange
=
os
.
path
.
expanduser
(
"
~
"
)
+
os
.
sep
+
'
3D-CoatV3
'
+
os
.
sep
+
'
Exchange
'
if
(
not
(
os
.
path
.
isdir
(
exchange
))):
exchange
=
coat3D
.
exchangedir
if
(
os
.
path
.
isdir
(
exchange
)):
bpy
.
coat3D
[
'
status
'
]
=
1
if
(
platform
==
'
win32
'
):
exchange_path
=
os
.
path
.
expanduser
(
"
~
"
)
+
os
.
sep
+
'
Documents
'
+
os
.
sep
+
'
3DC2Blender
'
+
os
.
sep
+
'
Exchange_folder.txt
'
applink_folder
=
os
.
path
.
expanduser
(
"
~
"
)
+
os
.
sep
+
'
Documents
'
+
os
.
sep
+
'
3DC2Blender
'
if
(
not
(
os
.
path
.
isdir
(
applink_folder
))):
os
.
makedirs
(
applink_folder
)
else
:
exchange_path
=
os
.
path
.
expanduser
(
"
~
"
)
+
os
.
sep
+
'
Documents
'
+
os
.
sep
+
'
3DC2Blender
'
+
os
.
sep
+
'
Exchange_folder.txt
'
applink_folder
=
os
.
path
.
expanduser
(
"
~
"
)
+
os
.
sep
+
'
Documents
'
+
os
.
sep
+
'
3DC2Blender
'
if
(
not
(
os
.
path
.
isdir
(
applink_folder
))):
os
.
makedirs
(
applink_folder
)
file
=
open
(
exchange_path
,
"
w
"
)
file
.
write
(
"
%s
"
%
(
coat3D
.
exchangedir
))
file
.
close
()
else
:
if
(
platform
==
'
win32
'
):
exchange_path
=
os
.
path
.
expanduser
(
"
~
"
)
+
os
.
sep
+
'
Documents
'
+
os
.
sep
+
'
3DC2Blender
'
+
os
.
sep
+
'
Exchange_folder.txt
'
else
:
exchange_path
=
os
.
path
.
expanduser
(
"
~
"
)
+
os
.
sep
+
'
3DC2Blender
'
+
os
.
sep
+
'
Exchange_folder.txt
'
if
(
os
.
path
.
isfile
(
exchange_path
)):
ex_path
=
''
ex_pathh
=
open
(
exchange_path
)
for
line
in
ex_pathh
:
ex_path
=
line
break
ex_pathh
.
close
()
if
(
os
.
path
.
isdir
(
ex_path
)
and
ex_path
.
rfind
(
'
Exchange
'
)
>=
0
):
exchange
=
ex_path
bpy
.
coat3D
[
'
status
'
]
=
1
else
:
bpy
.
coat3D
[
'
status
'
]
=
0
else
:
bpy
.
coat3D
[
'
status
'
]
=
0
if
(
bpy
.
coat3D
[
'
status
'
]
==
1
):
Blender_folder
=
(
"
%s%sBlender
"
%
(
exchange
,
os
.
sep
))
Blender_export
=
Blender_folder
path3b_now
=
exchange
path3b_now
+=
(
'
last_saved_3b_file.txt
'
)
Blender_export
+=
(
'
%sexport.txt
'
%
(
os
.
sep
))
if
(
not
(
os
.
path
.
isdir
(
Blender_folder
))):
os
.
makedirs
(
Blender_folder
)
Blender_folder
=
os
.
path
.
join
(
Blender_folder
,
"
run.txt
"
)
file
=
open
(
Blender_folder
,
"
w
"
)
file
.
close
()
return
exchange
def
set_working_folders
():
platform
=
os
.
sys
.
platform
coat3D
=
bpy
.
context
.
scene
.
coat3D
if
(
platform
==
'
win32
'
):
folder_objects
=
os
.
path
.
expanduser
(
"
~
"
)
+
os
.
sep
+
'
Documents
'
+
os
.
sep
+
'
3DC2Blender
'
+
os
.
sep
+
'
Objects
'
folder_textures
=
os
.
path
.
expanduser
(
"
~
"
)
+
os
.
sep
+
'
Documents
'
+
os
.
sep
+
'
3DC2Blender
'
+
os
.
sep
+
'
Textures
'
+
os
.
sep
if
(
not
(
os
.
path
.
isdir
(
folder_objects
))):
os
.
makedirs
(
folder_objects
)
if
(
not
(
os
.
path
.
isdir
(
folder_textures
))):
os
.
makedirs
(
folder_textures
)
else
:
folder_objects
=
os
.
path
.
expanduser
(
"
~
"
)
+
os
.
sep
+
'
3DC2Blender
'
+
os
.
sep
+
'
Objects
'
folder_textures
=
os
.
path
.
expanduser
(
"
~
"
)
+
os
.
sep
+
'
3DC2Blender
'
+
os
.
sep
+
'
Textures
'
+
os
.
sep
if
(
not
(
os
.
path
.
isdir
(
folder_objects
))):
os
.
makedirs
(
folder_objects
)
if
(
not
(
os
.
path
.
isdir
(
folder_textures
))):
os
.
makedirs
(
folder_textures
)
return
folder_objects
,
folder_textures
class
ObjectButtonsPanel
():
bl_space_type
=
'
PROPERTIES
'
bl_region_type
=
'
WINDOW
'
bl_context
=
"
object
"
class
SCENE_PT_Main
(
ObjectButtonsPanel
,
bpy
.
types
.
Panel
):
bl_label
=
"
3D-Coat Applink
"
bl_space_type
=
"
PROPERTIES
"
bl_region_type
=
"
WINDOW
"
bl_context
=
"
scene
"
def
draw
(
self
,
context
):
layout
=
self
.
layout
scene
=
context
.
scene
me
=
context
.
scene
.
objects
mat_list
=
[]
import_no
=
0
coat
=
bpy
.
coat3D
coat3D
=
bpy
.
context
.
scene
.
coat3D
if
(
bpy
.
context
.
scene
.
objects
.
active
):
coa
=
bpy
.
context
.
scene
.
objects
.
active
.
coat3D
if
(
bpy
.
coat3D
[
'
status
'
]
==
0
and
not
(
os
.
path
.
isdir
(
coat3D
.
exchangedir
))):
bpy
.
coat3D
[
'
active_coat
'
]
=
set_exchange_folder
()
row
=
layout
.
row
()
row
.
label
(
text
=
"
Applink didn
'
t find your 3d-Coat/Excahnge folder.
"
)
row
=
layout
.
row
()
row
.
label
(
"
Please select it before using Applink.
"
)
row
=
layout
.
row
()
row
.
prop
(
coat3D
,
"
exchangedir
"
,
text
=
""
)
else
:
#Here you add your GUI
row
=
layout
.
row
()
row
.
prop
(
coat3D
,
"
type
"
,
text
=
""
)
row
=
layout
.
row
()
colL
=
row
.
column
()
colR
=
row
.
column
()
colR
.
operator
(
"
export_applink.pilgway_3d_coat
"
,
text
=
"
Transfer
"
)
colL
.
operator
(
"
import_applink.pilgway_3d_coat
"
,
text
=
"
Update
"
)
class
SCENE_OT_export
(
bpy
.
types
.
Operator
):
bl_idname
=
"
export_applink.pilgway_3d_coat
"
bl_label
=
"
Export your custom property
"
bl_description
=
"
Export your custom property
"
bl_options
=
{
'
UNDO
'
}
def
invoke
(
self
,
context
,
event
):
checkname
=
''
coat3D
=
bpy
.
context
.
scene
.
coat3D
scene
=
context
.
scene
activeobj
=
bpy
.
context
.
active_object
.
name
obj
=
scene
.
objects
[
activeobj
]
coa
=
bpy
.
context
.
scene
.
objects
.
active
.
coat3D
coat3D
.
exchangedir
=
set_exchange_folder
()
export_ok
=
False
folder_objects
,
folder_textures
=
set_working_folders
()
if
(
coat3D
.
exchange_found
==
False
):
return
{
'
FINISHED
'
}
if
(
bpy
.
context
.
selected_objects
==
[]):
return
{
'
FINISHED
'
}
else
:
for
objec
in
bpy
.
context
.
selected_objects
:
if
objec
.
type
==
'
MESH
'
:
export_ok
=
True
if
(
export_ok
==
False
):
return
{
'
FINISHED
'
}
importfile
=
coat3D
.
exchangedir
texturefile
=
coat3D
.
exchangedir
importfile
+=
(
'
%simport.txt
'
%
(
os
.
sep
))
texturefile
+=
(
'
%stextures.txt
'
%
(
os
.
sep
))
looking
=
True
object_index
=
0
if
(
coa
.
applink_name
and
os
.
path
.
isfile
(
coa
.
applink_name
)):
checkname
=
coa
.
applink_name
else
:
while
(
looking
==
True
):
checkname
=
folder_objects
+
os
.
sep
+
activeobj
checkname
=
(
"
%s%.2d.obj
"
%
(
checkname
,
object_index
))
if
(
os
.
path
.
isfile
(
checkname
)):
object_index
+=
1
else
:
looking
=
False
coa
.
applink_name
=
checkname
coat3D
.
cursor_loc
=
obj
.
location
coat3D
.
cursor_orginal
=
bpy
.
context
.
scene
.
cursor_location
coa
.
loc
=
obj
.
location
coa
.
rot
=
obj
.
rotation_euler
coa
.
sca
=
obj
.
scale
coa
.
dime
=
obj
.
dimensions
obj
.
location
=
(
0
,
0
,
0
)
obj
.
rotation_euler
=
(
0
,
0
,
0
)
bpy
.
ops
.
object
.
transform_apply
(
scale
=
True
)
bpy
.
ops
.
export_scene
.
obj
(
filepath
=
coa
.
applink_name
,
use_selection
=
True
,
use_mesh_modifiers
=
False
,
use_blen_objects
=
True
,
use_materials
=
True
,
keep_vertex_order
=
True
,
axis_forward
=
'
-Z
'
,
axis_up
=
'
Y
'
)
obj
.
location
=
coa
.
loc
obj
.
rotation_euler
=
coa
.
rot
bpy
.
context
.
scene
.
cursor_location
=
coat3D
.
cursor_loc
bpy
.
context
.
scene
.
cursor_location
=
coat3D
.
cursor_orginal
file
=
open
(
importfile
,
"
w
"
)
file
.
write
(
"
%s
"
%
(
checkname
))
file
.
write
(
"
\n
%s
"
%
(
checkname
))
file
.
write
(
"
\n
[%s]
"
%
(
coat3D
.
type
))
file
.
write
(
"
\n
[TexOutput:%s]
"
%
(
folder_textures
))
file
.
close
()
coa
.
objecttime
=
str
(
os
.
path
.
getmtime
(
coa
.
applink_name
))
return
{
'
FINISHED
'
}
class
SCENE_OT_import
(
bpy
.
types
.
Operator
):
bl_idname
=
"
import_applink.pilgway_3d_coat
"
bl_label
=
"
import your custom property
"
bl_description
=
"
import your custom property
"
bl_options
=
{
'
UNDO
'
}
def
invoke
(
self
,
context
,
event
):
scene
=
context
.
scene
coat3D
=
bpy
.
context
.
scene
.
coat3D
coat
=
bpy
.
coat3D
test
=
bpy
.
context
.
selected_objects
act_first
=
bpy
.
context
.
scene
.
objects
.
active
bpy
.
context
.
scene
.
game_settings
.
material_mode
=
'
GLSL
'
coat3D
.
exchangedir
=
set_exchange_folder
()
folder_objects
,
folder_textures
=
set_working_folders
()
Blender_folder
=
(
"
%s%sBlender
"
%
(
coat3D
.
exchangedir
,
os
.
sep
))
Blender_export
=
Blender_folder
path3b_now
=
coat3D
.
exchangedir
path3b_now
+=
(
'
last_saved_3b_file.txt
'
)
Blender_export
+=
(
'
%sexport.txt
'
%
(
os
.
sep
))
new_applink_name
=
'
False
'
new_object
=
False
if
(
os
.
path
.
isfile
(
Blender_export
)):
obj_pathh
=
open
(
Blender_export
)
new_object
=
True
for
line
in
obj_pathh
:
new_applink_name
=
line
break
obj_pathh
.
close
()
for
scene_objects
in
bpy
.
context
.
scene
.
objects
:
if
(
scene_objects
.
type
==
'
MESH
'
):
if
(
scene_objects
.
coat3D
.
applink_name
==
new_applink_name
):
new_object
=
False
for
act_name
in
test
:
coa
=
act_name
.
coat3D
path_object
=
coa
.
applink_name
if
act_name
.
type
==
'
MESH
'
and
os
.
path
.
isfile
(
path_object
):
multires_on
=
False
activeobj
=
act_name
.
name
mat_list
=
[]
scene
.
objects
[
activeobj
].
select
=
True
objekti
=
scene
.
objects
[
activeobj
]
coat3D
.
loca
=
objekti
.
location
coat3D
.
rota
=
objekti
.
rotation_euler
coat3D
.
dime
=
objekti
.
scale
#See if there is multres modifier.
for
modifiers
in
objekti
.
modifiers
:
if
modifiers
.
type
==
'
MULTIRES
'
and
(
modifiers
.
total_levels
>
0
):
if
(
not
(
coat3D
.
importlevel
)):
bpy
.
ops
.
object
.
multires_external_pack
()
multires
=
coat3D
.
exchangedir
multires
+=
(
'
%stemp.btx
'
%
(
os
.
sep
))
bpy
.
ops
.
object
.
multires_external_save
(
filepath
=
multires
)
#bpy.ops.object.multires_external_pack()
multires_on
=
True
multires_name
=
modifiers
.
name
break
exportfile
=
coat3D
.
exchangedir
path3b_n
=
coat3D
.
exchangedir
path3b_n
+=
(
'
last_saved_3b_file.txt
'
)
exportfile
+=
(
'
%sexport.txt
'
%
(
os
.
sep
))
if
(
os
.
path
.
isfile
(
exportfile
)):
export_file
=
open
(
exportfile
)
for
line
in
export_file
:
if
line
.
rfind
(
'
.3b
'
):
objekti
.
coat3D
.
coatpath
=
line
coat
[
'
active_coat
'
]
=
line
export_file
.
close
()
os
.
remove
(
exportfile
)
if
(
len
(
objekti
.
material_slots
)
==
0
):
delete_material
=
False
else
:
delete_material
=
True
if
(
not
(
objekti
.
active_material
)
and
objekti
.
material_slots
):
act_mat_index
=
objekti
.
active_material_index
materials_old
=
bpy
.
data
.
materials
.
keys
()
bpy
.
ops
.
material
.
new
()
materials_new
=
bpy
.
data
.
materials
.
keys
()
new_ma
=
list
(
set
(
materials_new
).
difference
(
set
(
materials_old
)))
new_mat
=
new_ma
[
0
]
ki
=
bpy
.
data
.
materials
[
new_mat
]
objekti
.
material_slots
[
act_mat_index
].
material
=
ki
if
(
os
.
path
.
isfile
(
path_object
)
and
(
coa
.
objecttime
!=
str
(
os
.
path
.
getmtime
(
path_object
)))):
if
(
objekti
.
material_slots
):
act_mat_index
=
objekti
.
active_material_index
for
obj_mat
in
objekti
.
material_slots
:
mat_list
.
append
(
obj_mat
.
material
)
coa
.
dime
=
objekti
.
dimensions
coa
.
objecttime
=
str
(
os
.
path
.
getmtime
(
path_object
))
mtl
=
coa
.
applink_name
mtl
=
mtl
.
replace
(
'
.obj
'
,
'
.mtl
'
)
if
(
os
.
path
.
isfile
(
mtl
)):
os
.
remove
(
mtl
)
bpy
.
ops
.
import_scene
.
obj
(
filepath
=
path_object
,
axis_forward
=
'
-Z
'
,
axis_up
=
'
Y
'
,
use_image_search
=
False
)
obj_proxy
=
scene
.
objects
[
0
]
bpy
.
ops
.
object
.
select_all
(
action
=
'
TOGGLE
'
)
obj_proxy
.
select
=
True
bpy
.
ops
.
object
.
transform_apply
(
rotation
=
True
)
proxy_mat
=
obj_proxy
.
material_slots
[
0
].
material
if
(
delete_material
):
while
(
list
(
obj_proxy
.
data
.
materials
)
!=
[]):
proxy_mat
=
obj_proxy
.
material_slots
[
0
].
material
obj_proxy
.
data
.
materials
.
pop
(
0
,
1
)
proxy_mat
.
user_clear
()
bpy
.
data
.
materials
.
remove
(
proxy_mat
)
bpy
.
ops
.
object
.
select_all
(
action
=
'
TOGGLE
'
)
if
(
coat3D
.
importlevel
):
obj_proxy
.
select
=
True
obj_proxy
.
modifiers
.
new
(
name
=
'
temp
'
,
type
=
'
MULTIRES
'
)
objekti
.
select
=
True
bpy
.
ops
.
object
.
multires_reshape
(
modifier
=
multires_name
)
bpy
.
ops
.
object
.
select_all
(
action
=
'
TOGGLE
'
)
multires_on
=
False
else
:
scene
.
objects
.
active
=
obj_proxy
obj_data
=
objekti
.
data
.
id_data
objekti
.
data
=
obj_proxy
.
data
.
id_data
if
(
bpy
.
data
.
meshes
[
obj_data
.
name
].
users
==
0
):
objekti
.
data
.
id_data
.
name
=
obj_data
.
name
bpy
.
data
.
meshes
.
remove
(
obj_data
)
obj_proxy
.
select
=
True
bpy
.
ops
.
object
.
delete
()
objekti
.
select
=
True
objekti
.
scale
=
coat3D
.
dime
bpy
.
context
.
scene
.
objects
.
active
=
objekti
if
(
os
.
path
.
isfile
(
path3b_n
)):
path3b_fil
=
open
(
path3b_n
)
for
lin
in
path3b_fil
:
objekti
.
coat3D
.
path3b
=
lin
path3b_fil
.
close
()
os
.
remove
(
path3b_n
)
if
(
coat3D
.
importmesh
and
not
(
os
.
path
.
isfile
(
path_object
))):
coat3D
.
importmesh
=
False
if
(
mat_list
and
coat3D
.
importmesh
):
for
mat_one
in
mat_list
:
objekti
.
data
.
materials
.
append
(
mat_one
)
objekti
.
active_material_index
=
act_mat_index
if
(
mat_list
):
for
obj_mate
in
objekti
.
material_slots
:
if
(
hasattr
(
obj_mate
.
material
,
'
texture_slots
'
)):
for
tex_slot
in
obj_mate
.
material
.
texture_slots
:
if
(
hasattr
(
tex_slot
,
'
texture
'
)):
if
(
tex_slot
.
texture
.
type
==
'
IMAGE
'
):
if
tex_slot
.
texture
.
image
is
not
None
:
tex_slot
.
texture
.
image
.
reload
()
if
(
coat3D
.
importtextures
):
export
=
''
tex
.
gettex
(
mat_list
,
objekti
,
scene
,
export
)
if
(
multires_on
):
temp_file
=
coat3D
.
exchangedir
temp_file
+=
(
'
%stemp2.btx
'
%
(
os
.
sep
))
if
(
objekti
.
modifiers
[
multires_name
].
levels
==
0
):
objekti
.
modifiers
[
multires_name
].
levels
=
1
bpy
.
ops
.
object
.
multires_external_save
(
filepath
=
temp_file
)
objekti
.
modifiers
[
multires_name
].
filepath
=
multires
objekti
.
modifiers
[
multires_name
].
levels
=
0
else
:
bpy
.
ops
.
object
.
multires_external_save
(
filepath
=
temp_file
)
objekti
.
modifiers
[
multires_name
].
filepath
=
multires
#bpy.ops.object.multires_external_pack()
bpy
.
ops
.
object
.
shade_smooth
()
for
act_name
in
test
:
act_name
.
select
=
True
bpy
.
context
.
scene
.
objects
.
active
=
act_first
if
(
new_object
==
True
):
coat3D
=
bpy
.
context
.
scene
.
coat3D
scene
=
context
.
scene
Blender_folder
=
(
"
%s%sBlender
"
%
(
coat3D
.
exchangedir
,
os
.
sep
))
Blender_export
=
Blender_folder
path3b_now
=
coat3D
.
exchangedir
path3b_now
+=
(
'
last_saved_3b_file.txt
'
)
Blender_export
+=
(
'
%sexport.txt
'
%
(
os
.
sep
))
mat_list
=
[]
obj_path
=
''
export
=
new_applink_name
mod_time
=
os
.
path
.
getmtime
(
new_applink_name
)
mtl_list
=
new_applink_name
.
replace
(
'
.obj
'
,
'
.mtl
'
)
if
(
os
.
path
.
isfile
(
mtl_list
)):
os
.
remove
(
mtl_list
)
bpy
.
ops
.
import_scene
.
obj
(
filepath
=
new_applink_name
,
axis_forward
=
'
-Z
'
,
axis_up
=
'
Y
'
)
bpy
.
ops
.
object
.
transform_apply
(
rotation
=
True
)
new_obj
=
scene
.
objects
[
0
]
new_obj
.
coat3D
.
applink_name
=
obj_path
scene
.
objects
[
0
].
coat3D
.
applink_name
=
export
#objectdir muutettava
os
.
remove
(
Blender_export
)
bpy
.
context
.
scene
.
objects
.
active
=
new_obj
bpy
.
ops
.
object
.
shade_smooth
()
Blender_tex
=
(
"
%s%stextures.txt
"
%
(
coat3D
.
exchangedir
,
os
.
sep
))
mat_list
.
append
(
new_obj
.
material_slots
[
0
].
material
)
tex
.
gettex
(
mat_list
,
new_obj
,
scene
,
export
)
return
{
'
FINISHED
'
}
from
bpy
import
*
from
mathutils
import
Vector
,
Matrix
# 3D-Coat Dynamic Menu
class
VIEW3D_MT_Coat_Dynamic_Menu
(
bpy
.
types
.
Menu
):
bl_label
=
"
3D-Coat Applink Menu
"
def
draw
(
self
,
context
):
layout
=
self
.
layout
settings
=
context
.
tool_settings
layout
.
operator_context
=
'
INVOKE_REGION_WIN
'
coat3D
=
bpy
.
context
.
scene
.
coat3D
Blender_folder
=
(
"
%s%sBlender
"
%
(
coat3D
.
exchangedir
,
os
.
sep
))
Blender_export
=
Blender_folder
Blender_export
+=
(
'
%sexport.txt
'
%
(
os
.
sep
))
ob
=
context
if
ob
.
mode
==
'
OBJECT
'
:
if
(
bpy
.
context
.
selected_objects
):
for
ind_obj
in
bpy
.
context
.
selected_objects
:
if
(
ind_obj
.
type
==
'
MESH
'
):
layout
.
active
=
True
break
layout
.
active
=
False
if
(
layout
.
active
==
True
):
layout
.
operator
(
"
import_applink.pilgway_3d_coat
"
,
text
=
"
Import
"
)
layout
.
separator
()
layout
.
operator
(
"
export_applink.pilgway_3d_coat
"
,
text
=
"
Export
"
)
layout
.
separator
()
layout
.
menu
(
"
VIEW3D_MT_ImportMenu
"
)
layout
.
separator
()
layout
.
menu
(
"
VIEW3D_MT_ExportMenu
"
)
layout
.
separator
()
layout
.
menu
(
"
VIEW3D_MT_ExtraMenu
"
)
layout
.
separator
()
if
(
len
(
bpy
.
context
.
selected_objects
)
==
1
):
if
(
os
.
path
.
isfile
(
bpy
.
context
.
selected_objects
[
0
].
coat3D
.
path3b
)):
layout
.
operator
(
"
import_applink.pilgway_3d_coat_3b
"
,
text
=
"
Load 3b
"
)
layout
.
separator
()
if
(
os
.
path
.
isfile
(
Blender_export
)):
layout
.
operator
(
"
import3b_applink.pilgway_3d_coat
"
,
text
=
"
Bring from 3D-Coat
"
)
layout
.
separator
()
else
:
if
(
os
.
path
.
isfile
(
Blender_export
)):
layout
.
active
=
True
layout
.
operator
(
"
import3b_applink.pilgway_3d_coat
"
,
text
=
"
Bring from 3D-Coat
"
)
layout
.
separator
()
else
:
if
(
os
.
path
.
isfile
(
Blender_export
)):
layout
.
operator
(
"
import3b_applink.pilgway_3d_coat
"
,
text
=
"
Bring from 3D-Coat
"
)
layout
.
separator
()
class
VIEW3D_MT_ImportMenu
(
bpy
.
types
.
Menu
):
bl_label
=
"
Import Settings
"
def
draw
(
self
,
context
):
layout
=
self
.
layout
coat3D
=
bpy
.
context
.
scene
.
coat3D
settings
=
context
.
tool_settings
layout
.
operator_context
=
'
INVOKE_REGION_WIN
'
layout
.
prop
(
coat3D
,
"
importmesh
"
)
layout
.
prop
(
coat3D
,
"
importmod
"
)
layout
.
prop
(
coat3D
,
"
smooth_on
"
)
layout
.
prop
(
coat3D
,
"
importtextures
"
)
class
VIEW3D_MT_ExportMenu
(
bpy
.
types
.
Menu
):
bl_label
=
"
Export Settings
"
def
draw
(
self
,
context
):
layout
=
self
.
layout
coat3D
=
bpy
.
context
.
scene
.
coat3D
settings
=
context
.
tool_settings
layout
.
operator_context
=
'
INVOKE_REGION_WIN
'
layout
.
prop
(
coat3D
,
"
exportover
"
)
if
(
coat3D
.
exportover
):
layout
.
prop
(
coat3D
,
"
exportmod
"
)
class
VIEW3D_MT_ExtraMenu
(
bpy
.
types
.
Menu
):
bl_label
=
"
Extra
"
def
draw
(
self
,
context
):
layout
=
self
.
layout
coat3D
=
bpy
.
context
.
scene
.
coat3D
settings
=
context
.
tool_settings
layout
.
operator_context
=
'
INVOKE_REGION_WIN
'
layout
.
operator
(
"
import_applink.pilgway_3d_deltex
"
,
text
=
"
Delete all Textures
"
)
layout
.
separator
()
def
register
():
bpy
.
utils
.
register_module
(
__name__
)
kc
=
bpy
.
context
.
window_manager
.
keyconfigs
.
addon
if
kc
:
km
=
kc
.
keymaps
.
new
(
name
=
'
3D View
'
,
space_type
=
'
VIEW_3D
'
)
kmi
=
km
.
keymap_items
.
new
(
'
wm.call_menu2
'
,
'
Q
'
,
'
PRESS
'
)
kmi
.
properties
.
name
=
"
VIEW3D_MT_Coat_Dynamic_Menu
"
def
unregister
():
bpy
.
utils
.
unregister_module
(
__name__
)
kc
=
bpy
.
context
.
window_manager
.
keyconfigs
.
addon
if
kc
:
km
=
kc
.
keymapskeymaps
[
'
3D View
'
]
for
kmi
in
km
.
keymap_items
:
if
kmi
.
idname
==
''
:
if
kmi
.
properties
.
name
==
"
VIEW3D_MT_Coat_Dynamic_Menu
"
:
km
.
keymap_items
.
remove
(
kmi
)
break
if
__name__
==
"
__main__
"
:
register
()
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment