1. An off-line programming system which teaches a program to a robot which is provided with a tool which works a workpiece which is arranged in a work space, the off-line programming system comprising: a virtual space preparing unit which prepares a virtual space which expresses said work space three-dimensionally, a model arranging unit which arranges a workpiece model of said workpiece, a robot model of said robot, and a tool model of said tool in said virtual space which has been prepared by said virtual space preparing unit, an operation pattern storage unit which stores a plurality of types of the operation patterns which are comprised of consecutive paths which show cyclic operations of said tool, a three-dimensional shape storage unit which stores three-dimensional shapes which includes a curved surface and a three-dimensional shape which includes a consecutive plurality of flat surfaces, an operation pattern selecting unit which selects one type of operation pattern from said plurality of types of operation pattern which are stored in said operation pattern storage unit, a three-dimensional shape selecting unit which selects the three-dimensional shape which includes a curved surface or the three-dimensional shape which includes a consecutive plurality of flat surfaces from said three-dimensional shape storage unit, a three-dimensional shape arranging unit which fills in said curved surface or said consecutive plurality of flat surfaces of said three-dimensional shape which was selected by said three-dimensional shape selecting unit by one type of operation pattern which was selected by said operation pattern selecting unit and arranges said three-dimensional shape in said virtual space so that said operation patterns will be projected on at least one surface of said workpiece model, a working path preparing unit which projects said operation patterns which fill in said curved surface or said consecutive plurality of flat surfaces of said three-dimensional shape on said at least one surface of said workpiece model to prepare a working path of said tool, and a tool position/posture determining unit which uses said working path which was prepared by said working path preparing unit and a normal direction of said at least one surface of said workpiece model as the basis to automatically determine the position or position/posture of said tool model.