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

    Add_face(edearray) not working?

    Scheduled Pinned Locked Moved Developers' Forum
    11 Posts 3 Posters 376 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.
    • thomthomT Offline
      thomthom
      last edited by

      add_face( edges ) does work. I've used it lots of times. Even your sample code works.

      add_face_edges.png

      But...

      @tafkab76 said:

      but I was hoping to be able to create a face with a hole in it by passing an array with the outer and inner loop edegs to the add_face method, but not even passing a single loops seems to work.

      You cannot create with a hole in one go. Create the face first - without outer loop. Then take your inner loops and create faces for each of them - you then erase the face created with the inner loops.

      Btw - ents does that refer to model.active_entities ? Or did you use model.entities ?

      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

        😲

        I didn't notice the add_face command at the end (it was below the code fold) But I'm seeing the same thing. I don't understand what's going on there... 😕

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

        1 Reply Last reply Reply Quote 0
        • T Offline
          tafkab76
          last edited by

          But I can´t see the face on your screen, only four edges?

          Here ist what it looks like when I execute the code on my machine. Maybe it´s a difference, because I use Ruby Code Editor?

          [xxl-img:xg9qtt3f]http://www.steffenblome.de/add_face.jpg[/xxl-img:xg9qtt3f]

          as you can see I used

          ent = mod.entities
          

          but I just tried

          ent = mod.active_entities
          

          with the same results.

          And thanks for that advice on how to create a face with a hole, I´m going to use that.

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

            Ah!

            When you created a set of edges with add_edges it didn't merge the start and end vertex.

            EdgeLoop.png

            That prevented it from creating the face because it wasn't a closed loop.

            When I created a set of edges separately which where merged it did work.

            So the failure of add_face is a result of add_edges not merging crossing vertices.

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

            1 Reply Last reply Reply Quote 0
            • T Offline
              tafkab76
              last edited by

              Ok, I see. That also explains why find_faces didn´t work on neither of the edges.
              So add_face(edgearray) doesn´t work on API created egdes? Or is there a command that forces edges to merge to loops if possible?

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

                @tafkab76 said:

                So add_face(edgearray) doesn´t work on API created egdes?

                It works if the edges are a closed loop.
                I think if you create each face individually with add_edge it will work. Alternatively you can try to intersect the created edges with themselves.

                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

                  But - in your case where you say:

                  @tafkab76 said:

                  but I was hoping to be able to create a face with a hole in it by passing an array with the outer and inner loop edegs to the add_face method, but not even passing a single loops seems to work.

                  You cannot create a face with holes in one operation.

                  @thomthom said:

                  You cannot create with a hole in one go. Create the face first - with the outer loop points. Then take your inner loop points and create faces for each of them - you then erase the face created with the inner loops.

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

                  1 Reply Last reply Reply Quote 0
                  • T Offline
                    tafkab76
                    last edited by

                    Yes, I got that.

                    Thx!

                    1 Reply Last reply Reply Quote 0
                    • K Offline
                      krouza
                      last edited by

                      @tafkab76 said:

                      Yes, I got that.

                      Thx!

                      You must use selection like this:

                      <span class="syntaxdefault">selection&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">selection<br />status&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">selection</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">add&nbsp;edges<br />&nbsp;&nbsp;<br /></span><span class="syntaxcomment">#&nbsp;Get&nbsp;an&nbsp;Array&nbsp;of&nbsp;all&nbsp;of&nbsp;the&nbsp;selected&nbsp;Edges<br /></span><span class="syntaxdefault">edges&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">selection</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">find_all&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">kind_of</span><span class="syntaxkeyword">?(</span><span class="syntaxdefault">Sketchup</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">Edge</span><span class="syntaxkeyword">)}<br />&nbsp;&nbsp;&nbsp;<br /></span><span class="syntaxcomment">#&nbsp;Try&nbsp;to&nbsp;create&nbsp;a&nbsp;Face&nbsp;from&nbsp;the&nbsp;Edges&nbsp;in&nbsp;the&nbsp;active&nbsp;component<br /></span><span class="syntaxdefault">face&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">nil<br />begin<br />&nbsp;&nbsp;&nbsp;&nbsp;face&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_entities</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">add_face&nbsp;edges<br />rescue<br />end</span>
                      
                      1 Reply Last reply Reply Quote 0
                      • thomthomT Offline
                        thomthom
                        last edited by

                        You can get a type of entity faster by using grep. (See this thread: http://sketchucation.com/forums/viewtopic.php?f=180&t=48885 )

                        <span class="syntaxdefault"></span><span class="syntaxcomment">#&nbsp;Get&nbsp;an&nbsp;Array&nbsp;of&nbsp;all&nbsp;of&nbsp;the&nbsp;selected&nbsp;Edges<br /></span><span class="syntaxdefault">edges&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">selection</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">grep</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">Sketchup</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">Edge</span><span class="syntaxkeyword">)&nbsp;</span><span class="syntaxdefault"></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