arcLenNode/arcLenNode.cpp
#include <string.h>
#include <maya/MIOStream.h>
#include <math.h>
#include <maya/MPxNode.h>
#include <maya/MFnNumericAttribute.h>
#include <maya/MFnTypedAttribute.h>
#include <maya/MFnPlugin.h>
#include <maya/MFnNurbsCurve.h>
#include <maya/MString.h>
#include <maya/MTypeId.h>
#include <maya/MPlug.h>
#include <maya/MDataBlock.h>
#include <maya/MDataHandle.h>
{
public:
arcLen();
~arcLen() override;
static void* creator();
public:
};
arcLen::arcLen() {}
arcLen::~arcLen() {}
void* arcLen::creator()
{
return new arcLen();
}
{
if( plug == output )
{
if( !status ) {
status.
perror(
"ERROR getting data");
} else {
if( !status ) {
status.
perror(
"ERROR creating curve function set");
} else {
double result = curveFn.length();
outputHandle.
set( result );
}
}
} else {
return MS::kUnknownParameter;
}
return MS::kSuccess;
}
{
inputCurve = typedAttr.
create(
"inputCurve",
"in",
&status );
if( !status ) {
status.
perror(
"ERROR creating arcLen curve attribute");
return status;
}
output = numericAttr.
create(
"output",
"out",
&status );
if( !status ) {
status.
perror(
"ERROR creating arcLen output attribute");
return status;
}
status = addAttribute( inputCurve );
if( !status ) {
status.
perror(
"addAttribute(inputCurve)");
return status;
}
status = addAttribute( output );
if( !status ) {
status.
perror(
"addAttribute(output)");
return status;
}
status = attributeAffects( inputCurve, output );
if( !status ) {
status.
perror(
"attributeAffects(inputCurve, output)");
return status;
}
return MS::kSuccess;
}
{
MFnPlugin plugin( obj, PLUGIN_COMPANY,
"3.0",
"Any");
status = plugin.registerNode( "arcLen", arcLen::id, arcLen::creator,
arcLen::initialize);
if (!status) {
status.
perror(
"registerNode");
return status;
}
return status;
}
{
status = plugin.deregisterNode( arcLen::id );
if (!status) {
status.
perror(
"deregisterNode");
return status;
}
return status;
}