In this paper, a new graph grammar representation is proposed to reason about the manufacturability of 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 machine operations. Firstly, a given part is decomposed into multiple sub-volumes, where each sub-volume is assumed to be machined in one operation or to be non-machinable. The decomposed part is converted into a graph so that graph grammar rules can determine the machining details. For each operation, 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. A candidate plan is a feasible sequence of all of the necessary machining operations needed to manufacture this part. If a given geometry is not machinable, the rules will fail to find operations for all of the partitions.
As a result of this representation, 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). A variety of tests of this algorithm on both simple and complex engineering parts show its effectiveness and efficiency.