Continue to Site

Welcome to MCAD Central

Join our MCAD Central community forums, the largest resource for MCAD (Mechanical Computer-Aided Design) professionals, including files, forums, jobs, articles, calendar, and more.

How to Set Vartext in symbol

homo

New member
hello all,
I want to set vartext in symbol.here is the codes,but it can't set the vertext.



/*========================================================== =================*\


Function : ProTestVarTextSet


Purpose :

\*========================================================== =================*/

ProError ProTestVarTextSet (ProDrawing drw,


ProDtlsymdef
symbol,

ProDtlsyminstdata
inst_data)

{


ProError err;


ProDtlnote *p_notes;


ProDtlnoteline *p_lines ;


ProDtlnotetext *p_texts ;


ProLine line, value;


ProCharLine string, text;


ProDtlnotedata note_data;


ProDtlvartext var_text, *p_var_texts;


int n_notes = 0, n_lines = 0, n_texts = 0, n_var_texts = 0, i, j, k;


printf("I am here!");


err = ProDrawingDtlnotesCollect (drw, &symbol, PRO_VALUE_UNUSED,


&p_notes);


TEST_CALL_REPORT("ProDrawingDtlnotesCollect()",


"ProTestVarTextSet()", err, err != PRO_TK_NO_ERROR


&& err != PRO_TK_E_NOT_FOUND);


if (err != PRO_TK_NO_ERROR)


return (err);





err = ProArrayAlloc (0, sizeof (ProDtlvartext), 1,
(ProArray*)&p_var_texts);




err = ProArraySizeGet ((ProArray)p_notes, &n_notes);


for (i = 0; i < n_notes; i++)

{


err = ProDtlnoteDataGet (&p_notes, &symbol,
PRODISPMODE_NUMERIC,


&note_data);

TEST_CALL_REPORT("ProDtlnoteDataGet()",


"ProTestVarTextSet()", err, err != PRO_TK_NO_ERROR);


if (err != PRO_TK_NO_ERROR)


return (err);


err = ProDtlnotedataLinesCollect (note_data, &p_lines);


TEST_CALL_REPORT("ProDtlnotedataLinesCollect()",


"ProTestVarTextSet()", err, err != PRO_TK_NO_ERROR

&& err !=
PRO_TK_E_NOT_FOUND);


if (err == PRO_TK_NO_ERROR)


{


err = ProArraySizeGet ((ProArray)p_lines, &n_lines);


for (j = 0; j < n_lines; j++)


{

err =
ProDtlnotelineTextsCollect (p_lines[j], &p_texts);


TEST_CALL_REPORT("ProDtlnotelineTextsCollect()",


"ProTestVarTextSet()", err, err != PRO_TK_NO_ERROR

&& err !=
PRO_TK_E_NOT_FOUND);

if (err == PRO_TK_NO_ERROR)

{

err = ProArraySizeGet
((ProArray)p_texts, &n_texts);

for (k = 0; k < n_texts;
k++)

{

err =
ProDtlnotetextStringGet (p_texts[k], line);


TEST_CALL_REPORT("ProDtlnotetextStringGet()",


"ProTestVarTextSet()", err, err != PRO_TK_NO_ERROR);

ProWstringToString (string,
line);

printf(string);

if(string[3]=='\\'
&& string[strlen(string)-2]=='\\')

{

sprintf
(text,"Enter instance text for %s",string);


ProUtilMsgPrint("gen", "TEST %0s", text);

ProStringToWstring
(line, text);

memset (text, '\0',
sizeof (ProCharLine));

printf(text);

printf("hhh");

ProStringToWstring (line,
strncpy (text,

&string[4],
strlen(&string[4])-2));

if
(ProMessageStringRead (PRO_LINE_SIZE, value) !=

PRO_TK_NO_ERROR)

break;

err =
ProDtlvartextAlloc (line, value, &var_text);


TEST_CALL_REPORT("ProDtlvartextAlloc()",


"ProTestVarTextSet()", err, err != PRO_TK_NO_ERROR);

err =
ProArrayObjectAdd( (ProArray*)&p_var_texts,


PRO_VALUE_UNUSED, 1, &var_text);

}

}

for (k = 0; k < n_texts;
k++)

{

err =
ProDtlnotetextFree (p_texts[k]);


TEST_CALL_REPORT("ProDtlnotetextFree()",


"ProTestVarTextSet()", err, err != PRO_TK_NO_ERROR);

}

err = ProArrayFree
((ProArray*)&p_texts);

}


}


for (j = 0; j < n_lines; j++)


{

err = ProDtlnotelineFree
(p_lines[j]);


TEST_CALL_REPORT("ProDtlnotelineFree()",


"ProTestVarTextSet()", err, err != PRO_TK_NO_ERROR);


}


err = ProArrayFree ((ProArray*)&p_lines);


}

}




err = ProArrayFree ((ProArray*)&p_notes);




err = ProArraySizeGet ((ProArray)p_var_texts, &n_var_texts);


if (err == PRO_TK_NO_ERROR && n_var_texts != 0)

{


err = ProDtlsyminstdataVartextsSet (inst_data, p_var_texts);


TEST_CALL_REPORT("ProDtlsyminstdataVartextsSet()",


"ProTestVarTextSet()", err, err != PRO_TK_NO_ERROR);


err = ProArrayFree ((ProArray*)&p_var_texts);

}


else


return (PRO_TK_NO_CHANGE);




return PRO_TK_NO_ERROR;

}
 
Hi !

To set a VARIABLE text (I guess you mean..) in symbol just use "\" "\" (Backslashes) in front and at the end after your variable text parameter. Then you can specify if it is a "open" value or if it is only predifined values that are alowed. This you do under Attributes ..

Good luck
 
Hello Homo,


I remember wheni work on the same requirement.You can get the var text assigned to the sysmbol,but you can't set the var text to a symbol using the Pro/Toolkit API.Any how i will check once again form documentation and get back to you.


With regards,


Kishore V
 

Sponsor

Articles From 3DCAD World

Back
Top