앞에서는 영역을 잡아서 object를 선택하는 것에 대해서 알아 봤는데,
이번에는 click하여 object를 선택하는 것에 대해서 알아보겠습니다.
아래와 같이 Select함수를 사용하게 되는데요
인자로 click한 좌표를 넘겨주지 않습니다.
그럼 어떻게 object를 선택할까요?(좌표없이 말이죠...)
이 함수는 highlight된 object를 선택하는 함수입니다. 따라서 이 Select 함수를 호출하기 전에 선택할 object가 highlight되어있어야 합니다.
highlight는 마우스가 움직일때 MoveTo 함수를 통해서 쉽게 할수가 있습니다.
그림을 보시면 마우스 커서 밑의 원이 highlight된것을 볼수가 있습니다.
형상들을 선택한 후 color dialog에서 변경할 색상을 선택한 후에 선택한 형상의 색상을 변경합니다.
이번에는 click하여 object를 선택하는 것에 대해서 알아보겠습니다.
아래와 같이 Select함수를 사용하게 되는데요
1 | Standard_EXPORT AIS_StatusOfPick Select(const Standard_Boolean updateviewer = Standard_True) ; | cs |
그럼 어떻게 object를 선택할까요?(좌표없이 말이죠...)
이 함수는 highlight된 object를 선택하는 함수입니다. 따라서 이 Select 함수를 호출하기 전에 선택할 object가 highlight되어있어야 합니다.
highlight는 마우스가 움직일때 MoveTo 함수를 통해서 쉽게 할수가 있습니다.
그림을 보시면 마우스 커서 밑의 원이 highlight된것을 볼수가 있습니다.
형상들을 선택한 후 color dialog에서 변경할 색상을 선택한 후에 선택한 형상의 색상을 변경합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | Quantity_Color CSFColor ; COLORREF MSColor ; m_hAISContext->Select(); m_hAISContext->InitSelected(); if (m_hAISContext->MoreSelected()) { m_hAISContext->InitCurrent(); Handle_AIS_InteractiveObject Current = m_hAISContext->Current() ; if ( Current->HasColor () ) { CSFColor = m_hAISContext->Color(Current); MSColor = RGB (CSFColor.Red()*255.,CSFColor.Green()*255.,CSFColor.Blue()*255.); } else { MSColor = RGB ( 255,255,255 ) ; } CColorDialog dlgColor(MSColor); if (IDOK == dlgColor.DoModal()) { MSColor = dlgColor.GetColor(); CSFColor = Quantity_Color (GetRValue(MSColor)/255. , GetGValue(MSColor)/255. , GetBValue(MSColor)/255. , Quantity_TOC_RGB); for (;m_hAISContext->MoreCurrent ();m_hAISContext->NextCurrent ()) { if(m_hAISContext->Current()->IsKind("AIS_Shape")) { Handle(AIS_Shape) myShape = Handle(AIS_Shape)::DownCast(m_hAISContext->Current()); m_hAISContext->SetColor(myShape , CSFColor , Standard_False); m_hAISContext->SetMaterial(myShape , Graphic3d_NOM_DEFAULT , Standard_False); } else { m_hAISContext->SetColor(m_hAISContext->Current() , CSFColor); } } } m_hAISContext->ClearSelected(); } | cs |
댓글
댓글 쓰기