Community Tip - Need to share some code when posting a question or reply? Make sure to use the "Insert code sample" menu option. Learn more! X
How to get part/assembly name from custom Symbol instant. I want part name when I delete symbol using ProDtlsyminstDelete(ProDtlsyminst *symInst). Is there any API or Work around to retrieve part name?
ProError DeleteBalloon(string strTempItemNo)
{
ProError status = PRO_TK_NO_ERROR;
int nSheets;
status = ProDrawingSheetsCount((ProDrawing)gblObjCurMdl,&nSheets);
for(int i=0; i< nSheets; i++)
{
ProDtlsyminst *symInsts;
status = ProDrawingDtlsyminstsCollect((ProDrawing)gblObjCurMdl, i, &symInsts);
int totalSyms;
status = ProArraySizeGet(symInsts, &totalSyms);
for(int j=0; j< totalSyms; j++)
{
ProDtlsyminstdata dtlSymInstData;
status = ProDtlsyminstDataGet(&symInsts[j], PRODISPMODE_SYMBOLIC, &dtlSymInstData);
ProDtlvartext *p_vartexts;
ProLine w_prompt, w_value;
int size = 0, text_size = 0, k;
status = ProDtlsyminstdataVartextsCollect (dtlSymInstData, &p_vartexts);
if (status == PRO_TK_NO_ERROR)
{
status = ProArraySizeGet ((ProArray)p_vartexts, &text_size);
for (k = 0; k < text_size; k++)
{
status = ProDtlvartextDataGet (p_vartexts[k], w_prompt, w_value);
char chrTagName[1000];
ProWstringToString(chrTagName, w_prompt);
if (strcmpi(chrTagName, "index")==0)
{
//Index Drawing Balloon Data
char chrIndexNo[1000];
ProWstringToString(chrIndexNo, w_value);
if (strcmpi((char *)strTempItemNo.c_str(), chrIndexNo)==0)
{
status = ProDtlsyminstDelete(symInsts);
//Here I want part/Assembly name from "symInsts".
//Please provide any api or work around.
break;
}
}
}
}
}
}
ProMdl curMdl;
int curSheet = 0;
status = ProMdlCurrentGet(&curMdl);
status = ProDrawingCurrentSheetGet((ProDrawing)curMdl, &curSheet);
status = ProDwgSheetRegenerate((ProDrawing)curMdl, curSheet);
return status;
}
Solved! Go to Solution.
Read the API Wizard for ProDtlattachGet. You need to analyze the attachment type before unpacking the ProSelection object. It may not be populated based upon the type.
You can retrieve this information by getting the symbol instance attachments. Use the following functions:
1. ProDtlsyminstDataGet
2. ProDtlsyminstdataAttachmentGet
3. ProDtlattachGet
Then you can retrieve the model item from the ProSelection object.
Thanks for your response.
But I am getting -2 Error in ProSelectionModelitemGet.
Here I attached Sample code for the same.
ProDtlsyminstdata symInstData;
proErr = ProDtlsyminstDataGet(symInst, PRODISPMODE_SYMBOLIC, &symInstData);
ProDtlattach attachment;
proErr = ProDtlsyminstdataAttachmentGet (symInstData,&attachment);
ProDtlattachType type;
ProView view;
ProVector location;
ProSelection attach_point;
proErr = ProDtlattachGet (attachment, &type, &view, location, &attach_point);
ProModelitem p_mdl_item;
proErr = ProSelectionModelitemGet (attach_point, &p_mdl_item); //Here I am getting – 2 Error.
ProName objmdlName;
proErr = ProModelitemNameGet(&p_mdl_item,objmdlName);
Can you help for correct result.
Thanks in advanced.
Read the API Wizard for ProDtlattachGet. You need to analyze the attachment type before unpacking the ProSelection object. It may not be populated based upon the type.
Thanks for your support
Hi,
You could try ProDtlsyminstFeatureGet() to get related feature and then ProFeatureSolidGet()
Thanks for your support