使用Teigha 4.1.1计算偏移曲线

问题描述:

我正在计算与特定距离的现有线平行的线路。使用Teigha 4.1.1计算偏移曲线

我曾尝试:
OdGeLine2d::getTrimmedOffset()
OdGeLineSeg2d::getTrimmedOffset()
OdGeLine3d::getTrimmedOffset()
OdGeLineSeg3d::getTrimmedOffset()

但他们都特罗一个“未实现”例外。

比我试图使用OdGeOffsetCurve2d类。这个类的构造不会抛出异常,但是试图获得这个曲线的一个点的确如此。同样的例外:“未执行”。

那么,如何才能得到一个点位于OdGeOffsetCurve2d?或者还有其他方法来计算偏移曲线吗?

那么所有那些getTrimmedOffset()方法呢?只是为了抛出异常?


PS:我没有足够的信誉来塑造一个新的Teigha标签。请这样做并编辑我的问题。 Teigha是开发CAD应用程序的核心库https://www.opendesign.com/

如果我理解正确,你正试图创建一条平行线到已有的线。

如果你没有专门寻找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

    有一个简短的方法来为线性实*作偏移曲线。你可以复制你的线路并将其移动(转换)到一个需要的距离。像这样:

    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));