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.

Options

Extruding with an offset on all 4 side

RyanAveryRyanAvery Member Posts: 93 EDU
edited April 2018 in Community Support
I want to extrude the 5 drawers selected here, but I want a 1/8th inch gap on top, left, bottom, and right 
So i dont want to extrude the squares I have selected, but rather the squares i have selected but each of them trimmed on all 4 sides by 1/8th inch. 
Is there an easy / fast way to do this? 

Answers

  • Options
    RyanAveryRyanAvery Member Posts: 93 EDU
    What about for extruding a set amount on all 4 sides of a box, the full depth of it. 
    I.e. a tool / FS that can do this to any cube that I select after I select the face of it (so it knows to extrude the 4 faces connected to that face) 

  • Options
    RyanAveryRyanAvery Member Posts: 93 EDU
    Is this something I should look into to writing a FS for? Or is that too much time? Would it be best to just stretch the boxes bigger with a copy, then boolean subtract the first from the copy? 
  • Options
    Jake_RosenfeldJake_Rosenfeld Moderator, Onshape Employees, Developers Posts: 1,646
    @RyanAvery

    If you want to try your hand at FeatureScript, this would be a pretty simple feature to write.  In moderate-pseudocode it breaks down to

    export const trimmedExtrude = defineFeature(function(context, id, definition)
        precondition
        {
            annotation{...} // <- Filter should probably be EntityType.FACE && GeometryType.PLANE
            definition.profiles is Query;
           
            annotation{...}
            isLength(definition.depth, LENGTH_BOUNDS);
    
            annotation{...}
            isLength(definition.trim, LENGTH_BOUNDS);
        }
        {
            // Find the extrudeDirection
            const dir = evFaceTangentPlane(..., {"face" : qNthElement(definition.profiles, 0)}).normal;
    
            //  Extrude the profiles
            opExtrude(context, id + "extrude", {
                         "entities" : definition.profiles,
                         "direction" : dir,
                         "endDepth" : definition.depth,
                         ...
                    });
    
            // Find the side faces
            const capEntities = qUnion([qCapEntity(id + "extrude", true, EntityType.FACE), qCapEntity(..., false, ...)]);
            const sideFaces = qSubtraction(qCreatedBy(id + "extrude", EntityType.FACE), capEntities);
    
            // Push the side faces in
            opOffsetFace(..., {
                        "moveFaces" : sideFaces,
                        "offsetDistance" : -definition.trim
                    });
        }, {};
    
    

    Jake Rosenfeld - Modeling Team
Sign In or Register to comment.