Example #1
0
	ProError BatchPlot::GetWorkspaceItems(std::vector<Gui::Model> &list)
	{
		ProError		status;
		ProFileListOpt	option = PRO_FILE_LIST_LATEST_SORTED;
		wchar_t			*w_server_alias;
		wchar_t			*w_workspace_name;
		ProPath			*w_file_names;
		ProPath			*w_folder_names;
		ProPath			w_path;
		ProPath			w_filter;

		status = BatchPlot::GetFileFilter(true, true, w_filter);

		status = ProServerActiveGet(&w_server_alias);
		if (status != PRO_TK_NO_ERROR)
		{
			Mirim::MsgBox::Show(L"Server Alias", L"Could not find Active PDMLink Server");
			return PRO_TK_E_NOT_FOUND;
		}

		status = ProServerWorkspaceGet(w_server_alias, &w_workspace_name);
		if (status != PRO_TK_NO_ERROR)
		{
			Mirim::MsgBox::Show(L"Workspace", L"Could not find Active Workspace.");
			return PRO_TK_E_NOT_FOUND;
		}

		wsprintf(w_path, L"wtws://%s/%s", w_server_alias, w_workspace_name);

		status = ProArrayAlloc(0, sizeof(ProPath), 1,(ProArray*)&w_file_names);
		status = ProArrayAlloc(0, sizeof(ProPath), 1,(ProArray*)&w_folder_names);
		status = ProFilesList(w_path, w_filter, option, &w_file_names, &w_folder_names); 
		int n_count = -1;
		status = ProArraySizeGet(w_file_names, &n_count);

		for(int i=0; i<n_count; i++)
		{
			Model m(w_file_names[i]);
			list.push_back(m);
		}

		status = ProWstringFree(w_server_alias);
		status = ProWstringFree(w_workspace_name);

		status = ProArrayFree((ProArray *) &w_file_names);
		status = ProArrayFree((ProArray *) &w_folder_names);

		return PRO_TK_NO_ERROR;
	}
Example #2
0
ProError visit_component_action( ProFeature* in_feature, ProError in_status, Appdata in_app_data ) {
	
	

	ProError rs;
	ProMdl model;
	switch( rs = ProAsmcompMdlGet(in_feature, &model) ) {
	case PRO_TK_NO_ERROR: break;
	case PRO_TK_BAD_INPUTS:
		isis_LOG(lg, isis_CONSOLE_FILE, isis_ERROR) << "The specified feature is not a valid component feature.";
		return PRO_TK_GENERAL_ERROR;
	case PRO_TK_E_NOT_FOUND:
		isis_LOG(lg, isis_CONSOLE_FILE, isis_ERROR) << "Assembly component model is not a solid or is not in memory.";
		return PRO_TK_GENERAL_ERROR;
	default:
		isis_LOG(lg, isis_CONSOLE_FILE, isis_ERROR) << "unexpected error: " << rs;
		return PRO_TK_GENERAL_ERROR;
	}
	ProSolid solid = static_cast<ProSolid>(model);

	ProMdlType component_type;

	switch( rs = ProMdlTypeGet(model, &component_type) ) {
	case PRO_TK_NO_ERROR: break;
	case PRO_TK_BAD_INPUTS:
		isis_LOG(lg, isis_CONSOLE_FILE, isis_ERROR) << "The input argument is invalid.";
		return PRO_TK_GENERAL_ERROR;
	case PRO_TK_GENERAL_ERROR:
		isis_LOG(lg, isis_CONSOLE_FILE, isis_ERROR) << "The information could not be obtained.";
		return PRO_TK_GENERAL_ERROR;
	default:
		isis_LOG(lg, isis_CONSOLE_FILE, isis_ERROR) << "unexpected error: " << rs;
		return PRO_TK_GENERAL_ERROR;
	}

	ProAsmcomp component = static_cast<ProAsmcomp>(*in_feature);

	Appdata app_data; 
	app_data.level = in_app_data.level+1;
	app_data.path.owner = static_cast<ProSolid>(component.owner);
	app_data.path.owner = in_app_data.path.owner;
	app_data.path.table_num = in_app_data.path.table_num + 1;
	for( int ix=0; ix < app_data.path.table_num; ++ix ) {
		app_data.path.comp_id_table[ix] = in_app_data.path.comp_id_table[ix];
	}
	app_data.path.comp_id_table[app_data.path.table_num] = in_feature->id;

    switch( component_type ) {
	case PRO_ASSEMBLY:
		{
		ProAppData* app_data_vp = reinterpret_cast<ProAppData*>(&app_data);
		switch( rs = ProSolidFeatVisit(solid, visit_action, filter_action, app_data_vp) ) {
		case PRO_TK_NO_ERROR: break;
		case PRO_TK_E_NOT_FOUND:
			isis_LOG(lg, isis_CONSOLE_FILE, isis_ERROR) << "filter produced no component features.";
			break;
		default:
			isis_LOG(lg, isis_CONSOLE_FILE, isis_ERROR) << "Any other value is the value returned "
				<< " by the action function (visiting stopped)." << rs;
		}
		}
		break;
	case PRO_PART:
		{
			ProMdl self;
			switch( rs = ProModelitemMdlGet(in_feature, &self) ) {
			case PRO_TK_NO_ERROR: break;
			case PRO_TK_BAD_INPUTS:
				isis_LOG(lg, isis_CONSOLE_FILE, isis_ERROR) << "feature has no model. " << in_feature->id;
			}
			char assembly_name[PRO_NAME_SIZE];
			{
				ProName wname;
				switch( rs = ProMdlNameGet(self, wname) ) {
				case PRO_TK_NO_ERROR: break;
				case PRO_TK_BAD_INPUTS:
					isis_LOG(lg, isis_CONSOLE_FILE, isis_ERROR) << "The input argument is invalid. " << in_feature->id;
					throw std::runtime_error("selector feature name failed");
				case PRO_TK_E_NOT_FOUND:
					isis_LOG(lg, isis_CONSOLE_FILE, isis_ERROR) << "The specified item does not have a name.  ";
					break;
				default:
					isis_LOG(lg, isis_CONSOLE_FILE, isis_ERROR) << "ill specified error:  " << rs;
					throw std::runtime_error("selector feature name failed");
				}
				ProWstringToString(assembly_name, wname);
			}
			char model_name[PRO_PATH_SIZE];
			{
				wchar_t* wname;
				ProBoolean is_modifiable;
				switch( rs = ProMdlCommonnameGet(self, &wname, &is_modifiable) ) {
				case PRO_TK_NO_ERROR: break;
				case PRO_TK_BAD_INPUTS:
					isis_LOG(lg, isis_CONSOLE_FILE, isis_ERROR) << "The input argument is invalid. " << in_feature->id;
					throw std::runtime_error("selector feature name failed");
				case PRO_TK_E_NOT_FOUND:
					isis_LOG(lg, isis_CONSOLE_FILE, isis_ERROR) << "The specified item does not have a name.  ";
					break;
				default:
					isis_LOG(lg, isis_CONSOLE_FILE, isis_ERROR) << "ill specified error:  " << rs;
					throw std::runtime_error("selector feature name failed");
				}
				ProWstringToString(model_name, wname);
				ProWstringFree(wname);
			}
			char item_name[PRO_NAME_SIZE];
			{
				ProName wname;
				switch( rs = ProModelitemNameGet(in_feature, wname) ) {
				case PRO_TK_NO_ERROR: break;
				case PRO_TK_BAD_INPUTS:
					isis_LOG(lg, isis_CONSOLE_FILE, isis_ERROR) << "The input argument is invalid. " << in_feature->id;
					throw std::runtime_error("selector feature name failed");
				case PRO_TK_E_NOT_FOUND:
					isis_LOG(lg, isis_CONSOLE_FILE, isis_ERROR) << "The specified item does not have a name.  ";
					break;
				default:
					isis_LOG(lg, isis_CONSOLE_FILE, isis_ERROR) << "ill specified error:  " << rs;
					throw std::runtime_error("selector feature name failed");
				}
				ProWstringToString(item_name, wname);
			}

			// If you request the transformation from the member to the
			// assembly, this is PRO_B_TRUE. Otherwise, this is PRO_B_FALSE.
			ProBoolean   bottom_up = PRO_B_TRUE;
			ProMatrix    transformation;
			// retrieve the transformation matrix, given the component path.
			switch( rs = ProAsmcomppathTrfGet(&app_data.path, bottom_up, transformation) ) {
			case PRO_TK_NO_ERROR: break;
			case PRO_TK_BAD_INPUTS:
				isis_LOG(lg, isis_CONSOLE_FILE, isis_ERROR) << "transform get, the input argument is invalid: " 
					<< app_data.path.comp_id_table;
				return PRO_TK_GENERAL_ERROR;
			case PRO_TK_GENERAL_ERROR:
				isis_LOG(lg, isis_CONSOLE_FILE, isis_ERROR) << "The specified component path was wrong, or contained missing members.";
				return PRO_TK_GENERAL_ERROR;
			default:
				isis_LOG(lg, isis_CONSOLE_FILE, isis_ERROR) << "unexpected error: " << rs;
				return PRO_TK_GENERAL_ERROR;
			}

			isis_LOG(lg, isis_FILE, isis_INFO) << "transformation: " << assembly_name 
				<< " : " << model_name << " : " << item_name;
			isis_LOG(lg, isis_FILE, isis_INFO) << "[";
			for( int ix=0; ix < 4; ++ix ) {
				isis_LOG(lg, isis_FILE, isis_INFO) << "\n\t[";
				for( int jx=0; jx < 4; ++jx ) {
					isis_LOG(lg, isis_FILE, isis_INFO) << '\t' << transformation[ix][jx];
				}
				isis_LOG(lg, isis_FILE, isis_INFO) << "]";
			}
			isis_LOG(lg, isis_FILE, isis_INFO) << "]\n";
			return PRO_TK_NO_ERROR;
		} 
	default:
		{
		isis_LOG(lg, isis_CONSOLE_FILE, isis_ERROR) << "unknown-component-type: " << component_type;
		}
	}
	return PRO_TK_NO_ERROR;
}