乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 103|回复: 6

Civil3d:基于截面梁创建折线

[复制链接]

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2017-3-30 12:08:29 | 显示全部楼层 |阅读模式
我有一个对齐,配置文件和配置文件视图,我已经能够通过API创建。 与其将纵断面图放入绘图中,我真的只需要从中取出截面梁线。 (对不起,我不知道正确的术语。 文明不是我的事。
我知道我可以通过对剖面图的起始站和终点站之间的高程进行采样来获得折线折点。 折线的准确性将取决于我的采样率。 有没有更简单的方法? 有没有一个api可以让我从配置文件中获取折线,而不必通过它? 我知道使用采样方法只会给我直接的部分,但如果我让我的采样率足够小,我认为这对客户来说是可以的。
谢谢

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2017-3-30 12:36:59 | 显示全部楼层
所以你只需要一条LWPolyline来显示轮廓在侧视图中的样子?或者您需要具有纵断面高程的路线的三维多边形?无论哪种方式,它都不是API中固有的东西。如果是前者,我有代码可以让您使用,该代码对竖曲线使用1 '或0.3m的增量(也有一个代码可以应用垂直比例,并将曲线段放置在profileview中,作为Sincpac-C3D命令中使用的轮廓的轨迹:ExtractProfile)。如果是后者,那还不是我所需要的。
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2017-3-30 12:42:03 | 显示全部楼层
我只需要LWPolyline显示侧视图中的轮廓。然后,我可以使用多段线叠加在包含其他对象的立面视图上。多段线起点和终点参数应与我用来创建路线/纵断面/纵断面图的多段线完全匹配。
如果您可以共享代码,我不会介意看一眼。谢了。
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2017-3-30 13:02:23 | 显示全部楼层
我的意图是创建一个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高程,并沿原始多段线的方向移动,(原始多段线仅由起点和终点组成,)我看不出这种变化,因为多段线将被插入到表示平面的立面视图中,并且只有一个起点和一个终点来表示视图的左侧和右侧。
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2017-3-30 14:18:34 | 显示全部楼层
有没有可能显示您拥有的图像以及您需要获得多段线的原因?我有点困惑 /// 。
///从配置文件创建一条折线,不支持真正的垂直曲线,但以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比例),那么它需要更多的工作。
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2017-3-30 15:45:41 | 显示全部楼层
这是结果的图像
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2017-3-30 16:01:58 | 显示全部楼层
好吧,我知道你在做什么。您可以在折线与TIN相交的所有位置直接从表面获取高程,而不是剖面和采样。TinSurface对象具有SampleElevations(curveEntity)方法,该方法返回用于创建Poly3d的Point3dCollection。但是,如果它能正常工作,那就顺其自然吧。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-5-25 12:05 , Processed in 2.111221 second(s), 67 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表