Описание работы с кривыми
LeoPolunin / 12.04.2011, 19:23/00:41
Форум:
я работаю в corel desiner x5, разница с draw - дополнительные чертежные прибамбасы - скорее всего технически не отличается - потому вопрос : подскажите - можно ли кривую нн-ой длины - равномерно разделить на нной количество сегментов одинаковой длины - если да то как ?
я когда то видел макрос для draw, он стоил 500 рублей - я даже купил его - но он не подошел для disigner - и если нет - то было бы здорово добавить в лист пожеланий к X6 ) а то там тема уже закрылась - к тому моменту как я нашел этот сайт )
Не знаю как в дезигнере, но в кореле легко:
Sub Test()
Dim sp As SubPath, t#, l#
For Each sp In ActiveShape.Curve.SubPaths
l = sp.Length
For t = 1 To 2
sp.AddNodeAt l / 3 * t, cdrAbsoluteSegmentOffset
Next t
Next sp
End Sub
не совсем понял как этим пользоваться - через добавление точек все ясно - ну если кривая имеет на своем пути несколько точек не равноудаленных друг от друга - а делить мне ее надо всю на равные части.... - причем я должен сам задать количество частей или длину отрезков. вот примерно так )
LeoPolunin, я лишь показал как в DRAW разделить путь на 3 ровных отрезка (точнее макрос добавляет 2 узла), дальше сами, или просите кого-то кто умеет писать макросы, не ленив и обладает свободным временем )))
LeoPolunin, Вы бы чуть подробнее, для чего это, куда это дальше. Может быть какие-то иные решения найдутся.
Программный код, который любезно предоставил Sancho, попробовал, работает.
Но для кривых с большим количеством точек будет неудобен тем, что вновь добавленные точки (которые как раз делят кривую на нужные вам отрезки) добавяся к тем, которые были, и придётся с ними разбираться.
На приведённом ниже рисунке произвольная кривая была разбита на 25 отрезков. Но после всех действий между отрезками появляются зазоры (на фрагменте с сильным увеличением показан стык отрезков толщиной 0,25 мм; зазор составляет 0,05 мм).
Если такое качество устраивает, тогда может быть написать урок на данную тему?
Впрочем, можно в зазорах точки соединить.