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.

Problem with a script that sometimes doesn't work

slomi_hutaslomi_huta Member Posts: 4


ok.png

If I create a point and run the script on it it doesn't work
And it only works on a point of a 3D object.

not ok.png


FeatureScript 2931;
import(path : "onshape/std/common.fs", version : "2931.0");

annotation { "Feature Type Name" : "lcdhole" }
export const lcdhole = defineFeature(function(context is Context, id is Id, definition is map)
precondition
{
annotation { "Name" : "Face", "Filter" : EntityType.FACE, "MaxNumberOfPicks" : 1 }
definition.face is Query;

    annotation { "Name" : "Point", "Filter" : EntityType.VERTEX, "MaxNumberOfPicks" : 1 }
    definition.corner is Query;

}
{
    var plane = evPlane(context, { "face" : definition.face });
    var cornerEntity = evaluateQuery(context, definition.corner)[0];
    var pt = worldToPlane(plane, evVertexPoint(context, { "vertex" : cornerEntity }));

    var sk1 = newSketchOnPlane(context, id + "sk1", { "sketchPlane" : plane });

    skPolyline(sk1, "rectLcd", {
                "points" : [
                    vector(pt[0] + 4.7 * millimeter, pt[1] - 36 * millimeter),
                    vector(pt[0] + 76.7 * millimeter, pt[1] - 36 * millimeter),
                    vector(pt[0] + 76.7 * millimeter, pt[1] - 11 * millimeter),
                    vector(pt[0] + 4.7 * millimeter, pt[1] - 11 * millimeter),
                    vector(pt[0] + 4.7 * millimeter, pt[1] - 36 * millimeter),

                ]
            });

    skSolve(sk1);
    opExtrude(context, id + "ex1", {
                "entities" : qSketchRegion(id + "sk1"),
                "direction" : -plane.normal,
                "endBound" : BoundingType.BLIND,
                "endDepth" : 5 * millimeter,
            });

    opBoolean(context, id + "bool1", {
                "tools" : qCreatedBy(id + "ex1", EntityType.BODY),
                "targets" : qOwnerBody(definition.face),
                "operationType" : BooleanOperationType.SUBTRACTION,
            });

});

Tagged:

Comments

  • NeilCookeNeilCooke Moderator, Onshape Employees Posts: 6,022 image

    Try

    var sketchPlane = evPlane(context, { "face" : definition.face });
    sketchPlane.origin = evVertexPoint(context, { "vertex" : corner });
    var sk1 = newSketchOnPlane(context, id + "sk1", { "sketchPlane" : sketchPlane });

    Senior Director, Technical Services, EMEA
  • slomi_hutaslomi_huta Member Posts: 4

    annotation { "Feature Type Name" : "lcdhole" }
    export const lcdhole = defineFeature(function(context is Context, id is Id, definition is map)
    precondition
    {
    annotation { "Name" : "Face", "Filter" : EntityType.FACE, "MaxNumberOfPicks" : 1 }
    definition.face is Query;

        annotation { "Name" : "Point", "Filter" : EntityType.VERTEX, "MaxNumberOfPicks" : 1 }
        definition.corner is Query;
    
    }
    {
        var sketchPlane = evPlane(context, { "face" : definition.face });
        sketchPlane.origin = evVertexPoint(context, { "vertex" : definition.corner });
    
        var sk1 = newSketchOnPlane(context, id + "sk1", { "sketchPlane" : sketchPlane });
         var cornerEntity = evaluateQuery(context, definition.corner)[0];
        var pt = worldToPlane(sketchPlane, evVertexPoint(context, { "vertex" : definition.corner }));
    
    
        skPolyline(sk1, "rectLcd", {
                    "points" : [
                        vector(pt[0] + 5 * millimeter, pt[1] - 5 * millimeter),
                        vector(pt[0] + 10 * millimeter, pt[1] - 5 * millimeter),
                        vector(pt[0] + 10 * millimeter, pt[1] - 10 * millimeter),
                        vector(pt[0] + 5 * millimeter, pt[1] - 10 * millimeter),
                        vector(pt[0] + 5 * millimeter, pt[1] - 5 * millimeter)
                    ]
                });
    
        skSolve(sk1);
        opExtrude(context, id + "ex1", {
                    "entities" : qSketchRegion(id + "sk1"),
                    "direction" : -sketchPlane.normal,
                    "endBound" : BoundingType.BLIND,
                    "endDepth" : 50 * millimeter,
                });
    
        opBoolean(context, id + "bool1", {
                    "tools" : qCreatedBy(id + "ex1", EntityType.BODY),
                    "targets" : qOwnerBody(definition.face),
                    "operationType" : BooleanOperationType.SUBTRACTION,
                });
    
    });
    

    Thank you very much for the response
    I really appreciate it
    But unfortunately the problem remains.
    When I cancel the BOLEAN it performs the EXTRUDE
    But with the BOLEAN it only performs a draw

    extrude.png bad.png
  • NeilCookeNeilCooke Moderator, Onshape Employees Posts: 6,022 image

    With the sketch plane origin set to the point, you don't need "cornerEntity" or "pt", your polyline will start at (0,0), therefore:

    "points" : [
    vector(5 , - 5) * millimeter,
    vector(10, - 5) * millimeter,
    vector(10, - 10) * millimeter,
    vector(5, - 10) * millimeter,
    vector(5, - 5) * millimeter
    ]

    (or use skRectangle)

    Not sure why the boolean fails, unless it does not intersect the solid? What is the error?

    Senior Director, Technical Services, EMEA
Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. Sign in or register to get started.