public NodeBuilder ApplyConstraint(List <Node> nodes, string constraintFunction) { var descriptor = ConstraintMapper.GetConstraintDescription(constraintFunction); if (descriptor.DependencyList.Count != nodes.Count) { return(new NodeBuilder(null)); } var result = new NodeBuilder(Document, constraintFunction); GetSoftConstraints(nodes); for (var index = 0; index < nodes.Count; index++) { result[index].Reference = nodes[index]; } result.ExecuteFunction(); result.Node.Set <TreeViewVisibilityInterpreter>(); var sourceNode = nodes[0]; var error = ImpactAndSolve(sourceNode); return(error != 0 ? new NodeBuilder(null) : result); }
public List <string> GetPossibleConstraints(IEnumerable <Node> selection) { var usedFunctions = GetUsedFunctions(selection); return(ConstraintMapper.AccessibleConstraints(usedFunctions)); }