script_type FZ_UTIL_PROJ_EXTS_TYPE //20:07 2013/04/23 //Takeharu Yabe //script_debug TRUE long use_x_v=1; long use_y_v=1; long use_z_v=1; long roundzeropointfive_v=0; double round_d(double x) { if ( x > 0.0 ) { return fz_std_floor(x + 0.5); } else { return -1.0 * fz_std_floor(fz_std_fabs(x) + 0.5); } } void snappt(long windex) { long i,cnt; long indx; long topo_indx[]; fz_xyz_td pt; double ix,iy,iz; fz_xyz_td trl; fz_mat4x4_td mat; fz_model_pick_enum kind; fz_objt_ptr src_obj; fz_objt_model_type_enum model_type; fz_objt_topo_type_enum topo_type; fz_model_pick_sort(windex,FZ_MODEL_PICK_SORT_KIND); fz_model_pick_get_count(windex,cnt); for (i = 0; i < cnt; i++){ fz_model_pick_get_data(windex,i,kind,NULL,src_obj,indx); fz_objt_alys_get_objt_model_type(windex,src_obj,model_type); if(kind==FZ_MODEL_PICK_PNT){ fz_objt_point_get_xyz(windex,src_obj,indx,model_type,pt); if(roundzeropointfive_v==1){ ix=round_d(pt.x*20)/20; iy=round_d(pt.y*20)/20; iz=round_d(pt.z*20)/20; }else{ ix=round_d(pt.x*10)/10; iy=round_d(pt.y*10)/10; iz=round_d(pt.z*10)/10; } trl={0,0,0}; if(use_x_v==1)trl.x=ix-pt.x; if(use_y_v==1)trl.y=iy-pt.y; if(use_z_v==1)trl.z=iz-pt.z; fz_math_4x4_set_identity(mat); fz_math_4x4_set_trl_mat(mat,trl); topo_indx[0]=indx; fz_objt_edit_transform_points(windex,src_obj,topo_indx,1,mat); } } } long fz_util_cbak_proj_main(long windex) { fzrt_std_enum dlg; long rv = FZRT_NOERR; dlg = fz_fuim_script_run_dialog_windex(windex, "dialog"); if(dlg == FZRT_STD_OK)snappt(windex); return (FZRT_NOERR); } long dialog(long windex, fz_fuim_tmpl_ptr fuim_tmpl) { long group[]; long use_x_f,use_y_f,use_z_f; long roundzeropointfive_f; long err = FZRT_NOERR; if((err = fz_fuim_script_tmpl_init(fuim_tmpl,"snap points",0,NULL,0)) == FZRT_NOERR ) { group[0] = fz_fuim_script_new_group (fuim_tmpl, FZ_FUIM_ROOT, FZ_FUIM_FLAG_NONE); group[1] = fz_fuim_script_new_group (fuim_tmpl, group[0], FZ_FUIM_FLAG_HORZ); use_x_f = fz_fuim_script_new_check(fuim_tmpl,group[1],FZ_FUIM_FLAG_HORZ, "X : "); fz_fuim_script_item_unary_long(fuim_tmpl, use_x_f, use_x_v, 1 ); use_y_f = fz_fuim_script_new_check(fuim_tmpl,group[1],FZ_FUIM_FLAG_HORZ, "Y : "); fz_fuim_script_item_unary_long(fuim_tmpl, use_y_f, use_y_v, 1 ); use_z_f = fz_fuim_script_new_check(fuim_tmpl,group[1],FZ_FUIM_FLAG_HORZ, "Z : "); fz_fuim_script_item_unary_long(fuim_tmpl, use_z_f, use_z_v, 1 ); group[1] = fz_fuim_script_new_group (fuim_tmpl, group[0], FZ_FUIM_FLAG_HORZ); roundzeropointfive_f = fz_fuim_script_new_check(fuim_tmpl,group[1],FZ_FUIM_FLAG_HORZ, "0.5 (Swedish Rounding)"); fz_fuim_script_item_unary_long(fuim_tmpl, roundzeropointfive_f, roundzeropointfive_v, 1 ); } return (FZRT_NOERR); }