script_type FZ_UTIL_PROJ_EXTS_TYPE /************************************************************************* Sample utility script file to demonstrate the usage of simple construction API *************************************************************************/ /************************************************************************* Point construction test *************************************************************************/ long point_test(long windex, long where) { long i,j; fz_xyz_td pt; fz_objt_ptr obj; long rv = FZRT_NOERR; for(i = 0; i < 3; i++) { for(j = 0; j < 3; j++) { pt.x = i * 30.0 + 15; pt.y = j * 30.0 + 15; pt.z = 0.0; if((rv = fz_objt_cnstr_point(windex,pt,obj)) != FZRT_NOERR ) break; if((rv = fz_objt_add_objt_to_project(windex,obj)) != FZRT_NOERR ) break; } } return(rv); } /************************************************************************* Line construction test *************************************************************************/ long line_test(long windex, long where) { long i; fz_xyz_td p1,p2,trl; fz_objt_ptr obj; long rv = FZRT_NOERR; for(i = 0; i < 9; i++) { p1.x = i * 10.0 + 5; p1.y = 5; p1.z = 0.0; p2 = p1; p2.y += (i + 1) * 9; if((rv = fz_objt_cnstr_line(windex,p1,p2,obj)) != FZRT_NOERR ) break; trl = {100, 0, 0}; if((rv = fz_objt_edit_move_objt(windex, obj, trl)) != FZRT_NOERR) break; if((rv = fz_objt_add_objt_to_project(windex,obj)) != FZRT_NOERR ) break; } return(rv); } /************************************************************************* Triangle construction test *************************************************************************/ long triangle_test(long windex, long where) { long i; fz_xyz_td p1,p2,p3,trl; fz_objt_ptr obj; long rv = FZRT_NOERR; for(i = 0; i < 9; i++) { p1.x = i * 10.0 + 2.5; p1.y = 5.0; p1.z = 0.0; p2 = p1; p2.x += 5.0; p3 = (p1 + p2) * 0.5; p3.y += (i + 1) * 5.0; if((rv = fz_objt_cnstr_triangle(windex,p1,p2,p3,obj)) != FZRT_NOERR ) break; trl = {200, 0, 0}; if((rv = fz_objt_edit_move_objt(windex, obj, trl)) != FZRT_NOERR) break; if((rv = fz_objt_add_objt_to_project(windex,obj)) != FZRT_NOERR ) break; } return(rv); } /************************************************************************* Rectangle construction test *************************************************************************/ long rectangle_test(long windex, long where) { long i; fz_xyz_td trl,rot; double width,height; fz_objt_ptr obj; long rv = FZRT_NOERR; width = 5.0; rot = {0,0,0}; for(i = 0; i < 9; i++) { trl.x = i * 10.0 + 2.5; trl.y = 5.0; trl.z = 0.0; height = 5.0 * (i + 1); rot.x = FZ_MATH_DEG_2_RAD(i * 10.0); if((rv = fz_objt_cnstr_rectangle(windex,width,height,trl,rot,obj)) != FZRT_NOERR ) break; trl = {300, 0, 0}; if((rv = fz_objt_edit_move_objt(windex, obj, trl)) != FZRT_NOERR) break; if((rv = fz_objt_add_objt_to_project(windex,obj)) != FZRT_NOERR ) break; } return(rv); } /************************************************************************* vector line construction test *************************************************************************/ long vline_test(long windex, long where) { long i; fz_xyz_td pts[11],trl; fz_objt_ptr obj; long rv = FZRT_NOERR; // OPEN VLINE for(i = 0; i < 11; i++) { pts[i].x = i * 5 + 5; pts[i].y = (i % 2) * 10; pts[i].z = 0.0; } if((rv = fz_objt_cnstr_vline(windex,pts,11,FALSE,obj)) == FZRT_NOERR ) { trl = {400, 0, 0}; if((rv = fz_objt_edit_move_objt(windex, obj, trl)) == FZRT_NOERR) rv = fz_objt_add_objt_to_project(windex,obj); } if ( rv == FZRT_NOERR ) { // CLOSED VLINE for(i = 0; i < 11; i++) { pts[i].x = i * 5 + 5; pts[i].y = (i % 2) * 10 + 20; if ( i == 0 || i == 10 ) pts[i].y = 15; pts[i].z = 0.0; } if((rv = fz_objt_cnstr_vline(windex,pts,11,TRUE,obj)) == FZRT_NOERR ) { trl = {400, 0, 0}; if((rv = fz_objt_edit_move_objt(windex, obj, trl)) == FZRT_NOERR) rv = fz_objt_add_objt_to_project(windex,obj); } } return(rv); } /************************************************************************* vector line construction test *************************************************************************/ long ngon_test(long windex, long where) { long i,nsides,pattern_res,pattern_type; fz_xyz_td trl,rot; double radius,pattern_size; fz_objt_ptr obj; fz_objt_ngon_cnstr_opts_ptr opts; long rv = FZRT_NOERR; radius = 4.0; rot = {0,0,0}; for(i = 0; i < 9; i++) { trl.x = i * 10.0 + 5; trl.y = 5.0; trl.z = 0.0; nsides = i + 3; if((rv = fz_objt_cnstr_ngon(windex,nsides,radius,trl,rot,NULL,obj)) != FZRT_NOERR ) break; trl = {500, 0, 0}; if((rv = fz_objt_edit_move_objt(windex, obj, trl)) != FZRT_NOERR) break; if((rv = fz_objt_add_objt_to_project(windex,obj)) != FZRT_NOERR ) break; } fz_objt_cnstr_ngon_opts_init(windex,opts); for(i = 0; i < 9; i++) { trl.x = i * 10.0 + 5; trl.y = 50.0; trl.z = 0.0; nsides = i + 3; pattern_type = i; pattern_size = 1.0; pattern_res = 10; fz_objt_cnstr_ngon_opts_set(windex,opts,FZ_OBJT_NGON_CNSTR_OPTS_PATTERN_TYPE,pattern_type); fz_objt_cnstr_ngon_opts_set(windex,opts,FZ_OBJT_NGON_CNSTR_OPTS_PATTERN_SIZE,pattern_size); fz_objt_cnstr_ngon_opts_set(windex,opts,FZ_OBJT_NGON_CNSTR_OPTS_PATTERN_RES, pattern_res); if((rv = fz_objt_cnstr_ngon(windex,nsides,radius,trl,rot,opts,obj)) != FZRT_NOERR ) break; trl = {500, 0, 0}; if((rv = fz_objt_edit_move_objt(windex, obj, trl)) != FZRT_NOERR) break; if((rv = fz_objt_add_objt_to_project(windex,obj)) != FZRT_NOERR ) break; } fz_objt_cnstr_ngon_opts_finit(windex,opts); return(rv); } /************************************************************************* Join wires test *************************************************************************/ long join_wires_test(long windex, long where) { long i,j; fz_objt_ptr obj1,obj2,obj3; fz_xyz_td pts[11],trl; fz_xy_td rx_ry; long rv = FZRT_NOERR; /* OPEN VLINE */ pts[0] = { 65.0, 40.0, 0.0 }; pts[1] = { 25.0, 20.0, 0.0 }; for(i = 0, j = 2; i < 5; i++, j++) { pts[j].x = i * 5; pts[j].y = (i % 2) * 10 + 40; pts[j].z = 0.0; } if((rv = fz_objt_cnstr_vline(windex,pts,7,FALSE,obj1)) != FZRT_NOERR ) goto EXIT; /* OPEN SPLINE DEGREE 2 */ for(i = 0; i < 6; i++) { pts[i].x = 20.0 + i * 5.0; if ( i == 0 || i == 5) pts[i].y = 40; else if ( fz_std_odd(i)) pts[i].y = 60; else pts[i].y = 50; pts[i].z = 0.0; } if((rv = fz_objt_cnstr_spline(windex,pts,6,2,NULL,FALSE,FZ_OBJT_MODEL_TYPE_SMOD,NULL,obj2)) != FZRT_NOERR ) goto EXIT; /* ARC */ rx_ry.x = 10.0; rx_ry.y = 10.0; trl.x = 55.0; trl.y = 40.0; trl.z = 0.0; if((rv = fz_objt_cnstr_arc(windex,rx_ry,0.0,FZ_PI,FALSE,FZ_OBJT_MODEL_TYPE_SMOD,trl,NULL,NULL,obj3)) != FZRT_NOERR ) goto EXIT; /* JOIN'EM */ if((rv = fz_objt_edit_join_open_wires(windex,obj1,obj2,TRUE)) != FZRT_NOERR ) goto EXIT; if((rv = fz_objt_edit_join_open_wires(windex,obj1,obj3,TRUE)) != FZRT_NOERR ) goto EXIT; /* DELETE UNNEEDED */ if((rv = fz_objt_edit_delete_objt(windex,obj2)) != FZRT_NOERR ) goto EXIT; if((rv = fz_objt_edit_delete_objt(windex,obj3)) != FZRT_NOERR ) goto EXIT; /* ADD OBJ1 TO PROJECT */ trl = {1200, 0, 0}; if((rv = fz_objt_edit_move_objt(windex, obj1, trl)) != FZRT_NOERR) goto EXIT; if((rv = fz_objt_add_objt_to_project(windex,obj1)) != FZRT_NOERR ) goto EXIT; EXIT : return(rv); } long fz_util_cbak_proj_main(long windex) { if( point_test(windex,1) != FZRT_NOERR ) goto EXIT; if( line_test(windex,2) != FZRT_NOERR ) goto EXIT; if( triangle_test(windex,3) != FZRT_NOERR ) goto EXIT; if( rectangle_test(windex,4) != FZRT_NOERR ) goto EXIT; if( vline_test(windex,5) != FZRT_NOERR ) goto EXIT; if( ngon_test(windex,6) != FZRT_NOERR ) goto EXIT; if( join_wires_test(windex,7) != FZRT_NOERR ) goto EXIT; EXIT : return(FZRT_NOERR); }