1. A computer-implemented method for solving geometric constraints between geometric entities in a drawing, comprising: accepting a request to move a child geometric entity in a plurality of geometric entities, the child geometric entity being geometrically constrained to at least one parent geometric entity in the plurality of geometric entities by a one-way constraint where the one-way constraint constrains changes to the child relative to the parent geometric entity but does not constrain changes to the parent geometric entity; identifying a set of affected geometric entities in the plurality of geometric entities that need to be repositioned or otherwise changed based on the request; classifying the set of affected geometric entities and any associated geometric constraints into a plurality of groups based on the geometric constraints and topologically ordering the groups according to directions of constraints between the groups; solving the groups according to the ordering using a variational geometric constraint solver to determine one or more updated attributes of the child geometric entity; determining that an updated attribute of the child geometric entity would, if updated, invalidate the one-way constraint with the parent geometric entity; and based on determining that the updated attribute of the child geometric entity would, if updated, invalidate the one-way constraint with the parent geometric entity, restricting movement of the child geometric entity, wherein accepting, identifying, classifying, solving and updating are performed by one or more computers.