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

    Help needed with intersecting geometry

    Scheduled Pinned Locked Moved Developers' Forum
    4 Posts 2 Posters 201 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.
    • C Offline
      crustybaps
      last edited by crustybaps

      HI This is my first post. Im writing a script which i hope will be able to create mortice and tennon geometry for woodworking enthusiasts. I've been trying to figure out how to get rid of the excess faces which are showing in the model. I was expecting the mortice slot to cut through the wood without leaving any other faces. I'm begining to realise that this is quite a complex task and probably not best suited for a beginner but if any one could pointme in the right direction I would appreciate it. Even if it's only to suggest what stuff I should study first to be able to get to the level I am wanting to be at with this project. I am including the code below

      <span class="syntaxdefault">mod&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_model&nbsp;</span><span class="syntaxcomment">#&nbsp;Open&nbsp;model<br /></span><span class="syntaxdefault">ents&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">mod</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">entities&nbsp;</span><span class="syntaxcomment">#&nbsp;All&nbsp;entities&nbsp;in&nbsp;model<br /></span><span class="syntaxdefault">sel&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">mod</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">selection&nbsp;</span><span class="syntaxcomment">#&nbsp;Current&nbsp;selectio<br /><br />#define&nbsp;constants<br /></span><span class="syntaxdefault">ORIGIN</span><span class="syntaxkeyword">=[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault">THICKNESS</span><span class="syntaxkeyword">=(</span><span class="syntaxdefault">25.4</span><span class="syntaxkeyword">*</span><span class="syntaxdefault">1.75</span><span class="syntaxkeyword">).</span><span class="syntaxdefault">to_i</span><span class="syntaxcomment">#&nbsp;1&nbsp;3/4"<br /></span><span class="syntaxdefault">BOTTOMGAP</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">51<br />REBATE</span><span class="syntaxkeyword">=(</span><span class="syntaxdefault">THICKNESS&nbsp;</span><span class="syntaxkeyword">/&nbsp;</span><span class="syntaxdefault">3</span><span class="syntaxkeyword">).</span><span class="syntaxdefault">to_i<br />MORTICETHICKNESS&nbsp;</span><span class="syntaxkeyword">=&nbsp;(</span><span class="syntaxdefault">THICKNESS&nbsp;</span><span class="syntaxkeyword">/&nbsp;</span><span class="syntaxdefault">3</span><span class="syntaxkeyword">).</span><span class="syntaxdefault">to_i&nbsp;&nbsp;&nbsp;&nbsp;<br />LEN</span><span class="syntaxkeyword">=(</span><span class="syntaxdefault">4.5</span><span class="syntaxkeyword">*</span><span class="syntaxdefault">25.4</span><span class="syntaxkeyword">).</span><span class="syntaxdefault">to_i&nbsp;</span><span class="syntaxcomment">#4&nbsp;1/2"<br /></span><span class="syntaxdefault">HEIGHT</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">188&nbsp;</span><span class="syntaxcomment">#6ft<br /></span><span class="syntaxdefault">SPACER</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">20<br /><br /></span><span class="syntaxcomment">#define&nbsp;the&nbsp;main&nbsp;face&nbsp;corners<br /></span><span class="syntaxdefault">pts</span><span class="syntaxkeyword">=[]<br /></span><span class="syntaxdefault">pts</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]=[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault">pts</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">]=[</span><span class="syntaxdefault">LEN</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault">pts</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">]=[</span><span class="syntaxdefault">LEN</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">THICKNESS</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault">pts</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">3</span><span class="syntaxkeyword">]=[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">THICKNESS</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]<br /></span><span class="syntaxcomment">#draw&nbsp;the&nbsp;face<br /></span><span class="syntaxdefault">bottomFace</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">pts<br />bottom</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">ents</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">add_face&nbsp;pts<br /></span><span class="syntaxcomment">#extrude&nbsp;to&nbsp;Length<br /></span><span class="syntaxdefault">bottom</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">reverse</span><span class="syntaxkeyword">!().</span><span class="syntaxdefault">pushpull&nbsp;HEIGHT<br /><br /></span><span class="syntaxcomment">#create&nbsp;the&nbsp;rebate<br /></span><span class="syntaxdefault">pts1</span><span class="syntaxkeyword">=[]<br /></span><span class="syntaxdefault">pts1</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]=</span><span class="syntaxdefault">ORIGIN<br />pts1</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">]=[</span><span class="syntaxdefault">SPACER</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault">pts1</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">]=[</span><span class="syntaxdefault">SPACER</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">SPACER</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault">pts1</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">3</span><span class="syntaxkeyword">]=[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">SPACER</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault">rebateFace</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">ents</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">add_face&nbsp;pts1<br />rebateFace</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">reverse</span><span class="syntaxkeyword">!().</span><span class="syntaxdefault">pushpull&nbsp;HEIGHT<br /><br /></span><span class="syntaxcomment">#define&nbsp;the&nbsp;bottom&nbsp;mortice&nbsp;slot&nbsp;corners<br /></span><span class="syntaxdefault">pts2</span><span class="syntaxkeyword">=[]<br /></span><span class="syntaxdefault">pts2</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]=[</span><span class="syntaxdefault">LEN</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">MORTICETHICKNESS</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">BOTTOMGAP</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault">pts2</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">]=[</span><span class="syntaxdefault">LEN</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">*</span><span class="syntaxdefault">MORTICETHICKNESS</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">BOTTOMGAP</span><span class="syntaxkeyword">]&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span class="syntaxdefault">pts2</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">]=[</span><span class="syntaxdefault">LEN</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">*</span><span class="syntaxdefault">MORTICETHICKNESS</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">BOTTOMGAP&nbsp;</span><span class="syntaxkeyword">+&nbsp;</span><span class="syntaxdefault">LEN</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault">pts2</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">3</span><span class="syntaxkeyword">]=[</span><span class="syntaxdefault">LEN</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">MORTICETHICKNESS</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">BOTTOMGAP&nbsp;</span><span class="syntaxkeyword">+&nbsp;</span><span class="syntaxdefault">LEN</span><span class="syntaxkeyword">]<br /></span><span class="syntaxcomment">#extrude&nbsp;the&nbsp;bottom&nbsp;mortice&nbsp;slot<br />#i&nbsp;would&nbsp;like&nbsp;this&nbsp;slot&nbsp;to&nbsp;cut&nbsp;through&nbsp;and&nbsp;subtract&nbsp;from&nbsp;the&nbsp;existing&nbsp;geometry<br /></span><span class="syntaxdefault">firstMorticeFace</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">pts2<br />firstMortice</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">ents</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">add_face&nbsp;pts2<br />firstMortice</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">reverse</span><span class="syntaxkeyword">!().</span><span class="syntaxdefault">pushpull&nbsp;LEN</span>
      
      1 Reply Last reply Reply Quote 0
      • TIGT Offline
        TIG Moderator
        last edited by

        A few things in no specific order...

        Don't redefine ORIGIN - it's already defined as a Point3d in SketchUp's cre-code - just use that.

        It's also a good idea to use model.active_entities in case the user is within a group/component edit when using the tool: it is ==model.entities if they are in the model anyway.

        All 'raw' numbers in SketchUp are taken as 'inches' anyway.
        So 1.75 is one and three-quarter inches.
        If you need to use mm use 126.mm to make something exactly 126 mm long - BUT SketchUp will 'recall' it in inches [~5"]. Read up in the API docs on the 'Numeric' class, which helps you swap between units and define Lengths etc, so inputting 123 in a dialog is taken as mm and shows as that even when SketchUp is converting it into inches for its own purposes...

        Learn how to wrap your code in a module/class etc and then 'call' it in a simple 'command' - there are several good tutorial threads in the SCF's Devs' Forum...

        If you have Pro you can use the Solid tools in the API - put simplistically you make two groups and subtract one from the other.
        However, it can be done if you think it through in something like your code...
        Think about using temporary groups to form parts which you then add/subtract and finally explode...

        There are already several similar tools around so you would do well to crib some ideas from them, rather than reinventing the wheel from scratch 😄

        Good luck in your endeavors...

        TIG

        1 Reply Last reply Reply Quote 0
        • C Offline
          crustybaps
          last edited by

          Thanks for the tips. Are there any tools you could recomend off hand or what terms I should search for add/subtract. I don't have pro version yet.

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

            Boolean / Oscoolean ?

            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