sketchucation logo sketchucation
    • Login
    ℹ️ Licensed Extensions | FredoBatch, ElevationProfile, FredoSketch, LayOps, MatSim and Pic2Shape will require license from Sept 1st More Info

    Length line/Edge

    Scheduled Pinned Locked Moved Plugins
    4 Posts 3 Posters 457 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