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.

Why can't shell remove all the sides of a box and just leave the top and bottom? Bug or feature?

brad_phelanbrad_phelan Member Posts: 80 ✭✭


is good but add the back right side to the list and it fails.


I want to shell my surfboard profile and remove the side walls to generate the top and bottom skins. But because of the above limitation I can't seperate the top and bottom. I could #featurescript it but it seems an extravagence.

Tagged:

Best Answer

Answers

  • konstantin_shiriazdanovkonstantin_shiriazdanov Member Posts: 1,002 ✭✭✭✭✭
    why not to thicken top and bottom face with "new" option and delete the source body? possibly shell is not supposed to create new bodies
  • paul_chastellpaul_chastell Onshape Employees Posts: 117
    Yes indeed, @konstantin_shiriazdanov. Shelling will not split a part into two. 'Thicken' would likely achieve the intended result.

    Paul Chastell / VP of R&D / Onshape Inc.
  • brad_phelanbrad_phelan Member Posts: 80 ✭✭
    That will only work of the faces are 90 degrees. If the faces have an internal angle greater than 90 degrees you can't just subtract and get the same effect as shelling and removing all walls. It would create jaggy steps at the corners.

    You can see the effect here. This is the side view. The bottom floor has been thickened up normal to the surface. The white area is the resulting solid. It can't be subtracted cleanly from the large blue solid.

     

  • konstantin_shiriazdanovkonstantin_shiriazdanov Member Posts: 1,002 ✭✭✭✭✭
    then try boolean substract, you can set an offset to the particular faces of tool body
  • brad_phelanbrad_phelan Member Posts: 80 ✭✭
    With regards to the answers "Shelling will not split an object in two" I might add that OnShape could do better with diagnostic errors.



    Leaves the user puzzled as to what has gone wrong
  • brad_phelanbrad_phelan Member Posts: 80 ✭✭
    edited September 2017 Accepted Answer
    This can be solved with a combination of move face and boolean against the original shape



    I'll probably featurescript it up.

    The above solution is
    at 

    https://cad.onshape.com/documents/f10a4813ff92ed33c78811e0/w/c09220311df8c0606b87d4af/e/5f770e7e954ddd09414b3645
  • brad_phelanbrad_phelan Member Posts: 80 ✭✭
    Feature scripted

    function clone(context, query, id)
    {
        opPattern(context, id, {
                    "entities" : query,
                    "transforms" : [transform(vector(0, 0, 0) * inch)],
                    "instanceNames" : ["x"]
                }
            );
    }


    annotation { "Feature Type Name" : "Skin Face" }
    export const skinFaceFeature = defineFeature(function(context is Context, id is Id, definition is map)
        precondition
        {
            // Define the parameters of the feature type
            annotation { "Name" : "Face to skin", "Filter" : EntityType.FACE, "MaxNumberOfPicks" : 1 }
            definition.face is Query;

            annotation { "Name" : "Flip" }
            definition.flip is boolean;

            annotation { "Name" : "Thickness" }
            isLength(definition.thickness, LENGTH_BOUNDS);

            annotation { "Name" : "Keep object" }
            definition.keepObject is boolean;




        }
        {
            var solid = qOwnerBody(definition.face);

            var idTrans = id + "clone0";
            clone(context, solid, idTrans);

            if (definition.keepObject)
            {
                clone(context, solid, id + "clone1");
                //solid = dummyQuery(id + "clone1", EntityType.BODY);
            }

            var idMove = id + "FK4o00V6g8JW8BT_1";
            moveFace(context, idMove,
                    { "outputType" : MoveFaceOutputType.MOVE,
                        "moveFaces" : definition.face,
                        "surfacesAndFaces" : qUnion([]),
                        "moveFaceType" : MoveFaceType.OFFSET,
                        "direction" : qUnion([]),

                        "limitType" : MoveFaceBoundingType.BLIND,


                        "offsetDistance" : definition.thickness,
                        "oppositeDirection" : definition.flip,

                        "hasOffset" : false,
                        "offset" : definition.thickness,
                        "oppositeOffsetDirection" : definition.flip,
                        "reFillet" : false });


            opBoolean(context, id + "boolean1", {
                        "tools" : qCreatedBy(idTrans, EntityType.BODY),
                        "targets" : solid,
                        "operationType" : BooleanOperationType.SUBTRACTION

                    }
                );

            if (definition.keepObject)
            {

            }

        });

  • Jake_RosenfeldJake_Rosenfeld Moderator, Onshape Employees, Developers Posts: 1,566
    Hey Brad, Nice Job!

    The best way to share a Custom Feature is to write it in a public document (make sure to create a version when you're done) and copy/paste the link to that document.  That way other users who may want to use your feature can just open your document and add the feature to their toolbar like so:


    Jake Rosenfeld - Modeling Team
  • brad_phelanbrad_phelan Member Posts: 80 ✭✭
    Hey Brad, Nice Job!

    The best way to share a Custom Feature is to write it in a public document (make sure to create a version when you're done) and copy/paste the link to that document.  


    https://cad.onshape.com/documents/83f268820b92e08f4f30db06/w/ec7ac3c9e66d4c5dc475d388/e/e85455e9a0f5ab76faab2043
  • lougallolougallo Member, Moderator, Onshape Employees, Developers Posts: 1,798
    why not to thicken top and bottom face with "new" option and delete the source body? possibly shell is not supposed to create new bodies
    Or just thicken the top and bottom with the intersect option. 
    Lou Gallo / PD/UX - Support - Community / Onshape, Inc.
  • brad_phelanbrad_phelan Member Posts: 80 ✭✭
    lougallo said:
    why not to thicken top and bottom face with "new" option and delete the source body? possibly shell is not supposed to create new bodies
    Or just thicken the top and bottom with the intersect option. 

    As I have shown in answers above. This does not work if the angle between faces is not 90degrees. Move face is the solution.
Sign In or Register to comment.