Welcome to the Onshape forum! Ask questions and join in the discussions about everything Onshape.

First time visiting? Here are some places to start:
  1. Looking for a certain topic? Check out the categories filter or use Search (upper right).
  2. Need support? Ask a question to our Community Support category.
  3. Please submit support tickets for bugs but you can request improvements in the Product Feedback category.
  4. Be respectful, on topic and if you see a problem, Flag it.

If you would like to contact our Community Manager personally, feel free to send a private message or an email.

Extrude separate adjacent shapes

emory_krall
emory_krall Member Posts: 15 PRO
Does anyone know of a way to extrude two or more adjacent sketch outlines as separate objects? I often need to do this and wind up making several separate extrude features, but it would be much quicker and simpler if there was a featurescript or something that would do it in one operation. 

Best Answer

Answers

  • philip_thomas
    philip_thomas Member, Moderator, Onshape Employees, Developers Posts: 1,381 image
  • owen_sparks
    owen_sparks Member, Developers Posts: 2,660 PRO
    edited September 2017
    I believe the op means regions that touch each other.  In the past we've floated the concept of extruding the carcass of a draw for example.  4 individual sides but currently we'd need two extrude features else OS will merge the sides together.

    Cheers, Owen S.
    Business Systems and Configuration Controller
    HWM-Water Ltd
  • philip_thomas
    philip_thomas Member, Moderator, Onshape Employees, Developers Posts: 1,381 image
    @owen_sparks - Yes - if two profiles touch or overlap today, they would be extruded as a single body. Ideas have been floated to introduce the concept of 'bodies' in sketching (allowing things like boolean operations), but the conversations have (so far) ended with "the limited benefits are outweighed by the large number of new concepts and features required". If you have any ideas on how to do this as simply as possible, we are all ears! :)
    Philip Thomas - Onshape
  • ilya_baran
    ilya_baran Onshape Employees, Developers, HDM Posts: 1,270 image
    @philip_thomas
    I think the op is just asking for a custom feature that will extrude each face of the input as a separate body.  Unfortunately I don't have time to hack this up at the moment...
    Ilya Baran \ VP, Architecture and FeatureScript \ Onshape Inc
  • philip_thomas
    philip_thomas Member, Moderator, Onshape Employees, Developers Posts: 1,381 image
    ^^^ @Jake_Rosenfeld - nice! But how does it work? :)
    Philip Thomas - Onshape
  • Jake_Rosenfeld
    Jake_Rosenfeld Moderator, Onshape Employees, Developers Posts: 1,646 image
    It does exactly what @emory_krall has already been doing! It just calls extrude separately for each selected profile (so no guarantees on performance). 
            var definitionForOp = definition;
            var count = 0;
            const relevantEntityField = definition.bodyType == ToolBodyType.SOLID ? "entities" : "surfaceEntities";
            for (var entity in evaluateQuery(context, definition[relevantEntityField]))
            {
                definitionForOp[relevantEntityField] = entity;
                
                // keep original id for first entity so that manipulators work
                var idForOp = (count == 0) ? id : (id + count);
                count += 1;
                
                extrude(context, idForOp, definitionForOp);
            }

    Basically make the user supply the same definition as extrude takes, then apply to each entity separately (with some id finagling).
    Some semantic sugar also:
    'definition.entities' is the same as 'definition["entities"]'
    ternary operator (var a = condition ? this : that): https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator
    Jake Rosenfeld - Modeling Team
  • philip_thomas
    philip_thomas Member, Moderator, Onshape Employees, Developers Posts: 1,381 image
    ^^^Nice! :)
    Philip Thomas - Onshape
  • owen_sparks
    owen_sparks Member, Developers Posts: 2,660 PRO
    Works perfectly, make it native please :)

    Thanks again @Jake_Rosenfeld

    For 10 points name another CAD company that will write you two new free features with 24 hours of asking...

    Cheers,

    Owen S.
    Business Systems and Configuration Controller
    HWM-Water Ltd
  • emory_krall
    emory_krall Member Posts: 15 PRO
    Thanks @Jake_Rosenfeld!!! This is perfect. It even extrudes up to a face which is how we would generally need to use it. Fantastic!
  • Jake_Rosenfeld
    Jake_Rosenfeld Moderator, Onshape Employees, Developers Posts: 1,646 image
     Hi All!

    Thanks for the kind words, glad I could help!  I've pushed a V2 with a very small fix that makes references to the created bodies more stable.

    There's also some weirdness with the "entities" box (you may notice all of your selected faces collapsing into one selection called "Missing of sketch X").  This should not be a huge problem as selections/deselections should act as usual in the graphics are.  We are investigating this as it seems like a systematic issue, hopefully it doesn't cause too much inconvenience. 
    Jake Rosenfeld - Modeling Team
  • MBartlett21
    MBartlett21 Member, OS Professional, Developers Posts: 2,064 PRO
    There's also some weirdness with the "entities" box (you may notice all of your selected faces collapsing into one selection called "Missing of sketch X").  This should not be a huge problem as selections/deselections should act as usual in the graphics are.  We are investigating this as it seems like a systematic issue, hopefully it doesn't cause too much inconvenience. 
    I had that same problem a while back, until I realised it was caused by the Id. :smile:
    mb - draftsman - also FS author: View FeatureScripts
    IR for AS/NZS 1100
  • Jake_Rosenfeld
    Jake_Rosenfeld Moderator, Onshape Employees, Developers Posts: 1,646 image
    @mbartlett21

    Yup, it's caused by the Id, but if I don't piggyback off the Id in that way, I'd have to do extra work to have the manipulators (or just not have them at all).
    Jake Rosenfeld - Modeling Team
  • paul_bunnell
    paul_bunnell Member Posts: 26 EDU

     Thank you @Jake_Rosenfeld! I'm using OnShape to make a stained glass window pattern (of all things) but as you might imagine, your script just saved me a ton of time!

  • Jake_Rosenfeld
    Jake_Rosenfeld Moderator, Onshape Employees, Developers Posts: 1,646 image

    Glad to help @paul_bunnell !

    Jake Rosenfeld - Modeling Team
  • robert_stiles
    robert_stiles Member Posts: 192 PRO

    exactly what I was looking for today… thanks @Jake_Rosenfeld