Graphical display and data structure for virtual prototyping

253 2 0
Graphical display and data structure for virtual prototyping

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Louisiana Tech University Louisiana Tech Digital Commons Doctoral Dissertations Graduate School Spring 1999 Graphical display and data structure for virtual prototyping David William Manry Louisiana Tech University Follow this and additional works at: https://digitalcommons.latech.edu/dissertations Part of the Computer Sciences Commons, Industrial Engineering Commons, and the Mechanical Engineering Commons Recommended Citation Manry, David William, "" (1999) Dissertation 165 https://digitalcommons.latech.edu/dissertations/165 This Dissertation is brought to you for free and open access by the Graduate School at Louisiana Tech Digital Commons It has been accepted for inclusion in Doctoral Dissertations by an authorized administrator of Louisiana Tech Digital Commons For more information, please contact digitalcommons@latech.edu INFORMATION TO USERS This manuscript has been reproduced from the microfilm master UMI films the text directly from the original or copy submitted Thus, some thesis and dissertation copies are in typewriter face, while others may be from any type of computer printer The quality of this reproduction is dependent upon the quality o f the copy subm itted Broken or indistinct print, colored or poor quality illustrations and photographs, print bleedthrough, substandard margins, and improper alignment can adversely affect reproduction In the unlikely event that the author did not send UMI a complete manuscript and there are missing pages, these will be noted Also, if unauthorized copyright material had to be removed, a note will indicate the deletion Oversize materials (e.g., maps, drawings, charts) are reproduced by sectioning the original, beginning at the upper left-hand comer and continuing from left to right in equal sections with small overlaps Each original is also photographed in one exposure and is included in reduced form at the back of the book Photographs included in the original manuscript have been reproduced xerographically in this copy Higher quality 6” x 9” black and white photographic prints are available for any photographs or illustrations appearing in this copy for an additional charge Contact UMI directly to order Bell & Howell Information and Learning 300 North Zeeb Road, Ann Arbor, Ml 48106-1346 USA 800-521-0600 R ep ro d u ced with p erm ission o f the copyright ow ner Further reproduction prohibited w ithout p erm ission R ep ro d u ced with p erm ission o f the copyright ow ner Further reproduction prohibited w ithout p erm ission GRAPHICAL DISPLAY AND DATA STRUCTURE FOR VIRTUAL PROTOTYPING by David William Manry, B.S., M.S A Dissertation Presented in Partial Fulfillment o f the Requirements for the Degree Doctor of Engineering COLLEGE OF ENGINEERING AND SCIENCE LOUISIANA TECH UNIVERSITY May 1999 R ep ro d u ced with p erm ission o f the copyright ow ner Further reproduction prohibited w ithout p erm ission UMI Number: 9926466 Copyright 1999 by Manry, David William All rights reserved UMI Microform 9926466 Copyright 1999, by UMI Company All rights reserved This microform edition is protected against unauthorized copying under Title 17, United States Code UMI 300 North Zeeb Road Ann Arbor, MI 48103 R ep ro d u ced with p erm ission o f the copyright ow ner Further reproduction prohibited w ithout p erm ission LOUISIANA TECH UNIVERSITY THE GRADUATE SCHOOL May 5, 1999 Date We by hereby recommend that the thesis prepared under our supervision D avid W illiam Manry _ entitled Graphical Display and Data Structure for Virtual Prototyping be accepted in partial fulfillm ent of the requirements for the Degree of _Doctor o f Engineering _ Supervisor o _ Head of department Mechanical Engineering Department R p m m r r ^ f lr ia tin n rrm j in: Advisory Committee ived: Director jaf Graduate Studies Approved: Director o f the Graduate School 'of the College GS Form 13 2/97 R ep ro d u ced with p erm ission o f th e copyright ow ner Further reproduction prohibited w ithout perm ission ABSTRACT One of the goals o f engineering firms is to bring better products to market faster Although concurrent engineering can aid in this endeavor, it requires that all areas of an organization work simultaneously Thus, current product data must be accessible to everyone Virtual prototyping allows this simultaneous exchange o f information Virtual prototyping not only replaces the physical model in product development with a virtual model, but also it goes further by allowing data associated with each part of the model to be accessed This data is not limited to just geometric properties but could contain other quantifiable properties, such as materials, features, and manufacturing notes Later in the design process, the virtual model could be used for checking for interferences and stresses or for running simulations The research presented in this dissertation outlines the development of software that provides a foundation for developing virtual prototyping software at Louisiana Tech University Microsoft Visual C++ and the Microsoft Foundation Class library are utilized for developing this Windows98 application OpenGL is used as the software interface to the graphics hardware Although C++ is used in writing most of the source code, C has to be used when interfacing with OpenGL to display the solid models iii R ep ro d u ced with p erm ission o f the copyright ow ner Further reproduction prohibited w ithout p erm ission A linked list is used as the data structure for storing the individual objects Geometric information is stored for each object, but the structure is flexible and extensible so that other information, such as features and functions, can be added in the future To relate one object to another, a hierarchical tree has been implemented This tree structure allows the user to specify the “parent-child” relationships that exist in the model Several different file formats are available to the user o f the software to save and retrieve the objects contained in the model Foremost o f these formats is the DXF format that allows the exchange of data between different graphics packages Importing DXF files into the application is the typical means of adding objects to the model The sequential format provided in the serialization process o f the Microsoft Foundation Class library allows for saving both object and hierarchy data iv R ep ro d u ced with p erm ission o f the copyright ow ner Further reproduction prohibited w ithout p erm ission TABLE OF CONTENTS Page ABSTRACT iii LIST OF FIGURES vii ACKNOWLEDGMENTS ix Chapter INTRODUCTION Research Need Objectives .3 M ethodology Accomplishments Summary o f Contents LITERATURE REVIEW M ETHODOLOGY 10 Overview 10 Microsoft Visual C + + 11 OpenGL 11 ASCII Drawing Interchange Files 12 Part Functionality F ile s 14 Relationship Files 14 Definition F ile s 16 Translation and Rotation of O bjects 18 Translation o f Objects 18 Rotation about a General Axis .19 Data Structure 22 SOFTWARE OVERVIEW 25 Graphical User Interface 25 File M en u 26 Edit M e n u .29 View Menu 30 V R ep ro d u ced with p erm ission o f the copyright ow ner Further reproduction prohibited w ithout p erm ission Chapter Page Object Menu 32 Hierarchy M e n u 39 Disassembly Menu 42 Assembly M e n u 47 Animation M en u 48 Help M e n u 50 Lighting 50 5.CONCLUSIONS AND RECOMMENDATIONS 52 Conclusions 52 Recommendations 53 APPENDIX PROGRAMMING NOTES AND PROGRAM LISTINGS 56 REFERENCES .277 V IT A 279 vi R ep ro d u ced with p erm ission o f the copyright ow ner Further reproduction prohibited w ithout p erm ission 263 { g lLineWidth(5.O f ); glPushMatrix(); glDisable(GL_LIGHTING); g l B e g i n (GL_LINES); glColor3f(0.O f , Of, Cl.O f) ; glNormal3f(l.Of, l.Of, Of) ; glVertex3f(0 Of, glVertex3f(4.O f , glVertex3f(O.Of, glVertex3f(O.Of, glVertex3f(O.Of, glVertex3f(O.Of, glEndO ; O.Of, O.Of, O.Of, Of, O.Of, O.Of, Of) Of) Of) Of) Of) ; ; ; ; ; Of) ; glColor3fv(white); glNorm a l f (1.Of , Of, Of ); glRasterPos3f(4.Of, O.Of, Of) printString("X-axis ") ; glRasterPos3f(O.Of, Of, Of) printString("Y-axis ") ; glRasterPos3f(0.O f , O.Of, Of) printString("Z-axis ") ; t r r glEnable(GL_LIGHTING); g lPopMatrix(); } void SetupRC(void) { GLfloat mat ambient [] = (1 Of, l.Of, GLfloat mat specular[] = {1 Of, l.Of, GLfloat mat diffuse [] = (1 Of, l.Of, GLfloat mat_shininess[] = {100.Of}; GLfloat light_positionO[]= {-5.Of, 5.Of, 5.Of, Of} GLfloat light_positionl[]= {-5.Of, 5.Of, -5.Of, 1, Of} GLfloat light_position2[]= { 5.Of, -5.Of, 5.Of, 1, Of} GLfloat light_position3[]= { 5.Of, -5.Of, -5.Of, Of} GLfloat lmodel_ambient[] = {0.2f, 0.2f, 0.2f, l.Of}; glMaterialfv(GL_FRONT, glMaterialfv(GL_FRONT, glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); GL_SPECULAR, mat_specular); GL_DIFFUSE, mat_diffuse); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glLightfv(GL_LIGHT0, GL_POSITION, light_positionO); glLightfv(GL_LIGHT1, GL_POSITION, light_positionl); glLightfv(GL_LIGHT2, GL_POSITION, light_position2); glLightfv(GL_LIGHT3, GL_POSITION, light_position3); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glEnable(GL_LIGHT1); R ep ro d u ced with p erm ission o f the copyright ow ner Further reproduction prohibited w ithout p erm ission 264 glEnable(GL_LIGHT2) ; glEnable(GL_LIGHT3) ; glDepthFunc(GL_LEQUAL); glEnable(GL_DEPTH_TEST); glClea r C o l o r (0.O f , O.Of, glShadeModel(GL_FLAT); ma k e R a s t e r F o n t (); O.Of, O.Of); void DrawViewVolume(GLdouble xl, GLdouble x2, GLdouble yl, GLdouble y2, GLdouble zl, GLdouble z2) { g l L i n e W i d t h (5.O f ); glPushM a t r i x (); glDisable(GL_LIGHTING); glBegin(GL_LINE_LOOP); gl C o l o r f (1.Of, l.Of, O.Of); gl N o r m a l f (1.O f , l.Of, l.Of); glVertex3d(xl, yl, -zl) ; glVertex3d(x2, yl, -zl); glVertex3d(x2, y2, -z l ) ; glVertex3d(xl, y2, -zl) ; g l E n d (); glBegin(GL_LINE_LOOP); glColor3f(O.Of, l.Of, l.Of); glNorm a l f (1.O f , l.Of, l.Of); glVertex3d(xl, yl, -z2) glVertex3d(x2, yl, -z2) glVertex3d(x2, y2, -z2) glVertex3d(xl, y2, -z2) g l E n d (); glEnable(GL_LIGHTING); g l P o p M a t r i x (); void Render S c e n e () { GLfloat dl[3], d2[3], norm[3] GLfloat mat ambient2[][3] = { {O.Of, O.Of , O.Of} / {0.33f, 0.33f, 0.33f}, {0.67f, 67f , 67f}, {1 -Of, l.Of, l.Of}, // {1 -Of, O.Of, O.Of}, // {O.Of, l.Of, O.Of}, // {O.Of, O.Of, l.Of}, // {O.Of, l.Of, l.Of}, // {l.Of, O.Of, l.Of}, // {l.Of, l.Of, O.Of}, // {l.Of, 5f, f }, // {0 f , l.Of, f }, // { 5f, 5f, l.Of}, // { f , l.Of, l.Of}, // // black // grayDa // grayLi white red green blue cyan magenta yellow pink greenLight blueLight cyanLight R ep ro d u ced with p erm ission o f the copyright ow ner Further reproduction prohibited w ithout p erm ission >face[i >face[i >face[i >face[i >face[i >face[i >face[i >face[i >face[i >face[i >face[i >face[i glBegin(GL_POLYGON); glVertex3f( (float) anotherObject.vert e x [0 ].coordinates[0 ], (float) anotherObject.vert e x [0 ].coordinates[1 ], (float) anotherObject.vertex[ ].coordinates[2 ]); glVertex3f( (float) anotherObject.ver t e x [1 ].coordinates[0 ], (float) anotherObject.ver t e x [1 ].coordinates[1 ], (float) anotherObject.ver t e x [1 ].coordinates[2 ]); glVertex3f((float) anotherObject.v e r t e x [2 ].coordinates[0 ], (float) anotherObject.vertex[2 ].coordinates[1 ], (float) anotherObject.ver t e x [2 ].coordinates[2 ]); glVertex3f((float) anotherObject.ver t e x [3] coordinates [0 ], (float) anotherObject.ver t e x [3].coordinates[1 ], (float) anotherObject.ver t e x [3].coordinates[2]); g l E n d (); ) glLoadName(anotherObject->number); } anotherObject = anotherObject->next; ji glPopMatrix(); glPopMatrix(); g l F l u s h (); auxSwapBuffers() ; } void void void void angleYSubtract(void) ; angleYAdd(void) ; angleXSubtract(void); angleXAdd(void); void angleYSubtract(void) { angleY = (angleY - 5) % 360; } void angleYAdd(void) { angleY = (angleY + ) } % 360; R ep ro d u ced with p erm ission o f th e copyright ow ner Further reproduction prohibited w ithout perm ission void angleXSubtract(void) { angleX = (angleX - 5) % 360; } void a n g l e X A d d (void) { angleX = (angleX + ) % 360; } void angleReset(void) { angleX = ORIG_ANGLE_X; angleY = ORIG_ANGLE_Y; } void cameraAngleYSubtract(void) { cameraAngleY' = (cameraAngleY - 5) % 360; } void cameraAngleYAdd(void) { cameraAngleY = (cameraAngleY + 5) % 360; } void cameraAngleXSubtract(void) { cameraAngleX = (cameraAngleX - 5) % 60; ) void cameraAngleXAdd(void) { cameraAngleX = (cameraAngleX + 5) % 60; } void cameraAngleReset(void) { cameraAngleX = ORIG_CAMERA_ANGLE_X; cameraAngleY = ORIG_CAMERA_ANGLE_Y; } double CameraTranslation(void) { return (float) CameraTranslation; } void SetCameraTranslation(double newValue) { CameraTranslation = newValue; return; } BOOL GetAxe s F l a g (void) R ep ro d u ced with p erm ission o f the copyright ow ner Further reproduction prohibited w ithout p erm ission 268 return axesLabelFlag; } void SetAxesFlag(BOOL flagValue) { axesLabelFlag = flagValue; } BOOL GetViewingVolumeFlag(void) { return viewingVolumeFlag; } void SetViewingVolumeFlag(BOOL flagValue) { viewingVolumeFlag = flagValue; R ep ro d u ced with p erm ission o f the copyright ow ner Further reproduction prohibited w ithout p erm ission 270 END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////// //////// // CVPView construction/destruction C V PView::C V P V i e w () { // TODO: add construction code here } C V PView::~CVPView() { } BOOL CVPView::PreCreateWindow(CREATESTRUCT& c s ) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs // Add Window styles required for OpenGL before window is created cs.style |= (WS_CLIPCHILDREN | WS_CLIPSIBLINGS I CS_OWNDC); return C V i e w : :PreCreateWindow(cs); } ///////////////////////////////////////////////////////////////////// //////// // CVPView drawing void CVPView::OnDraw(CDC* pDC) { // TODO: add draw code for native data here // Make the rendering context current wglMakeCurrent(m_hDC,m_hRC); // Call our external OpenGL code GLRenderScene(NULL); // Swap our scene to the front SwapBuffers(m_hDC); // Allow other rendering contexts to co-exist wglMakeCurrent(m_hDC,NULL); } ///////////////////////////////////////////////////////////////////// //////// // CVPView printing BOOL CVPView::OnPreparePrinting(CPrintlnfo* plnfo) { // default preparation return DoPreparePrinting(plnfo) ; R ep ro d u ced with p erm ission o f th e copyright ow ner Further reproduction prohibited w ithout perm ission 271 void CVPView::OnBeginPrinting(CDC* /*pDC*/, CPrintlnfo* /*pInfo*/) { // TODO: add extra initialization before printing void CVPView::OnEndPrinting(CDC* /*pDC*/, { // TODO: add cleanup after printing CPrintlnfo* /*pInfo*/) // / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / //////// // CVPView diagnostics tifdef _DEBUG void CVPView::AssertValid () const { CView::AssertValid() ; void C V P V i e w : :Dump(CDumpContext& dc) const { CView::Dump(dc); CVPDoc* CVPView::GetDocument() // non-debug version is inline { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CVPDoc) ) ) ; return (CVPDoc*)m_pDocument; } #endif //_DEBUG ///////////////////////////////////////////////////////////////////// //////// // CVPView message handlers int C V P View::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -I; // TODO: Add your specialized creation code here int nPixelFormat; // Pixel format index m_hDC = ::GetDC(m_hWnd); // Get the Device context static PIXELFORMATDESCRIPTOR pfd = { sizeof(PIXELFORMATDESCRIPTOR) , // Size of this structure 1, // Version of this structure PFD_DRAW_TO_WINDOW | // Draw to Window (not tobitmap) PFD_SUPPORT_OPENGL | // Support OpenGL calls in window PFD_DOUBLEB(JFFER, // Double buffered mode PFD TYPE RGBA, // RGBA Color mode R ep ro d u ced with p erm ission o f the copyright ow ner Further reproduction prohibited w ithout p erm ission 272 24, o o o o < o o o ,0 , ,0 , ,0 , O *» o 32, 0, 0, PFD _MAIN_PLANE, 0, o }; // Want 24bit color // Not used to select mode // Not used to select mode // Not used to select mode // Size of depth buffer // Not used to select mode // Not used to select mode // Draw in main plane // Not used to select mode // Not used to select mode // Choose a pixel format that best matches that described in pfd nPixelFormat = ChoosePixelFormat(m_hDC, &pfd); // Set the pixel format for the device context VERIFY(SetPixelFormat(m_hDC, nPixelFormat, &pfd)); // Create the rendering context m_hRC = wglCreateContext(m_hDC) ; // Make the rendering context current, perform initialization, then // deselect it VERIFY(wglMakeCurrent(m_hDC,m_hRC) ) ; GLSetupRC(m_hDC); wglMakeCurrent(NULL,NULL) ; // Create the palette if needed InitializePalette(); return ; void C V P View::OnDestroy() { // TODO: Add your message handler code here // Clean up rendering context stuff wglDeleteContext(m_hRC); ::ReleaseDC(m_hWnd,m_hDC) ; C V i e w : :OnDestroy(); void C V P View::OnSize(UINT nType, int cx, int cy) { CView::OnSize(nType, cx, cy) ; // TODO: Add your message handler code here VERIFY(wglMakeCurrent(m_hDC,m_hRC)); GLResize(cx, cy); VERIFY(wglMakeCurrent(NULL,NULL)); BOOL C V P View::OnEraseBkgnd(CDC* pDC) R ep ro d u ced with p erm ission o f the copyright ow ner Further reproduction prohibited w ithout p erm ission { // TODO: Add your message handler code here and/or call default return FALSE; } void CVPView::InitializePalette() { PIXELFORMATDESCRIPTOR pfd; // Pixel Format Descriptor LOGPALETTE *pPal; // Pointer to memory for logical palette int nPixelFormat; // Pixel format index int nColors; // Number of entries in palette int i; // Counting variable BYTE RedRange,GreenRange,BlueRange; // Range for each color entry (7,7,and 3) // Get the pixel format index and retrieve the pixel format description nPixelFormat = GetPixelFormat(m_hDC); DescribePixelFormat(m_hDC, nPixelFormat, sizeof(PIXELFORMATDESCRIPTOR), &pfd); // Does this pixel format require a palette? create a // palette and just return NULL i f (!(pfd.dwFlags & PFD_NEED_PALETTE)) return; // Number of entries in palette nColors = « pfd.cColorBits; If not, not bits yeilds 256 entries // Allocate space for a logical palette structure plus all the palette entries pPal = (LOGPALETTE*Jmalloc(sizeof(LOGPALETTE) +nColors*sizeof(PALETTEENTRY)); // Fill in palette header pPal->palVersion = 0x300; // Windows 3.0 pPal->palNumEntries = nColors; // table size // Build mask of all l's This creates a number represented by having // the low order x bits set, where x = pfd.cRedBits, pfd.cGreenBits, and // pfd.cBlueBits RedRange = (1 palPalEntry[i].peRed = (i » pfd.cRedShift) & RedRange; pPal->palPalEntry[i].peRed = (unsigned c h a r ) ( R ep ro d u ced with p erm ission o f the copyright ow ner Further reproduction prohibited w ithout p erm ission 275 i f ((::GetKeyState(VK_SCROLL) (count > )} an g l e Y A d d (); == 1) && ) && cameraAngleXSubtract(); i f ((::GetKeyState(VK_SCR0LL) cameraAngleXAdd(); i f ((::GetKeyState(VK_SCR0LL) cameraAngleYSubtract(); i f ((::GetKeyState(VK_SCR0LL) cameraAngleYAdd(); (nChar == VK_RIGHT) (nChar = && VK_ UP) ) = ) && (nChar == VK_ D O W N ) ) = ) && (nChar == VK_ L E F T ) ) = 0) (nChar == VK RI G H T ) ) Invalidate(FALSE); CV i e w : :OnKeyDown(nChar, nRepCnt, nFlags); } void CVPView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default int xPos = point.x; // horizontal position of cursor int yPos = point.y; // vertical position of cursor // Render in selection mode and display results ProcessSelection(xPos, yPos); C V i e w : :OnLButtonDown(nFlags, p oint); } tdefine BUFF£R_LENGTH 64 void C V PView::ProcessSelection(int xPos, { // Space for selection buffer int yPos) GLuint selectBuff[BUFFER_LENGTH]; // Hit counter and viewport storeage GLint hits, v i e w p o r t [4]; // Setup selection buffer glSelectBuffer(BOFFER_LENGTH, // Get the viewport glGetlntegerv(GL_VIEWPORT, selectBuff); viewport); // Change render mode glRenderMode(GL_SELECT) ; // Establish new clipping volume to be unit cube around // mouse cursor point (xPos, yPos) and extending two pixels // in the vertical and horzontal direction glLoadldentity(); gluPickMatrix(xPos, yPos, 2,2, viewport); R ep ro d u ced with p erm ission o f the copyright ow ner Further reproduction prohibited w ithout p erm ission 276 // Draw the scene RenderScene(); // Collect the hits hits = glRenderMode(GL_RENDER); // If a single hit occured, display the info, if(hits — 1) ProcessObject(selectBuff); // Restore the projection matrix glMatrixMode(GL_PROJECTION); glPopMatrix(); // Go back to modelview for normal rendering glMatrixMode(GL_MODELVIEW) ; } void C V P View::ProcessObject(GLuint *pSelectBuff) { int id,count; char c M e ssage[64]; // How many names on the name stack count = pSelectBuff[0]; // Bottom of the name stack id = pSelectEuff[3]; strcat(cMessage,"\nSpecifically the moon."); // Display the message about planet and moon selection Messag e B o x ("Selection Message",cMessage,MB_OK); } void C V P View::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default CV i e w : :OnTimer(nIDEvent) ; } R ep ro d u ced with p erm ission o f the copyright ow ner Further reproduction prohibited w ithout p erm ission REFERENCES Angell, Ian O., Advanced Graphics with the IBM Personal Computer New York: John Wiley and Sons, 1985 Anon., “Design Industry Going 3D, and More,” Machine Design, May 21, 1992, pp 88-93 Anon., “Virtual Reality for More Than Fun and Games,” Electronics Now, Vol 69, No 6, June 1998, pp 13-14 Beasley, David and Ralph Martin, “Disassembly Sequences for Objects Built from Unit Cubes,” Computer-Aided Design, Vol 25, No 12, December 1993, pp 751-761 Brown, C Wayne and Barry J Shepherd, Graphics File Formats: Reference and Guide Greenwich, CT: Manning Publications, Inc., 1995 Buchholz, Kami, “Simultaneous Engineering Saves Time and Money,” Automotive Engineering, Vol 104, No 11, November 1996, pp 97-99 De Fazio, T L., A C Edsall, R E Gustavson, J Hemandex, P M Hutchins, H W Leung, S C Luby, R W Metzinger, J L Nevins, K Tung, and D E Whitney, “A Prototype o f Feature-Based Design for Assembly,” Journal o f Mechanical Design, Vol 115, No 4, December 1993, pp 723-734 Deitz, Dan, “Real Engineering in a Virtual World,” Mechanical Engineering, July 1995, pp 78-85 Dhondi, Nijaj K., Automated Assembly and Disassembly o f 3-D Models fo r Virtual Prototyping, MSMSE thesis, Louisiana Tech University, LA, USA, March 1995, 124 pp Ko, Heedong and Kunwoo Lee, “Automatic Assembling Procedure Generation from Mating Conditions,” Computer-Aided Design, Vol 19, No 1, Jan/Feb 1987, pp 3-10 277 R ep ro d u ced with p erm ission o f the copyright ow ner Further reproduction prohibited w ithout p erm ission 278 Lee, Gregory, “Virtual Prototyping on Personal Computers,” Mechanical Engineering, July 1995, pp 70-73 Lee, Kunwoo and Guy Andrews, “Inference o f the Positions o f Components in an Assembly: Part 2,” Computer-Aided Design, Vol 17, No 1, Jan/Feb 1985, pp 20-24 Lee, Kunwoo and David C Gossard, “A Hierarchical Data Structure for Representing Assemblies: Part 1,” Computer-Aided Design, Vol 17, No 1, Jan/Feb 1985, pp 15-19 Mahoney, Diana Phillips, “Feature Prototyping,” Computer Graphics World, Vol 19, No 10, October 1996, pp 38-44 Meyer, Ann, “Virtual Prototypes in Practice,” Computer Graphics World, Vol 20, No 9, September 1997, pp 65-71 Puttre, Michael, “Picture This: Visualization Tools for CAD Drawings,” Mechanical Engineering, Vol 115, No 12, December 1993, pp 48-51 , “Virtual Prototypes Move Alongside Their Physical Counterparts,” Mechanical Engineering, Vol 114, No 8, August 1992, pp 59-61 Rowell, Amy A., “Prototyping in a Digital World,” Computer Graphics World, Vol 20, No 9, September 1997, pp 55-62 Roy, U and C R Liu, “Establishment o f Functional Relationships between Product Components in Assembly Database,” Computer-Aided Design, Vol 20, No 10, December 1988, pp 570-580 Shah, Hemant, “Virtual Prototyping —Embracing Tools That Save Time and Money,” Electronic Engineering, Vol 29, No 12, December 1997, pp 847-860 Siddique, Zalied and David W Rosen, “A Virtual Prototyping Approach to Product Disassembly Reasoning,” Computer-Aided Design, Vol 29, No 12, December 1988, pp 847-860 Trego, Linda, “Concurrent Engineering Tools,” Automotive Engineering, Vol 104, No 11, November 1996, pp 100-108 R ep ro d u ced with p erm ission o f the copyright ow ner Further reproduction prohibited w ithout p erm ission VITA David William Manry was bom on January 18, 1959, to Meredith and Margaret Manry at Barksdale AFB, Louisiana After living in Honolulu, Hawaii; Orlando, Florida; and Omaha, Nebraska, his family returned to Shreveport, Louisiana, where he graduated from C E Byrd High School in May 1977 In May of 1981, Mr Manry received his Bachelor o f Science degree in Mechanical Engineering from Louisiana Tech University in Ruston, Louisiana From June 1981 to December 1986, Mr Manry resided in Lake Charles, Louisiana, where he worked as a Mechanical Design Engineer, first with PPG Industries, Inc and then with Stubbs Overbeck and Associates, Inc In December 1986, Mr Manry returned to Louisiana Tech to pursue a Master o f Science degree in Mechanical Engineering After completing his coursework and while finishing his thesis, Mr Manry returned to Lake Charles to work again for Stubbs Overbeck and Associates, Inc., where he was employed from June 1989 to March 1993 as a Senior Mechanical Project Engineer He received his Master of Science degree in May 1993 Mr Manry returned to Louisiana Tech in September 1993 to begin his pursuit o f a Doctor o f Engineering degree After finishing his coursework and while working on his dissertation, Mr Manry returned to Lake Charles to work part-time as a 279 R ep ro d u ced with p erm ission o f the copyright ow ner Further reproduction prohibited w ithout p erm ission IMAGE EVALUATION TEST TARGET (Q A -3 ) NV1/4GE.Inc 1653 E ast Main Street R ochester, NY 14609 USA Phone: 716/482-0300 Fax: 716/288-5989 1993, Applied Im ag e, Inc., All R ights R eserv ed R ep ro d u ced with p erm ission o f the copyright ow ner Further reproduction prohibited w ithout p erm ission ... physical model, the virtual model can be rotated, translated, modified, and tested Objectives The objectives for implementing both a graphical display and a data structure for virtual prototyping are... _ entitled Graphical Display and Data Structure for Virtual Prototyping be accepted in partial fulfillm ent of the requirements for the Degree of _Doctor o f Engineering... f virtual prototyping Virtual prototyping replaces the physical model in product development with a virtual model This virtual model can be viewed graphically on a computer screen and the data

Ngày đăng: 26/10/2022, 20:54

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan