Archived discussion
A question about clipplane
When I tried to use AISnManigator to control the clip plane, I encountered some issues: I feel like I used the wrong transformation of the plane, and when I use the manipulator to control it, I don't feel like it met my expectations; When I try to drag the plane for translation, the manipulator disappears Here are some of my code and display effects:
```c++ m_man = new AIS_Manipulator;//init manipulator m_man->SetPart(0, AIS_ManipulatorMode::AIS_MM_Translation, Standard_False); m_man->SetPart(1, AIS_ManipulatorMode::AIS_MM_Rotation, Standard_True); m_man->SetPart(2, AIS_ManipulatorMode::AIS_MM_Scaling, Standard_False); m_man->EnableMode(AIS_ManipulatorMode::AIS_MM_Rotation);
```c++
// the clipplane
gp_Pln a_pln(gp_Pnt(0., 0., 0.), gp_Dir(0., 0., 1));
aClipPlane = new Graphic3d_ClipPlane(a_pln);
view->AddClipPlane(aClipPlane);
aClipPlane->SetOn(1);
Handle(Geom_Plane) aComponent = new Geom_Plane(aClipPlane->ToPlane());
Handle(AIS_Plane) a_plane = new AIS_Plane(aComponent);
context->Display(a_plane, 1);
m_man->Attach(a_plane);
context->Display(m_man, 1);
when mouse is press, the code is here:
```c++ context->MoveTo(event->pos().x(), event->pos().y(), view, Standard_True); if ((event->buttons() & Qt::LeftButton))//&& (QApplication::keyboardModifiers() == Qt::ShiftModifier)) {
context->SelectDetected();
if (m_man->HasActiveMode()) {
m_man->StartTransform(m_x, m_y, view);
}
}
when mouse is move ,the code is here:
```c++
if (m_man->HasActiveMode()) {
auto trs = m_man->Transform(x, y, view);
auto orgin_plane = aClipPlane->ToPlane();
orgin_plane.Transform(trs);
view->RemoveClipPlane(aClipPlane);
aClipPlane->SetEquation(orgin_plane);
view->AddClipPlane(aClipPlane);
context->ClearDetected();
view->Redraw();
}
but the result is failed.I would like to ask if there is any way to improve this program. Thank you
Discussion
No archived replies
Posts are displayed in their archived order.