Mobile Communication Direct

ビューの投影


サンプル

#include	<uf_draw.h>
#include	<uf_draw_errors.h>
#include	<uf_draw_types.h>

#include	<uf_view.h>
#include	<uf_view_ugopenint.h>

#include	<uf_obj.h>
#include	<uf_obj_errors.h>
#include	<uf_obj_types.h>

#include	<uf_object_types.h>


using namespace std;


//	関数のプロタイプ宣言
	
	void Func1(tag_t drawing_tag, tag_t view_tag);
	
//	関数のプロタイプ宣言の終了


int	ThisProject(void){

	int	ret;

	//負の値はエラー
	//double dPt[2] = {150.0, -10.0};
	double dPt[2] = {200.0, 200.0};

	//図面へのビューの取り込み。
	ret = uc6481("SHT1", "TOP", dPt, 1);

	if(ret != 0){cout << "ERROR uc6481 ret = " << ret << endl; return 0;}


	//図面内のビューの検索。
	char	view_name [MAX_ENTITY_NAME_SIZE] = "";
	uc6499("", view_name);

	cout << "view_name -> "  << view_name << endl;


	//名前で指定した既存のビューのタグを取得。
	tag_t	view_tag = NULL_TAG;
	UF_VIEW_ask_tag_of_view_name (view_name, &view_tag);


	//ビューのスケールを指定の値に設定。
	UF_DRAW_set_view_scale (view_tag, 0.1);

	//ビュー境界を自動ビュー境界として定義
	UF_DRAW_define_view_auto_rect(view_tag);

	//現在の図面のタグを返す。
	tag_t	drawing_tag = NULL_TAG;
	UF_DRAW_ask_current_drawing (&drawing_tag);		

	//ビュー更新
	Func1(drawing_tag, view_tag);

	//正投影ビューを現在の図面に追加。
	UF_DRAW_proj_dir_t	projection_direction	= UF_DRAW_project_infer;
	double		reference_point[2]		= {400.0, 400.0};
	tag_t		ortho_view_tag		= NULL_TAG;

	//正投影ビューを現在の図面に追加。
	ret = UF_DRAW_add_orthographic_view(drawing_tag, view_tag, 
		projection_direction, reference_point,
		&ortho_view_tag );

	//ビュー更新。
	Func1(drawing_tag, ortho_view_tag);

	//図面内のビューの検索
	char	view_name2 [MAX_ENTITY_NAME_SIZE] = "";
	ret = UF_OBJ_ask_name(ortho_view_tag, view_name2);
	cout << "view_name2 -> "  << view_name2 << endl;

	double	reference_pt[2] = {0.0, 0.0};
	//図面内のビューの図面参照点位置の読み込み。
	ret = uc6483("", view_name2, reference_pt);
	cout << "reference_pt[0] " << reference_pt[0] << endl;
	cout << "reference_pt[1] " << reference_pt[1] << endl;

	
	//このルーチンは、指定されたビューを、現在の図面上の所定の位置へ移動します。
	double	reference_pt_move[2];
	reference_pt_move[0] = reference_pt[0] + 100.0;
	reference_pt_move[1] = reference_pt[1];
	ret = UF_DRAW_move_view(ortho_view_tag, reference_pt_move);

	return 0;
}
			


サブルーチン

void Func1(tag_t drawing_tag, tag_t view_tag)
{

	logical	out_of_date;

	//要素の未更新状態を照会する。今のところ、ビューと図面の2つの要素だけが有効。
	UF_DRAW_is_object_out_of_date(view_tag, &out_of_date);

	if (out_of_date)
	{
		//図面上の1つの図面メンバビューを更新する。
		UF_DRAW_update_one_view(drawing_tag, view_tag);
	}

	return;

}
			

 


<戻る>