Всем привет!
При перемещении стандартной ручки у объекта (Civil 3D, труба на виде профиля) появляется линия, которая визуализирует смещение курсора относительно исходного положения ручки и соответствующее ему смещение самой ручки. Выглядит это так:
Я уже себе всю голову сломал пытаясь придумать как мне для моих ручек сделать такую же линию.
Может быть, у вас есть какие-нибудь идеи на этот счёт?
Что я уже попробовал:
- в методе GripData.ViewportDraw добавлял отрисовку линий по данным из вектора перемещения ручки с помощью ViewportDraw.Geometry.DeviceContextPolyline. Получается рисовать сплошной линией. Но у неё задать даже толщину не получается с помощью ViewportDraw.SubEntityTraits.LineWeight, не говоря уже о том, чтобы рисовать её прерывистой.
- в том же методе попробовал отрисовывать ряд точек с помощью метода ViewportDraw.Geometry.RowOfDots. Мало того, что он работает как-то через раз, так ещё и точки получаются очень тонкими, не такими, как у оригинальной ручки. И на изменение настроек ViewportDraw.SubEntityTraits.LineWeight они тоже не реагируют.
Пока что это выглядит вот так:
Есть, конечно, мысль, что чтобы получить толстую линию, надо вычислять размер пикселя в единицах чертежа и рисовать несколько линий друг с другом вплотную. А чтобы получить прерывистую - вычислять массив точек с учётом промежутков и строить кучу маленьких штрих-отрезков вместо одной сплошной линии. Но как-то это очень костыльно, на мой взгляд. Может есть идеи получше?