- Wed Aug 30, 2017 10:53 pm
#395265
hello
i tried to create exe from script called : change_mxs_reference.py
i have one problem with the new output mxs
when i change the place of the name group ( see image ) i got different errors ; the problem maybe there but i don't find solution
i tried to create exe from script called : change_mxs_reference.py
i have one problem with the new output mxs
when i change the place of the name group ( see image ) i got different errors ; the problem maybe there but i don't find solution
Code: Select all
################################################################
# Change MXS references.
################################################################
from pymaxwell import *
import sys
import pymaxwell as mw
import qdarkstyle
from PyQt4 import QtGui, QtCore
class MXSRef(QtGui.QWidget):
# SunEditor init method
def __init__(self):
super(MXSRef, self).__init__()
self.initUI()
# User interface initialization method
def initUI(self):
# Create labels
label_mxs_folder = QtGui.QLabel('MXS Folder ')
label_mxs_file = QtGui.QLabel('MXS File')
label_old_mxsref = QtGui.QLabel('Old mxsRef')
label_new_mxsref = QtGui.QLabel('New mxsRef')
label_output = QtGui.QLabel('Output')
# Create lineedits
self.edit_mxs_folder = QtGui.QLineEdit()
self.edit_mxs_file = QtGui.QLineEdit()
self.edit_old_mxsref = QtGui.QLineEdit()
self.edit_new_mxsref = QtGui.QLineEdit()
self.edit_output = QtGui.QLineEdit()
# Create buttons
btn_mxsPath = QtGui.QPushButton('Open', self);
btn_mxsFile = QtGui.QPushButton('Open', self);
btn_old = QtGui.QPushButton('Open', self);
btn_new = QtGui.QPushButton('Open', self);
btn_outFolder = QtGui.QPushButton('Save', self);
btn_run = QtGui.QPushButton('Run', self);
btn_mxsPath.setGeometry(10, 10, 60, 35);
btn_mxsFile.setGeometry(10, 10, 60, 35);
btn_old.setGeometry(10, 10, 60, 35);
btn_new.setGeometry(10, 10, 60, 35);
btn_outFolder.setGeometry(10, 10, 60, 35);
btn_run.setGeometry(10, 10, 60, 35);
# Create grid layout
grid = QtGui.QGridLayout()
grid.setSpacing(10)
# Populate grid with the labels, lineedits and buttons
grid.addWidget(label_mxs_folder, 1, 1)
grid.addWidget(self.edit_mxs_folder, 1, 2)
grid.addWidget(btn_mxsPath, 1, 3)
grid.addWidget(label_mxs_file, 2, 1)
grid.addWidget(self.edit_mxs_file, 2, 2)
grid.addWidget(btn_mxsFile, 2, 3)
grid.addWidget(label_old_mxsref, 3, 1)
grid.addWidget(self.edit_old_mxsref, 3, 2)
grid.addWidget(btn_old, 3, 3)
grid.addWidget(label_new_mxsref, 4, 1)
grid.addWidget(self.edit_new_mxsref, 4, 2)
grid.addWidget(btn_new, 4, 3)
grid.addWidget(label_output, 5, 1)
grid.addWidget(self.edit_output, 5, 2)
grid.addWidget(btn_outFolder, 5, 3)
grid.addWidget(btn_run, 7, 1)
# Set main layout with grid above and resize window
self.setLayout(grid)
self.setFixedSize(640, 320)
self.setWindowTitle('Mxs Ref Replace')
# Connect buttons to methods to be called
self.connect(btn_mxsPath, QtCore.SIGNAL('clicked()'), self.open1);
self.connect(btn_mxsFile, QtCore.SIGNAL('clicked()'), self.open2);
self.connect(btn_old, QtCore.SIGNAL('clicked()'), self.open3);
self.connect(btn_new, QtCore.SIGNAL('clicked()'), self.open4);
self.connect(btn_outFolder, QtCore.SIGNAL('clicked()'), self.save);
self.connect(btn_run, QtCore.SIGNAL('clicked()'), self.replaceMxsReferenceByPath);
# open scene
def open1(self):
infolder = QtGui.QFileDialog.getExistingDirectory(self, 'Open file', '');
self.edit_mxs_folder.setText(infolder);
def open2(self):
inPath = QtGui.QFileDialog.getOpenFileName(self, 'Open file', '', filter='*.mxs');
self.edit_mxs_file.setText(inPath);
def open3(self):
inPath = QtGui.QFileDialog.getOpenFileName(self, 'Open file', '', filter='*.mxs');
self.edit_old_mxsref.setText(inPath);
def open4(self):
inPath = QtGui.QFileDialog.getOpenFileName(self, 'Open file', '', filter='*.mxs');
self.edit_new_mxsref.setText(inPath);
# save scene
def save(self):
outfile = QtGui.QFileDialog.getExistingDirectory(self, 'saveFlle', '');
self.edit_output.setText(outfile);
def replaceMxsReferenceByPath(self):
scene = Cmaxwell(mwcallback);
inPath = scene.readMXS(self.edit_mxs_folder.text().toAscii().data());
mxsList = [scene.readMXS(self.edit_mxs_file.text().toAscii().data())];
old = scene.readMXS(self.edit_old_mxsref.text().toAscii().data());
new = scene.readMXS(self.edit_new_mxsref.text().toAscii().data());
outFolder = scene.readMXS(self.edit_output.text().toAscii().data());
if not os.path.exists(outFolder):
os.mkdir(outFolder)
# loop over all mxs
for mxs in mxsList:
if not scene.readMXS(inPath + '/' + mxs):
print('ERROR: cannot open ' + inPath + '/' + mxs)
return 0
# loop over all objects
it = CmaxwellObjectIterator()
obj = it.first(scene)
while not obj.isNull():
mxsRef = obj.getReferencedScenePath()
if mxsRef == old:
# replace MXS reference path
obj.setReferencedScenePath(new)
print('Object: ' + obj.getName()[0] + '. MXS path replaced')
obj = it.next()
outputpath = outFolder + '/' + mxs
if not scene.writeMXS(outputpath):
print('ERROR: cannot save ' + outputpath)
return 0
print(outputpath)
return 1
if __name__ == "__main__":
# Create and show application
app = QtGui.QApplication(sys.argv)
app.setWindowIcon(QtGui.QIcon('C:/Users/archi/Desktop/script.ico'))
window = MXSRef()
app.setStyleSheet(qdarkstyle.load_stylesheet(pyside=False))
window.show()
sys.exit(app.exec_())
# Replacing MXS references in all objects with the same MXS to replace
#inPath = scene.readMXS(self.edit_mxs_folder.text().toAscii().data())
#mxsList = [scene.readMXS(self.edit_mxs_file.text().toAscii().data())]
#old = scene.readMXS(self.edit_old_mxsref.text().toAscii().data())
#new = scene.readMXS(self.edit_new_mxsref.text().toAscii().data())
#outFolder = scene.readMXS(self.edit_output.text().toAscii().data())
#if replaceMxsReferenceByPath(inPath,mxsList,old,new,outFolder):
#print 'OK'