Showing results for 
Search instead for 
Did you mean: 

Add UDO in FemPart




As many new developers, I'm facing problems with UDO. First I explain the context, the I show a piece of code.


I want to create a Multiphysic driver, and do my own dialogs in order to apply some filtering in the options available when (for example) you define a material's property.


Because when you are working in a FEM part is not possible to access to the SolverProperty of the current solution, the advice that I received was to create an UDO in the FemPart.


Here you will see the code to create the UDO, but seems is not attached to the FemPart:


void DialogMP::loadConfiguration(NXOpen::CAE::FemPart* femPart)

UserDefinedClass* theMPUDOclass;

// MP_UDO class was created in the ufsta() DLL entry point
theMPUDOclass = theSession->UserDefinedClassManager()->GetUserDefinedClassFromClassName("MP_UDO");

UserDefinedObjectManager* udoManager = femPart->UserDefinedObjectManager();

// Creating a new UDO
UserDefinedObject* myUDO = udoManager->CreateUserDefinedObject(theMPUDOclass);

vector<UserDefinedObject*> udos = udoManager->GetUdosOfClass(theMPUDOclass);

// Why vector is empty?
cout<<udos.size()<<" this is 0"<<endl;



Why udos vector is always empty? I expected to have one new object every time I execute this method.


Does UserDefinedObjectManager::CreateUserDefinedObject (that belongs to a FemPart) associate the UDO with the FemPart automatically?


Could someone give me orientation about this? I read the forum for other UDOs questions and the NX help, but still not clear for a newbie.



Thanks for your time.


Re: Add UDO in FemPart

Solution Partner Genius Solution Partner Genius
Solution Partner Genius

For the first time, you should create your class and put the permission to on to be able to query the class from its name afterwards:


udClass = m_session->UserDefinedClassManager()->CreateUserDefinedObjectClass(name, friendlyName);