Settings

Choose language

Leko pattern making software 29 posts, 9 writers, 168 readers, started 99 months ago

posted 99 months ago (Saturday, February 13) by Sewist
#1
As promised, I am starting a new thread to give more insight into how Leko software works and how patterns are drafted to fit customised measurements.

I shall wait for our IT team to finish inserting images into post and making links live. :)
This post has replies: ( #2 #7 )

This post is reply to #1
posted 98 months ago (Tuesday, February 16) by Catina
#2
I'm looking forward to it with excitement!

posted 98 months ago (Tuesday, February 16), edited 98 months ago by Lekala
#3
I shall start with the general description of the features and how it is different from other softwares in the market.

The main distinctive feature of Leko is not that it allows you to program a pattern in a new way, it is the fact that there's a huge database of real size measurements of real people across various height and weight groups.

The size standards in mass pattern industry are often approximated in such a way that they would fit most people in the weight group.

- On the one hand, this means providing extra ease around waist, hips, so that M would be ok for a lady with hourglass and athletic figure, if the bust is about the same.

- On the other hand, there're ages of practical sewing, and handy formulas that suggest that e.g. front dart on skirt is around x cm, shoulder is usually that long and increases by x cm from size to size. It is only natural that pattern makers with lots of experience unconsciously hold to these so common cms and inches when making a new pattern. However, when you start designing for anything outside 168 cm height and outside 3XL, these formulas may stop working.

Leko works differently. At the core of it, there's an enormous database of actual size measurements, taken during a scientific statistical survey across the Eastern Europe and Asia (Victor says Cuba as well))) - that allowed to collect sets of size measurements of thousands of actual people. These sets include 104 size measurements each
When working on a design, you can use actual sizes like "shoulder_length", "back_width", and every time you reprocess a pattern for a specific height/bust/waist/hip it is redrafted (not graded!) by the system.

posted 98 months ago (Tuesday, February 16) by Lekala
#4
That said, the main difference of Leko is that is not actually visual, or interactive in terms of "drag-and-drop" the neckline down.

Creating a new pattern is rather programming a new pattern. You don't draw, you put points, curves and lines using Leko language and math formulas. 

It is less usual, however once you get used, creating a new pattern for a skirt takes you much less time. By using sizes from the database, you can also be more sure that the pattern will be automatically drafted across various sizes.

E.g., when creating a skirt, you can define the points of waist, hips, knees using simple formulas like: kneelenth = (waist height*) - (knee height**), and the length will stay in place for any height range from 140 to 200 cm.
* size 7
** size 9

Knowing where's the hip, you can define length of vent at some proportional height - and again your vent will become shorter or longer depending on how high the lady is.
The attached image is for a WIP, but I hope it's ok to get an idea.

Since it was built using sizes from the database, we can scale it to a different size automatically.
Let's try height 146 cm, waist 98 cm, and hips 116 cm
To have a look at a different weight group, let's try height 176 cm, waist 62 cm and hips 88 cm

This post has replies: ( #5 )

This post is reply to #4
posted 98 months ago (Wednesday, February 17) by Catina
#5
That's a very impressive method for generating true "made-to-measure" patterns!  
It could be such a challenge drafting by hand and only "circumference" measurements, since you could have 5 ladies with 40" hip measurement and all of them could have different shapes and proportions.  I like that the formula can be varied for different body shapes, not just literal measurements.

I really enjoy seeing the screenshots of the process and the technical information!

posted 98 months ago (Wednesday, February 17), edited 98 months ago by Lekala
#6
The language of Leko is a compromise between vector graphics and pattern drafting terms.

Basically, first you draw a geometric base for a pattern, and then you start modelling: cutting, turning pieces, connecting new points with new lines and curves and checking that their lengths match so that the seams can be made precisely.

(Notice - I am now talking about the 2D version of Leko, the new planned to be 3D, based on building a mannequin and then straightening parts of it to get flat pieces).

So in 2D Leko you would start with placing points at various heights and widths. If you ever worked with svg, html5, the process would ring a bell a lot.

For example, you start with point P1, that would be in the upper left corner, and from which you'll be building the rest of the pattern. The X-axis goes from left to the right and Y-axis is turned downwards. The image below is an excerpt from W3 SVG Tutorial, but the principle is exactly the same.


To mark point P1 in the upper left corner of the yellow rectangle, we'd write the following line:

P1:=point(20,30);
(note the := combination for creating new object or variable and ; at the end of each line of code)

To place a point for the upper right corner of the rectangle, we have two options. 

First option: use coordinates of the first point and change x value adding the length of rectangle side, e.g.

P2:=point(P1.x+rectside,P1.y);
or
P2:=point(P1.x+30,P1.y);

It's not necessary to use variables in coordinates, but I personally prefer to do so, especially if a variable is used several time (e.g. for the next side of rectangle). In this case you can create a new rectangle simply editing the variable, and not going through 4 lines of code, changing 30 to some 35.

Second: apply some distance from point P1 at a certain angle and mark point P2.

apply(P1,0,rectside,P2);
or
apply(P1,0,30,P2);

As a result, a new point P2 will be created at 3 o'clock direction from "P1" to the right, at the distance of 30 cm.

It is important to understand the angle that is set to 0 in the example above. 

If we consider a simple situation, when we need to define a direction from a point, then you count clockwise. 
- 0 degrees goes to the right along X-axis (3 o'clock)
- 90 degrees will move your point down (6 o'clock)
- 180 degrees will move the point to the left (9 o'clock)
- 270 (or -90) degrees will move your point upwards (12 o'clock)

In this example we've looked at two operators:

point(x coordinate, y coordinate);
apply(first point, angle, distance, new point);

When working with apply function, I always imagine a piece of drafting paper, and placing new points using a pencil to mark them, and a ruler to define distance and direction in between. 
E.g you mark point P1, put a ruler horizontally, apply 30 cm to the right and mark a new point P2.

Please let me know if this is not too scary, and then in the next post we'll look at creating a basis for a knee-length skirt. :)

This post is reply to #1
posted 98 months ago (Wednesday, February 17) by zibergirl
#7
It sounds complicated, but interesting. I'm just happy to know that when I order a Lekala pattern to my specific measurements, they always fit just right. I'm glad you have taken the time to research and use so many figure types to create a program that does such a splendid job! Thanks! 

posted 98 months ago (Thursday, February 18) by strawberry
#8
Oh my god, I love this level of detail. Even if most people are just happy that Leko works for them, PLEASE PLEASE keep this coming for nerds like me who like to know exactly what's going on under the hood! 

posted 98 months ago (Tuesday, February 23) by Lekala
#9
The next operator we are going to look at is a straight line between two points.

The syntax is simple. If we create a new line and want to name it "newline", the code would be as follows:

newline:=line(P1,P2);

We have created a new object, that is a straight line, has name "newline" and has some length and is placed at some angle. What's peculiar about Leko, is that such objects have directions, this very line will go from P1 to P2.

If there's need to know the length of it to use in some calculations, or to know its angle to create a marking that would be perpendicular to the line, we can use qualifiers, or parameters that are built into system.

newline.l will return length of the line
newline.a1 or newline.a2 will return angle of the line

All parameters that you can use for a line:

.a1 or .a2 will return angle at first/second point, as the line is not curving along the way, it will be the same value
.l returns length of this line

.p1 - returns first point
.p2 - returns second point
.x1 - returns x coordinate for first point
.y1 - returns y coordinate for first point
.x2 - returns x coordinate for second point
.y2 - returns y coordinate for second point
.dx - difference of x coordinate values between first and second points
.dy - difference of y coordinate values between first and second point


I usually use just angle and length, as it is more straightforward to get other values from the points directly (UNLESS you created a line, and rotated or moved it somewhere, leaving the initial basis points where they used to be).

Reference to a line

Quite often you don't need to create a new object, you just want the distance between this and that point, thank you very much. 

In this case you can refer to a line that could be potentially drawn between the points, get angle and length using same parameters, but stay free of an unnecessary object in your drawing. 
(In docs, they call it indirect line (an IT term), but I prefer "line reference", as it is actually straight )))

Syntax is as follows - you name two points, place colon (not comma!) in between, and put them into square brackets. 

width_of_facing:=[P1:P2].l;

In the example above, we create a new variable, name it "width_of_facing" and agree that it would be equal to the length of potential line between point P1 and P2.

Why use lines?

In Leko, you form the pattern pieces somewhat later and you can describe the contour of a piece by simply mentioning points one by one, and the system will connect them with straight line. 

Still, when drafting a pattern, you may want to find where objects intercross, you may want to apply a certain length along a line (and not bother with counting angles for apply operator), rotate certain lines and use them in future drafting, etc etc. Sometimes you just want to keep your draft obvious and visual and be able to find all objects in the screen by hovering cursor over them. In these cases, line operator comes in very handy :)

posted 98 months ago (Tuesday, February 23) by Lekala
#10
(an offtopic - but funny - here's how Leko automatically checks if your pattern can be graded to different sizes)



posted 98 months ago (Tuesday, February 23) by Lekala
#11
The next handy operator is curve.

Curves are widely used in pattern drafting - neckline, armhole, hem of A-skirt, insets, sleeves, well - everywhere.

A curve in Leko is defined by start point, end point, tangent angle at start point, tangent angle of end point, and the so called coefficient. Coefficient defines how curved your line will be, 0 making it straight, and 1 close to an arc of a circle. Anything above 3 will most likely make the curve intercross in a curious loop somewhere in the middle :)

Syntax:

curve_c(point1,point2,angle1,angle2,coefficient);

If you want to refer to this curve using some specific name, you can set it as in:

new_curve:=curve_c(point1,point2,angle1,angle2,coefficient);

If no name is preset by you, the system will apply an automatic name using start and end point and prefic C_, e.g. C_P1_P2.

Warning to those who have worked with svg before - this is not a bezier curve, nor a quadratic bezier, nor a cubic bezier, it is different. But handy :)

Okay, so why use angles when describing a curve? 
The most common use is to make the upper lines of them form a smooth line when you will sew a seam. Imagine you are drafting hem of an A-line skirt - your side seams are slanted, moved upwards, however you want your hem be even when you sew the seams. Easy solution - mention angles of side seams when drawing a curve for your spline, and the system will do the job.

posted 98 months ago (Wednesday, February 24) by strawberry
#12
Yep, still following along!

Wait -- is angle1, angle2 supposed to be specified in degrees? Or as a tangent value? Geometry class was a long time ago. :( 
This post has replies: ( #13 )

This post is reply to #12
posted 98 months ago (Thursday, February 25) by Lekala
#13
It's in degrees, and those are degrees that describe the slope of a tangent line :)

E.g. angle of a line plus 90 degrees (or minus 90 degrees) to make it perpendicular to the future seam - would work for side seams of hem for example.

You can use positive and negative values, and then you can add values right in the syntax, as in

curve_c(point1,point2,newline.a2-90+180,angle2,coefficient);

In this case no matter how you rotate the line (and you may want to, if this is a side seam of an A-line skirt, or side seam near armhole), the curve will be perpendicular at the start point anyway.

When coding, it is sometimes difficult to guess the angle straight away, as the line has direction and angles can be counted not in a straightforward way, in this case I usually make the curve and then play with angles to get the right look.


posted 98 months ago (Sunday, February 28), edited 98 months ago by Lekala
#14
Here's a sneak peek into our new online pattern redactor

In this example, I have put one point, put two further points by applying lengths at different angles and connected them with lines.

Do you find the syntax difficult?

posted 98 months ago (Monday, February 29) by strawberry
#15
I'm following along fine, but I don't know about the lurkers. 

I assume the users here have a lot of diverse backgrounds, so I'm betting some people just really are not used to thinking in terms of specifying points on a coordinate plane, or might not be comfortable using syntax. Not sure that can be helped, though, without investing a ton of time into making, like, a step by step tutorial class to take them through constructing something personally. 

The redactor sounds super exciting, I'd love to be able to play with it whenever it's ready. 

Er, sorry for kind of monopolizing this thread with my responses. I'll go be quiet now. :) 
This post has replies: ( #16 )

This post is reply to #15
posted 98 months ago (Monday, February 29) by Lekala
#16
You are most welcome to monopolize the thread :)

It was unusual for me as well in the beginning, however the mere liberty to plan a pattern "strategically" for all sizes was so enticing, that I got used pretty fast :)

The learning process for me was take someone else's algorithm and change it and change it until it gets broken, and then fix it eventually :)

posted 98 months ago (Thursday, March 3), edited 98 months ago by Lekala
#17
I am sorry for having bit a little quiet - and for not starting the skirt pattern drafting sample.

We are planning to launch a feature that would let a person get all the sizes for a given set of basic measurements and till we are fine with translating all the sizes correctly, it would be wrong to share an algorithm as the terms may change.

However I believe we could discuss parameters of a curve meanwhile :)

These are similar to those of line. Here's a full list:

All parameters that you can use for a curve:

.a1 returns angle of tangent line in the starting point
.a2 returns angle of tangent line in the end point
.l returns length of this line

.p1 - returns first point
.p2 - returns second point
.x1 - returns x coordinate for first point
.y1 - returns y coordinate for first point
.x2 - returns x coordinate for second point
.y2 - returns y coordinate for second point

The most common used are again length and angles.

For example, in a skirt pattern, you would want to draw the curve from waist point to hips point in such a way that it would be perpendicular to the top edge of skirt. 

I have coded a short example (not using actual sizes, just to illustrate the point).


We have the basic points, and we now need to make curve for side edge that would meet the top edge curve at a straight angle.

The syntax for the side edge curve would be approximately as follows:

sideedge=curve(h2,side,0,topedge.a2+90,1);

The curve will start at H2 and go upwards till point SIDE. At the starting point, the tangent line will be straight. At the end point, the tangent line will be perpendicular to curve TOPEDGE - that is why we added 90 degrees, otherwise SIDEEDGE would join the TOPEDGE from the right seamlessly. 


Having included the tangent angle of top edge curve right into description of side edge, we can now be sure that however the points move depending on the size, the side seam will always be perpendicular to top edge.


posted 97 months ago (Friday, March 18) by Lekala
#18
A new operator is arc. Arc is a segment of circle and is defined by center point, radius and two angles - from where you want to start and where you want to end the arc.

The syntax is as follows:

arc(point,radius,angle,angle);

You may assign a name to the arc, or you can simply write it down as above and the system will assign an automatic name to it.

Here are some samples of the arcs that I made with our online redactor:

1) I wanted the arc that would go from left lower diagonal to left upper diagonal, and was too lazy to count the exact degrees. I knew it was something around 45 grad, and I simply added 180 grad right within the operator to move the starting point of arc to "7.30 pm" instead of "1.30 pm".
The second arc almost completes a circle. It starts just below the horizon, goes clockwise and ends just above the horizon. By formula, it goes from 15 degrees to MINUS 15 degrees.
The third arc is half circle, it goes from -90 to 90 and has a smaller radius:

posted 97 months ago (Tuesday, March 22) by HappyBabyBat
#19
This is all very interesting, even if I don't understand some of it.


posted 97 months ago (Wednesday, March 23) by knitzz
#20
is this The Calculus of the Body? 

kinda-sorta :-)

This post has replies: ( #21 )

This post is reply to #20
posted 97 months ago (Wednesday, March 23) by Lekala
#21
Sort of calculus of both body and a pattern that would fit the calculated body :)

posted 97 months ago (Monday, April 4) by rsadowski
#22
One of the things I like about Lekala patterns is that you can enter measurements and get a pre-created pattern.  One of the greatest problems I see is the computer's read of these measurements into the design of the sleeve heads.  Have you noticed?  Almost none of the photos show women with sleeves if the fabric is a woven.  Read the blogs, and they say the same thing.  Advanced sewists are regularly re-drafting the sleeves.

I'd love to know if it is because we are adding a wide shoulder adjustment, which is then flattening out the sleeve head, or if there is some other reason for this.
This post has replies: ( #23 #24 )

This post is reply to #22
posted 97 months ago (Tuesday, April 5) by Lekala
#23
I'd say this depends largely on the size itself, as in plus sizes the sleeve head may be flattened. And then it is also important to know how wide the adjustment is. Let's move to a separate thread and discuss this in detail? :)

This post is reply to #22
posted 97 months ago (Friday, April 8) by strawberry
#24
Interesting! Could you link to a couple of the blogs that discuss this? I haven't really noticed anything systematic about the sleeve fit. 

(Feel free to delete this post if this is already being discussed elsewhere -- I couldn't find the new separate thread, though.) 

posted 95 months ago (Monday, May 16), edited 95 months ago by Lekala
#25
Here's a little sneak peek into our online pattern making software....

https://www.youtube.com/watch?v=tFdfCPfA2CE

about this beta test

This post has replies: ( #26 )