- Fri Sep 15, 2017 2:54 pm
#395459
it work like that
Code: Select all
from pymaxwell import *
import os
def changeGrassMaterial(inPath,outPath,oldMat,newMat,new_Mat):
scene = Cmaxwell(mwcallback)
if not scene.readMXS(inPath):
print('Error reading '+inPath)
return 0
material1 = scene.getMaterial(oldMat)
if material1.isNull():
print('Error: material %s not exists' % oldMat)
return 0
material2 = scene.createMaterial(new_Mat,True);
if not material2.setReference(True,newMat):
print('Error importing MXM')
return 0
mgr = CextensionManager.instance()
mgr.loadAllExtensions()
oit = CmaxwellObjectIterator()
object = oit.first(scene)
while not object.isNull():
nModifiers,ok = object.getGeometryModifierExtensionsNumber()
for i in range(nModifiers):
modifierParams,ok = object.getGeometryModifierExtensionParamsAtIndex(i)
name,ok = modifierParams.getString('EXTENSION_NAME')
#print name
if name == 'MaxwellGrass':
for j in range(modifierParams.getNumItems()):
param = modifierParams.getByIndex(j)
#print('-------------------------')
#print param
if param[0] == 'Material':
modifierParams.setString('Material',new_Mat)
#print('New value:')
#print modifierParams.getByIndex(j)
object = oit.next()
if not scene.writeMXS(outPath):
print("Cannot write "+outPath)
return 0
print(outPath)
return 1
### MAIN ###
if __name__ == "__main__":
newMat = 'c:/input/leather.mxm'
oldMat = 'grass'
inPath = 'c:/input/t.mxs'
outPath = 'c:/intest/t_edit.mxs'
new_Mat = 'new_mat'
changeGrassMaterial(inPath,outPath,oldMat,newMat,new_Mat)