我正在努力计算一条与现有线路在一定距离内的平行线。
我试过:
OdGeLine2d::getTrimmedOffset()
OdGeLineSeg2d::getTrimmedOffset()
OdGeLine3d::getTrimmedOffset()
OdGeLineSeg3d::getTrimmedOffset()
但是,它们都引入了一个“未实现”异常。
而不是我尝试使用OdGeOffsetCurve2d类。构造这个类不会抛出异常,但是任何试图得到这个曲线点的尝试都会抛出异常。同样的例外情况:“未实现”。
那么,如何才能得到一个位于OdGeOffsetCurve2d上的点呢?或者还有其他方法来计算偏移曲线?
那么这些getTrimmedOffset()方法是干什么的呢?只是为了抛出异常?
PS:我没有足够的声誉来创建一个新的Teigha标签。请这样做,编辑我的问题。Teigha是开发https://www.opendesign.com/应用程序的核心库。
发布于 2016-06-16 05:45:19
如果我正确理解,您正在尝试创建一条与已经存在的行的平行线。
如果您没有专门寻找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);您可以使用新的端点来构造新的行。
希望能帮上忙!
发布于 2016-09-08 00:54:38
对于线性实体,有一种较短的方法来生成偏移曲线。您可以复制行,并将其移动(转换)到一个必要的距离。如下所示:
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) );https://stackoverflow.com/questions/37721361
复制相似问题