sketchucation logo sketchucation
    • Login
    🤑 SketchPlus 1.3 | 44 Tools for $15 until June 20th Buy Now

    Delete All Scenes with API Question...

    Scheduled Pinned Locked Moved Developers' Forum
    2 Posts 2 Posters 1.0k Views 2 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.
    • renderizaR Offline
      renderiza
      last edited by renderiza

      Hi,

      Why the following code only deletes some scenes and not all?

      model = Sketchup.active_model
      pages = model.pages
      
      pages.each {|page| pages.erase(page)}
      

      A workaround for this issue is...

      model = Sketchup.active_model
      pages = model.pages
      
      delete_list = []
      pages.each {|page| delete_list << page}
      delete_list.each {|page| pages.erase(page)}
      

      But still, I ask why did the first example fail to deliver?

      Shortly after this I post stumbled upon this TOPIC and it explained the issue.

      [url=https://www.sketchupcode.com/:z3kqsidd]My Extensions ...[/url:z3kqsidd]

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

        When you iterate a collection - like pages, or selection or entities, and change that collection's contents - e.g. by deleting something - then you get issues because the collection changes as a result.
        BUT if you 'freeze' the collection, but using .to_a OR perhaps you collect items, which are then deleted afterwards, after you exit using the collection... then it avoids the issue.

        TIG

        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