sketchucation logo sketchucation
    • Login
    Oops, your profile's looking a bit empty! To help us tailor your experience, please fill in key details like your SketchUp version, skill level, operating system, and more. Update and save your info on your profile page today!
    πŸ›£οΈ Road Profile Builder | Generate roads, curbs and pavements easily Download

    Length line/Edge

    Scheduled Pinned Locked Moved Plugins
    4 Posts 3 Posters 482 Views 3 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • R Offline
      regevz
      last edited by

      hello,
      how can i change the length of line/edge by ruby script ?

      regevz

      1 Reply Last reply Reply Quote 0
      • thomthomT Offline
        thomthom
        last edited by

        Apply a scaling transformation to it.

        Thomas Thomassen β€” SketchUp Monkey & Coding addict
        List of my plugins and link to the CookieWare fund

        1 Reply Last reply Reply Quote 0
        • TIGT Offline
          TIG Moderator
          last edited by

          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:3gl99xg3]tr=Geom::Transformation.new(new_end_point)[/ruby:3gl99xg3]
          Now you apply it to the vertex - it's done in a convoluted way for a vertex compared to other '[ruby:3gl99xg3]entities[/ruby:3gl99xg3]'...
          If you are working in a group use '[ruby:3gl99xg3]group.entities...[/ruby:3gl99xg3]', but here I assume it's in the model...
          [ruby:3gl99xg3]Sketchup.active_mode.active_entities.transform_entities(tr, edge.end)[/ruby:3gl99xg3]
          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:3gl99xg3]vector.reverse[/ruby:3gl99xg3] and substitute the start/end vertices.
          For other units change the method e.g. [ruby:3gl99xg3]0.1.m[/ruby:3gl99xg3] or with no suffix it's taken as [ruby:3gl99xg3]inches[/ruby:3gl99xg3]........... πŸ€“

          TIG

          1 Reply Last reply Reply Quote 0
          • R Offline
            regevz
            last edited by

            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]........... πŸ€“

            1 Reply Last reply Reply Quote 0
            • 1 / 1
            • First post
              Last post
            Buy SketchPlus
            Buy SUbD
            Buy WrapR
            Buy eBook
            Buy Modelur
            Buy Vertex Tools
            Buy SketchCuisine
            Buy FormFonts

            Advertisement