2016-06-09 62 views
1

我正在計算與特定距離的現有線平行的線路。使用Teigha 4.1.1計算偏移曲線

我曾嘗試:
OdGeLine2d::getTrimmedOffset()
OdGeLineSeg2d::getTrimmedOffset()
OdGeLine3d::getTrimmedOffset()
OdGeLineSeg3d::getTrimmedOffset()

但他們都特羅一個「未實現」例外。

比我試圖使用OdGeOffsetCurve2d類。這個類的構造不會拋出異常,但是試圖獲得這個曲線的一個點的確如此。同樣的例外:「未執行」。

那麼,如何才能得到一個點位於OdGeOffsetCurve2d?或者還有其他方法來計算偏移曲線嗎?

那麼所有那些getTrimmedOffset()方法呢?只是爲了拋出異常?


PS:我沒有足夠的信譽來塑造一個新的Teigha標籤。請這樣做並編輯我的問題。 Teigha是開發CAD應用程序的核心庫https://www.opendesign.com/

回答

1

如果我理解正確,你正試圖創建一條平行線到已有的線。

如果你沒有專門尋找OdGeLine2d,我有一個類似OdDbLine問題的解決方案。正如你所知道的,如果我們的終點是休息,那麼構建一條新線路就是玩。
所以我會幫你找到帶有OdDbLine類的平行線的端點。 你可以嘗試從它派生。 我的代碼是.Net版本代碼,而不是C++版本。

如果你有和OdDbLine類的對象可以說OdDbLine line

  • 一)獲取其端點

    OdGePoint3d startPoint = new OdGePoint3d(); line.getStartPoint(startPoint);
    OdGePoint3d endPoint = new OdGePoint3d(); line.getEndPoint(endPoint);

  • 獲取行的方向,用它來計算垂直方向
    OdGeVector3d lineVector = GetLineVector(line); OdGeVector3d perpendicularVec = lineVector.perpVector(); perpendicularVec.normalize(); perpendicularVec = perpendicularVec.Mul(-1);

  • 抵消線終點,以計算出的偏移終點
    偏移值是從當前行的數字距離 perpendicularVec.setToProduct(perpendicularVec, offSetValue);

  • 計算新的終點點偏移位置
    OdGePoint3d newOffsetStartPt = startPoint.Add(perpendicularVec); OdGePoint3d newOffsetEndPt = endPoint.Add(perpendicularVec);

    你可以使用新的端點來構建新的Line。
  • 希望它有幫助!

    +0

    謝謝!很高興在這裏看到一位Teigha專家。 – Tomas

    0

    有一個簡短的方法來爲線性實體制作偏移曲線。你可以複製你的線路並將其移動(轉換)到一個需要的距離。像這樣:

    OdGeLine2d ln(OdGePoint2d::kOrigin, OdGeVector2d::kXAxis); 
    const double dOffsetDistance = 100.0; 
    
    OdGeVector2d vOffset = ln.direction().perpVector(); //ccw rotation 
    vOffset.normalize(); 
    vOffset *= dOffsetDistance; 
    
    ln.transformBy(OdGeMatrix2d::translation(vOffset));