sketchucation logo sketchucation
    • Login
    πŸ€‘ SketchPlus 1.3 | 44 Tools for $15 until June 20th Buy Now

    Face Dimensions

    Scheduled Pinned Locked Moved Developers' Forum
    5 Posts 3 Posters 343 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
      riteshrpatil
      last edited by

      I am having problems getting the length and breadth of a rectangular face in SketchUp. I am using this code:` def height
      fheight = 0
      bb = self.bounds

      	if bb.depth != 0
      		fheight = bb.depth
      	else
      		fheight = bb.height
      	end
      	
      	return fheight.to_m
      end
      
      	# Method to return the width of a face in m
      def width
      	fwidth = 0
      	bb = self.bounds
      
      	if bb.depth != 0
      		fwidth = Math.sqrt((bb.width)**2 + (bb.height)**2)
      	else
      		fwidth = bb.width
      	end
      	
      	return fwidth.to_m
      end`
      

      But I am not getting the correct dimensions of the red rectangular face in attached screenshots.


      untitled1.jpg

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

        You're using bounds to get dimensions - BoundingBox objects are always aligned the the world axis. What you want to do is investigate the faces edges and their lengths. Sketchup::Edge got a length method that returns the dimension for the edge.

        btw

        @unknownuser said:

        <span class="syntaxdefault"><br /></span><span class="syntaxcomment">#&nbsp;Method&nbsp;to&nbsp;return&nbsp;the&nbsp;width&nbsp;of&nbsp;a&nbsp;face&nbsp;in&nbsp;m<br /></span><span class="syntaxdefault">def&nbsp;width<br />&nbsp;&nbsp;fwidth&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">0<br />&nbsp;&nbsp;bb&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">self</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">bounds<br /></span>
        

        You're extending the base Sketchup::Face class? If you do, beware that if you public the plugin you might run into naming conflict if some other plugin use the same name. Using the base classes has the same risks of naming conflict as making methods in the global namespace.

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

        1 Reply Last reply Reply Quote 0
        • honoluludesktopH Offline
          honoluludesktop
          last edited by

          Same component, different bbox. The bbox is subject to the world axis at the time the component is created.
          Temp00.png
          Temp01.png
          Temp02.png

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

            <span class="syntaxdefault"><br /></span><span class="syntaxcomment">#&nbsp;Returns&nbsp;nil&nbsp;if&nbsp;the&nbsp;face&nbsp;is&nbsp;not&nbsp;a&nbsp;parallelogram.<br />#&nbsp;Returns&nbsp;an&nbsp;array&nbsp;[width,&nbsp;height]&nbsp;on&nbsp;success.<br /></span><span class="syntaxdefault">def&nbsp;self</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">get_rectangle_size</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">face</span><span class="syntaxkeyword">)<br />&nbsp;&nbsp;</span><span class="syntaxdefault">edges&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">face</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">outer_loop</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">edges<br />&nbsp;&nbsp;</span><span class="syntaxkeyword">return&nbsp;</span><span class="syntaxdefault">nil&nbsp;unless&nbsp;edges</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">size&nbsp;</span><span class="syntaxkeyword">==&nbsp;</span><span class="syntaxdefault">4<br />&nbsp;&nbsp;</span><span class="syntaxkeyword">return&nbsp;</span><span class="syntaxdefault">nil&nbsp;unless&nbsp;edges</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">length&nbsp;</span><span class="syntaxkeyword">==&nbsp;</span><span class="syntaxdefault">edges</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">length<br />&nbsp;&nbsp;</span><span class="syntaxkeyword">return&nbsp;</span><span class="syntaxdefault">nil&nbsp;unless&nbsp;edges</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">length&nbsp;</span><span class="syntaxkeyword">==&nbsp;</span><span class="syntaxdefault">edges</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">3</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">length<br />&nbsp;&nbsp;</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">edges</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">length</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">edges</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">length</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault">end<br /></span>
            

            Untested - but I think it should work.

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

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

              As requested per PM:

              <span class="syntaxdefault"><br /></span><span class="syntaxcomment">#&nbsp;Returns&nbsp;nil&nbsp;if&nbsp;the&nbsp;face&nbsp;is&nbsp;not&nbsp;a&nbsp;circle.<br />#&nbsp;Returns&nbsp;the&nbsp;radius&nbsp;on&nbsp;success.<br /></span><span class="syntaxdefault">def&nbsp;self</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">get_circle_radius</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">face</span><span class="syntaxkeyword">)<br />&nbsp;&nbsp;</span><span class="syntaxdefault">edges&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">face</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">outer_loop</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">edges<br />&nbsp;&nbsp;edge&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">edges</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]<br />&nbsp;&nbsp;return&nbsp;</span><span class="syntaxdefault">nil&nbsp;unless&nbsp;edge</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">curve</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">is_a</span><span class="syntaxkeyword">?(&nbsp;</span><span class="syntaxdefault">Sketchup</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">ArcCurve&nbsp;</span><span class="syntaxkeyword">)<br />&nbsp;&nbsp;</span><span class="syntaxdefault">edge</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">curve</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">radius<br />end<br /></span>
              
              <span class="syntaxdefault"><br /></span><span class="syntaxcomment">#&nbsp;Returns&nbsp;nil&nbsp;if&nbsp;the&nbsp;face&nbsp;is&nbsp;not&nbsp;a&nbsp;semi&nbsp;circle.<br />#&nbsp;(ArcCurve&nbsp;and&nbsp;one&nbsp;edge&nbsp;connecting&nbsp;each&nbsp;curve&nbsp;end)<br />#&nbsp;Returns&nbsp;the&nbsp;radius&nbsp;on&nbsp;success.<br /></span><span class="syntaxdefault">def&nbsp;self</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">get_semicircle_radius</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">face</span><span class="syntaxkeyword">)<br />&nbsp;&nbsp;</span><span class="syntaxdefault">edges&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">face</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">outer_loop</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">edges<br />&nbsp;&nbsp;curve_edges&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">edges</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">select&nbsp;</span><span class="syntaxkeyword">{&nbsp;|</span><span class="syntaxdefault">e</span><span class="syntaxkeyword">|&nbsp;</span><span class="syntaxdefault">e</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">curve</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">is_a</span><span class="syntaxkeyword">?(&nbsp;</span><span class="syntaxdefault">Sketchup</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">ArcCurve&nbsp;</span><span class="syntaxkeyword">)&nbsp;}<br />&nbsp;&nbsp;</span><span class="syntaxdefault">curve&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">curve_edges</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">first</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">curve<br />&nbsp;&nbsp;</span><span class="syntaxkeyword">return&nbsp;</span><span class="syntaxdefault">nil&nbsp;unless&nbsp;curve_edges</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">all</span><span class="syntaxkeyword">?&nbsp;{&nbsp;|</span><span class="syntaxdefault">e</span><span class="syntaxkeyword">|&nbsp;</span><span class="syntaxdefault">e</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">curve&nbsp;</span><span class="syntaxkeyword">==&nbsp;</span><span class="syntaxdefault">curve&nbsp;</span><span class="syntaxkeyword">}<br />&nbsp;&nbsp;</span><span class="syntaxdefault">edge&nbsp;</span><span class="syntaxkeyword">=&nbsp;(</span><span class="syntaxdefault">edges&nbsp;</span><span class="syntaxkeyword">-&nbsp;</span><span class="syntaxdefault">curve_edges</span><span class="syntaxkeyword">).</span><span class="syntaxdefault">first<br />&nbsp;&nbsp;</span><span class="syntaxcomment">#&nbsp;At&nbsp;this&nbsp;point&nbsp;you&nbsp;have&nbsp;all&nbsp;the&nbsp;data;<br />&nbsp;&nbsp;#&nbsp;curve&nbsp;refers&nbsp;to&nbsp;the&nbsp;ArcCurve&nbsp;of&nbsp;the&nbsp;semicircle<br />&nbsp;&nbsp;#&nbsp;edge&nbsp;refers&nbsp;to&nbsp;the&nbsp;Edge&nbsp;connecting&nbsp;the&nbsp;ArcCurve's&nbsp;ends<br /></span><span class="syntaxdefault">end<br /></span>
              

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

              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