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.

edge query to map

nathan_shaffernathan_shaffer Member Posts: 11 ✭✭

How do I get all of the lines for edges in a query?

evLine wants an edge, how do I unpack the query to feed into evLine?

annotation {"Name": "Edges","Filter" : EntityType.EDGE, "MaxNumberOfPicks" : 2 }
definition.edges is Query;

var lines = evLine(context, qEntityFilter (definition.edges, EntityType.EDGE));

Comments

  • EvanReeseEvanReese Member, Mentor Posts: 2,986 PRO

    You need to evaluate the query to make it into an array of queries with one edge each, then loop over the array and evLine each one. Here's an example.

        // Gets the edges of the selected face
        const edgesOfFace = qLoopEdges(definition.face);
        
        // Makes the one big query into an array of individual queries for just one edge each
        const edgesAsArray = evaluateQuery(context, edgesOfFace);
        
        // make an empty array to collect the lines from the loop
        var linesArray = [];
        
        // iterate over each edge
        for (var edge in edgesAsArray)
        {
            try
            {
                // evLine on only one entity
                const edgeLine = evLine(context, {
                        "edge" : edge
                });
                
                // Display the line and print it's contents to the FS notices panel
                debug(context, edgeLine, DebugColor.RED);
                
                // add this line to the array, so we have them all together once the loop is done.
                linesArray = append(linesArray, edgeLine);
            }
            // if the edge isn't a straight line, evLine fails and we run the catch statement.
            catch (error)
            {
                reportFeatureInfo(context, id, "Non-line edges ignored.");
            }
        }
    
    Evan Reese
    The Onsherpa | Reach peak Onshape productivity
    www.theonsherpa.com
Sign In or Register to comment.

Howdy, Stranger!

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