TIG, 10x allot for your detailed post.
very useful.
regevz
@tig said:
The edge has two vertices - its 'ends'.
Found by edge.start and edge.end or edge.vertices[0] and edge.vertices[1].
Let's assume you want to move the edge's end by dist=100.mm
We know the 'line' of the edge from line=edge.line, where line[0]==edge.start.position and vector=line[1] is the line's vector towards its 'end'.
Now work out where the new end would be by using an offset on a copy of the end-point by dist...
new_end_point = edge.end.position.clone.offset(vector,dist)
So now we have the point where we want the end-vertex to move to.
You have to make a transformation to apply to that vertex
[ruby:anqq9m2l]tr=Geom::Transformation.new(new_end_point)[/ruby:anqq9m2l]
Now you apply it to the vertex - it's done in a convoluted way for a vertex compared to other '[ruby:anqq9m2l]entities[/ruby:anqq9m2l]'...
If you are working in a group use '[ruby:anqq9m2l]group.entities...[/ruby:anqq9m2l]', but here I assume it's in the model...
[ruby:anqq9m2l]Sketchup.active_mode.active_entities.transform_entities(tr, edge.end)[/ruby:anqq9m2l]
The end-vertex of the edge should now move 100.mm further away from the start-vertex...
If you want to move the start-vertex then use [ruby:anqq9m2l]vector.reverse[/ruby:anqq9m2l] and substitute the start/end vertices.
For other units change the method e.g. [ruby:anqq9m2l]0.1.m[/ruby:anqq9m2l] or with no suffix it's taken as [ruby:anqq9m2l]inches[/ruby:anqq9m2l]........... π€