Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E" title="Pro/E">Pro/E是美國(guó)參數(shù)化公司(PTC)研制的CAD/CAM軟件包,Pro/TOOLKIT是PTC公司專門提供的Pro/E二次開(kāi)發(fā)工具。在 Pro/TOOLKIT中,PTC向用戶提供了大型的C語(yǔ)言函數(shù)庫(kù),通過(guò)調(diào)用這些底層函數(shù),用戶能方便、安全地訪問(wèn)Pro/E的數(shù)據(jù)庫(kù)及內(nèi)部應(yīng)用程序,進(jìn)行二次開(kāi)發(fā),擴(kuò)展一些特定的功能。
1 系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)
從功能而言,系統(tǒng)各模塊只是對(duì)Pro/E的主要功能利用面向?qū)ο蟮乃枷胨鞯倪M(jìn)一步封裝,其目的在于簡(jiǎn)化人機(jī)交互的次數(shù),使系統(tǒng)更易于操作和學(xué)習(xí)。各模塊間的相互關(guān)系如圖1所示。
圖1 系統(tǒng)總體結(jié)構(gòu)圖
所有模塊均為各自獨(dú)立的Pro/TOOLKIT應(yīng)用程序,模塊間的通訊由Pro/TOOLKIT提供的接口函數(shù)實(shí)現(xiàn),相關(guān)參數(shù)的傳遞利用Pro/TOOLKIT函數(shù)和相關(guān)指針實(shí)現(xiàn)。
整個(gè)零件的設(shè)計(jì)和加工信息都存儲(chǔ)在Pro/E的數(shù)據(jù)庫(kù)中,由于Pro/E是基于單一數(shù)據(jù)庫(kù)的軟件系統(tǒng),因此在任一處的修改都將引起所有相關(guān)參數(shù)的變化,這使模型的修改非常方便。
當(dāng)系統(tǒng)在仿真環(huán)節(jié)發(fā)現(xiàn)問(wèn)題時(shí),用戶可以通過(guò)修改工藝設(shè)置或直接修改產(chǎn)品幾何模型,然后再經(jīng)仿真環(huán)節(jié)驗(yàn)證設(shè)計(jì)的合理性,在加工軌跡仿真結(jié)果符合設(shè)計(jì)要求之后,即可經(jīng)后處理模塊生成NC加工代碼。
2 各功能模塊的設(shè)計(jì)及其實(shí)現(xiàn)
2.1 造型模塊
該模塊的功能是實(shí)現(xiàn)零件的結(jié)構(gòu)設(shè)計(jì),其目標(biāo)在于生成一個(gè)存儲(chǔ)零件整體信息的文件。
該模塊的核心是建立特征庫(kù)。首先依據(jù)生產(chǎn)的實(shí)際情況,按照GT技術(shù)的方法對(duì)零件的結(jié)構(gòu)及加工條件進(jìn)行分析和歸納,最終確定特征的種類和數(shù)量。特征的分類如圖2所示。
圖2 特征分類圖
幾何特征的建立是采用Pro/E提供的用戶自定義特征功能實(shí)現(xiàn)的 [2,3]。對(duì)每個(gè)幾何特征的建立過(guò)程是類似的,即首先手工構(gòu)建產(chǎn)品模型,將要?jiǎng)?chuàng)建的特征附著在模型的上面,然后選擇菜單項(xiàng)進(jìn)行幾何特征的創(chuàng)建。一個(gè)幾何特征的定義中要包括參考基準(zhǔn)、可變尺寸及可變尺寸的記號(hào),通過(guò)在程序中修改可變參數(shù)的數(shù)值,即可獲得所需要的特征衍生件,在建模的過(guò)程中也可利用鼠標(biāo)點(diǎn)選標(biāo)注尺寸,利用尺寸驅(qū)動(dòng)技術(shù)修改這些參數(shù)。對(duì)非幾何特征則以特征碼的方式存放,最后將所有的特征以相同的格式(.gph)存放在同一根目錄下,形成特征庫(kù) (UDFLibrary),作為造型的基本工具。
在應(yīng)用中,首先利用特征庫(kù)進(jìn)行幾何型的建立,然后根據(jù)對(duì)各幾何特征加工要求的不同,將非幾何特征附加到各特征上,從而形成對(duì)零件信息的完整描述。在幾何特征和非幾何特征之間通過(guò)指針的方式實(shí)現(xiàn)通信。
模型的建立采用與Pro/E系統(tǒng)建模思想完全吻合的特征拼裝技術(shù)。首先選擇幾何模型的主特征,并以其作為整個(gè)模型的父特征,其余特征依次從特征庫(kù)中選取并附加到主特征上,形成模型的基本形狀;然后對(duì)各特征的可變尺寸根據(jù)設(shè)計(jì)要求進(jìn)行修改,完成零件的幾何模型的建立;最后,實(shí)現(xiàn)非幾何特征的附加。方法是:1)用鼠標(biāo)選取定制菜單中“添加非幾何特征”項(xiàng),彈出設(shè)置對(duì)話框并將其固定在桌面上;2)依次用鼠標(biāo)選取幾何特征,使它的相關(guān)指針項(xiàng)指向?qū)υ捒颍?)對(duì)對(duì)話框中各項(xiàng)參數(shù)進(jìn)行賦值,這個(gè)過(guò)程也即對(duì)選中特征相關(guān)參數(shù)的賦值。至此,零件的建模工作結(jié)束,將所有的設(shè)置以文件的方式存放在指定位置,作為 CAPP部分的輸入?yún)?shù)。
2.2 工藝處理模塊及加工仿真
工藝處理模塊的主要功能是CAM對(duì)系統(tǒng)加工參數(shù)的自動(dòng)獲取,其目標(biāo)是在加工仿真完成后生成刀位數(shù)據(jù)文件,以其作為后處理的輸入。其基本構(gòu)成及相互關(guān)系如圖3所示。
圖3 工藝處理模塊框圖
顯然,制造模型的建立是整個(gè)工作的起點(diǎn),首先制造模型建立模塊通過(guò)自身的指針函數(shù)讀取造型模塊所產(chǎn)生的文件,然后根據(jù)毛坯選擇規(guī)則庫(kù)的相關(guān)規(guī)則自動(dòng)從毛坯庫(kù)中選取毛坯,并自動(dòng)完成制造模型的建立,從而實(shí)現(xiàn)了制造模型建立的完全自動(dòng)化操作。
工藝規(guī)劃為該部分的核心,也是整個(gè)二次開(kāi)發(fā)的難點(diǎn)所在。鑒于Pro/E系統(tǒng)本身缺乏CAPP的信息集成,用戶對(duì)各加工特征的設(shè)定、加工方法的選擇、刀具的選擇、切削參數(shù)的設(shè)定等均需人機(jī)交互完成,這些操作對(duì)操作人員的要求高、交互復(fù)雜,是限制Pro/E的CAM功能廣泛應(yīng)用的主要原因之一,為此,系統(tǒng)提出了如下的解決方案。
首先用交互的方式輸入工藝裝備信息,如夾具、機(jī)床信息等。然后進(jìn)入推理環(huán)節(jié),推理步驟為:1)讀取造型文件,根據(jù)針對(duì)每個(gè)特征所建立的工藝推理規(guī)則自動(dòng)產(chǎn)生每個(gè)特征加工的工序;2)結(jié)合制造模型的輸出信息,自動(dòng)對(duì)所有特征的加工工序進(jìn)行整合和排序,生成整個(gè)零件加工的刀位文件。其中,在推理環(huán)節(jié)完成粗加工、半精加工、精加工等各工序的加工參數(shù)、刀具選擇、切削參數(shù)的確定,在排序過(guò)程中確定加工的退刀面、走刀方式和進(jìn)退刀方式、走刀次數(shù)等。將推理的結(jié)果輸入Pro/NC CHECK模塊進(jìn)行刀具軌跡的仿真,以檢查設(shè)置是否合理,是否出現(xiàn)干涉等情況。用戶可以通過(guò)修改幾何模型或修改加工參數(shù)的設(shè)置使仿真結(jié)果更符合設(shè)計(jì)要求。在仿真結(jié)果滿足加工要求后,即生成最終的刀位文件。
2.3 后處理
利用Pro/E的后處理功能模塊,將刀位文件轉(zhuǎn)化為機(jī)床能夠識(shí)別的NC代碼。
3 用戶界面的開(kāi)發(fā)
因?yàn)镻ro/E一直是以工作站的UNIX作為開(kāi)發(fā)和使用環(huán)境,所以界面風(fēng)格更類似于XWINDOWS,而不像AutoCAD那樣與Windows 風(fēng)格完全一致,同時(shí)Pro/E提供的對(duì)話框控件也非常有限。為此,系統(tǒng)采用VC++6.0的MFC類庫(kù)對(duì)用戶界面進(jìn)行二次開(kāi)發(fā)[1,3],同時(shí)也利用 VC++開(kāi)發(fā)相關(guān)的數(shù)據(jù)庫(kù),開(kāi)發(fā)的實(shí)質(zhì)是在Pro/E系統(tǒng)中調(diào)用MFC應(yīng)用程序。在開(kāi)發(fā)中使用動(dòng)態(tài)連接庫(kù)(DLL)方式實(shí)現(xiàn)Pro/E系統(tǒng)、Pro /TOOLKIT應(yīng)用程序、MFC應(yīng)用程序三者之間的通信,因?yàn)橥ㄐ攀峭ㄟ^(guò)直接調(diào)用函數(shù)實(shí)現(xiàn)的,故有執(zhí)行速度快的特點(diǎn)[4]。三者之間的相互關(guān)系如圖4所示。
圖4 Pro/TOOLKIT與MFC連接的示意圖
在系統(tǒng)中為每個(gè)Pro/TOOLKIT應(yīng)用程序都開(kāi)發(fā)了對(duì)話框界面,在應(yīng)用程序加載到Pro/E系統(tǒng)后,點(diǎn)擊定制菜單項(xiàng)即可調(diào)用二次開(kāi)發(fā)模塊及其界面,從而使設(shè)計(jì)過(guò)程更加符合設(shè)計(jì)人員的思維習(xí)慣。
4 實(shí)例
為說(shuō)明系統(tǒng)的運(yùn)行情況,制作了一個(gè)階梯軸的例子,這樣的階梯軸由形狀特征(圓柱體和圓錐體)經(jīng)過(guò)多次調(diào)用拼裝而成,造型過(guò)程不再論述。在修改過(guò)程中,通過(guò)添加不同的非幾何特征,可以得到不同的加工方案,其運(yùn)行框圖如圖5所示。
圖5 零件加工流程圖
5 結(jié)論
在充分利用Pro/E系統(tǒng)提供的資源的情況下,應(yīng)用Pro/E提供的二次開(kāi)發(fā)工具Pro/TOOLKIT以及VC++6.0集成開(kāi)發(fā)環(huán)境實(shí)現(xiàn)了 CAD/CAPP/CAM的集成,簡(jiǎn)化了Pro/E系統(tǒng)CAM模塊的操作,為專用CAD/CAPP/CAM的集成研究提供了一定的經(jīng)驗(yàn)。
致謝:本文得到蘭州理工大學(xué)特色研究方向基金的資助,在此表示感謝。
參考文獻(xiàn):
[1] Kruglinski DJ. Visual C++6.0 技術(shù)內(nèi)幕[M]。北京:希望電子出版社,1998.
[2] 黃圣杰,張益三.Pro/Engineer 2001高級(jí)開(kāi)發(fā)實(shí)例[M]。北京:電子工業(yè)出版社,2002.
[3] 賴朝安,李振南,孫延明,等.Pro/E二次開(kāi)發(fā)的關(guān)鍵技術(shù)[J].機(jī)械設(shè)計(jì)與制造,2001,(1):43 45.
[4] 鐘建琳.Pro/Engineer數(shù)控加工實(shí)用教程[M].北京:機(jī)械工業(yè)出版社,2002.
[5] 王 政,黨軍峰,許文濤.基于Pro/E的WFCAD系統(tǒng)菜單的開(kāi)發(fā)[J].甘肅工業(yè)大學(xué)學(xué)報(bào),2003,29(1):26 28.
[6] 胡赤兵,閻樹(shù)田,鄔再新.齒輪加工參數(shù)自動(dòng)編程[J].機(jī)械工藝師,1998,(7):18 19.
[7] 楊 萍,張淑珍,李鶴岐,等.基于Pro/E軟件平臺(tái)的混流式水輪機(jī)轉(zhuǎn)輪葉片形狀擬合及實(shí)體模型的建立[J].機(jī)械設(shè)計(jì)與制造,2002,(6):62 63.