Civil3d:基于截面梁创建折线
我有一个对齐,配置文件和配置文件视图,我已经能够通过API创建。 与其将纵断面图放入绘图中,我真的只需要从中取出截面梁线。 (对不起,我不知道正确的术语。 文明不是我的事。我知道我可以通过对剖面图的起始站和终点站之间的高程进行采样来获得折线折点。 折线的准确性将取决于我的采样率。 有没有更简单的方法? 有没有一个api可以让我从配置文件中获取折线,而不必通过它? 我知道使用采样方法只会给我直接的部分,但如果我让我的采样率足够小,我认为这对客户来说是可以的。
谢谢
**** Hidden Message ***** 所以你只需要一条LWPolyline来显示轮廓在侧视图中的样子?或者您需要具有纵断面高程的路线的三维多边形?无论哪种方式,它都不是API中固有的东西。如果是前者,我有代码可以让您使用,该代码对竖曲线使用1 '或0.3m的增量(也有一个代码可以应用垂直比例,并将曲线段放置在profileview中,作为Sincpac-C3D命令中使用的轮廓的轨迹:ExtractProfile)。如果是后者,那还不是我所需要的。 我只需要LWPolyline显示侧视图中的轮廓。然后,我可以使用多段线叠加在包含其他对象的立面视图上。多段线起点和终点参数应与我用来创建路线/纵断面/纵断面图的多段线完全匹配。
如果您可以共享代码,我不会介意看一眼。谢了。 我的意图是创建一个PVI(不知道那代表什么!)在轮廓上的每一个采样点, 公共配置文件AddPVIsToProfile(配置文件配置文件,双采样率)。
{。
双起点Station = profile,启动站;。
double ending station = profile,EndingStation。
double position = 0;。
。
while(position 。
{。
个人资料,CreatePvi(位置,轮廓。ElevationAt(位置));。
位置+=采样率;。
}。
。
个人资料,CreatePvi(endingStation,profile。elevation at(ending station));。
。
返回配置文件;。
}。
然后,我可以遍历pvi点,从原始多段线的x,y坐标开始获取z高程,并沿原始多段线的方向移动,(原始多段线仅由起点和终点组成,)我看不出这种变化,因为多段线将被插入到表示平面的立面视图中,并且只有一个起点和一个终点来表示视图的左侧和右侧。
有没有可能显示您拥有的图像以及您需要获得多段线的原因?我有点困惑 /// 。
///从配置文件创建一条折线,不支持真正的垂直曲线,但以1'或0.3m的增量沿着它们镶嵌。。
> ///////// 公共静态Polyline GetPolylineFromProfile(此配置文件配置文件)。
{。
Polyline pline=new Polyline();。
。
var civDoc=CivilApplication.ActiveDocument;。
双镶嵌距离=1;。
if(civDoc.DrawingUnitsAreMeters ()) //这是另一个简单的扩展方法。
距离=0.3;。
。
foreach(var pvi在profile.PVIs)。
{。
开关(pvi.PVIType)。
{。
案例ProfileEntityType.Circular:。
案例ProfileEntityType.ParabolaAsymmetric:。
案例ProfileEntityType.ParabolaSymmetric:。
双电流TesslationStation=pvi.VerticalCurve.StartStation;。
当(当前TesslationStation。
{。
双提升AtTesslationStation=profile.ElevationAt(电流TesslationStation);。
pline.AddVertexAt(pline.NumberOfVertices,新的Point2d(电流TesslationStation,提升AtTesslationStation),0,0,0);。
当前TesslationStation+=tesslation距离;。
}。
pline.AddVertexAt(pline.NumberOfVertices,新的Point2d(pvi.VerticalCurve.EndStation,pvi.VerticalCurve.EndElevation),0,0,0);。
休息;。
案例ProfileEntityType.None:。
案例ProfileEntityType.Tangent:。
pline.AddVertexAt(pline.NumberOfVertices,新的Point2d(pvi.Station,pvi.Elevation),0,0,0);。
休息;。
默认:。
休息;。
}。
}。
。
返回线;。
}。
如果您放置折线的剖析视图被夸大(垂直比例!=Horiz比例),那么它需要更多的工作。
这是结果的图像
好吧,我知道你在做什么。您可以在折线与TIN相交的所有位置直接从表面获取高程,而不是剖面和采样。TinSurface对象具有SampleElevations(curveEntity)方法,该方法返回用于创建Poly3d的Point3dCollection。但是,如果它能正常工作,那就顺其自然吧。
页:
[1]