MStatus lrutils::makeHomeNull(MObject obj, MFnTransform& transformFn, MObject& groupObj) { MStatus status = MS::kFailure; status = transformFn.setObject(obj); MyCheckStatusReturn(status, "invalid MObject provided for MFnTransform.setObject()"); if( status == MS::kSuccess ) { MDagModifier dagMod; groupObj = dagMod.createNode( "transform", MObject::kNullObj, &status ); MyCheckStatusReturn(status, "MDagModifier.createNode() failed"); dagMod.doIt(); MFnTransform groupFn; groupFn.setObject(groupObj); groupFn.set(transformFn.transformation()); groupFn.addChild(obj); MString groupName = transformFn.name(); groupName = groupName.substring(0, groupName.numChars() - 4); groupName += "GRP"; groupFn.setName(groupName); } return status; }
MObject HesperisTransformCreator::create(BaseTransform * data, MObject & parentObj, const std::string & nodeName) { MObject otm = MObject::kNullObj; if(!HesperisIO::FindNamedChild(otm, nodeName, parentObj)) { MFnTransform ftransform; otm = ftransform.create(parentObj); std::string validName(nodeName); SHelper::noColon(validName); ftransform.setName(validName.c_str()); } // MGlobal::displayInfo(MString("todo transform in ")+nodeName.c_str()); return otm; }
MStatus lrutils::makeGroup(MObject & obj, MString name) { MStatus status = MS::kFailure; MDagModifier dagMod; MObject groupObj = dagMod.createNode( "transform", MObject::kNullObj, &status ); MyCheckStatusReturn(status, "MDagModifier.createNode() failed"); dagMod.doIt(); MFnTransform groupFn; groupFn.setObject(groupObj); MString groupName = name; groupName += "_GRP"; groupFn.setName(groupName); obj = groupObj; return status; }
bool HesperisIO::ReadTransforms(HBase * parent, MObject &target) { std::vector<std::string > tmNames; parent->lsTypedChild<HTransform>(tmNames); std::vector<std::string>::const_iterator it = tmNames.begin(); for(;it!=tmNames.end();++it) { std::string nodeName = *it; SHelper::behead(nodeName, parent->pathToObject()); SHelper::behead(nodeName, "/"); HBase child(*it); MObject otm = MObject::kNullObj; if(!FindNamedChild(otm, nodeName, target)) { MFnTransform ftransform; otm = ftransform.create(target); SHelper::noColon(nodeName); ftransform.setName(nodeName.c_str()); } ReadTransforms(&child, otm); ReadCurves(&child, otm); child.close(); } return true; }