max2016不能直接运行py文件(也可能我操作的不对)
python.ExecuteFile fname
简单粗暴的上马吧
from PySide import QtGui
import MaxPlus
#这个类有点意(meng)思(bi),据目前看是为了给下面的窗口做一个引用,防止创建之后直接被垃圾回收。
#窗口都已经show了,为啥还会被回收。
class _GCProtector(object):
widgets = []
#这里也就是个创建一个cylinder的方法
def make_cylinder():
obj = MaxPlus.Factory.CreateGeomObject(MaxPlus.ClassIds.Cylinder)
obj.ParameterBlock.Radius.Value = 10.0
obj.ParameterBlock.Height.Value = 30.0
node = MaxPlus.Factory.CreateNode(obj)
time = MaxPlus.Core.GetCurrentTime()
MaxPlus.ViewportManager.RedrawViews(time)
return
#这里就是跟在Python里写PySide一样的一个类
class CylinderWin(QtGui.QWidget):
def __init__(self):
super(CylinderWin,self).__init__()
self.initUI()
def initUI(self):
vb = QtGui.QVBoxLayout()
label = QtGui.QLabel("Click button to create a cylinder in the scene")
vb.addWidget(label)
btn = QtGui.QPushButton("Cylinder")
btn.clicked.connect(make_cylinder)
vb.addWidget(btn)
self.setLayout(vb)
self.setGeometry(500, 500, 250, 150)
self.setWindowTitle("Cylinder Window")
def closeEvent(self,event):
print "AAAAAAAAA"
def showEvent(self, event):
print "show Event"
def main():
app = QtGui.QApplication.instance()
if not app:
app = QtGui.QApplication([])
MaxPlus.FileManager.Reset(True)
w = CylinderWin()
print CylinderWin.__dict__
_GCProtector.widgets.append(w)
#为了让这个窗口一直浮于max主窗口之上,Max2016
MaxPlus.AttachQWidgetToMax(w)
w.show()
if __name__ == '__main__':
main()