在建立尺寸線的過程中,需要實現鼠標點擊選擇曲面上任一點的功能,對於這個問題OCC文檔中沒有找到響應的解決方案,參考網上給的一些思路,最終實現這個功能。
總體思路
- 鼠標點擊後
- 首先確定此時垂直於屏幕的那個方向
- 在鼠標位置處建立一條線 以垂直於屏幕的方向爲直線走向
- 求該線和模型的交叉點
- 對應選點便求出
具體實現
// 確定一條垂直於屏幕的線 用到的函數有:
void Convert (const Standard_Integer Xp, // 輸入鼠標座標
const Standard_Integer Yp,
Standard_Real& X, // 輸出X,Y,Z
Standard_Real& Y,
Standard_Real& Z) const;
void Proj (Standard_Real& Vx, Standard_Real& Vy, Standard_Real& Vz) const; // 當前投影方向
// 根據一點及其方向可以確定該線
// 至於確定線和曲面的交點
// 可以用OCC的IntCurvesFace_ShapeIntersector類來實現
實現結果
以OCC給的一個brep的data爲例,實現功能如下。