Welcome to the Onshape forum! Ask questions and join in the discussions about everything Onshape.
First time visiting? Here are some places to start:- Looking for a certain topic? Check out the categories filter or use Search (upper right).
- Need support? Ask a question to our Community Support category.
- Please submit support tickets for bugs but you can request improvements in the Product Feedback category.
- 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_huta
Member Posts: 4 ✭
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.
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,
});
});


Comments
Try
var sketchPlane = evPlane(context, { "face" : definition.face });
sketchPlane.origin = evVertexPoint(context, { "vertex" : corner });
var sk1 = newSketchOnPlane(context, id + "sk1", { "sketchPlane" : sketchPlane });
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
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?