cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Showing results for 
Search instead for 
Did you mean: 

Community Tip - Learn all about the Community Ranking System, a fun gamification element of the PTC Community. X

Error while creating Section

RS_9601780
10-Marble

Error while creating Section

I am new to Creo Object toolkit. I had some experience using Creo customization using VBA, that too few years back.

 

Problem: I want to create a section in assembly by picking a face of one part and want to know section of other part which is intersecting first part. I used sample example available in OTKXCrossSection.cxx

Issue: 

1. When I run the program and select the face of part as reference for PlanarXSection , it gives error as 'XToolkitBadInputs'

2. If I select the datum from the part, it creates section without any output. If I edit, it shows menu manager-Feature fail.

 

Can someone please help me understanding what is wrong with below code.

 

Below is the code I am using:

void CreatePlanarXSection()
{
pfcSelection_ptr refSelection;

pfcSession_ptr Session = pfcGetProESession();

wfcWSession_ptr wSession = wfcWSession::cast(pfcGetProESession());


try
{
if (refSelection == 0)
{
pfcSelectionOptions_ptr refSelopts = pfcSelectionOptions::Create("datum,surface");
refSelopts->SetMaxNumSels(1);

wSession->UIDisplayMessage("xsection_example_msg.txt", "USER Plane Selection", NULL);

pfcSelections_ptr refSels = wSession->Select(refSelopts);

refSelection = refSels->get(0);
}

pfcXSecCutobjType cutObjtype = pfcXSecCutobjType_nil;
xint quiltID = -1;
xintsequence_ptr memberIdTable = 0;
xint planeId = refSelection->GetSelItem()->GetId();
wfcXSectionComponents_ptr compExcl = 0;

pfcParent_ptr owner = refSelection->GetSelItem()->GetDBParent();
wfcWSolid_ptr solidOwner = wfcWSolid::cast(owner);

if (wSession->GetCurrentModel()->GetType() == pfcMDL_ASSEMBLY)
{
wSession->UIDisplayMessage("xsection_example_msg.txt", "USER Part Selection", NULL);

pfcSelectionOptions_ptr partSelopts = pfcSelectionOptions::Create("part");
partSelopts->SetMaxNumSels(1);

pfcSelections_ptr partSels = wSession->Select(partSelopts);

pfcSelection_ptr selCutobj = partSels->get(0);

pfcComponentPath_ptr compPath = selCutobj->GetPath();

if (compPath != 0)
memberIdTable = compPath->GetComponentIds();

cutObjtype = pfcXSECTYPE_ONEPART;
}

wSession->UIDisplayMessage("xsection_example_msg.txt", "USER Section Name", NULL);

xstring sectionName = wSession->UIReadStringMessage(false);

/*
NOTE 6: Finally creates planar section with inputs received so far.
Keeping Flip as xtrue (i.e. Clip model in the direction of positive normal to xsection plane )
*/

solidOwner->CreatePlanarXSection(sectionName, planeId, cutObjtype, memberIdTable, quiltID, xtrue, compExcl);
solidOwner->RefreshMdlTree();
}
xcatchbegin
xcatchcip(Ex)
logFile << "Exception:\n" << Ex << endl;
xcatchend
}

 

ACCEPTED SOLUTION

Accepted Solutions
FV
17-Peridot
17-Peridot
(To:RS_9601780)

FV_0-1599673284568.png

 

The code uses quite a number of pointers to object instances created in scope. In case an object gets destroyed when scope ends - pointers are pointing to undefined values, in case an object is not destroyed upon scope end the memory is leaked - not good either.

I would suggest to use Pro/Toolkit - the code would be much clearer and it is easier to see problems right away.

HIH.

 

View solution in original post

3 REPLIES 3
FV
17-Peridot
17-Peridot
(To:RS_9601780)

FV_0-1599591134758.png

this is not correct.

C++ will not automatically initialize a variable to NULL value after variable's declaration.

RS_9601780
10-Marble
(To:FV)

Hi,

 

Many thanks for your reply.

 

You are correct about variable initialization. I changed code but issue is still there.

 

I think, that is not root cause of the issue I am facing. I am able to select face which is asked by ->select() command. but application fails at 

solidOwner->CreatePlanarXSection(sectionName, planeId, cutObjtype, memberIdTable, quiltID, xtrue, compExcl);

 

Do you find something wrong about solidOwner.

 

Your assistance will help me in long way.

 

Thanks

FV
17-Peridot
17-Peridot
(To:RS_9601780)

FV_0-1599673284568.png

 

The code uses quite a number of pointers to object instances created in scope. In case an object gets destroyed when scope ends - pointers are pointing to undefined values, in case an object is not destroyed upon scope end the memory is leaked - not good either.

I would suggest to use Pro/Toolkit - the code would be much clearer and it is easier to see problems right away.

HIH.

 

Announcements


Top Tags