Length of segmented curves with tool "point intersection curves"

Issue #839 new
Ronan Le Tiec created an issue

In a particular case, I have two curves intersecting and I would like to get the length of the curves from either starting point of the curve to the intersection point.

In the example I attach, I would like for instance to know the length of Spl_A_A4, Spl_A4_A2, Spl_A3_A4 and Spl_A4_A1

When using the tool intersect curve and axis, the segmented curve lengths resulting are listed in the variable table. Would it be possible to achieve the same with curves intersecting?

My "real world" case is I'm creating the yoke of a jeans and using two curves that intersect on the top of the yoke and also on the bottom of the yoke. And I'd like to be able to calculate the total length of the top yoke for control purposes.

Comments (11)

  1. Roman Telezhynskyi repo owner

    Would it be possible to achieve the same with curves intersecting?

    I think yes. The main difficulty here is the fact that the tool works with all kinds of curves and even their mixes. And each must be treated separately. There is no one way to cut a curve. Are you interested in trying to implement this feature? If yes, we can discuss technical details.

  2. Ronan Le Tiec reporter

    I can definitly give it a try. If you give me some hints on where to start and what to take into account, that would be great.

  3. Roman Telezhynskyi repo owner

    Greate!

    The magic should happen here VToolPointOfIntersectionCurves::Create(VToolPointOfIntersectionCurvesInitData initData).
    When we process an intersection we should cut two curves and add information about four new curves.

    You can find more examples how this works in :

    • VToolCutArc::Create(VToolCutArcInitData &initData)
    • VToolCutSpline::Create(VToolCutSplineInitData &initData)
    • VToolCutSplinePath::Create(VToolCutSplinePathInitData &initData)

    As i said the main difficulty is the fact that the tool can handle different variations of curve intersection: two simple, two arcs, two spine paths and their mixes. Rightnow we use polymorphism and work with class VAbstractCurve. But it doesn't allow us cut a curve or register new values. For this we must use VGObject::getType() method. Cast curves and cut them as in examples mentioned above.

    One important thing. Case where curves do not have interestion should be treated specially. How, still don't know. But we cannot find sub curves if there is no intersection. I'll give you space to think.

  4. Светлана Вихарева

    В программе Леко есть операторы, которые позволяют разделить кривую на отдельные части направлением, точкой касательной, и на пропорциональные части. В отличие от оператора отложить_в который только ставит новую точку на кривой на определенном расстоянии, не деля ее на 2 отдельные части. Тоже происходит и при пересечении кривой любыми сплайнами, дугами, отрезками, ломаными. В случае если мне нужно разделить кривую в точке пересечения объектов я действую в 2 приема - сначала нахожу точку пересечения на кривой, а потом делю эту кривую направлением из выбранной точки мной точки. На выбор этой точки влияет моя уверенность, что пересечение кривой и направления обязательно состоится при перестроении чертежа на любой возможный размер. Конечно же этот путь немного хлопотный и хотелось бы иметь возможность делать это в 1 шаг. Если возможно.

  5. Roman Telezhynskyi repo owner

    Почему бы тогда не использовать Леко? Не плохая система.

  6. Светлана Вихарева

    Да, Leko была первой параметрической и дала много идей для развития той же Грации. Но в Leko нет слоев, таблиц для удобного просмотра прибавок и т.д, нельзя выбрать цвет и тип линий еще до момента описания контура детали, нельзя быстро скрыть некоторые элементы чертежа на время, только удалить. И очень выбешивает необходимость рыть землю в поисках ошибки, если вдруг, когда работаешь ночью, торопишься и очень устала, вместо точки набрала запятую или стерла нечаянно символ. И да, я не люблю тратить время на то, чтобы подбирать нужную выпуклость кривой, да еще и для линейки размеров, бывает что и нетиповых, вместо того, чтобы просто поправить ее графически. Вилар много лет отбивается от просьбы пользователей сделать интерфейс хоть немножечко более дружественным, что мол нельзя кривыми манипулировать вручную, и не потерять при этом гладкость кривых при перестроении на другой размер. Возможно у него есть серьезные основания для этого. Но в Valentine я имею возможность делать это, но могу и формулами контролировать форму кривой, могу выбирать. Леко пока, что богаче по возможностям всяких фокусов и вычислений, но строя в Valentine я не имею столько головной боли. На самом деле, пока что эти программы нужны мне обе и работают в паре. Дальше - посмотрим. Спасибо.

  7. Светлана Вихарева

    И да, Роман, я понимаю, что исполнения хотелок пользователей для Вас затратно и никак время потраченное не окупается, поэтому ни в коем случае я не воспринимаю пожелания, мои или кого-то еще как императив обязывающий Вас к чему-то, а лишь как обмен идеями и опытом практического использования программы. Я не программист, увы, поэтому хотела бы поучаствовать в развитии Вашего проекта доступным для меня способом. Нигде на Ваших ресурсах нет кнопочки помочь проекту, по мере возможностей и свободного желания. Это противоречит философии проекта?

  8. Светлана Вихарева

    Кстати, хорошей идеей для продвижения программы, если Вы заинтересованы в этом, было добавление водяного знака со ссылкой на Ваш проект, на лекалах, созданных при помощи Valentin-ы. Пусть эта функция будет добровольной. Многие распространяют свои выкройки бесплатно и такой вариант был бы легким комплиментом разработчику. И больше никто не скажет на форуме сезона: “Ваша программа хороша? так покажи лекала“ :))

  9. Roman Telezhynskyi repo owner

    Нигде на Ваших ресурсах нет кнопочки помочь проекту, по мере возможностей и свободного желания. Это противоречит философии проекта?

    На новом сайте такая кнопочка появится. Я сейчас им занимаюсь.

    И да, Роман, я понимаю, что исполнения хотелок пользователей для Вас затратно и никак время потраченное не окупается, поэтому ни в коем случае я не воспринимаю пожелания, мои или кого-то еще как императив обязывающий Вас к чему-то, а лишь как обмен идеями и опытом практического использования программы.

    Спасибо за понимание, по мере возможности все реализуем, тема для меня очень интересная. Но следующая цель уже намечена – ручная раскладка.

  10. Roman Telezhynskyi repo owner

    на форуме сезона

    Там нас не любят. Очень холодно приняли.

  11. Log in to comment