Length of segmented curves with tool "point intersection curves"
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)
-
repo owner -
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.
-
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 useVGObject::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.
-
В программе Леко есть операторы, которые позволяют разделить кривую на отдельные части направлением, точкой касательной, и на пропорциональные части. В отличие от оператора отложить_в который только ставит новую точку на кривой на определенном расстоянии, не деля ее на 2 отдельные части. Тоже происходит и при пересечении кривой любыми сплайнами, дугами, отрезками, ломаными. В случае если мне нужно разделить кривую в точке пересечения объектов я действую в 2 приема - сначала нахожу точку пересечения на кривой, а потом делю эту кривую направлением из выбранной точки мной точки. На выбор этой точки влияет моя уверенность, что пересечение кривой и направления обязательно состоится при перестроении чертежа на любой возможный размер. Конечно же этот путь немного хлопотный и хотелось бы иметь возможность делать это в 1 шаг. Если возможно.
-
repo owner Почему бы тогда не использовать Леко? Не плохая система.
-
Да, Leko была первой параметрической и дала много идей для развития той же Грации. Но в Leko нет слоев, таблиц для удобного просмотра прибавок и т.д, нельзя выбрать цвет и тип линий еще до момента описания контура детали, нельзя быстро скрыть некоторые элементы чертежа на время, только удалить. И очень выбешивает необходимость рыть землю в поисках ошибки, если вдруг, когда работаешь ночью, торопишься и очень устала, вместо точки набрала запятую или стерла нечаянно символ. И да, я не люблю тратить время на то, чтобы подбирать нужную выпуклость кривой, да еще и для линейки размеров, бывает что и нетиповых, вместо того, чтобы просто поправить ее графически. Вилар много лет отбивается от просьбы пользователей сделать интерфейс хоть немножечко более дружественным, что мол нельзя кривыми манипулировать вручную, и не потерять при этом гладкость кривых при перестроении на другой размер. Возможно у него есть серьезные основания для этого. Но в Valentine я имею возможность делать это, но могу и формулами контролировать форму кривой, могу выбирать. Леко пока, что богаче по возможностям всяких фокусов и вычислений, но строя в Valentine я не имею столько головной боли. На самом деле, пока что эти программы нужны мне обе и работают в паре. Дальше - посмотрим. Спасибо.
-
И да, Роман, я понимаю, что исполнения хотелок пользователей для Вас затратно и никак время потраченное не окупается, поэтому ни в коем случае я не воспринимаю пожелания, мои или кого-то еще как императив обязывающий Вас к чему-то, а лишь как обмен идеями и опытом практического использования программы. Я не программист, увы, поэтому хотела бы поучаствовать в развитии Вашего проекта доступным для меня способом. Нигде на Ваших ресурсах нет кнопочки помочь проекту, по мере возможностей и свободного желания. Это противоречит философии проекта?
-
Кстати, хорошей идеей для продвижения программы, если Вы заинтересованы в этом, было добавление водяного знака со ссылкой на Ваш проект, на лекалах, созданных при помощи Valentin-ы. Пусть эта функция будет добровольной. Многие распространяют свои выкройки бесплатно и такой вариант был бы легким комплиментом разработчику. И больше никто не скажет на форуме сезона: “Ваша программа хороша? так покажи лекала“ :))
-
repo owner Нигде на Ваших ресурсах нет кнопочки помочь проекту, по мере возможностей и свободного желания. Это противоречит философии проекта?
На новом сайте такая кнопочка появится. Я сейчас им занимаюсь.
И да, Роман, я понимаю, что исполнения хотелок пользователей для Вас затратно и никак время потраченное не окупается, поэтому ни в коем случае я не воспринимаю пожелания, мои или кого-то еще как императив обязывающий Вас к чему-то, а лишь как обмен идеями и опытом практического использования программы.
Спасибо за понимание, по мере возможности все реализуем, тема для меня очень интересная. Но следующая цель уже намечена – ручная раскладка.
-
repo owner на форуме сезона
Там нас не любят. Очень холодно приняли.
-
Спасибо :)
- Log in to comment
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.