CLxImpl Tool

From The Foundry MODO SDK wiki
Revision as of 09:00, 18 October 2019 by TomDym (Talk | contribs) (Interface Methods)

Jump to: navigation, search


The CLxImpl_Tool interface contains the core methods we will use to build our tool and must always be included when creating a tool. It should be noted that some of the methods within CLxImpl_Tool are also dependant on other packages however where possible I will mention these.

#include <lx_layer.hpp>
#include <lx_tool.hpp>

class BasicTool : public CLxImpl_Tool

Interface Methods


The Reset method sets the tool attributes back to their initial/default state(as defined within the constructor).

Header Definition

void		  tool_Reset() LXx_OVERRIDE;


void BasicTool::tool_Reset()
    attr_SetFlt(0, 0.0);
    attr_SetFlt(1, 0.0);
  • attr_SetFlt, attr_SetBool, attr_SetInt, etc are used to reset different variable types.
  • The index is used to reference the required attribute in the order it was defined in.
  • The value argument is the value you wish it to reset to.


This method applys the tool, recursively applying any hierarchy of sub-tools. Naturally, it validates the tool state upon completion.

Header Definition

void		  tool_Evaluate(ILxUnknownID vts) LXx_OVERRIDE;


void BasicTool::tool_Evaluate(ILxUnknownID vts)
    double factorX, factorY;

    attr_GetFlt(0, &factorX);
    attr_GetFlt(1, &factorY);

    my_log.Info("Factor X: " + std::to_string(factorX) + " Factor Y: " + toString(factorY));
  • attr_GetFlt can be used to retrieve a attribute for use within the tool.


This method returns the tool vector type, describing the vector packets required for processing.

Header Definition

LXtObjectID	  tool_VectorType() LXx_OVERRIDE;


LXtObjectID BasicTool::tool_VectorType()
    return v_type.m_loc;	// peek method; does not add-ref


Specifies the type of task performed by the tool.

Header Definition

LXtID4		  tool_Task() LXx_OVERRIDE;


LXtID4 BasicTool::tool_Task()
    return LXi_TASK_ACTR;
Return Value Description
LXi_TASK_ACEN Refers to a action center, defines a position about which a tool operation is centered.
LXi_TASK_ACTR A Actor or state altering tool, most tools will be made using this, refers to the primary tool in the tool pipe.
LXi_TASK_AXIS Refers to the axis, defines a axis or co-ordinate suystem in which a tool operates.
LXi_TASK_BRSH Refers to a paint brush.
LXi_TASK_CONS Refers to a constraint, constrains mouse events to move along a continuous surface
LXi_TASK_CONT Refers to a content preset.
LXi_TASK_EFFR Refers to a effector, read particles and effects at the position.
LXi_TASK_NOZL Refers to a nozzle(used with brushes)
LXi_TASK_PATH Refers to a path generator
LXi_TASK_POST Refers to a post apply actor
LXi_TASK_PTCL Refers to a surface particle generator
LXi_TASK_SIDE Not 100% Sure, by process of elimination I bielive it isthe visual aid - Adds to display without changing anything.
LXi_TASK_SNAP Refers to the snap, attracts and locks mouse events to specific positions or elements.
LXi_TASK_STYL Doesnt actually effect anything.
LXi_TASK_SYMM Refers to tool symmetry
LXi_TASK_WGHT Refers to the falloff, defines the strength of the tool operation through space.
LXs_TASK_WORK Refers to the workplane.


Specifies the order in the pipe, by returning an Ordinal string.

Header Definition

const char *  tool_Order() LXx_OVERRIDE;


const char *BasicTool::tool_Order()
    return LXs_ORD_ACTR;

Undocumented Methods

I am currently giving these methods there own category as so far I have not been able to get them to work. They are related to procedural tools however please refer to the SDK docs for more info


This method uses the attribute sequence object given to store the tool's complete state by generating the sequence of attribute changes needed to reproduce that exact state. A tool whose state is expressed entirely by its attributes may return LXe_NOTIMPL from this method, and let the system build the sequence directly from the attribute list. //BasicToolCLxImpl_Tool::tool_Sequence ===

tool_ShouldBeAttribute(LXtID4 task)

int tool_ShouldBeAttribute(LXtID4 task)

tool_GetOp(void** ppvObj,unsigned flags)

LxResult tool_GetOp(void** ppvObj,unsigned flags)

tool_CompareOp(ILxUnknownID vts, LXtObjectID toolop)

int tool_CompareOp(ILxUnknownID vts, LXtObjectID toolop)

tool_UpdateOp(ILxUnknownID toolOP)

LxResult tool_UpdateOp(ILxUnknownID toolOP)