Сообщество программистов Autodesk в СНГ
ADN Club => Civil 3D API => Тема начата: Doublefish от 02-07-2014, 09:56:05
-
Добрый день
Подскажите пожалуйста, как определить пикет пересечки на виде профиля?
Т.е. труба отображена на виде профиля эллипсом, как получить пикет это эллипса?
-
Такая простая на первый взгляд задача, но простого решения я для нее не нашел.
Самое простое было бы - определить координаты объекта, которым отображается "пересечка" на виде профиля и вычислить нужные данные с помощью метода ProfileView.FindStationAndElevationAtXY. Но объект, которым нарисована "пересечка" - это ProfileViewPart. Он единственный для всех видов профилей, на котором отображается наша часть (на мой взгляд - это один из самых серьезных недостатков трубопроводной модели Civil). Соответственно, вытащить геометрию для конкретного вида профиля из этого объекта совершенно невозможно.
Поэтому, работает только такой вариант: вычисление точки пересечения трубы и трассы вида профиля в модели а потом в точке определить пикетаж трассы. Как это сделать - тут, наверное, возможны варианты. Я использовал методы Pipe.IntersectWith и Alignment.StationOffset.
-
Pipe Network parts on Profile View (http://adndevblog.typepad.com/infrastructure/2014/07/pipe-network-parts-on-profile-view.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+InfrastructureModelingDevblog+%28Infrastructure+Modeling+DevBlog+%29)
Собственно Augusto Goncalves осуществляет поддержку Civil 3D по Subscription.
-
Что-то не нравится мне это решение. Одна и та же часть может отображаться на нескольких видах профилей, это раз. Какие границы объекта в этом случае определятся вот тут?
Extents3d ext = partPV.GeometricExtents;
Второе - даже если она отображается на одном виде профиля, определять точку пересечки как середину Extents объекта - неправильно. А если стиль настроен на отображение стенок трубы вдоль трассы, где покажет пересечку?
Думаю, для частного случая годится, а в общем - нет.
P.S. Способ, описанный мной во втором сообщении уже опробован (у меня в библиотеке живет второй год) и ни разу не давал осечек. Так что, рекомендую все-же его.