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

"ProElemtreeElementAdd" does not work!

Highlighted
Newbie

"ProElemtreeElementAdd" does not work!

PRO_E_FEATURE_TREE   

|   

|--PRO_E_FEATURE_TYPE   

|   

|   

|   

|   

|   

|   

|   

|--PRO_E_INT_PARTS 

     |--PRO_E_FEATURE_INTERSECTION     

          |--PRO_E_FEATURE_INTERSECT_PART             

          |--PRO_E_FEATURE_INTERSECT_LEVEL

how to program?

ProElement elem_PRO_E_FEATURE_INTERSECTION=NULL;
   ProElement elem_PRO_E_FEATURE_INTERSECT_PART=NULL;
   ProElement elem_PRO_E_FEATURE_INTERSECT_LEVEL=NULL;

   status = ProElementAlloc(PRO_E_FEATURE_INTERSECTION,&elem_PRO_E_FEATURE_INTERSECTION );
   if(status!=PRO_TK_NO_ERROR) continue;

   status = ProElemtreeElementAdd(elem_PRO_E_INT_PARTS,NULL,elem_PRO_E_FEATURE_INTERSECTION);
   if(status!=PRO_TK_NO_ERROR) continue;

   status = ProElementAlloc(PRO_E_FEATURE_INTERSECT_PART,&elem_PRO_E_FEATURE_INTERSECT_PART);
   if(status!=PRO_TK_NO_ERROR) continue;

anynone can help me?

1 REPLY 1

Re: "ProElemtreeElementAdd" does not work!

Hi,

here is an example to create a Datum plane:


void createADatumPane(ProMdl mdl, ProFeature * csys, int c_sys_pane_type, wchar_t * panename, ProFeature * feat) {
ProElement pro_e_feature_tree, pro_e_feature_type, elem_const_type, elem_offset, pro_e_std_feature_name, elem_consts, elem_offset_ref;
ProErrorlist errs;
ProError tkerr;
ProValueData value_data;
ProValue value;
ProFeatureCreateOptions opts[1];
ProName wide_string = L"";
ProModelitem p_mdl_itm;
ProSelection sel;

ProElementAlloc(PRO_E_FEATURE_TREE, &pro_e_feature_tree);

ProElementAlloc(PRO_E_FEATURE_TYPE, &pro_e_feature_type);
value_data.type = PRO_VALUE_TYPE_INT;
value_data.v.i = PRO_FEAT_DATUM;
ProValueAlloc(&value);
ProValueDataSet ( value, &value_data );
ProElementValueSet ( pro_e_feature_type, value );
ProElemtreeElementAdd ( pro_e_feature_tree, NULL, pro_e_feature_type );

if (panename != NULL) {
  wcscpy_s(wide_string, PRO_NAME_SIZE, panename);

  ProElementAlloc(PRO_E_STD_FEATURE_NAME, &pro_e_std_feature_name);
  value_data.type = PRO_VALUE_TYPE_WSTRING;
  value_data.v.w = wide_string;
  ProValueAlloc(&value);
  ProValueDataSet(value, &value_data);
  ProElementValueSet(pro_e_std_feature_name, value);
  ProElemtreeElementAdd(pro_e_feature_tree, NULL, pro_e_std_feature_name);
}

ProElementAlloc (PRO_E_DTMPLN_CONSTRAINTS, &elem_consts);
ProElemtreeElementAdd (pro_e_feature_tree, NULL, elem_consts);

ProElementAlloc (PRO_E_DTMPLN_CONSTRAINT, &elem_offset);
ProElemtreeElementAdd (elem_consts, NULL, elem_offset);

ProElementAlloc(PRO_E_DTMPLN_CONSTR_TYPE, &elem_const_type);
value_data.type = PRO_VALUE_TYPE_INT;
value_data.v.i = c_sys_pane_type;
ProValueAlloc(&value);
ProValueDataSet(value, &value_data);
ProElementValueSet(elem_const_type, value);
ProElemtreeElementAdd(elem_offset, NULL, elem_const_type);

if (csys != NULL) {
  ProSelection selection;
  ProReference ref;

  ProElementAlloc(PRO_E_DTMPLN_CONSTR_REF, &elem_offset_ref);
  if (ProSelectionAlloc(NULL, csys, &selection) != PRO_TK_NO_ERROR) writeRunnerLog(L"m2", 2);;
  if (ProSelectionToReference(selection, &ref) != PRO_TK_NO_ERROR) writeRunnerLog(L"m3", 2);;
  if (ProElementReferenceSet(elem_offset_ref, ref) != PRO_TK_NO_ERROR) writeRunnerLog(L"m4", 2);;
  ProElemtreeElementAdd(elem_offset, NULL, elem_offset_ref);
}

opts[0] = PRO_FEAT_CR_DEFINE_MISS_ELEMS;

ProMdlToModelitem(mdl, &p_mdl_itm);
ProSelectionAlloc(NULL, &p_mdl_itm, &sel);
tkerr = ProFeatureCreate(sel, pro_e_feature_tree, opts, 1, feat, &errs);
if (tkerr != PRO_TK_NO_ERROR) {
  writeRunnerLog(L"Can't create the datum pane.", 2);
} else {
  setCost(1);
}
ProSelectionFree(&sel);

ProElementFree(&pro_e_feature_tree);
}

Not much documentation, but I think you'll get out the needed code block to create elements out of these example.

Br,

Eike

Announcements
Message from Brian Thompson (PTC General Manager and DVP) regarding Creo Business Continuity plans.