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); } }
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""> </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""> </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""> </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""> </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>☑ 公模 %.0f ℃</td>\n", DataCenter::getInstance().GetMoldTempCore()); fprintf_s(pFile, "<td>☑ 母模 %.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>☐ 水</td>\n"); fprintf_s(pFile, "<td>☐ 油</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 ©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; }