我正在努力计算在一定距离内对现有线路的平行线。
我试过了:
OdGeLine2d::getTrimmedOffset()
OdGeLineSeg2d::getTrimmedOffset()
OdGeLine3d::getTrimmedOffset()
OdGeLineSeg3d::getTrimmedOffset()
但所有人都投了"未实施" 例外。
我尝试使用OdGeOffsetCurve2d
课程。构造这个类并不会抛出异常,但是任何尝试获得这个曲线的点都可以。相同的例外:"未实施"。
那么,如何获得 OdGeOffsetCurve2d
上的一点?或者还有其他方法来计算偏移曲线吗?
那些getTrimmedOffset()
方法的用途是什么?只是抛出异常?
PS:我没有足够的声誉来创建新的 Teigha 标记。请这样做并编辑我的问题。 Teigha是用于开发CAD应用程序的核心库https://www.opendesign.com/。
答案 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}}