This paper develops a planner to find an optimal assembly sequence to assemble several objects. The input to the planner is the mesh models of the objects, the relative poses between the objects in the assembly, and the final pose of the assembly. The output is an optimal assembly sequence, namely (1) in which order should one assemble the objects, (2) from which directions should the objects be dropped, and (3) candidate grasps of each object. The proposed planner finds the optimal solution by automatically permuting, evaluating, and searching the possible assembly sequences considering stability, graspability, and assemblability qualities. It is expected to guide robots to do assembly using translational motion. The output provides initial and goal configurations to motion planning algorithms. It is ready to be used by robots and is demonstrated using several simulations and real-world executions.