116 lines
3.7 KiB
Python
116 lines
3.7 KiB
Python
'''
|
|
UI functionality for the import dialog.
|
|
'''
|
|
import softimage
|
|
import zetcore
|
|
import zetimport
|
|
reload(softimage)
|
|
reload(zetcore)
|
|
reload(zetimport)
|
|
from win32com.client import constants as const
|
|
xsi = Application
|
|
ADDONPATH = xsi.InstallationPath(const.siUserAddonPath)
|
|
sigen = softimage.SIGeneral()
|
|
|
|
|
|
def store_flags_OnClicked():
|
|
settings = zetcore.load_settings('import', PPG.Inspected(0))
|
|
zetcore.save_settings('import', settings)
|
|
sigen.msg('Stored.')
|
|
return
|
|
|
|
|
|
def btexpath_OnChanged():
|
|
ppg = PPG.Inspected(0)
|
|
checked = ppg.Parameters('btexpath').Value
|
|
texpath = ppg.Parameters('texpath')
|
|
texpath.SetCapabilityFlag(2, not checked)
|
|
|
|
|
|
def help_OnClicked():
|
|
ps = xsi.ActiveSceneRoot.AddProperty('CustomProperty', False, 'ImportHelp')
|
|
lay = ps.PPGLayout
|
|
lay.Language = "pythonscript"
|
|
agr = lay.AddGroup
|
|
egr = lay.EndGroup
|
|
text = lay.AddStaticText
|
|
agr('Import')
|
|
text('Imports null-chain and animations from an animation .msh.')
|
|
egr()
|
|
agr('Texture Folder')
|
|
text('''Sets the texture paths to that folder. If the box is unchecked the paths
|
|
will be set to the path of the .msh file.''')
|
|
egr()
|
|
agr('Set Frame Range')
|
|
text('''Automatically sets the frame range from the animated frames in the
|
|
.msh file.''')
|
|
egr()
|
|
agr('Apply animation')
|
|
text('''Only applies the unpacked animation to the selected hierarchy. Doesn't
|
|
import geometry/models or materials.''')
|
|
egr()
|
|
agr('Null Display Size')
|
|
text('''Sets the display size of Nulls. Improves cleanness of the null
|
|
chain after import.''')
|
|
egr()
|
|
agr('Ignore Geometry')
|
|
text('''Ignore geometry on import.''')
|
|
egr()
|
|
agr('Ignore Geometry')
|
|
text('''Ignore animation on import.''')
|
|
egr()
|
|
agr('Color Nulls')
|
|
text('''Colors nulls according to type(bone, root, eff).''')
|
|
egr()
|
|
agr('Hide Effs/Roots')
|
|
text('''Hides nulls of the specified type on import.
|
|
Type is defined from certain strings appearing in the name:
|
|
bone_l_leg is a bone, even if it's no animated/weighted to.''')
|
|
egr()
|
|
agr('Weld Boundary Edges')
|
|
text('''Applies a Weld Op to all geo models with a value of 0.01. The Operator
|
|
will persist after the import.''')
|
|
egr()
|
|
xsi.InspectObj(ps, '', 'ImportHelp', 4, False)
|
|
for prop in xsi.ActiveSceneRoot.Properties:
|
|
if prop.Name == 'ImportHelp':
|
|
xsi.DeleteObj('ImportHelp')
|
|
|
|
|
|
def importbutton_OnClicked():
|
|
settings = zetcore.load_settings('import', PPG.Inspected(0))
|
|
import_ = zetimport.Import(xsi, settings)
|
|
try:
|
|
import_.import_()
|
|
except SystemExit:
|
|
return
|
|
except Exception as e:
|
|
if sigen.msg('Encountered an error while importing, copy error to clipboard?', const.siMsgYesNo) == 6:
|
|
import win32clipboard, traceback
|
|
log_path = zetcore.get_import_log_path()
|
|
lines = []
|
|
if log_path:
|
|
with open(log_path, 'r') as file_handle:
|
|
lines = file_handle.readlines()[-15:]
|
|
message = ['Last 15 log lines:', '\n']
|
|
message.extend(['\t{0}'.format(line.strip('\n')) for line in lines])
|
|
message.extend(('\n', 'Traceback:', '\n'))
|
|
message.extend(['\t{0}'.format(element) for element in traceback.format_exc().split('\n')])
|
|
message = '\n'.join(message)
|
|
|
|
win32clipboard.OpenClipboard()
|
|
win32clipboard.EmptyClipboard()
|
|
try:
|
|
win32clipboard.SetClipboardText(message, win32clipboard.CF_TEXT)
|
|
except TypeError:
|
|
win32clipboard.SetClipboardText(message)
|
|
win32clipboard.CloseClipboard()
|
|
else:
|
|
raise
|
|
return
|
|
|
|
|
|
def EClose_OnClicked():
|
|
PPG.Close()
|
|
xsi.DeleteObj('MSHImport')
|