MStatus InstanceCallbackCmd::doIt( const MArgList& args ) { MStatus status = MS::kSuccess; // Draw a circle and get its dagPath // using an iterator MGlobal::executeCommand("circle"); MFnNurbsCurve circle; MDagPath dagPath; MItDependencyNodes iter( MFn::kNurbsCurve , &status); for(iter.reset(); !iter.isDone() ; iter.next()) { MObject item = iter.item(); if(item.hasFn(MFn::kNurbsCurve)) { circle.setObject(item); circle.getPath(dagPath); MGlobal::displayInfo("DAG_PATH is " + dagPath.fullPathName()); if(dagPath.isValid()) { // register callback for instance add AND remove // MDagMessage::addInstanceAddedCallback ( dagPath,addCallbackFunc, NULL, &status); MDagMessage::addInstanceRemovedCallback ( dagPath,remCallbackFunc, NULL, &status); MGlobal::displayInfo("CALLBACK ADDED FOR INSTANCE ADD/REMOVE"); } } } if (status != MS::kSuccess) { MGlobal::displayInfo("STATUS RETURNED IS NOT SUCCESS"); } return status; }
MStatus CreateCurves::Curve::create(CreateCurves & instance) { MStatus status; MFnNurbsCurve curve; MObject curveObject = curve.create(points, knots, instance.m_degree, isLoop ? MFnNurbsCurve::kClosed : MFnNurbsCurve::kOpen, false, false, MObject::kNullObj, &status); if (!status) { status.perror("MFnNurbsCurve::create"); return status; } MDagPath path; if (!(status = curve.getPath(path))) { status.perror("MFnNurbsCurve::getPath"); return status; } instance.m_curves.append(path.transform()); return MStatus::kSuccess; }