void OnBnClickedPrCyls() { sgGetScene()->Clear(); AddFloorInScene(80.0, 50.0, 20.0, 10.0, 5.0); for (int i=2;i<8;i++) { sgCCylinder* cy1 = sgCreateCylinder(i,2*i,24); //SetMaterialToObject(cy1,MATERIAL_METALL_GOLD_1+i); SG_VECTOR transV1 = {5*i,10,10}; cy1->InitTempMatrix()->Translate(transV1); cy1->ApplyTempMatrix(); cy1->DestroyTempMatrix(); sgGetScene()->AttachObject(cy1); cy1->SetAttribute(SG_OA_COLOR,i); if (i%2) cy1->SetAttribute(SG_OA_DRAW_STATE,SG_DS_FRAME); } }
void CCylinderEditCommand::OnEnter() { if (!m_was_started) return; SWITCH_RESOURCE ASSERT(m_editable_cylinder); switch(m_scenar) { case 0: { ASSERT(m_r_panel); m_rad = m_r_panel->GetNumber(); if (fabs(m_rad)<0.0001) { m_message.LoadString(IDS_ERROR_ZERO_RAD); m_app->PutMessage(IApplicationInterface::MT_ERROR, m_message); return; } else if (m_rad<-0.0001) { m_message.LoadString(IDS_ERROR_RAD_MUST_BE_POSIT); m_app->PutMessage(IApplicationInterface::MT_ERROR, m_message); return; } sgCCylinder* cyl = sgCreateCylinder(fabs(m_rad),fabs(m_cyl_geo.Height), m_cyl_geo.MeridiansCount); if (!cyl) return; cyl->InitTempMatrix()->Multiply(*m_matr); cyl->ApplyTempMatrix(); cyl->DestroyTempMatrix(); sgGetScene()->StartUndoGroup(); sgGetScene()->DetachObject(m_editable_cylinder); sgGetScene()->AttachObject(cyl); sgGetScene()->EndUndoGroup(); m_app->CopyAttributes(*cyl,*m_editable_cylinder); m_app->GetViewPort()->InvalidateViewPort(); } break; case 1: { ASSERT(m_r_panel); m_height = m_r_panel->GetNumber(); if (fabs(m_height)<0.0001) { m_message.LoadString(IDS_ERROR_ZERO_LENGTH); m_app->PutMessage(IApplicationInterface::MT_ERROR, m_message); return; } else if (m_height<-0.0001) { m_message.LoadString(IDS_ERROR_HEIGHT_MUST_BE_POSIT); m_app->PutMessage(IApplicationInterface::MT_ERROR, m_message); return; } sgCCylinder* cyl = sgCreateCylinder(fabs(m_cyl_geo.Radius),fabs(m_height), m_cyl_geo.MeridiansCount); if (!cyl) return; cyl->InitTempMatrix()->Multiply(*m_matr); cyl->ApplyTempMatrix(); cyl->DestroyTempMatrix(); sgGetScene()->StartUndoGroup(); sgGetScene()->DetachObject(m_editable_cylinder); sgGetScene()->AttachObject(cyl); sgGetScene()->EndUndoGroup(); m_app->CopyAttributes(*cyl,*m_editable_cylinder); m_app->GetViewPort()->InvalidateViewPort(); } break; default: break; } m_app->StopCommander(); }