/*===========================================================================*\ FILE : ProTestSymDefMenu.c PURPOSE: Symdef - demo & test HISTORY: DATE AUTHOR MODIFICATIONS 24-Feb-99 I-03-20 mka $$1 Created \*===========================================================================*/ /*-------------------------------------------------------------*\ Pro/Toolkit includes \*-------------------------------------------------------------*/ #include #include #include #include #include #include #include #include #include #include #include #include #include /*-------------------------------------------------------------*\ Pro/Develop includes \*-------------------------------------------------------------*/ #include #include #include #include /*-------------------------------------------------------------*\ Application includes \*-------------------------------------------------------------*/ #include "TestError.h" #include "UtilMessage.h" #include "UtilString.h" #include "UtilNames.h" #include "UtilMenu.h" #include "UtilMath.h" /*-------------------------------------------------------------*\ Declaration some functions. \*-------------------------------------------------------------*/ ProError ProTestSymDefInfo(); ProError ProTestSymDefRetrieve(ProDrawing drawing); ProError ProTestSymDefCreate(ProDrawing drawing); ProError ProTestSymDefModify(ProDrawing drawing); ProError ProTestSymDefDelete(ProDrawing drawing); ProError ProTestSymDefGet(ProDrawing drawing, ProDtlsymdef *sym_def); /*=========================================================================*\ Function: ProTestSymDefMenu() Purpose: Make main menu for symdef test and demo. Returns: PRO_TK_NO_ERROR if success; \*=========================================================================*/ int ProTestSymDefMenu(ProDrawing drawing) { ProError error; int menu_id; /*-------------------------------------------------------------*\ Create main menu for this test \*-------------------------------------------------------------*/ error = ProMenuFileRegister("Symdef","tksymdef.mnu", &menu_id); TEST_CALL_REPORT ("ProMenuFileRegister()", "ProTestSymDefMenu()", error, error != PRO_TK_NO_ERROR); error = ProMenubuttonActionSet("Symdef","Info", (ProMenubuttonAction)ProTestSymDefInfo, NULL, 0); TEST_CALL_REPORT ("ProMenubuttonActionSet()", "ProTestSymDefMenu()", error, error != PRO_TK_NO_ERROR); error = ProMenubuttonActionSet("Symdef","Retrieve", (ProMenubuttonAction)ProTestSymDefRetrieve, drawing, 0); TEST_CALL_REPORT ("ProMenubuttonActionSet()", "ProTestSymDefMenu()", error, error != PRO_TK_NO_ERROR); error = ProMenubuttonActionSet("Symdef","Create", (ProMenubuttonAction)ProTestSymDefCreate, drawing, 0); TEST_CALL_REPORT ("ProMenubuttonActionSet()", "ProTestSymDefMenu()", error, error != PRO_TK_NO_ERROR); error = ProMenubuttonActionSet("Symdef","Delete", (ProMenubuttonAction)ProTestSymDefDelete, drawing, 0); TEST_CALL_REPORT ("ProMenubuttonActionSet()", "ProTestSymDefMenu()", error, error != PRO_TK_NO_ERROR); error = ProMenubuttonActionSet("Symdef","Symdef", (ProMenubuttonAction)ProMenuDelete, NULL, 0); TEST_CALL_REPORT ("ProMenubuttonActionSet()", "ProTestSymDefMenu()", error, error != PRO_TK_NO_ERROR); error = ProMenuCreate(PROMENUTYPE_MAIN, "Symdef", &menu_id); TEST_CALL_REPORT ("ProMenuCreate()", "ProTestSymDefMenu()", error, error != PRO_TK_NO_ERROR); error = ProMenuProcess("", &menu_id); TEST_CALL_REPORT ("ProMenuProcess()", "ProTestSymDefMenu()", error, error != PRO_TK_NO_ERROR); return (0); } /*=========================================================================*\ Function: ProTestSymDefRetrieve() Purpose: Retrive symdef from disk. Returns: PRO_TK_NO_ERROR if success; \*=========================================================================*/ ProError ProTestSymDefRetrieve(ProDrawing drawing) { ProError error; ProDtlsymdef symdef; ProLine buff; int version; ProCharLine line, str; ProPath *path_arr, sel_path, def_path; ProName *path_lab_arr, w_name, w_type; /*-------------------------------------------------------------*\ Check input \*-------------------------------------------------------------*/ if(drawing==NULL) return(-1); /*-------------------------------------------------------------*\ Define mask for retrive symdef. By default symdef retrive from current directory. \*-------------------------------------------------------------*/ ProStringToWstring(buff, "*.sym"); ProStringToWstring(def_path, "."); /*-------------------------------------------------------------*\ Allocate memory for path data \*-------------------------------------------------------------*/ error = ProArrayAlloc(0, sizeof(ProPath), 1, (ProArray*)&path_arr); TEST_CALL_REPORT("ProArrayAlloc()", "ProTestSymDefRetrieve()", error, error != PRO_TK_NO_ERROR); error = ProArrayAlloc(0, sizeof(ProPath), 1, (ProArray*)&path_lab_arr); TEST_CALL_REPORT("ProArrayAlloc()", "ProTestSymDefRetrieve()", error, error != PRO_TK_NO_ERROR); /*-------------------------------------------------------------*\ Call OpenFile dialog. \*-------------------------------------------------------------*/ error = ProFileOpen(NULL, buff, path_arr, path_lab_arr, def_path, NULL, sel_path); TEST_CALL_REPORT("ProFileOpen()", "ProTestSymDefRetrieve()", error, error != PRO_TK_NO_ERROR); ProWstringToString(line, sel_path); if (error == PRO_TK_NO_ERROR) { /*-------------------------------------------------------------*\ Call OpenFile dialog. \*-------------------------------------------------------------*/ error = ProFilenameParse(sel_path, def_path, w_name, w_type, &version); TEST_CALL_REPORT("ProFilenameParse()", "ProTestSymDefRetrieve()", error, error != PRO_TK_NO_ERROR); ProWstringToString(str, sel_path); /*-------------------------------------------------------------*\ Chect file type \*-------------------------------------------------------------*/ if(strcmp("sym", ProWstringToString(str, w_type))==0) { ProStringToWstring(def_path,"."); error = ProDrawingDtlsymdefRetrieve(drawing, def_path, w_name, version, PRO_B_TRUE, &symdef); TEST_CALL_REPORT("ProDrawingDtlsymdefRetrieve()", "ProTestSymDefRetrieve()", error, error != PRO_TK_NO_ERROR); } else printf("Bad inputs: %s, %s \n",str,line); } /*-------------------------------------------------------------*\ Free memory and refresh current window \*-------------------------------------------------------------*/ error = ProArrayFree((ProArray*)&path_arr); TEST_CALL_REPORT("ProArrayFree()", "ProTestSymDefRetrieve()", error, error != PRO_TK_NO_ERROR); error = ProArrayFree((ProArray*)&path_lab_arr); TEST_CALL_REPORT("ProArrayFree()", "ProTestSymDefRetrieve()", error, error != PRO_TK_NO_ERROR); error = ProWindowRepaint(PRO_VALUE_UNUSED); TEST_CALL_REPORT("ProWindowRepaint()", "ProTestSymDefRetrieve()", error, error != PRO_TK_NO_ERROR); return (0); } /*=========================================================================*\ Function: ProTestSymDef_attach_add() Purpose: Add new attache to symdef Returns: PRO_TK_NO_ERROR if success; \*=========================================================================*/ ProError ProTestSymDef_attach_add(ProDrawing drawing, ProDtlsymdef *symdef, ProDtlsymdefattachType type, int entity_id, double entity_param, ProVector pos) { ProDtlsymdefdata entdata; ProDtlsymdefattach attach; ProError error; /*-------------------------------------------------------------*\ Allocate memory for symdef data. And setup data for add new attache. \*-------------------------------------------------------------*/ error = ProDtlsymdefdataAlloc(drawing, &entdata); TEST_CALL_REPORT ("ProDtlsymdefdataAlloc()", "ProTestSymDef_attach_add()", error, error != PRO_TK_NO_ERROR); error = ProDtlsymdefDataGet(symdef, &entdata); TEST_CALL_REPORT ("ProDtlsymdefDataGet()", "ProTestSymDef_attach_add()", error, error != PRO_TK_NO_ERROR); error = ProDtlsymdefattachAlloc(type, entity_id, entity_param, pos, &attach); TEST_CALL_REPORT ("ProDtlsymdefattachAlloc()", "ProTestSymDef_attach_add()", error, error != PRO_TK_NO_ERROR); error = ProDtlsymdefdataAttachAdd(entdata, attach); TEST_CALL_REPORT ("ProDtlsymdefdataAttachAdd()", "ProTestSymDef_attach_add()", error, error != PRO_TK_NO_ERROR); /*-------------------------------------------------------------*\ Post information to the symdef data and free memory. \*-------------------------------------------------------------*/ error = ProDtlsymdefModify(symdef, entdata); TEST_CALL_REPORT ("ProDtlsymdefModify()", "ProTestSymDef_attach_add()", error, error != PRO_TK_NO_ERROR); error = ProDtlsymdefattachFree(attach); TEST_CALL_REPORT ("ProDtlsymdefattachFree()", "ProTestSymDef_attach_add()", error, error != PRO_TK_NO_ERROR); error = ProDtlsymdefdataFree(entdata); TEST_CALL_REPORT ("ProDtlsymdefdataFree()", "ProTestSymDef_attach_add()", error, error != PRO_TK_NO_ERROR); return(PRO_TK_NO_ERROR); } /*=========================================================================*\ Function: ProTestSymDef_AddItem() Purpose: Copy entity or note from drawing to the symdef Returns: PRO_TK_NO_ERROR if success; out - handle to the new entity or note \*=========================================================================*/ ProError ProTestSymDef_AddItem(ProDrawing drawing, ProDtlsymdef *symdef, ProDtlentity *entity, ProDtlentity *out) { ProDtlentitydata data; ProDtlnotedata ndata; ProColor color; ProError error; /*-------------------------------------------------------------*\ Check input \*-------------------------------------------------------------*/ if((symdef==NULL)||(entity==NULL)) return(-1); /*-------------------------------------------------------------*\ Add only entity or note \*-------------------------------------------------------------*/ if(((entity->type) == PRO_NOTE)||((entity->type) == PRO_DRAFT_ENTITY)) { /*-------------------------------------------------------------*\ Add new entity to the symdef \*-------------------------------------------------------------*/ if((entity->type) == PRO_DRAFT_ENTITY) { error = ProDtlentityDataGet (entity, NULL, &data); TEST_CALL_REPORT("ProDtlentityDataGet()", "ProTestSymDef_AddItem()", error, error != PRO_TK_NO_ERROR); if(error!=PRO_TK_NO_ERROR) return(-1); /*-------------------------------------------------------------*\ Setup entity color. \*-------------------------------------------------------------*/ error = ProDtlentitydataColorGet(data, &color); TEST_CALL_REPORT("ProDtlentitydataColorGet()", "ProTestSymDef_AddItem()", error, error != PRO_TK_NO_ERROR); if (color.method == PRO_COLOR_METHOD_DEFAULT) color.value.type = PRO_COLOR_LETTER; error = ProDtlentitydataColorSet(data, &color); TEST_CALL_REPORT("ProDtlentitydataColorSet()", "ProTestSymDef_AddItem()", error, error != PRO_TK_NO_ERROR); /*-------------------------------------------------------------*\ Create new entity \*-------------------------------------------------------------*/ error = ProDtlentityCreate (drawing, symdef, data, out); TEST_CALL_REPORT("ProDtlentityCreate()", "ProTestSymDef_AddItem()", error, error != PRO_TK_NO_ERROR); if(error!=PRO_TK_NO_ERROR) return(error); /*-------------------------------------------------------------*\ if entity success create then show it. \*-------------------------------------------------------------*/ #if 0 error = ProDtlentityShow(out); TEST_CALL_REPORT("ProDtlentityShow()", "ProTestSymDef_AddItem()", error, error != PRO_TK_NO_ERROR); #endif } else { /*-------------------------------------------------------------*\ Add new note to the symdef \*-------------------------------------------------------------*/ error = ProDtlnoteDataGet((ProDtlnote*)entity, NULL, PRODISPMODE_SYMBOLIC, &ndata); TEST_CALL_REPORT("ProDtlnoteDataGet()", "ProTestSymDef_AddItem()", error, error != PRO_TK_NO_ERROR); if(error!=PRO_TK_NO_ERROR) return(error); /*-------------------------------------------------------------*\ Note color setup \*-------------------------------------------------------------*/ error = ProDtlnotedataColorGet(ndata, &color); TEST_CALL_REPORT("ProDtlnotedataColorGet()", "ProTestSymDef_AddItem()", error, error != PRO_TK_NO_ERROR); if (color.method == PRO_COLOR_METHOD_DEFAULT) color.value.type = PRO_COLOR_DRAWING; error = ProDtlnotedataColorSet(ndata, &color); TEST_CALL_REPORT("ProDtlnotedataColorSet()", "ProTestSymDef_AddItem()", error, error != PRO_TK_NO_ERROR); /*-------------------------------------------------------------*\ Add new note to the symdef \*-------------------------------------------------------------*/ error = ProDtlnoteCreate(drawing, symdef, ndata, (ProDtlnote*)out); TEST_CALL_REPORT("ProDtlnoteCreate()", "ProTestSymDef_AddItem()", error, error != PRO_TK_NO_ERROR); } return(error); } return(-1); } /*=========================================================================*\ Function: TestAttachType() Purpose: Make menu for select symdef attache type Returns: Attach Type; \*=========================================================================*/ int TestAttachType() { int menu_id, attach_type; ProError error; /*-------------------------------------------------------------*\ Make menu for select attache type \*-------------------------------------------------------------*/ error = ProMenuFileRegister("AttachType","tksymdefatac.mnu", &menu_id); TEST_CALL_REPORT ("ProMenuFileRegister()", "TestAttachType()", error, error != PRO_TK_NO_ERROR); error = ProMenubuttonActionSet("AttachType","Free", (ProMenubuttonAction)ProUtilAssign, (ProAppData)&attach_type, PROSYMDEFATTACHTYPE_FREE); TEST_CALL_REPORT ("ProMenubuttonActionSet()", "TestAttachType()", error, error != PRO_TK_NO_ERROR); error = ProMenubuttonActionSet("AttachType","Left Leader", (ProMenubuttonAction)ProUtilAssign, (ProAppData)&attach_type, PROSYMDEFATTACHTYPE_LEFT_LEADER); TEST_CALL_REPORT ("ProMenubuttonActionSet()", "TestAttachType()", error, error != PRO_TK_NO_ERROR); error = ProMenubuttonActionSet("AttachType","Right Leader", (ProMenubuttonAction)ProUtilAssign, (ProAppData)&attach_type, PROSYMDEFATTACHTYPE_RIGHT_LEADER); TEST_CALL_REPORT ("ProMenubuttonActionSet()", "TestAttachType()", error, error != PRO_TK_NO_ERROR); error = ProMenubuttonActionSet("AttachType","Radial Leader", (ProMenubuttonAction)ProUtilAssign, (ProAppData)&attach_type, PROSYMDEFATTACHTYPE_RADIAL_LEADER); TEST_CALL_REPORT ("ProMenubuttonActionSet()", "TestAttachType()", error, error != PRO_TK_NO_ERROR); error = ProMenubuttonActionSet("AttachType","On item", (ProMenubuttonAction)ProUtilAssign, (ProAppData)&attach_type, PROSYMDEFATTACHTYPE_ON_ITEM); TEST_CALL_REPORT ("ProMenubuttonActionSet()", "TestAttachType()", error, error != PRO_TK_NO_ERROR); error = ProMenubuttonActionSet("AttachType","Normal", (ProMenubuttonAction)ProUtilAssign, (ProAppData)&attach_type, PROSYMDEFATTACHTYPE_NORM_ITEM); TEST_CALL_REPORT ("ProMenubuttonActionSet()", "TestAttachType()", error, error != PRO_TK_NO_ERROR); error = ProMenubuttonActionSet("AttachType","Done", (ProMenubuttonAction)ProMenuDelete, NULL, 1); TEST_CALL_REPORT ("ProMenubuttonActionSet()", "TestAttachType()", error, error != PRO_TK_NO_ERROR); error = ProMenubuttonActionSet("AttachType","AttachType", (ProMenubuttonAction)ProMenuDelete, NULL, 1); TEST_CALL_REPORT ("ProMenubuttonActionSet()", "TestAttachType()", error, error != PRO_TK_NO_ERROR); error = ProMenuCreate(PROMENUTYPE_MAIN, "AttachType", &menu_id); TEST_CALL_REPORT ("ProMenuCreate()", "TestAttachType()", error, error != PRO_TK_NO_ERROR); error = ProMenubuttonDeactivate("AttachType","Done"); TEST_CALL_REPORT ("ProMenubuttonDeactivate()", "TestAttachType()", error, error != PRO_TK_NO_ERROR); error = ProMenuProcess("", &menu_id); TEST_CALL_REPORT ("ProMenuProcess()", "TestAttachType()", error, error != PRO_TK_NO_ERROR); return(attach_type); } /*=========================================================================*\ Function: TestHeightType() Purpose: Make menu for select symdef height type Returns: Height Type; \*=========================================================================*/ int TestHeightType() { ProError error; int menu_id, height_type; /*-------------------------------------------------------------*\ Create menu for select symdef height type \*-------------------------------------------------------------*/ error = ProMenuFileRegister("HeightType","tksymdefhgh.mnu", &menu_id); TEST_CALL_REPORT ("ProMenuFileRegister()", "TestHeightType()", error, error != PRO_TK_NO_ERROR); error = ProMenubuttonActionSet("HeightType","Fixed", (ProMenubuttonAction)ProUtilAssign, (ProAppData)&height_type, PRODTLSYMDEFHGHTTYPE_FIXED); TEST_CALL_REPORT ("ProMenubuttonActionSet()", "TestHeightType()", error, error != PRO_TK_NO_ERROR); error = ProMenubuttonActionSet("HeightType","Variable", (ProMenubuttonAction)ProUtilAssign, (ProAppData)&height_type, PRODTLSYMDEFHGHTTYPE_VARIABLE); TEST_CALL_REPORT ("ProMenubuttonActionSet()", "TestHeightType()", error, error != PRO_TK_NO_ERROR); error = ProMenubuttonActionSet("HeightType","Text related", (ProMenubuttonAction)ProUtilAssign, (ProAppData)&height_type, PRODTLSYMDEFHGHTTYPE_TEXTRELATED); TEST_CALL_REPORT ("ProMenubuttonActionSet()", "TestHeightType()", error, error != PRO_TK_NO_ERROR); error = ProMenubuttonActionSet("HeightType","HeightType", (ProMenubuttonAction)ProMenuDelete, (ProAppData)&height_type, PROSYMDEFATTACHTYPE_FREE); TEST_CALL_REPORT ("ProMenubuttonActionSet()", "TestHeightType()", error, error != PRO_TK_NO_ERROR); error = ProMenuCreate(PROMENUTYPE_MAIN, "HeightType", &menu_id); TEST_CALL_REPORT ("ProMenuCreate()", "TestHeightType()", error, error != PRO_TK_NO_ERROR); error = ProMenuProcess("", &menu_id); TEST_CALL_REPORT ("ProMenuProcess()", "TestHeightType()", error, error != PRO_TK_NO_ERROR); return(height_type); } /*=========================================================================*\ Function: ProTestSymDefCreate() Purpose: Create new symdef, copy some notes and entity from current drawing, user select attache and symdef height type via menu. Returns: PRO_TK_NO_ERROR if success; \*=========================================================================*/ ProError ProTestSymDefCreate(ProDrawing drawing) { ProError error; ProDtlsymdef symdef; ProDtlsymdefdata entdata; ProDtlentity entity, *newent = NULL, *entitys = NULL, *p_entity; ProCharLine astr, astr2; ProPath symname; int n_sel, n, attach_type, dtype, height_type; ProPoint3d pos; ProMouseButton but; double param; Select3d *p_sel; Prodtl_entity *pp_entity; int flg = 1; ProUtilMsgPrint("gen", "TEST %0s","Symbol name [QUIT] : "); /*-------------------------------------------------------------*\ Prompt user for input symdef name \*-------------------------------------------------------------*/ if(ProMessageStringRead(PRO_PATH_SIZE, symname)!=PRO_TK_NO_ERROR) return(-1); error = ProDtlsymdefdataAlloc(drawing, &entdata); TEST_CALL_REPORT("ProDtlsymdefdataAlloc()", "ProTestSymDefCreate()", error, error != PRO_TK_NO_ERROR); if(error!=PRO_TK_NO_ERROR) return(-1); #if 0 /*-------------------------------------------------------------*\ Setup symdef name and create new symdef \*-------------------------------------------------------------*/ error = ProDtlsymdefdataPathSet(entdata,symname); TEST_CALL_REPORT("ProDtlsymdefdataPathSet()", "ProTestSymDefCreate()", error, error != PRO_TK_NO_ERROR); #endif error = ProDtlsymdefCreate(drawing, entdata, &symdef); TEST_CALL_REPORT("ProDtlsymdefCreate()", "ProTestSymDefCreate()", error, error != PRO_TK_NO_ERROR); if(error!=PRO_TK_NO_ERROR) { ProUtilMsgPrint("gen", "TEST %0s ", "Can't created symbol definition."); if(entdata!=NULL) { error = ProDtlsymdefdataFree(entdata); TEST_CALL_REPORT("ProDtlsymdefdataFree()", "ProTestSymDefCreate()", error, error != PRO_TK_NO_ERROR); } return(PRO_TK_GENERAL_ERROR); } sprintf(astr," Created symbol definition: %s", ProWstringToString(astr2, symname)); ProUtilMsgPrint("gen", "TEST %0s ", astr); ProUtilMsgPrint("gen", "TEST %0s","Select items to be in the symbol definition"); /*-------------------------------------------------------------*\ Copy some entity and note from drawing to the symdef. \*-------------------------------------------------------------*/ n_sel = pro_select("any_note,draft_ent",-1, &p_sel, NULL, NULL); entitys = (ProDtlentity*)calloc(n_sel, sizeof(ProDtlentity)); newent = (ProDtlentity*)calloc(n_sel, sizeof(ProDtlentity)); /*-------------------------------------------------------------*\ For all the selected items, remember the item type and id, add it to the symbol definition, and remember the id it has in the symbol. \*-------------------------------------------------------------*/ for(n=0;nid, param, pos); } break; case PROSYMDEFATTACHTYPE_RADIAL_LEADER : /*-------------------------------------------------------------*\ The attachment type if RADIAL, so select a circle \*-------------------------------------------------------------*/ ProUtilMsgPrint("gen", "TEST %0s","Select circle"); while(flg == 1) { p_entity = NULL; if(pro_select("draft_ent",1,&p_sel,NULL,NULL) < 1) { ProUtilMsgPrint("gen", "TEST %0s","Have't selected entity"); break; } dtype =(p_sel[n].sel_type == DTL_USER_NOTE)?(PRO_NOTE):(PRO_DRAFT_ENTITY); for(n=0;ncurve.arc.type == PTC_ARC && pp_entity->curve.arc.start_angle <= EPSM10 && pp_entity->curve.arc.end_angle >= (TWOPI - EPSM10)) break; else ProUtilMsgPrint("gen", "TEST %0s","That is not a circle"); } } if(p_entity!=NULL) { /*-------------------------------------------------------------*\ Define all data for create new attach \*-------------------------------------------------------------*/ memcpy(pos,p_sel[0].select_pnt,sizeof(pos)); param = p_sel[0].sel_param[0]; ProTestSymDef_attach_add(drawing, &symdef, attach_type, p_entity->id, param, pos); } break; } /* End of case statement */ error = ProMenubuttonActivate("AttachType","Done"); /*-------------------------------------------------------------*\ Setup ELBOW property for created symdef \*-------------------------------------------------------------*/ if((attach_type == PROSYMDEFATTACHTYPE_RIGHT_LEADER)||(attach_type == PROSYMDEFATTACHTYPE_LEFT_LEADER)) { ProUtilMsgPrint("gen", "TEST %0s", "Enable elbow (y/n)"); error = ProDtlsymdefdataElbowSet(entdata, ProUtilYesnoGet("Y")); TEST_CALL_REPORT("ProDtlsymdefdataElbowSet()", "ProTestSymDefCreate()", error, error != PRO_TK_NO_ERROR); } /*-------------------------------------------------------------*\ Select the type of height : FIXED, VARIABLE, or TEXT-RELATED \*-------------------------------------------------------------*/ height_type = TestHeightType(); if (height_type == -1) height_type = PRODTLSYMDEFHGHTTYPE_FIXED; error = ProDtlsymdefDataGet(&symdef,&entdata); TEST_CALL_REPORT("ProDtlsymdefDataGet()", "ProTestSymDefCreate()", error, error != PRO_TK_NO_ERROR); /*-------------------------------------------------------------*\ If the height type is TEXT_RELATED, select the text \*-------------------------------------------------------------*/ if(error==PRO_TK_NO_ERROR) { if(height_type == PRODTLSYMDEFHGHTTYPE_TEXTRELATED) { ProUtilMsgPrint("gen", "TEST %0s","Select textl"); while(flg == 1) { p_entity = NULL; if(pro_select("any_note",1,&p_sel,NULL,NULL) < 1) break; /*-------------------------------------------------------------*\ Check note, selected note must included in to the new symdef \*-------------------------------------------------------------*/ for(n=0;nid,0,0); TEST_CALL_REPORT("ProDtlsymdefdataTextrefSet()", "ProTestSymDefCreate()", error, error != PRO_TK_NO_ERROR); } else { ProUtilMsgPrint("gen", "TEST %0s","Set defaul height type: Fixed"); height_type = PRODTLSYMDEFHGHTTYPE_FIXED; } }/* if PRODTLSYMDEFHGHTTYPE_TEXTRELATED */ error = ProDtlsymdefdataHeighttypeSet(entdata, height_type); TEST_CALL_REPORT("ProDtlsymdefdataHeighttypeSet()", "ProTestSymDefCreate()", error, error != PRO_TK_NO_ERROR); /*-------------------------------------------------------------*\ Post all chenges to the new symdef \*-------------------------------------------------------------*/ error = ProDtlsymdefModify(&symdef, entdata); TEST_CALL_REPORT("ProDtlsymdefModify()", "ProTestSymDefCreate()", error, error != PRO_TK_NO_ERROR); }/* if PRO_TK_NO_ERROR */ /*-------------------------------------------------------------*\ Free all temporary variables \*-------------------------------------------------------------*/ if(entdata!=NULL) { error = ProDtlsymdefdataFree(entdata); TEST_CALL_REPORT("ProDtlsymdefdataFree()", "ProTestSymDefCreate()", error, error != PRO_TK_NO_ERROR); } if(entitys!=NULL) { free(entitys); entitys = NULL; } if(newent!=NULL) { free(newent); entitys = NULL; } return(PRO_TK_NO_ERROR); } /*=========================================================================*\ Function: ProTestSymDefDelete() Purpose: Delete selected symdef from current drawing. Returns: PRO_TK_NO_ERROR if success; \*=========================================================================*/ ProError ProTestSymDefDelete(ProDrawing drawing) { ProError error; ProDtlsymdef sym_def; ProUtilMsgPrint("gen", "TEST %0s", "Not implemented" ); #if 0 ProUtilMsgPrint("gen", "TEST %0s", "Select Symdef for delete."); /*-------------------------------------------------------------*\ Select symdef for delete. \*-------------------------------------------------------------*/ error = ProTestSymDefGet (drawing, &sym_def); if(error!=PRO_TK_NO_ERROR) return(-1); ProUtilMsgPrint("gen", "TEST %0s", "Are you sure ? (y/n)"); if (!ProUtilYesnoGet("N")) return(0); /*-------------------------------------------------------------*\ Delete selected symdef. \*-------------------------------------------------------------*/ error = ProDtlsymdefDelete(&sym_def); TEST_CALL_REPORT("ProDtlsymdefDelete()", "ProTestSymDefDelete()", error, error != PRO_TK_NO_ERROR); if(error==PRO_TK_NO_ERROR) ProUtilMsgPrint("gen", "TEST %0s", "Symdef success deleted"); else ProUtilMsgPrint("gen", "TEST %0s", "Error ! "); #endif return(0); }