使用Teigha 4.1.1计算偏移曲线

时间:2016-06-09 09:01:05

标签: c++ teigha

我正在努力计算在一定距离内对现有线路的平行线。

我试过了:
OdGeLine2d::getTrimmedOffset()
OdGeLineSeg2d::getTrimmedOffset()
OdGeLine3d::getTrimmedOffset()
OdGeLineSeg3d::getTrimmedOffset()

但所有人都投了"未实施" 例外。

我尝试使用OdGeOffsetCurve2d课程。构造这个类并不会抛出异常,但是任何尝试获得这个曲线的点都可以。相同的例外:"未实施"。

那么,如何获得 OdGeOffsetCurve2d上的一点?或者还有其他方法来计算偏移曲线吗?

那些getTrimmedOffset()方法的用途是什么?只是抛出异常?

PS:我没有足够的声誉来创建新的 Teigha 标记。请这样做并编辑我的问题。 Teigha是用于开发CAD应用程序的核心库https://www.opendesign.com/

2 个答案:

答案 0 :(得分:1)

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

如果你没有专门寻找OdGeLine2d,我有一个与OdDbLine类似问题的解决方案。 正如你已经知道的那样,如果我们的终点是休息,那么构建一个新的线就是游戏。
所以我会帮你找到OdDbLine类的平行线的终点。 你可以尝试从中衍生出来。 我的代码是.Net版本代码,而不是c ++代码。

如果您有OdDbLine类的对象,请说OdDbLine line

  • a)获得终点

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

    您可以使用新端点构建新行。
  • 希望它有所帮助!!

    答案 1 :(得分:1)

    为线性实体制作偏移曲线的方法较短。您可以复制您的线并将其移动(转换)到一个非常小的距离。像这样:

    {{1}}