Ejemplo n.º 1
0
void CActorInstance::AttachWeapon(DWORD dwParentPartIndex, DWORD dwPartIndex, CItemData * pItemData)
{
//	assert(m_pkCurRaceData);
	if (!pItemData)
		return;

	const char * szBoneName;
	if (!GetAttachingBoneName(dwPartIndex, &szBoneName))
		return;

	// NOTE : (이도류처리)단도일 경우 형태가 다른 것으로 얻는다. 없을 경우 디폴트를 리턴
	if (CRaceData::PART_WEAPON_LEFT == dwPartIndex)
	{
		RegisterModelThing(dwPartIndex, pItemData->GetSubModelThing());
	}
	else
	{
		RegisterModelThing(dwPartIndex, pItemData->GetModelThing());
	}

	for (DWORD i = 0; i < pItemData->GetLODModelThingCount(); ++i)
	{
		CGraphicThing * pThing;

		if (!pItemData->GetLODModelThingPointer(i, &pThing))
			continue;

		RegisterLODThing(dwPartIndex, pThing);
	}

	SetModelInstance(dwPartIndex, dwPartIndex, 0);
	AttachModelInstance(dwParentPartIndex, szBoneName, dwPartIndex);

	// 20041208.myevan.무기스펙큘러(값옷은 SetShape에서 직접 해준다.)
	if (USE_WEAPON_SPECULAR)
	{
		SMaterialData kMaterialData;
		kMaterialData.pImage = NULL;
		kMaterialData.isSpecularEnable = TRUE;
		kMaterialData.fSpecularPower = pItemData->GetSpecularPowerf();
		kMaterialData.bSphereMapIndex = 1;
		SetMaterialData(dwPartIndex, NULL, kMaterialData);
	}

	// Weapon Trace
	if (__IsWeaponTrace(pItemData->GetWeaponType()))
	{
		CWeaponTrace * pWeaponTrace = CWeaponTrace::New();		
		pWeaponTrace->SetWeaponInstance(this, dwPartIndex, szBoneName);
		m_WeaponTraceVector.push_back(pWeaponTrace);
	}
}
Ejemplo n.º 2
0
bool CMDXHTMLWriter::WriteHeader()
{
    FILE *pFile = NULL;

	if( fopen_s( &pFile, m_strFilePath.c_str(), "w" ) != 0 )
    {
        //fclose( pFile ); 
        return false;
    }

	SetMaterialData();
	SetMachineData();

	fprintf_s(pFile, "<Html>\n");
	fprintf_s(pFile, "<head>\n");
		//強制編碼以防中文亂碼產生
		fprintf_s(pFile, "<meta http-equiv=""Content-Type"" content=""text/html; charset=big5"">\n"); 
	fprintf_s(pFile, "</head>\n");
	fprintf_s(pFile, "<title>成型條件試模表</title>");

	fprintf_s(pFile, "<body>");

	//頁首--------------------------------------------
	fprintf_s(pFile, "<header>\n");
		fprintf_s(pFile, "<p>\n");
		fprintf_s(pFile, "本表結果使用[試模表單產生器 beta 3.1]估算後生成\n");
		fprintf_s(pFile, "</p>\n");
	fprintf_s(pFile, "</header>\n");

	fprintf_s(pFile, "<table border=""1"" style=""width:650px"">\n");
	
	//產品資訊--------------------------------------------
	fprintf_s(pFile, "<tr>\n");
		fprintf_s(pFile, "<th colspan=""6"">1. 產品資訊</th>\n");
	fprintf_s(pFile, "</tr>\n");

		fprintf_s(pFile, "<tr>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>產品尺寸</td>\n");
			fprintf_s(pFile, "<td colspan=""2"">%.2lf x %.2lf x %.2lf mm</td>\n", 
						DataCenter::getInstance().GetPartLength(), 
						DataCenter::getInstance().GetPartWidth(), 
						DataCenter::getInstance().GetPartHeight());
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>產品肉厚</td>\n");
			fprintf_s(pFile, "<td colspan=""2"">%.1f mm (%.1f~%.1f mm)</td>\n", 
						DataCenter::getInstance().GetAvgPartThickness(), 
						DataCenter::getInstance().GetMinPartThickness(), 
						DataCenter::getInstance().GetMaxPartThickness());
		fprintf_s(pFile, "</tr>\n");

		fprintf_s(pFile, "<tr>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>產品體積</td>\n");
			fprintf_s(pFile, "<td colspan=""2"">%.2f cc</td>\n", 
						DataCenter::getInstance().GetPartVolume());
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>冷流道體積</td>\n");
			fprintf_s(pFile, "<td colspan=""2"">%.2f cc</td>\n", 
						DataCenter::getInstance().GetColdRunnerVolume());
		fprintf_s(pFile, "</tr>\n");

		fprintf_s(pFile, "<tr>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>材料</td>\n");
			fprintf_s(pFile, "<td colspan=""2"">%s</td>\n", m_sMaterialType);
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>材料型號</td>\n");
			fprintf_s(pFile, "<td colspan=""2"">%s</td>\n", m_sMaterialGrade);
		fprintf_s(pFile, "</tr>\n");

		fprintf_s(pFile, "<tr>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>料溫範圍</td>\n");
			fprintf_s(pFile, "<td colspan=""2"">%.0f ~ %.0f ℃</td>\n", 
						DataCenter::getInstance().GetMinMeltTemp(), 
						DataCenter::getInstance().GetMaxMeltTemp());
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>模溫範圍</td>\n");
			fprintf_s(pFile, "<td colspan=""2"">%.0f ~ %.0f ℃</td>\n", 
						DataCenter::getInstance().GetMinMoldTemp(), 
						DataCenter::getInstance().GetMaxMoldTemp());
		fprintf_s(pFile, "</tr>\n");

		fprintf_s(pFile, "<tr>\n");
			fprintf_s(pFile, "<td colspan=""6"">&nbsp;</td>\n");
		fprintf_s(pFile, "</tr>\n");

	//機台規格--------------------------------------------
	fprintf_s(pFile, "<tr>\n");
			fprintf_s(pFile, "<th colspan=""6"">2. 機台規格</th>\n");
	fprintf_s(pFile, "</tr>\n");

		fprintf_s(pFile, "<tr>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>製造商</td>\n");
			fprintf_s(pFile, "<td>%s</td>\n", m_sMachineProducer);
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>鎖模力</td>\n");
			fprintf_s(pFile, "<td>%.0f Ton</td>\n", 
						DataCenter::getInstance().GetClampForce());
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>螺桿直徑</td>\n");
			fprintf_s(pFile, "<td>%.2f mm</td>\n", 
						DataCenter::getInstance().GetDiaScrew());
		fprintf_s(pFile, "</tr>\n");

		fprintf_s(pFile, "<tr>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>型號</td>\n");
			fprintf_s(pFile, "<td>%s-%.0f-%.0f</td>\n", 
						m_sMachineGrade, 
						DataCenter::getInstance().GetClampForce(), 
						DataCenter::getInstance().GetDiaScrew());
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>射出量</td>\n");
			fprintf_s(pFile, "<td>%.0f g</td>\n", 
						DataCenter::getInstance().GetInjectionVolume());
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>最大螺桿行程</td>\n");
			fprintf_s(pFile, "<td>%.0f mm</td>\n", 
				DataCenter::getInstance().GetMaxScrewStroke());
		fprintf_s(pFile, "</tr>\n");

		fprintf_s(pFile, "<tr>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>最大射出量</td>\n");
			fprintf_s(pFile, "<td>%.0f cc/s</td>\n", 
						DataCenter::getInstance().GetMaxVolumeOutput());
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>最大射速</td>\n");
			fprintf_s(pFile, "<td>%.0f mm/s</td>\n", 
					DataCenter::getInstance().GetMaxInjectionVelocity());
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>最大射出壓力</td>\n");
			fprintf_s(pFile, "<td>%.0f MPa</td>\n", 
						DataCenter::getInstance().GetMaxInjectionPressure());
		fprintf_s(pFile, "</tr>\n");

		fprintf_s(pFile, "<tr>\n");
			fprintf_s(pFile, "<td colspan=""6"">&nbsp;</td>\n");
		fprintf_s(pFile, "</tr>\n");

	//加工條件--------------------------------------------
	fprintf_s(pFile, "<tr>\n");
			fprintf_s(pFile, "<th colspan=""6"">3. 加工條件</th>\n");
	fprintf_s(pFile, "</tr>\n");

		//充填
		fprintf_s(pFile, "<tr>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6 colspan=""6"">射出設定</td>\n");
		fprintf_s(pFile, "</tr>\n");

		fprintf_s(pFile, "<tr>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>充填時間</td>\n");
			fprintf_s(pFile, "<td>%.1f sec</td>\n", 
						DataCenter::getInstance().GetFillTime());
			fprintf_s(pFile, 
				"<td bgcolor=#E6E6E6 colspan=""4"">註:充填時間以射出螺桿實際前進時間為準,不含保壓時間</td>\n");
		fprintf_s(pFile, "</tr>\n");

		fprintf_s(pFile, "<tr>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>段數</td>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>I</td>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>II</td>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>III</td>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>IV</td>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>V</td>\n");
		fprintf_s(pFile, "</tr>\n");

		fprintf_s(pFile, "<tr>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>速度(mm/s)</td>\n");
			if (DataCenter::getInstance().GetFilllSel() == 0) //單段充填
			{
				fprintf_s(pFile, "<td>%.1f</td>\n", 
							DataCenter::getInstance().GetFillSpeedSingle());
				fprintf_s(pFile, "<td></td>\n");
				fprintf_s(pFile, "<td></td>\n");
				fprintf_s(pFile, "<td></td>\n");
				fprintf_s(pFile, "<td></td>\n");
			}
			else //三段充填
			{
				fprintf_s(pFile, "<td>%.1f</td>\n", 
							DataCenter::getInstance().GetFillSpeedMulti(1));
				fprintf_s(pFile, "<td>%.1f</td>\n", 
							DataCenter::getInstance().GetFillSpeedMulti(2));
				fprintf_s(pFile, "<td>%.1f</td>\n", 
							DataCenter::getInstance().GetFillSpeedMulti(3));
				fprintf_s(pFile, "<td></td>\n");
				fprintf_s(pFile, "<td></td>\n");
			}
		fprintf_s(pFile, "</tr>\n");

		fprintf_s(pFile, "<tr>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>壓力(MPa)</td>\n");
			if (DataCenter::getInstance().GetFilllSel() == 0) //單段充填
			{
				fprintf_s(pFile, "<td>%.1f</td>\n", 
							DataCenter::getInstance().GetInjectionPressure());
				fprintf_s(pFile, "<td></td>\n");
				fprintf_s(pFile, "<td></td>\n");
				fprintf_s(pFile, "<td></td>\n");
				fprintf_s(pFile, "<td></td>\n");
			}
			else //三段充填
			{
				fprintf_s(pFile, "<td>%.1f</td>\n", 
							DataCenter::getInstance().GetInjectionPressure());
				fprintf_s(pFile, "<td>%.1f</td>\n", 
							DataCenter::getInstance().GetInjectionPressure());
				fprintf_s(pFile, "<td>%.1f</td>\n", 
							DataCenter::getInstance().GetInjectionPressure());
				fprintf_s(pFile, "<td></td>\n");
				fprintf_s(pFile, "<td></td>\n");
			}
		fprintf_s(pFile, "</tr>\n");

		fprintf_s(pFile, "<tr>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>位置(mm)</td>\n");
			if (DataCenter::getInstance().GetFilllSel() == 0) //單段充填
			{
				fprintf_s(pFile, "<td>%.1f</td>\n", 
							DataCenter::getInstance().GetScrewStrokeSingle());
				fprintf_s(pFile, "<td></td>\n");
				fprintf_s(pFile, "<td></td>\n");
				fprintf_s(pFile, "<td></td>\n");
				fprintf_s(pFile, "<td></td>\n");
			}
			else //三段充填
			{
				fprintf_s(pFile, "<td>%.1f</td>\n", 
							DataCenter::getInstance().GetScrewStrokeMulti(1));
				fprintf_s(pFile, "<td>%.1f</td>\n", 
							DataCenter::getInstance().GetScrewStrokeMulti(2));
				fprintf_s(pFile, "<td>%.1f</td>\n", 
							DataCenter::getInstance().GetScrewStrokeMulti(3));
				fprintf_s(pFile, "<td></td>\n");
				fprintf_s(pFile, "<td></td>\n");
			}
		fprintf_s(pFile, "</tr>\n");

		fprintf_s(pFile, "<tr>\n");
			fprintf_s(pFile, "<td colspan=""6"">&nbsp;</td>\n");
		fprintf_s(pFile, "</tr>\n");

		//保壓
		fprintf_s(pFile, "<tr>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6 colspan=""6"">保壓設定</td>\n");
		fprintf_s(pFile, "</tr>\n");

		fprintf_s(pFile, "<tr>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>保壓時間</td>\n");
			fprintf_s(pFile, "<td>%.1f sec</td>\n", 
						DataCenter::getInstance().GetPackTime());
			fprintf_s(pFile, "<td bgcolor=#E6E6E6 colspan=""2"">保壓切換位置(VP)</td>\n");
			fprintf_s(pFile, "<td>%.1f mm</td>\n", 
						DataCenter::getInstance().GetVP());
			double vp_percent = 100.0 * (1.0 - (DataCenter::getInstance().GetVP()
												/ DataCenter::getInstance().GetMaxScrewStroke()));
			fprintf_s(pFile, "<td>%.1f %%</td>\n", vp_percent);
		fprintf_s(pFile, "</tr>\n");

		fprintf_s(pFile, "<tr>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>段數</td>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>I</td>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>II</td>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>III</td>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>IV</td>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>V</td>\n");
		fprintf_s(pFile, "</tr>\n");

		fprintf_s(pFile, "<tr>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>壓力(MPa)</td>\n");
			double pp_1 = DataCenter::getInstance().GetMachinePressure() * 
							0.01 * DataCenter::getInstance().GetPackPressurePercent(1);
			double pp_2 = DataCenter::getInstance().GetMachinePressure() * 
							0.01 * DataCenter::getInstance().GetPackPressurePercent(2);
			if (DataCenter::getInstance().GetPackSel() == 0) //單段保壓
			{
				fprintf_s(pFile, "<td>%.1f</td>\n", pp_1);
				fprintf_s(pFile, "<td></td>\n");
				fprintf_s(pFile, "<td></td>\n");
				fprintf_s(pFile, "<td></td>\n");
				fprintf_s(pFile, "<td></td>\n");
			}
			else //二段保壓
			{
				fprintf_s(pFile, "<td>%.1f</td>\n", pp_1);
				fprintf_s(pFile, "<td>%.1f</td>\n", pp_2);
				fprintf_s(pFile, "<td></td>\n");
				fprintf_s(pFile, "<td></td>\n");
				fprintf_s(pFile, "<td></td>\n");
			}
		fprintf_s(pFile, "</tr>\n");

		fprintf_s(pFile, "<tr>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>時間(sec)</td>\n");
			if (DataCenter::getInstance().GetPackSel() == 0) //單段保壓
			{
				fprintf_s(pFile, "<td>%.1f</td>\n", DataCenter::getInstance().GetPackTime());
				fprintf_s(pFile, "<td></td>\n");
				fprintf_s(pFile, "<td></td>\n");
				fprintf_s(pFile, "<td></td>\n");
				fprintf_s(pFile, "<td></td>\n");
			}
			else //二段保壓
			{
				double pt_1 = DataCenter::getInstance().GetPackTime() * 
								DataCenter::getInstance().GetPackTimeRatio(1) / 
								(DataCenter::getInstance().GetPackTimeRatio(1) + DataCenter::getInstance().GetPackTimeRatio(2));
				double pt_2 = DataCenter::getInstance().GetPackTime() * 
								DataCenter::getInstance().GetPackTimeRatio(2) / 
								(DataCenter::getInstance().GetPackTimeRatio(1) + DataCenter::getInstance().GetPackTimeRatio(2));;
				fprintf_s(pFile, "<td>%.1f</td>\n", pt_1);
				fprintf_s(pFile, "<td>%.1f</td>\n", pt_2);
				fprintf_s(pFile, "<td></td>\n");
				fprintf_s(pFile, "<td></td>\n");
				fprintf_s(pFile, "<td></td>\n");
			}
		fprintf_s(pFile, "</tr>\n");

		fprintf_s(pFile, "<tr>\n");
			fprintf_s(pFile, "<td colspan=""6"">&nbsp;</td>\n");
		fprintf_s(pFile, "</tr>\n");

		//其他
		fprintf_s(pFile, "<tr>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6 colspan=""2"" rowspan=""2"">塑料溫度 (℃)</td>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>射嘴</td>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>第一段料管</td>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>第二段料管</td>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>第三段料管</td>\n");
		fprintf_s(pFile, "</tr>\n");

		fprintf_s(pFile, "<tr>\n");
			fprintf_s(pFile, "<td>%.0f</td>\n", DataCenter::getInstance().GetMeltTemp());
			fprintf_s(pFile, "<td>%.0f</td>\n", DataCenter::getInstance().GetBarrelTemp(1));
			fprintf_s(pFile, "<td>%.0f</td>\n", DataCenter::getInstance().GetBarrelTemp(2));
			fprintf_s(pFile, "<td>%.0f</td>\n", DataCenter::getInstance().GetBarrelTemp(3));
		fprintf_s(pFile, "</tr>\n");

		fprintf_s(pFile, "<tr>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6 colspan=""2"">模具溫度</td>\n");
			fprintf_s(pFile, "<td>&#x2611 公模 %.0f ℃</td>\n", 
						DataCenter::getInstance().GetMoldTempCore());
			fprintf_s(pFile, "<td>&#x2611 母模 %.0f ℃</td>\n", 
						DataCenter::getInstance().GetMoldTempCavity());
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>冷卻時間</td>\n");
			fprintf_s(pFile, "<td>%.1f sec</td>\n", DataCenter::getInstance().GetCoolTime());
		fprintf_s(pFile, "</tr>\n");

		fprintf_s(pFile, "<tr>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6 colspan=""2"">冷卻液種類</td>\n");
			fprintf_s(pFile, "<td>&#x2610 水</td>\n");
			fprintf_s(pFile, "<td>&#x2610 油</td>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6>成型周期</td>\n");
			fprintf_s(pFile, "<td>%.1f sec</td>\n", DataCenter::getInstance().GetCycleTime());
		fprintf_s(pFile, "</tr>\n");

		fprintf_s(pFile, "<tr>\n");
			fprintf_s(pFile, "<td bgcolor=#E6E6E6 colspan=""2"">料管滯留時間</td>\n");
			fprintf_s(pFile, "<td>%.1f sec</td>\n", DataCenter::getInstance().GetResidenceTime());
		fprintf_s(pFile, "</tr>\n");

	fprintf_s(pFile, "</table>\n");

	//頁尾--------------------------------------------
	fprintf_s(pFile, "<footer>\n");
		fprintf_s(pFile, "<p>\n");
		fprintf_s(pFile, "Moldex3D &#169;2014\n");
		fprintf_s(pFile, "</p>\n");
	fprintf_s(pFile, "</footer>\n");

	//fprintf_s(pFile, "MoldTemperature = %f", 120);

	fprintf_s(pFile, "</body>");
	fprintf_s(pFile, "</Html>\n");

	fclose(pFile);

	return true;
}