<p>Welcome to the Onshape forum! Ask questions and join in the discussions about everything Onshape.</p></p><strong>First time visiting? Here are some places to start:</strong></p><ol style="list-style:inherit;margin-left:25px;"><li>Looking for a certain topic? Check out the <a href="https://forum.onshape.com/categories">categories filter</a> or use Search (upper right).</li><li>Need support? <a href="https://forum.onshape.com/post/question/community-support">Ask a question</a> to our <a href="https://forum.onshape.com/categories/community-support">Community Support</a> category.</li><li>Please submit support tickets for bugs but you can request improvements in the <a href="https://forum.onshape.com/categories/product-feedback">Product Feedback category</a>.</li><li>Be respectful, on topic and if you see a problem, Flag it.</li></ol><p>If you would like to contact our Community Manager personally, feel free to <a href="https://forum.onshape.com/profile/6/LouGallo">send a private message</a> or <a href="mailto:lgallo@onshape.com">an email</a>.
</p>

Can points be added to an existing sketch with feature script?

ron_moreland
ron_moreland Member Posts: 99 ✭✭✭
edited January 2018 in Community Support
I want to add functionally derived points to a sketch to use as anchors. Can I do this with feature script?

In a way I'm asking to create a custom constraint.

Best Answer

Answers

  • ron_moreland
    ron_moreland Member Posts: 99 ✭✭✭
    That's what I thought. Thanks
  • ron_moreland
    ron_moreland Member Posts: 99 ✭✭✭
    BTW, Can you now create arbitrary points in 3 space, or do you need to create multiple sketches?
  • konstantin_shiriazdanov
    konstantin_shiriazdanov Member Posts: 1,221 ✭✭✭✭✭
    opPoint() creates a point in 3d, or you can create a sketch with a number of points by skPoint(), but all of them will be in one plane.
  • ron_moreland
    ron_moreland Member Posts: 99 ✭✭✭
    edited January 2018
    I am having trouble with this code:
       var fPoints is array = [];
            var L = 10.0;
            var CL = L;
            var Rule = 1.0 ;
            for (var i = 0; i < definition.numberOfF; i += 1)
            {
                fPoints = append(fPoints,vector(0,CL*inch));
                CL = CL/Rule;
            }
            
            skPolyline(sketch1, "polyline1", {
                        "points" : fPoints
                    });
    I'm getting "Precondition of skPolyline failed (is2dPointVector(value.points))" in the error window.
    Can you see the 
    problem? I suspect I need to declare a vector array, but I don't know how to do that.
  • konstantin_shiriazdanov
    konstantin_shiriazdanov Member Posts: 1,221 ✭✭✭✭✭
    you should use following syntax to generate array of 2d point coordinates
    point = vector(0, CL) * inch;
    fPoints = append(fPoints, point);
    but "point" should depend on loop index "i", or you would obtain array of one the same point "vector(0, CL) * inch"
    and one more thing - to add geometry to 2d sketch you need to initialize the sketch first by means of mySk = newSketch() or mySk = newSketchOnPlane() functions and after the geometry added sketch should be solved by skSolve(mySk)

  • ron_moreland
    ron_moreland Member Posts: 99 ✭✭✭
    Thanks, I just posted this same question as a new post. I'll set it as asked/answered.
  • ron_moreland
    ron_moreland Member Posts: 99 ✭✭✭
    That worked! Why did the point have to be created outside the append?
  • ilya_baran
    ilya_baran Onshape Employees, Developers, HDM Posts: 1,274 image
    It didn't -- the key change is that the multiplication by inch is outside the vector -- otherwise you get a vector with one component a number and one component a length.
    Ilya Baran \ VP, Architecture and FeatureScript \ Onshape Inc
  • ron_moreland
    ron_moreland Member Posts: 99 ✭✭✭
    OH! Number != Length... got it
  • ron_moreland
    ron_moreland Member Posts: 99 ✭✭✭
    I just posted another question that I stuck on. Do you have time to look at it?