Dividing a line into unequal segments?

As diagramed above, I am wondering if anyone knows of any fast workflows or extensions that can divide a line into unequal segments? Ideally something that works by dividing a line in changing lengths such as ABAB (e.g. total:10 A=2 B=3)?

I often have a dimension for a total length, a specific length, and a relative length that needs to be placed across a line. For example, wheelchair ramps require specific landing lengths, but the ramp itself can be relative to the distance being spanned, such I would I like define the length of the landing segment but I don’t need to define the ramp length.

Currently I do this by creating a landing line (e.g. 3000mm) and command:copy/divide it across the total length (e.g. /4). Then I draw lines across the in-between spaces. This works well but is tedious. I could also do this by working out the total length and dividing it into the various segments, but as I often work with lengths sometimes four decimal points deep, the calculations are rarely perfect and this can create exponential errors in the model. A bonus would be the ability to change the relative length while keeping the landing length at 3000. The stretch tool will stretch everything, such I end up having to remodel it over and over again.

Thanks

I guess by “stretch” tool you mean the scale tool. Often when scale is not appropriate as you mention, you should select what you need and use the move tool.

Correct I am referring to the scale tool, but I was specifically referring to its function to stretch. The move tool would work, but this would require calculating the new distance being spanned, dividing it amongst every segment, and moving each endpoint one by one, good in theory but tedious in practice.

So would the scale tool, I guess…

All the scale tool does is stretch geometry in a choice of directions:
X, Y, Z, XY, XZ, YZ or XYZ…

Please post an image that shows the situation. Elaborate from that image. Right now it’s not quite clear how you would like to use different dimensions.
And is it orthogonal or along a ramp that you would like to alter dimensions???

changing dimensions along …skp (206.5 KB)

Use the right scene and the correct selection of entities to scale along the direction of the ramp.

1 Like

I want to avoid overcomplicating the question so I will put aside use case for modelling ramps, etc…

This requires a little algebra. Essentially I have a line (see above), it is divided as segment ABABABA. I have the Total Length and the length for the segment A. The length for B is relative to the total length. For example, Total Length =10, A=1, B would therefore equal 2. That is simple enough.

However, I often have a Total Length of a number like 10.9378. Now I could apply the the same arithmetic of A=1 X 4 – 10.9378 = 6.9378 / 3 = 2.3126 (such B equals 2.3126. Now this is much more tedious and complicated.

One way to achieve the dimension for B is to command:copy/divide the segment A across the Total Length. But this is also tedious and uneditable later on. My question is, is there an extension, similar to the divide line function, that allows for the division of unequal lengths across a line. So instead of dividing a line by AAAA, I can divide the line ABABA or ABCABA, etc.

I hope this clarifies the question.

P.s the reason for this specifically for me is the creation of ramps. Where I need to create regular and identical declines and landings of equal length.

Wouldn’t drawing 1 landing and 1 ramp and copying that a number of times do the trick?
Or do you want SketchUp to do the initial math for you?

2 Likes

This doesn’t work because that would require you knowing all the preceding calculations first. In which case there would be no need for the tool. Additionally, you can’t just roughhouse a landing and ramp, multiply it, then stretch it to fit, because this alters all the dimensions and landing length is not preserved.

So you do want SketchUp to do the math for you?

You could draw a line of the total length, draw the number of landings on one side of the line and use divide on the remaining section of the line. No math required and results in equal ramp-sections…

I expect you could build a Dynamic Component to do this. You could program the rules: max slope and max distance between landings and then have fields to enter the overall rise and run along with landing lengths if they are to be different for different ramps.

3 Likes

Doing the maths is not the issue. As I have outlined the arithmetic is simple enough. If I wanted to simply do the maths I could throw out half of my extensions and save myself a lot of money. But I would have half the time and by consequence a lot less money.

As I said I am often working to the sub-decimal. The issue is that Sketchup’s dimensions are not completely accurate beyond whole integers, in fact no software is. For this reason it is always best practice to divide a line rather than to multiply across a length to avoid exponential errors.

The method you suggest works, and is similar to what I have been doing as in the original post. It’s just time consuming and not optimal to changes.

1 Like

Thanks, yes this is a good idea. I suppose this would work in lieu of a preexisting extension.

1 Like

I don’t know of a pre-existing extension. I suppose you could code something in Ruby to just do the line division if that’s all you want but if this is a thing you need to model often, a Dynamic Component might as well be made so you can drop it into the model space and set up for the situation. Might be that a Live Component could also be made for this but I haven’t really dug into making them.

At least with a Dynamic Component you could also create fields for data output for things like the actual slope of the ramp segments, volume of concrete expected, and other information you might need in a report or for auto text in labels in LayOut.

2 Likes

If by “completely accurate” you mean absolute mathematical infinite precision, then yes all software including SketchUp represents fractional (“floating point”) numbers as approximations. However, those approximations are generally vastly more precise than necessary (e.g., one part per quintillion). In the case of SketchUp, endpoint coordinates are easily accurate to 0.00001 or even 0.000001 inches (a millionth of an inch). I model small-scale geometry where less much less than thousandth of an inch repeatable precision is desired, and I have no problems in this area with SketchUp.

I agree in the general case, such as if you were to add tens of thousands or millions of lengths together. On the other hand, if you are adding only a dozen or two small lengths, the cumulative error would be too small to notice (much less than a millionth of an inch, I would expect).

1 Like

Yes for sure, and 99% of the time my workflow/best practice is at a point I rarely encounter such errors. But boy, that 1% of the time when I find a small hole, or I find that a triangulated plane is not aligned properly with another piece of geometry can be a nightmare fix. Such I avoid multiplying- especially in the case of multiple decimals- when possible.

Thanks, this seems like a good solution. I’ll marked it as solved for now! Best

1 Like

Definitely waaaaaay more accurate than the people who have to build it are able to measure!!

Yes, geometry problems can be a real pain to fix. Small holes (emphasis on small) are often the result of SketchUp’s inability to directly create endpoints that are less than about 0.001 inch apart. Typically this issue manifests itself when a short edge is simply deleted by SketchUp (eliminating adjacent faces and thus creating holes), but it can also appear when the nearby ends of two very long edges happen to be nearly touching (but deliberately not touching). SketchUp will usually delete one of the nearby end points and re-form the affected edge by connecting it to the remaining endpoint that was not deleted. The “Dave” method that I mentioned earlier is a very effective technique to deal with this limitation. (Note that even with this 0.001 inch adjacency tolerance behavior, SketchUp is still able to retain end point coordinates with very high stable precision. It may seem like a paradox.)

Faces that are not quite co-planar are usually the result of modeling technique. For example, the infamous “length snapping” feature can cause such problems. Or not using SketchUp’s inferencing feature to locate endpoints or centers etc.

1 Like