A new graph grammar based reasoning is proposed to reason about the manufacturability of 3D solid models. The knowledge captured in the graph grammar rules serves as a virtual machinist in its ability to recognize arbitrary geometries and match them to various machining operations. For a given part, its 3D CAD geometry is first decomposed into multiple subvolumes, where each is assumed to be machined in one operation. The decomposed part is then converted into a graph so that the graph-grammar rules can perform further reasoning and determine the machining details. A candidate plan is a feasible sequence of all of the necessary machining operations needed to manufacture this part. For each operation, the rules determine the face on the part that the tool enters, the type of tools used, the type of machine used, and how the part is fixed within the machine. If a given geometry is not machinable, the rules will fail to find a complete manufacturing plan for all of the subvolumes. As a result of this reasoning, designers can quickly get insights into how a part can be made and how it can be improved (e.g., change features to reduce time and cost) based upon the feedback of the rules. A variety of tests on this algorithm on both simple and complex engineering parts show its effectiveness and efficiency.