当前位置: 首页>>代码示例>>C++>>正文


C++ ObjectData::getMaterials方法代码示例

本文整理汇总了C++中ObjectData::getMaterials方法的典型用法代码示例。如果您正苦于以下问题:C++ ObjectData::getMaterials方法的具体用法?C++ ObjectData::getMaterials怎么用?C++ ObjectData::getMaterials使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ObjectData的用法示例。


在下文中一共展示了ObjectData::getMaterials方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: assignCurrentObjectProps

void GUIMainWindow::assignCurrentObjectProps() {

	//Ist ein Objekt geladen?
	if (wxGetApp().getCurrentDataObjectIndex() > -1) {
		//aktives Objekt
		ObjectData* obj = wxGetApp().getActiveObject();
		//Punkt als Dezimaltrennzeichen verwenden
		setlocale(LC_NUMERIC, "C");

		//Übertragen der Objekt- und Materialeigenschaften aus der Oberfläche in das Objekt
		obj->setName(string(propbox->getObjNameEdit()->GetValue().ToAscii()));
		obj->setMaxvolume(
				atof(propbox->getMaxVolumeEdit()->GetValue().ToAscii()));
		obj->setQuality(atof(propbox->getQualityEdit()->GetValue().ToAscii()));
		obj->setCurrentSensorIndex(
				propbox->getSensorDataList()->GetSelection());
		SensorData* sd = &obj->getSensorDataList()->at(
				propbox->getSensorDataList()->GetSelection());
		if (sd->timed) {
			sd->current_time_index = propbox->getSdTimeline()->getValue();
		}
		ObjectData::MaterialData* mat = &obj->getMaterials()->at(
				propbox->getCurrentMaterial());
		mat->name = propbox->getMatNameEdit()->GetValue().ToAscii();
		mat->interpolation_mode =
				(Interpolator::InterpolationMode) propbox->getInterpolationModeList()->GetSelection();
		mat->density = atof(propbox->getDensityEdit()->GetValue().ToAscii());
		mat->specificheatcapacity = atof(
				propbox->getSpecificHeatCapEdit()->GetValue().ToAscii());
	}
}
开发者ID:vroland,项目名称:SimpleAnalyzer,代码行数:31,代码来源:GUIMainWindow.cpp

示例2: renderImage

void GUICutRenderWindow::renderImage(wxImage* image) {

	//Speichern der Zeit für die Laufzeitmessung
	timeval tm1;
	gettimeofday(&tm1, NULL);

	int width = imgWidthEdit->GetValue();
	int height = imgHeightEdit->GetValue();

	//aktualisieren der Skala
	canvas->getScalePanel()->refresh(width, height);

	//die Anzahl der zur Berechnung zu verwendenden Kerne
	core_count = threadcountedit->GetValue();

	/*
	 * Versuchen, die Interpolation durch vorgezogenes Testen des zuletzt verwendeten Tetraeders zu beschleunigen.
	 * Diese Option ist verursacht Ungenauigkeiten und bietet zumeist wenig Performancegewinn.
	 * Sie ist deshalb standardmäßig deaktiviert und nicht über die Programmoberfläche aktivierbar.
	 */
	bool use_last_tet = false;

	//zurücksetzen der Grafik
	delete image;
	image = new wxImage(width, height, true);
	image->InitAlpha();

	//Punkt als Dezimaltrennzeichen
	setlocale(LC_NUMERIC, "C");

	//Eigenschaften der Temperaturverteilung
	CutRender_info* info = getCutRenderProperties();
	Triangle* tri = info->tri;
	//X-Achse der Ebene im 3D-Raum
	Vector3D* xvec = tri->getV2()->copy();
	xvec->sub(tri->getV1());
	//Normale der Ebene
	Vector3D* tri_nor = tri->getNormal();
	//Y-Achse der Ebene im 3D-Raum
	Vector3D* yvec = xvec->crossProduct(tri_nor);
	delete tri_nor;
	xvec->normalize();
	yvec->normalize();

	//Das aktive Objekt
	ObjectData* obj = wxGetApp().getActiveObject();

	//Erstellen möglichst einfacher Geometrien für die Materialien
	vector<tetgenio*> bases(obj->getMaterials()->size());
	for (unsigned int i = 0; i < obj->getMaterials()->size(); i++) {
		tetgenio* tri_io = new tetgenio();
		string args = "Q";
		tetrahedralize(const_cast<char*>(args.c_str()),
				obj->getMaterials()->at(i).tetgeninput, tri_io, NULL, NULL);
		bases.at(i) = tri_io;
	}

	//Zurücksetzen des Datenarrays für die Temperaturverteilung
	if (value_img != NULL) {
		delete[] value_img;
	}
	value_img = new float[width * height];

	//Verknüpfen der Ausgabe mit den Temperaturverteilungsdaten und der Grafik
	canvas->setImage(image);
	canvas->setValueImg(value_img);

	//Erstellen des Statusregisters für die Berechnungsthreads
	bool thread_running[core_count];
	for (int i = 0; i < core_count; i++) {
		thread_running[i] = 1;
	}

	//Array für die Thread-Objekts
	vector<thread*> threads = vector<thread*>(0);
	//Array für die Kopierten Sensordaten. Das Kopieren ist erforderlich, da die Threads die Daten verändern (sortieren).
	vector<vector<SensorPoint>> copied_sensor_data =
			vector<vector<SensorPoint>>(core_count);

	//Höhe für die Streifen, die die einzelnen Threads berechnen
	int delta_h = height / core_count;

	//Für alle Threads...
	for (int i = 0; i < core_count; i++) {
		//Die Starthöhe des Threads in der Temperaturverteilung
		int startheight = delta_h * i;

		//eventuelle Korrektur der Streifenhöhe für den letzten Thread
		if (i == core_count - 1) {
			if (startheight + delta_h < height) {
				delta_h = height - startheight;
			}
		}

		//Aktueller Sensordatensatz
		SensorData* dataset = &obj->getSensorDataList()->at(
				obj->getCurrentSensorIndex());
		vector<SensorPoint>* original_sd = &dataset->data.at(
				dataset->current_time_index);
		copied_sensor_data.at(i).resize(original_sd->size());
//.........这里部分代码省略.........
开发者ID:vroland,项目名称:SimpleAnalyzer,代码行数:101,代码来源:GUICutRenderWindow.cpp

示例3: updateObjectPropGUI

void GUIMainWindow::updateObjectPropGUI() {

	//Ist ein Objekt geladen?
	if (wxGetApp().getCurrentDataObjectIndex() > -1) {
		//Es werden keine Events bezüglich der Oberfläche verarbeitet werden
		updating = true;
		//aktives Objekt
		ObjectData* obj = wxGetApp().getActiveObject();
		//Punkt als Dezimaltrennzeichen verwenden
		setlocale(LC_NUMERIC, "C");

		//Übertragen der Objekt- und Materialeigenschaften in die GUI.
		propbox->SetLabel(
				wxString::FromAscii(
						(obj->getName() + " - Objekteigenschaften:").c_str()));
		propbox->getObjNameEdit()->SetValue(
				wxString::FromAscii(obj->getName().c_str()));
		propbox->getMaxVolumeEdit()->SetValue(
				wxString::FromAscii(floattostr(obj->getMaxvolume()).c_str()));
		propbox->getQualityEdit()->SetValue(
				wxString::FromAscii(floattostr(obj->getQuality()).c_str()));
		propbox->getSensorDataList()->Clear();
		for (unsigned int i = 0; i < obj->getSensorDataList()->size(); i++) {
			propbox->getSensorDataList()->Insert(
					wxString::FromAscii(
							obj->getSensorDataList()->at(i).name.c_str()), i);
		}
		propbox->getSensorDataList()->SetSelection(
				obj->getCurrentSensorIndex());
		propbox->getMatListBox()->Clear();
		for (unsigned int i = 0; i < obj->getMaterials()->size(); i++) {
			propbox->getMatListBox()->Insert(
					wxString::FromAscii(
							obj->getMaterials()->at(i).name.c_str()), i);
		}
		propbox->getMatListBox()->SetSelection(propbox->getCurrentMaterial());
		ObjectData::MaterialData* mat = &obj->getMaterials()->at(
				propbox->getCurrentMaterial());
		propbox->getMatPropBox()->SetLabel(
				wxString::FromAscii(
						(mat->name + " - Materialeigenschaften").c_str()));

		propbox->getInterpolationModeList()->SetSelection(
				mat->interpolation_mode);
		propbox->getDensityEdit()->SetValue(
				wxString::FromAscii(floattostr(mat->density).c_str()));
		propbox->getSpecificHeatCapEdit()->SetValue(
				wxString::FromAscii(
						floattostr(mat->specificheatcapacity).c_str()));
		propbox->getMatNameEdit()->SetValue(
				wxString::FromAscii(mat->name.c_str()));
		propbox->resize();
		updating = false;

		//Oberfläche ist aktuell
		propbox->getUpToDateLbl()->Hide();

		//Anzeige des aktiven Objekts aktualisieren
		int nPos = toolbar->GetToolPos(ID_CHANGE_ACTIVE_OBJ);
		wxToolBarToolBase* pTool = toolbar->RemoveTool(ID_CHANGE_ACTIVE_OBJ);
		pTool->SetLabel(
				wxString::FromAscii(
						("aktives Objekt: " + obj->getName()).c_str()));
		toolbar->InsertTool(nPos, pTool);
		toolbar->Realize();
	}
}
开发者ID:vroland,项目名称:SimpleAnalyzer,代码行数:67,代码来源:GUIMainWindow.cpp


注:本文中的ObjectData::getMaterials方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。