[OpenCascade] 鼠標點擊 在模型上確定對應點

在建立尺寸線的過程中,需要實現鼠標點擊選擇曲面上任一點的功能,對於這個問題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爲例,實現功能如下。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章