AL/CAD : a computer aided design system for log house construction by Ray Spade Babcock A thesis submitted in partial fulfillment of the requirements for the degree of Master of Science in Computer Science Montana State University © Copyright by Ray Spade Babcock (1987) Abstract: National Log Construction Company, a company created and run by Stephen D. Babcock in Thompson Falls, Montana encouraged a study to determine the feasibility of using a computer to design log house kits. This study was undertaken in two parts. A prototype system called Automatic Design System (ADS) was developed during the time period 1972-1978. A final system called Air-Lock Computer Aided Design (AL/CAD) was developed during the time period 1982-1987. The ADS system was developed for a Prime multiuser computer system using a Tektronix 4006-1 storage display screen. The AL/CAD system was developed for an IBM PC-AT clone machine running the MS-DOS operating system. The AL/CAD system extensively uses windowing techniques to enhance user interaction. Both of these systems are described. Examples of the earlier ADS command set and display techniques are provided. The AL/CAD system is shown with its expanded data structure and windowing design. Both systems are evaluated, and future growth is projected. A L/C A D : A CO M PU TER A IDED DESIGN SYSTEM F O R LOG HOUSE C O N STR U CTIO N by R ay Spade Babcock A thesis subm itted in p a rtia l fu lfillm e n t of the requirem ents fo r the degree of Master of Science in .' Computer Science M ON TA N A STATE U N IV E R S IT Y ! Bozeman, M ontana N ovem ber 1987 ii A PPR O V A L of a thesis subm itted by R ay Spade Babcock This thesis has been read by each member of the thesis committee and has been fo u n d to be satisfactory regarding content, E nglish usage, form at, citations, b ibliographic style, and consistency, and is read y fo r submission to the College of G ra d u a te Studies. D ate Chairperson, G ra d u a te Committee A pproved fo r the Major D epartm ent m -7 W fr u D ate H e a d /M a jo r D e p a rtm e n t A pproved fo r the College of G rad u ate Studies / 2 D ate ^ G rad u ate D ean <I iii STA TEM EN T OF PERMISSION TO USE In presenting this thesis in p a rtia l f u lf illm e n t of the requirem ents f o r a m a ste r’s degree at M ontana State U niversity, I agree th a t the L ibrary shall m ake it av ailable to borrow ers u n d er the rules of the Library. B rief quotations fro m this thesis are allow able w ith o u t special permission, provided th a t a cc u rate acknow ledgem ent of source is made. Permission fo r extensive quotation fro m or rep ro d u ctio n of this thesis m ay be g ran te d by my m ajor professor, or in h is /h e r absence, by the D ean o f L ib raries when, in the opinion of either, the proposed use o f the m aterial is f o r scholarly purposes. Any copying or use of the m a te ria l in this thesis f o r f in a n c ia l gain shall not be allowed w ith o u t my w ritten permission. S ignature D ate / \ / V a V g -7 iv To my parents Stephen a n d D aun who inspired an d encouraged me. V TABLE OF CONTENTS Page A PP R O V A L PA G E ....................................................................................................................... ii STA TEM EN T OF PERMISSION TO U S E ...................................................................... iii D E D I C A T IO N ...............................................................................................................................iv TABLE OF C O N T E N T S ...........................................................................................................v LIST OF T A B L E S ................................................................................................... .... . . . vi LIST OF F I G U R E S . ................................................................................................................ vii A B S T R A C T ...................................... ix 1. I N T R O D U C T I O N .................................................................................................................... I 2. P R O T O T Y P E A U TO M A TIC DESIGN S Y S T E M ....................................................... I A utom atic Design System U ser I n te r f a c e ................................................................7 A utom atic Design System D ata S t r u c t u r e . ..........................................................18 E v a lu atio n of A utom atic Design S y s te m .................................. 20 3. A L /C A D SYSTEM-................................................................................................................. 22 22 A L /C A D U ser I n t e r f a c e ....................................................... A L /C A D D a ta S t r u c t u r e ............................................................................................36 A L /C A D Boxing A lg o rith m ....................................................................................... 46 A L /C A D Splicing A l g o r i t h m ................................................................................... 48 4. C O N C L U S IO N S ........................................................................................................... 52 E v a lu atio n of M icrosoft W i n d o w s ................................................... 52 E v a lu atio n of M icrosoft Windows D evelopm ent Tool K it. . ....................... 53 E v alu atio n of A L / C A D ..................... ................................................... .... . . . . 54 B I B L I O G R A P H Y ................................... 56 vi LIST OF TABLES Page 1. ADS U ser Com m ands ..................................................................... ' ...............................9 2. ADS Commands For Sample House D e s i g n ................................................................ 15 3. Job R e c o r d .............................................................................................................................. 40 4. Plan R e c o r d .......................................................................................................................... 41 5. Miscellaneous R e c o r d .........................................................................................................41 6. Wall R ecord .......................................................................................................................... 42 7. O pening R e c o r d . ................................................................................................................. 42 8. Intersection R e c o r d ............................................................................................................. 43 9. Box R eco rd .............................. 43 10. Gable R e c o rd .......................................................................................................................... 43 11. Row R e c o r d .............................................................- ........................................................ 44 12. Piece R e c o r d .......................... .............................................................................................. 44 13. Cut R e c o rd ................................................................................................................ . . . 45 14. A L /C A D D a ta S tru ctu re M anipulation A l g o r i t h m s . ........................................... 45 Vii LIST O F F IG U R E S Page 1. An A ir-Lock Log H o u s e ................................................................................................... 2 2. Cross Section of an A ir-Lock L o g ..............................................................................2 3. ADS Screen L a y o u t ..................... ......................................................................................8 4. ADS Screen A fte r F our C om m ands..............................................................................10 5. Sample ADS Design of Four W a l l s ...................................................................... 13 6. Sample ADS House With O p e n in g s .....................................................................14 7. Sample ADS House A fte r L A Y O U T C o m m a n d ...........................................16 8. Sample ADS E levation V ie w .......................................................................................... 17 9. Sample ADS House With G able............................................................................. 18 10. Sample ADS House A fte r LAYUP C o m m a n d ................................................. 19 11. A L /C A D Screen L a y o u t .................................................................................................... 23 12. System M enu Being S e le c te d ...........................................................................................24 13. Selecting The Close Option . ........................................................................................ 25 14. A L /C A D Mode M e n u .........................................................................................................26 15. A L /C A D G rid M e n u .........................................................................................................26 16. A L /C A D C reate M e n u . .................................................................................................... 27 17. A L /C A D Phase Menu 18. A L /C A D Move M e n u ............................................... 27 .28 Viii LIST OF FIG U R E S - C ontinued Page 19. A L /C A D View M enu . . . .............................. .... . ....................................... 28 20. A L /C A D Delete M enu.........................................................................................................28 21. A L /C A D E d it M e n u . ................. '........................ ............................................................29 22. A L /C A D File M e n u ......................................................................... 29 23. A L /C A D U tility Menu . . . ........................................................................................ 30 24. A L /C A D Debug M enu....................................................! ..................... ......................... 30 25. Selecting C reate Wall O ption......................................................................... 31 26. C reating A V ertical W a l l ................................................................................................ 32 27. Positioning To A M iddle W a l l ........................................................................................33 28. A dding The M iddle W a l l ................................................................................................ 34 29. A dding A Window To A W a l l ....................................................... 35 30. A L /C A D D ata S tru ctu re.................................................................................................... 38 31. A Wall R ecord A nd O pening L i s t .............................. 39 32. F our Boxes In An E levation ................................................... 47 33. Splicing One Box ............................................... 51 ix ABSTRACT N atio n al Log C onstruction Company, a company created and ru n by Stephen D. Babcock in Thompson Falls, M ontana encouraged a study to d eterm in e the feasib ility of using a com puter to design log house kits. This study was u n d e rta k e n in two parts. A prototype system called A utom atic D esign System (ADS) was developed d u rin g the time period 1972-1978. A fin a l system called A ir-Lock Com puter A ided Design (A L/CA D ) was developed during the time period 1982-1987. The ADS system was developed f o r a Prim e m u lti­ user com puter system using a T ek tro n ix 4006-1 storage display screen. The A L /C A D system was developed fo r an IBM PC-AT clone m a chine run n in g the MS-DOS operating system. The A L /C A D system extensively uses w indow ing techniques to enhance user interaction. Both of these systems are described. Exam ples of the earlier ADS command set a n d display techniques are provided. T h e A L /C A D system is shown w ith its expanded data s tru c tu re and w indow ing design. Both systems are evaluated, an d f u tu r e grow th is projected. I CHAPTER I IN T R O D U C T IO N Log house construction is a tra d itio n in America. E veryone wants a cab in in the hills, by a lake, near a stream or just out in the cool fresh c o u n try aw ay fro m town. C utting your own logs in the forest and carving them into a house is a com plicated job. In recent years, various log house m a n u fa c tu r in g companies have been created to solve this problem fo r the m a jo rity of log house customers. I was privileged to be born into a fam ily th a t ow ned and operated such a company. On M arch 21, 1946, my fa th e r, Stephen D. Babcock, signed papers to p u rchase a p a te n t fo r a new k in d of log house construction. He w ith three other p artn e rs established a com pany called N ational Log C onstruction Company in Thom pson Falls, M ontana, to m a n u fa c tu re this product. T he m aterial used f o r the houses was called "Air-Lock" logs! An example of an Air-Lock log house is shown in F ig u re I. This new k in d of construction m ethod involved the d rillin g of a three . inch dia m ete r hole dow n the length of a log th a t had been previously tu rn e d to a constant diam eter of 6, 7, or 8 inches. log is shown in F igure 2. A cross section of an Air-Lock 2 Figure I. An Air-Lock Log House. F igu re 2. C ross S e c tio n of an A ir-L ock Log When a solid log dries it dries from shrinks more quickly than the inside and the outside only. the log splits The outside open in long lo ngitudinal cracks. The three inch hole in the Air-Lock process allows the 3 log to dry fro m the inside as well as fro m the outside com pletely dry log and a reduction in "checking" or cracking. process provides for a well seasoned log product of thus assuring a The "Air-Lock" a high dim ensional stability. In designing the plans fo r an "Air-Lock" log house, a set of floor plans is d raw n fro m custom er supplied specifications. Wall elevations are then d raw n and th e various pieces th a t will be m a n u fa c tu re d are designed. A list of m a te ria l is used by the facto ry to m a n u fa c tu re the re q u ire d pieces fo r a design. T he pieces are m arked and shipped to the custom er site where they are assembled into a log house. T he design process is com plicated a n d tim e consuming. It is desired to speed-up this process and reduce the num ber of errors th a t occurred. com puter system was proposed and developed. A This developm ent consisted of a prototype system developed during the tim e period 1972-1978 called A utom atic Design System or ADS. This package was not successful a n d a newer system developm ent project was begun d u rin g the time period 1982-1987. The new er system was called A ir-Lock Com puter A ided Design or A L/C A D . A L /C A D is a highly graphical user in te rfa c e to a set of design tools. It is m ore successful th a n the ADS system and has produced usable results. In p rep arin g to develop the A L /C A D system, several system requirem ents were im portant. These were: portability, a user frie n d ly in te rfa c e , development in a program m ing language w ith dynam ic mem ory allocation, use of a window environm ent, use of a pointing device, use of an o u tp u t device, speed of design, an d waste reduction. These are described below. In considering various locations. portability, the system needed to be portable between T he IBM PC-AT was chosen as the ta rg e t machine. A ny 4 IBM-AT or com patible clone having the follow ing characteristics would ru n the package: an 80286 cpu, 640 K bytes o f main memory w ith an EGA graphics board and a m onochrom e or color m onitor, and a M icrosoft Mouse. Since the users of this package were u n fa m ilia r w ith computers, the f r ie n d ly n a tu re of a w indow ing system was chosen. Due to the highly dynam ic n a tu re of the data s tru c tu re chosen f o r A L /C A D , a program m ing language supporting dynam ic m em ory allocation was needed. In a d d itio n , the language needed to be available on the IBM PC-AT or its clones. M icrosoft’s version 4.0 of the C program m ing language was chosen. O nly one w indow environm ent was available for the ta rg e t machine. was M icrosoft Windows. This In order to develop an application fo r Windows, the M icrosoft Windows D evelopm ent Tool-kit was obtained. D ue to the highly graphic n a tu re of the A ir-Lock Log house design system, a pointing device usable by a person not f a m ilia r w ith computers was needed. The mouse device was chosen. To provide the highest possible com patibility w ith M icrosoft Windows, the M icrosoft mouse was selected. In the f ir s t release of the A L /C A D package, h a rd copy o u tp u t was not needed. However, it was fe lt th a t some fo rm of screen p r in t u tility was needed. A dot m a trix p rin te r w ith a graphics mode was chosen to allow the user to m ake a copy of the screen at any time. o u tp u t fo r a d igital plotter. F u tu re versions will produce This will allow complete f u ll sized plans to be draw n. T he norm al m a n u fa c tu rin g process f o r A ir-Lock logs has the potential to produce a large am ount of very expensive waste m aterial in the form of raw m a te ria l pieces of a length unused in the p a rtic u la r house being m a n u fa ctu red . A f in a l goal of A L /C A D was to reduce this waste facto r. Only a small 5 re d u c tio n would com pletely pay fo r the com puter system in one year. The A L /C A D system allows a user to generate a com plete facto ry list of m a teria l a n d cut-out guides from a simple floor plan sketch. T here are fiv e m ain phases to A L/C A D : the floor plan phase, the layout phase, the elevation phase, the layup phase, and the list of m a teria l phase. D uring the flo o r plan phase the flo o r plan is d ra w n to scale and the w indow an d door openings are added. D uring the layout phase all walls are intersected a n d the intersection records are the elevation phase the m odified. The w indow intersection is checked. created in the d ata structure. In height and w id th of each elevation is checked a n d /o r and door opening heights are v e r if ie d and each Gables, the sloped portion of a w all beneath the roof and above the wall, can be added to the walls during this phase and blank row records are a d d ed to the d a ta structure. The layup phase is the most com plicated of all the phases. phase, the walls are boxed and spliced. D uring this Boxing is the process o f dividing an elevation into separate boxes of wood m a te ria l th a t contains no openings. Since the longest log m a n u fa c tu re d is 8 fe e t 3 inches, each row longer than this must be spliced. A splice is the joining of two logs at th e ir ends. As the walls are spliced, in d iv id u a l piece records are created and a d d e d to the d ata structure. The last phase is the list of m a te ria l phase. In this phase the complete fa c to ry cu ttin g in fo rm a tio n and custom er list of m aterials is generated. The list o f m a teria l shows the num ber and sizes of all log pieces in th e building. T he A L /C A D system makes num erous checks d u rin g its various phases to p rev en t missing piece errors in tro d u ced by the user. Waste reduction tables are m a in ta in e d to allow the splicing alg o rith m to re-use odd shaped left-overs 6 fro m previous log allocations. lengths. All other log exam ple, if there is a The raw m aterial is lim ited to 8 foot 3 inch pieces must be less than or equal to this length. For 5 foot 0 inch space between two w indow s, the obvious solution is to provide a 5 foot 0. inch log to fill this space. However, fo r each 5 foot 0 inch piece cut, there is a 3 foot 3 inch piece le ft over. If an o th er area in the build in g does not m ake use of this piece, then it may go to waste. L ater, when splicing a 7 fo o t 0 inch length, th e system may choose to use a 4 fo o t 0 inch 7 fo o t 0 inch length m aterial. length and a 3 fo o t 0 inch length r a th e r than cutting a fro m an 8 foot 3 inch length in order to conserve H owever, since every splice weakens the wall, th e num ber of splices needs to be kep t to a low. The A L /C A D program attem p ts to balance the need fo r splicing w ith the need fo r waste reduction. 7 CHAPTER 2 P R O T O T Y P E A U T O M A TIC DESIGN SYSTEM T he f ir s t version of the Air-Lock Com puter Aided D esign System was called A utom atic Design System or ADS. period 1972-1974. ADS was developed d u rin g the time It consisted of over one h u n d re d subroutines w ritte n in the F O R T R A N -66 program m ing language. follow ing hardw are: The ADS package was designed fo r the a Prim e 300 cpu w ith 128 K Ram m em ory, a T ektronix 4006-1 storage tu b e graphics display, a T e k tro n ix 4662 f la t bed X-Y plotter, a Pertec IOMb rem ovable cartridge disk u n it, and a P erk in Elm er 1200 crt term inal. A utom atic Design System U ser In terfa ce Since the m a in in teractio n w ith the user was to be via a storage tube graphics device, the user in te rfa c e h ad te rm in al to erase any to allow fo r the in a b ility of the one p art of its screen. I f the screen was to be changed, the entire screen h ad to be erased a n d completely redraw n. F igure 3 shows the three separate areas on the face o f the terminal. The m ain com m and input area was three lines at th e bottom of the ■ screen. The erro r message output area was one line at the top of the screen. T he rem a in d er of the screen was to be used to draw the graphics portion of the data. In order to provide for enough commands a t the bottom of th e . screen a special in p u t command parser was developed. com m and was an open parenthesis T he p ro m p t fo r a new T he cursor was then moved to the 8 space to the rig h t of the parenthesis. As each ch aracter o f a command was typed by the user, the ch ara cter was evaluated by the com m and parser and assembled into a valid command. ERROR MESSAGE AREA GRAPHICS AREA COMMAND AREA TEK4006-1 F igu re 3. ADS S creen L ayout. If an incorrect c h ara cter was typed, a bell sounded and no character was reflected to the screen. If a correct ch ara c te r was typed, it was reflected to the screen and the cursor was moved one space to the right. the packing of m any commands on a single display line. This allowed fo r A f te r a command was finished and the operator pressed the r e tu rn key, a closing parenthesis ")" was reflected to the operator. The command was executed by o th e r routines w ithin 9 ADS and the parser was then called again. A new open parenthesis was sent to the screen to tell the operator th a t the system was read y fo r the next command. Table I gives a list of the ADS commands. T able I. ADS User Commands. Comm and D escription MOVE Move Pen. UP D e fin e A Wall In UP D irection. DOWN D e fin e A Wall In DOWN Direction. LEFT D efin e A Wall In L E F T D irection. R IG H T D efin e A Wall In R IG H T Direction. ANGLE D e fin e A Wall At An Angle. DOOR D e fin e A Door Opening. WINDOW D e fin e A Window Opening. WALL D efin e An Interior Wall. OPEN D e fin e A N on-Standard Opening. DELETE Delete A Feature. DRAW D raw The Design On The Screen. PLO T D raw T he Design On The Plotter. Q U IT E x it T he Design Process. JOB Load D a ta From An Existing Job File. LIST G en erate The List Of M aterial. LAYOUT Intersect All The Walls. LAYUP C alculate Log Splices. ELEVATE D raw T he Elevatidn View O f A Wall. POV Swap T he P oint O f View. 10 F igure 4 shows the screen a f te r f o u r commands d e fin in g a wall were typed. Note in the command input area, the four com mands were packed together on one line. (U20-0) (B40-0) (D20-OML40-0) TEK4006-1 F ig u re 4. ADS S cre en A fter Four C om m and s. The com m and parser system allowed the user to see previous commands th a t had been typed and provided a more "friendly" in te rp re ta tio n of each keystroke as it was typed. If any erro r occurred, an erro r message was displayed at the top o f the screen. When the operator took corrective action, this message and all the inform ation on the screen was cleared by a screen 11 clear fu nction. Then the correct graphics d ata was re d ra w n and a new com m and prom pt was sent to the screen. In using ADS a special length code was chosen th a t was the same as the length code used in m a n u fa ctu rin g . p a rt code separated by dashes, Each length was represented by a three F-I-E. The first nu m b e r was an integer representing the nu m b e r of feet, the second num ber was an integer from 0 to 11 representing the nu m b e r of inches, and the th ird n u m b e r was an integer fro m 0 to 7 representing the num ber of eighths of an inch. system was used through-out the design and This m easuring m a n u fa c tu rin g process. For exam ple a log m easuring 7 fe e t 6 an d 1/2 inches, was denoted by a length code of 7-6-4. A log m easuring 4 feet 11 and 1/8 inches was denoted by a length code of 4-11-1. The process fo r designing a house was as follows: I. D raw the log walls of the floor plan w ith ADS in the plan mode., 2. Add w indow and door openings to the plan., 3. Intersect the walls a t each corner w ith the L A Y O U T command., 4. Build each elevation record w ith the EL EV A TE command., 5. Add any gables needed to the elevation views., 6. Splice the walls w ith the LA Y U P command., and 7. G enerate the list of m aterials fo r the factory. To d e fin e in d iv id u a l wall an in d iv id u a l wall, one of the wall com m ands was given. The com m and indicated the direction of the wall. Starting at the lower le ft of the screen the cursor was moved up or to th e right by the operator. If, fo r exam ple, the operator w ished to d ra w a wall from the c u rre n t location up to a new location, the UP com mand was used. The UP com m and, a b b rev iated U, was follow ed by a length code representing the desired length of the wall. For example, if the operator w ished to d efin e a 12 w all of length 24 fe e t 6 inches in the u p w a rd direction, any of the following com m ands w ould work: U 24-6-0 or UP 24-6 or U 24-6 N ote th a t trailin g zeros in the length code could be om itted and th a t the com m and nam e could be abbreviated. A fte r this com m and was parsed and evaluated, a rectangle d e fin in g the w all was d raw n to scale on the screen. T he cursor was moved to the opposite end o f the wall fro m w hich the wall was defined. The o p erato r could then proceed to d efin e ad d itio n a l walls by en terin g ad d itio n a l w all commands. For example, to d e fin e an o th er wall going to the rig h t th a t was 34 feet 6 and 1/2 inches long, the follow ing com mand could have been entered: R 34-6-4 This com m and would have been packed on the com m and in p u t line w ith the previous com m and as follows: (U 24-6)(R 34-6-4) To d e fin e the rest of a rectangular house, two a d d itio n a l walls would have re q u ire d d e fin itio n . The fin a l graphics, screen representing f o u r walls would have been as shown in F ig u re 5. Note th a t the com mand line now reads: (U 24-6)(R 34-6-4)(D 24-6)(L 34-6-4) F igure 6 shows a sim ilar illu stratio n w ith a set of openings defined. T he set of ADS com m ands required f o r the layout of F ig u re 6 w ith a short e x p lan atio n of each com m and is given in T able 2. Note th a t the com m ands required th e operator to keep trac k of w here he or she was on the diagram . This was one of the most lim iting factors in the im plem entation o f this package on the storage tube display term inal. n e x t step w ould have been to in p u t the L A Y O U T command. The F igure 7 shows 13 the results of executing this command. shown as intersecting one another. Note that all the log walls were now This was the norm al appearance of a log wall in plan view. (U24-6) (R34-6-4) (D24-6) (L34-6-4) TEK4006-1 F ig u re 5. S am p le ADS D e sig n of Four W alls The walls could then have been shown in "elevation" view by the use of the E L E V A T E command. Each wall was num bered as it was originally defined. The elevate com mand re fe rre d to this num ber when d e fin in g the wall. exam ple to elevate the firs t wall d efin e d the following com m and was used: (E I) This would have caused the screen to clear and Figure 8 to be displayed. For 14 (U24-6)(R34-6-4)(D24-6)(L34-6-4)(MU10-3)(W I 4-0 4-0 3-0)(MU 10-3)(MR7)(WI4 4 3)(MR 12-6)(WI4 4 3)(MR7)(MD8-3)(WI6 4 3)(MD8-3)(ML15-9-2)(D TEK4006-1 F ig u re 6. Sam ple ADS H o u se W ith O p e n in g s. Note th a t the opening was shown containing no horizontal lines. This indicated th a t no log m aterial was to be used for this area, thereby creating an opening in the wall. The solid wall was indicated by the horizontal lines representing the in d iv id u a l log rows needed for of this p a rtic u la r elevation. This com m and did not produce a spectacular draw ing, but it was extremely im p o rta n t to the design of the building on the com puter. It was w ith this com m and th a t the row records of the original data stru ctu re were built. 15 T able 2. ADS Comm ands F or Sample House Design. Com m and A ction Taken U 24-6 D raw a wall up 24 fe e t 6 inches. R 34-6-4 D raw a wall right 40 fe e t 6 and 1/2 inches. D 24-6 D raw a wall down 24 fe e t 6 inches. L 34-6-4 D raw a wall le ft 34 fe e t 6 an d 1/2 inches. M U 10-3 Move up 10 feet 3 inches. ■ WI 4-0 4-0 3-0 D efin e a w indow th a t is 4 fe e t 0 inches w ide by 4 feet 0 inches high and is 3 fe e t 0 inches from the floor. M U 10-3 Move up 10 feet 3 inches. M R 7 Move rig h t 7 feet 0 inches. WI 4 4 3 D e fin e another window. M R 12-6 Move rig h t 12 feet 6 inches. WI 4 4 3 D efin e another window. M R 7 Move rig h t 7 feet 0 inches. M D 8-3 Move dow n 8 feet 3 inches. WI 8 4 3 D efin e a w indow th a t is 8 fe e t 0 inches w ide by 4 feet 0 inches high and 3 fe e t 0 inches fro m the floor M D 8-3 Move dow n 8 feet 3 inches. M L 15-9-2 Move le ft 15 feet 9 and 1/4 inches. D O O R 3-0 6-8 D efin e a door 3 feet 0 inches w ide by 6 fe e t 8 inches high. 16 — — Tl a y o i JT ) TEK4006-1 F ig u re 7. S am p le ADS H o u se A fter LAYOUT C om m and . If a gable were to be added to this elevation, the GABLE command would have been executed as follows: GABLE 4-12 12-3 -4-12 12-3 This com mand indicated th a t a gable would have been built fro m the left rising at a 4-12 pitch (4 feet high for each 12 feet in length) fo r a length of 12 feet 3 inches. Then the gable would have dropped at the same pitch for another 12 fe e t 3 inches, com pleting the wall. F igure 9 shows the results of this gable command. 17 (EL I) TEK4006-1 F igu re 8. S am p le ADS E levation V ie w . A fte r elevating all the walls, a LA Y U P command was typed and the original attem p t at splicing took place. F igure 10 shows wall one spliced as it w ould have been by the normal splicing algorithm . It was a f te r the splicing was fin ish ed , th a t a list of in dividual logs could be created. G enerating the list of materials and draw ing complete and dim ensioned d raw in g s of the in d iv id u a l walls was in tended to provide the company with a trem endous aid in designing log houses. 18 This e f f o r t when done by hand for a nominal sized house would take a designer from two to seven days. ADS should have reduced this time to less than one day. (EL 1MGABLE 4-12 12-3 -4-12 12-3) TEK4006-1 F ig u re 9. S am p le ADS H o u se W ith G able. A utom atic Design System D ata S tructure ADS used a p ro p rietary file m anagem ent system developed C om puter Inc. called MIDAS. Scheme. by Prime This stood fo r M ultiple Indexed Data Access The MIDAS system was extensive and provided high speed access to each of the parts needed by ADS. 19 (LAYUPMEL I ) TEK4006-1 Figure 10. Sample ADS House After LAYUP Command. It was not portable, however, and added quite a bit of overhead to the entire package. Also, d u rin g the design of a new building, MIDAS put most of the new records in overflow areas, and the indexing speed was not reduced until a reorganization of the file took place by executing a com m and called REM A KE for the file. A fte r R E M A K E was completed, the file was accessed very quickly and the in d iv id u a l records were stored in an effic ie n t fashion. However, the user would forget to execute the R EM A K E command and th e re fo re the system continued to operate slowly. 20 MIDAS was a keyed file system. E ach record had to have one prim ary key d e fin e d and allowed any num ber of secondary keys. These keys were used to build separate indices fo r the in d iv id u a l records allowing access in a num ber of d if f e r e n t ways. The follow ing records were d e fin e d in the MIDAS im plem entation of ADS: Wall Records, Row Records, Piece Records, and G able Records. Wall Records co n tain ed d ata about an in d iv id u a l wall including its length and graphics position. Row Records contained d ata about an in d iv id u a l row on and in d iv id u a l wall. All of the row records fo r a wall were connected to the Wall record fo r th a t wall. Piece Records were generated by the design system. This record co n tain ed d ata as to the length of the piece, w h ich row it was in, an d any special cuts th a t were to be m ade in the piece. Each gable in a house was tre a te d as a separate entity in the MIDAS system and had its own G able Record. D a ta concerning the pitch and length of th e gable in add itio n to its graphics location were included. The MIDAS system allowed an in d iv id u a l house to h av e lots of rows w ith a few walls or lots of walls w ith a few rows. In any com bination, the space used was just the space needed for the data. E valuation of A utom atic Design System T he ADS p rototype version was never successful f o r tw o main reasons. T he f ir s t was because it never spliced correctly. could be in te rp re te d by even an u n tr a in e d It was alw ays m aking w hat hum an as "crazy" choices. T h erefo re, the h u m a n designer was alw ays called upon to "clean up" a fte r the 21 com puter. in terface. T he second reason th a t this system failed was its poor user T he com mands were h ard to remember, the results and the location of the c u rre n t d raw in g position were h a rd to read. 22 CHAPTER 3 A L /C A D SYSTEM The A ir-Lock developm ent effort Com puter in Aided autom ating the Design or A ir-Lock A L /C A D was log house design A L /C A D was developed during the tim e period 1982-1987. m ajor new design f o r a linked list d a ta the .final process. It consisted of a structure, a hew user in te rfa c e utilizin g a w indow ing environm ent, and a new set of com puter equipm ent. The A L /C A D system was designed fo r the follow ing hardw are: a M ultitec (IBM-AT clone) com puter w ith 640 K bytes h ig h speed memory a n d an Extended G raphics A d ap ter card, a monochrom e display, a 30Mb secondary storage disk unit, a M icrosoft Mouse pointing device, a dot-m atrix p r in te r w ith graphics capability, an d the M icrosoft versions o f the C program m ing language, the Windows operating system, and the Windows Softw are D evelopm ent Tool K it. T he A L /C A D system description th a t follows is divided into a discussion of the user in terface, the d a ta structure, the boxing algorithm , the splicing algorithm , a n d an evaluation of th e developm ent tools and the resulting so ftw are package. A L /C A D User In te rfa c e An im p o rta n t re q u ire m en t for A L /C A D was th a t its user in te rfa c e needed to be m uch m ore f r ie n d ly to the user. w idely av ailable com puter system. In a d d itio n A L /C A D h ad to ru n on a T he IBM AT fam ily o f clone computers using the MS-DOS o perating system was chosen as the com puter and various w indow ing packages f o r this system w ere exam ined as a solution to the user 23 in te rfa c e problem. M icrosoft Windows in Mouse was fin a lly selected for this purpose. conjunction w ith the Microsoft In addition, a M icrosoft Windows Developm ent Tool K it was acquired to enable the developm ent of a customized w indow s application. How the A L /C A D package works on this system is now described. A fter in itia tin g the A L /C A D package the screen shown in Figure 11 is displayed. Figure 11. AL/CAD Screen Layout. T he title of the package is shown in the title bar area of the window. "size" box is shown at the right hand top corner. A This size box can be selected by the user (using the mouse) if it is desired to change the size of 24 the window. A system menu box is displayed at the upper left corner. system menu is shown in F igure 12. The (For details on the system menu box see the M icrosoft Windows manual.) The CLOSE option will term inate the A L /C A D application and re tu rn the user to the control of the window s package. To re tu rn to MSDOS, a CLOSE selection is made using the system menu in the resulting MS-DOS window. E ate Phase Move View Delete Edit File Utility Debug M ove Ic o n Zoom C lo s e A b o u t... Figure 12. System Menu Being Selected. Selections fro m the system menu are made by moving the mouse cursor to the iconic or p ic tu re representation o f the system menu and pressing and holding the le ft mouse button. At this point a "pop-up" menu is displayed on 25 the screen. A pop-up menu is displayed tem porarily over the in fo rm atio n below it on the screen. A fter the selection is made, the w indow disappears and the in fo rm atio n below the menu is displayed again. While holding the button and moving the mouse down through this menu, the d if f e r e n t selections in the menu are highlighted. the entry in reverse video. The highlighting is accomplished by displaying The user makes a selection by releasing the left mouse button when the desired entry is highlighted. F igure 13 shows the user selecting the CLOSE option from the system menu. IB l S iz e M ove Ic o n Zoom A ir - L o c k /C A D ate Phase Move View Delete Edit Rle Utility Debug Figure 13. Selecting The Close Option. EU 26 The pop-up menu selection technique is used for all pop-up menus in the A L /C A D system. The A L /C A D high level menu consists selections shown just below the title line on the screen. of the eleven These selections are: Mode, G rid, Create, Phase, Move, View, Delete, Edit, File, U tility , and Debug. The pop-up menus th a t are displayed for each of these selections are shown in Figures 14 through 24. Grid Create Phase Move View Delete Edit File Utility Debug V Plan M ode E levation M ode F igu re 14. AL/CAD M ode M enu. Mode ■■■anaHEaeeeaeEii Create Phase Move View Delete Edit File Utility Debug V C rid On Grid Off Set Grid V alue F ig u r e 15. A L /C A D G rid M e n u . 27 Phase Move View Delete Edit File Utility Debug Create Wall Add Wall To End Add Wall To M iddle Create Create Create Create D oor W indow O p en in g Gable Create Roof Create Porch F igu re 16. AL/CAD C reate M enu . eh I Mode Grid Create Move View Delete Edit File Utility Debug Layout Layup G enerate L/M Redraw Screen Draw Plans F ig u r e 17. A L /C A D P h a se M e n u 28 Mode Grid Create Fhase 3 View Delete Biit file Utility Debug M ove M ove M ove M ove A Wall A D oor A W ind ow An O p en in g F ig u re 18. AL/CAD M ove M enu. !■ m m Mc)de Grid Create Phase Move 3 Delete Biit File Utility Debug Swap Point Of V iew Set Point Of V iew F ig u re 19. AL/CAD V ie w M enu. Mode Grid Create Phase Move View Ba ■EH Edh file UtiBty Debug D elete D elete D elete D elete D elete A Wall A Door A W indow An O p en in g A Cable F ig u re 20. AL/CAD D e le te M enu 29 File Utility Debug I Mode Grid Create Phase Move View Delete JOB Record PLAN R ecord MISC R ecord WALL R ecord OPENING R ecord INTERSECTION R ecord BOX R ecord GABLE R ecord ROW R ecord PIECE R ecord CUT Record F igu re 21. AL/CAD Edit M enu. I Mode Grid Create Phase Move View Delete Edit Utility Debug D isplay Data F iles Load Data File Store Data File F ig u r e 2 2 . A L /C A D F ile M e n u . 30 I Mode Debug Grid Create Phase Move View Delete Edit File System User D isplay Data MS DOS F ig u re 23. AL/CAD U tility M enu. I Mode Grid Create Phase Move View Delete Edit Rle Utility Set D eb u g Level D isp lay On D ebug D isp lay Off VD ebug F igu re 24. AL/CAD D eb u g M enu. D uring the floor plan phase of A L /C A D , the user "draws" the various walls th a t make up a house. There are three methods th a t can be used: C reate Wall, Add Wall To End, and A dd Wall To Middle. to d raw a wall w ithout reference to any existing wall. the C reate Wall option from the C reate Menu. C reate Wall is used The user first selects Figure 25 shows the user m aking this selection. The user then selects the starting position by moving the mouse cursor to the desired location on the screen and clicking (pressing and releasing) the left mouse button. The system begins a wall at this point and begins to display the wall in "rubber band" mode. This means th a t as the user moves the mouse, the wall d raw in g expands and contracts to follow the cursor. the upper left of the screen, another pop-up display shows the length of the At 31 IB I_______ EU A ir - L o c k /C A D Phase Move View Delete Edit File Utility Debug C itatc I C r e a t e W a ll Add Wall To End |a^ Add Wall To M iddle Create Create Create C reate D oor W indow O p en in g C able Create Roof Create Porch F ig u re 25. S e le c tin g C reate W all O p tio n . wall in feet, inches, and eighths of inch units. and the wall expands constantly displayed. and contracts, the As the user moves the mouse, cu rren t length of the wall is F igure 26 shows the user creating a wall in this way. When the user has d raw n the wall to the desired length, the left mouse button is again clicked to te rm in ate the creation of the new wall. A fte r the wall has been draw n, the wall data is added to the data stru c tu re and the complete data stru ctu re is displayed. If a m istake is made, the user can select the Delete Wall option from the Delete menu to delete the wall just created. I f a wall needs to be moved to a new location, the user can select the Move Wall option from the Move menu. The Add Wall To End selection is used to add a new wall to the end of an existing wall. This is the normal location to add a new wall. selecting Add Wall To E nd, the user positions the cursor n ear the end of an A fter 32 Air-Lock/CAD m Modg Grid Create Phase Move Vtov Delete Edit File Utility Debug !Create WalH !CANCEL I F igu re 26. C rea tin g A V e r tic a l W all. existing wall. The user clicks the left mouse button and a gravity field algorithm draw s the cursor to the nearest existing end o f a wall. wall is then assumed to be at right angles to the existing wall. The new The user uses the ru b b er band display and the pop-up length display to help in selecting the length of the added wall. The Add Wall To M iddle selection is used to add a wall to the in terio r area of an existing wall. A fter moving the cursor near an existing wall, the user clicks the left mouse button. A g rav ity field algorithm then draws the cursor w ith in the confines of the nearest existing wall. A position display 33 F ig u re 27. P o s itio n in g To A M id d le W all. showing the length between the c u rren t location of the cursor and the end of the existing wall helps the user determ ine the proper location to add the wall (See F igure 27). designed The le ft mouse button is clicked again, and the new wall is in the same fashion as the create wall method F igure 28 shows the added wall in rubber band mode. described above. The user continues in this fashion until all the walls for the house have been draw n. is to add the fro m w indow and door openings to the building. The next step Windows are chosen a set of s ta n d a rd sizes made by various m a n u fa c tu re rs. A specific m a n u f a c tu r e r ’s set of w indow s is stored in a supporting disk file. The user 34 F ig u re 28. A d d in g T he M id d le W all. selects a m a n u fa c tu r e r to get a display of possible w indow sizes. Upon selecting a specific w indow , the needed rough opening sizes are provided to the A L /C A D package. These sizes are used to draw the iconic representation of a w indow for the user. wall. The w indow can be positioned n e a r an appropriate As the w indow nears a wall, a position display sim ilar to the Add Wall To M iddle system is provided. If the user moves the w indow away from one wall and n ear an o th er wall, the position display follows. When the user is satisfied w ith the location of the window , the left mouse button is clicked. The w indow is d raw n at the ap p ro p ria te location in the flo o r plan and the w indow opening record is added to the A L /C A D data structure. V ertical positioning of the w indow is adjusted d u rin g the elevation mode of operation. 35 F igure 29 shows a window being added to an existing wall in plan view. A sim ilar process is used to add any ad d itio n al window or door openings. ' A ir - L o c k /C A D Mode Grid Create Phase Move View Delete Edit File Utility Debug . 10-6-0 #» 7-6-0 C ode A6030 W idth 6 00 B F igu re 29. A d d in g A W in d o w To A W all. A t this point, the next phase is in itia ted command. by selecting the LA Y O U T This command will cause all existing walls to be intersected and intersection records to be added to the data structure. to cover the normal corner extensions and elevation mode. The walls are extended preparations are made for the Elevation mode is selected to prepare for the fin a l two phases of design. These are LA Y U P and List of M aterial generation. most complex phase of AL/CA D . Layup is the To begin the layup phase the LAYUP 36 com m and is selected. The A L /C A D system begins by ru n n in g w h a t is called a "boxing" algorithm on each of the elevated walls. The boxing algorithm divides the w all into separate boxes of log m aterial. shape a n d contain no openings. f o r in tra-b o x constraints. These boxes are rectan g u lar in The boxes can be spliced separately allowing A set of rules is used to splice each box. A fte r splicing is complete, the box records, row records, piece records, and any necessary cut records are added to the d ata structure. D u rin g the splicing algorithm , w aste lists are m a in ta in e d by A L /C A D to reduce the waste m aterial generated. The preferred m ethod is to choose a p a rtic u la r log length fro m the waste list. The List of M aterials system is in itia te d by selecting the L /M command. The L /M algorithm gathers and sorts all the piece and cut records. m a teria l is generated. Id en tical pieces are counted and a list of T he other com m ands provided by the user in terface are used to enhance the design process. A L /C A D D a ta Structure The d a ta s tru c tu re used fo r A L /C A D needed to be extrem ely flexible in order to h an d le the w ide range of house designs. Some houses have m any walls w ith a few openings, and some houses have many openings w ith a few walls. In order to conserve high speed memory, a complex linked-list d ata s tru c tu re is used. The general high level stru c tu re is shown in F ig u re 30. The highest level stru ctu re is a simple linked list o f job records. The job records contain d ata about the jobs currently being stored in the d ata structure. Each job record contains th e pointers to three sep arate linked lists fo r P lan records. Miscellaneous records, an d Wall records. P lan records are 37 included fo r f u tu r e expansion into a u x ilia ry processing o f fo u n d a tio n plans, m ain floor plans, second floor plans, ro o f plans, plum bing plans, electrical and heating plans, an d other plan view data. Miscellaneous records are used to store any d a ta of a job specific n a tu re b u t global in scope. T he wall records contain the p e rtin e n t data fo r the design of walls w ith in a specific job. wall record contains pointers to fiv e lin k ed lists. records, intersection records, box records, Each These lists contain opening gable records, a n d row records. F ig u re 31 shows an in d iv id u a l wall record w ith the head a n d ta il pointers to an opening lin k ed list. These pointers allow the system to add and delete records very quickly by positioning d irec tly to the end o f the list. records contain d a ta for door, w indow , fireplace and other Opening openings. Intersection records contain d ata about every intersection betw een the current wall a n d other walls. splicing algorithm . Box records co n tain data about the boxes used by the G able records co n tain d ata on any gables (norm ally just one) th a t exist on the c u rre n t wall. R ow records contain d a ta on each row of logs in the c u rre n t wall. Each row record contains pointers to a linked list of piece records which contain d a ta on each in d iv id u al piece of log material. E ach piece record contains pointers to a linked list o f cut records which co n tain d ata on any special cuts w ith in the cu rre n t piece. The purpose of this complex d a ta s tru ctu re is to p ro v id e an extremely ad ap tab le structure. This means th a t the m inim um high speed memory is consum ed fo r each job. I f a p a rtic u la r job has a lot of sh o rt ,walls w ith few rows' an d few openings or if it contains a few long walls w ith m any rows and m any openings, the stru c tu re will adapt. By storing all the d a ta f o r a current 38 START Li JOB REC t I> II it II JOB REC n REC 2 I II II I P LA N -I RECORD I np I P LA N ] RECORD I PLAN MISC RECORD I MI SC RECORD 2 OPENING RECORD I OPENING RECORD 2 INTERSECT RECORD I INTERSECT RECORD 2 BOX RECORD I RECORD 2 2 ••• ! o p e n in g ' RECORD no • • • BOX GABLE RECORD I • PCE REC.I ( in t e r se c t • RECORD nl BOX * RECORD mb (g a b l e IG A B L E RECORD 2 ^ R O W RECJ J r q w rec .i IM I S C • RECORD nm > RECORD I ee— ROW REC.k • • • -► pVAU. ITW CUT RECORD I / Z PCE REC.] PCE RECJ <1 REC "fl CUT r ec o r d 2 F ig u re 30. AL/CAD Data S tru ctu re. Z / / / / / / ! 7 39 job in high speed memory, the response time to the user d u rin g m odifications can be minimized. Data Fields Head Pointer Tail P ointer OPENING Record WALL R ecord OPENING Record Parent P ointer OPENING Record F igu re 31. A W all R eco rd A nd O p e n in g List. 40 A t the highest level are job records. reco rd are shown in T able 3. s tru c tu re records are gathered The in tern al fields o f the job The algorithm s th a t m anipulate these data into one place to allow easy m odification w ith o u t hazardous side effects. T able 3. Job Record. N am e id num ber job_name job date n e x t_job w all head w a ll_tail p la n _head plan tail misc_head misc_tail Type D escription integer string 3 integers pointer pointer pointer pointer pointer pointer pointer Job R ecord Id e n tific a tio n N um ber Job Name Date of the C u rren t Job Points to the next job record Points to the head of the wall list Points to the tail of the wall list Points to the head of the plan list Points to the tail of the plan list Points to the head of the misc. list Points to the tail of the misc. list A plan record is shown in Table 4 an d a miscellaneous record is shown in T able 5. A wall record is shown in T able 6. extensive record in the d a ta structure. The wall record is the most A w all record contains d ata concerning both the graphical location in screen coordinates and the actu a l location in logical coordinates f o r the separate fe a tu re s of the wall. T he size (diam eter) of the logs, the n u m ber of rows, and the height and w id th of the wall are stored. The w all record contains a p o in ter to its p a re n t job record f a c ilita te gathering c u rre n t job d ata w hile processing a w all record. to The wall record contains the heads and tails of fiv e other lists: openings, intersections, boxes, gables, and rows. An opening record is shown in T able 7. contains d a ta about a specific log opening in the c u rre n t wall. This record A log opening is used fo r a door, w indow , fireplace, pass-through, arch or f o r any other need in th e house. The w id th and height of the opening and the distance fro m the 4] flo o r are provided. O pening d ata is used m inim ally in d raw in g floor plans. The opening d ata is used extensively in draw in g elevations, an d in generating row records, box records, and piece records. T able 4. P lan Record. N am e id _num ber job _p aren t n e x t_plan Type D escription integer pointer pointer Plan R ecord Id e n tific a tio n N um ber Points to the Job p aren t record Points to the next Plan record T able 5. Miscellaneous Record. N am e id _num ber job _p aren t n e x t_misc Type integer pointer ' pointer D escription Misc R ecord Id e n tific a tio n N um ber Points to the Job p aren t record Points to the next Misc record An in d iv id u a l intersection record shown in Table 8 contains this w all’s view of an intersection between this w all and an o th er wall. The height in feet, inches, an d eighths of inch as well as the top and bottom row numbers are stored. A box record is shown in Table 9. This record contains in fo rm atio n a b o u t the "box" generated by the boxing algorithm d u rin g the layup phase. T h e "box" is a re c ta n g u la r piece of the w all th a t has no openings in it. The location of the box on this wall is also stored. T able. 10. A gable record is shown in 42 T able 6. Wall Record. N am e id _num ber nam e g_origin g_endw all direction g_scale origin endw all w id th height num row logsize job_p aren t n e x t_wall box_head box tail in te r head in te r_tail open_head open_tail gable_head gable_tail row _head row _tail Type D escription integer string 2 integers 2 integers integer 2 integers 3 integers 3 integers integer integer integer integer pointer pointer pointer pointer pointer pointer pointer pointer pointer pointer pointer pointer Wall Record Id e n tific a tio n N um ber Wall nam e (e.g. "ab") O rigin of wall in screen coordinates. E nd of wall in screen coordinates Wall direction G raphics scale O rigin of wall in logical coordinates End of wall in logical coordinates Width of wall in logical coordinates H eight of wall in logical coordinates N um ber of rows in wall D iam eter of logs Points to the Job p aren t record Points to the next Wall record Points to the head of the box list Points to the tail of the box list Points to the head of the intersection list Points to the tail of the intersection list Points to the head of the opening list Points to the tail of the opening list Points to the head of the gable list Points to the tail of the gable list Points to the head of the row list Points to the tail of the row list T able 7. O pening Record. N am e id num ber g _ o r ig i n g_w id th g _ h eig h t g_to_floor origin w id th height to_floor w all_p a re n t n e x t_open Type D escription integer 2 integers integer integer integer 3 integers integer integer integer pointer pointer Opening Record Id e n tific a tio n N um ber O rigin of opening in screen coordinates Width of opening in screen coordinates H eight of opening in screen coordinates Distance fr o m opening to flo o r O rigin of opening in logical coordinates Width of "opening in logical coordinates H eight of opening in logical coordinates Distance fro m opening to flo o r Points to the Wall p aren t record Points to the next Opening record 43 T able 8. Intersection Record. N am e id _nu m b e r g_center bot_row top_row height center w all_p aren t n e x t_in te r Type D escription integer 2 integers integer integer integer integer pointer pointer Intersection Record Id e n tific a tio n N um ber Location of center bottom o f intersection Bottom row num ber Top row num ber H eight of intersection Location of center bottom Points to the Wall p aren t record Points to the next Intersection record T ab le 9. Box Record. N am e id num ber g_origin g_w id th g_height w id th height box_status w all_p a re n t n e x t_box Type D escription integer 2 integers integer integer integer integer integer pointer pointer Box R ecord Id e n tific a tio n N um ber O rigin o f box in screen coordinates Width of box in screen coordinates H eight of box in screen coordinates Width of box in logical coordinates H eight of box in logical coordinates Box status Points to the Wall p aren t record Points to the next Box record T able 10. Gable Record. N am e id _num ber g_origin g_w id th g _ h eig h t origin pitch w all_p aren t n e x t_gable Type D escription integer 2 integers integer integer 3 integers integer pointer pointer G able R ecord Id e n tific a tio n N um ber O rigin of gable in screen coordinates Width of gable in screen coordinates H eight of gable in screen coordinates O rigin of gable in logical coordinates Pitch nu m b e r (4 fo r 4-12, 3 f o r 3-12, etc.) Points to the Wall p aren t record Points to the next Gable record This record contains d ata fo r the gable on this wall if needed. In very special cases, there may be more th a n one gable associated w ith one wall. In 44 this case, th e re would be more th a n one gable record joined together into a linked list. A row record is shown in T able 11. This record contains d ata th a t is specific to a p a rtic u la r row of pieces in this wall. The length of the row and the size of the row in graphical coordinates are stored. R ow records contain the heads an d tail f o r a linked list of piece records. A piece record is shown in T able 12. This is where the actu al data fo r a specific log piece is stored. Table 11. R ow Record. N am e id num ber g_w id th g_height g_origin w id th height origin w all_p aren t n ext row piece_head piece_tail Type D escription integer integer integer 2 integers integer integer 3 integers pointer pointer pointer pointer Row R eco rd Id en tifica tio n N u m b er Width of row in screen coordinates H eight of row in screen coordinates O rigin o f row in screen coordinates Width of row in logical coordinates H eight o f row in logical coordinates O rigin o f row in logical coordinates Points to Wall parent record Points to next Row record Points to the head of the Piece list Points to the tail of the Piece list T able 12. Piece Record. N am e id num ber g_origin g_w id th g _ h eig h t origin length a u x _length style row _p a re n t n e x t_piece cut head c u t_tail Type D escription integer 2 integers integer integer 3 integers integer integer string pointer pointer pointer pointer Piece R ecord Id en tifica tio n N u m b er O rigin of piece in screen coordinates Width of piece in screen coordinates H eight of piece in screen coordinates O rigin o f piece in logical coordinates Length of piece in logical coordinates Length of auxiliary cut Style code (e.g. "c" for corner) Points to the Row p aren t record Points to the next piece record Points to th e head of the c u t list Points to the tail of the c u t list 45 The list of m aterials portion of A L /C A D gathers the piece records and counts the nu m b e r of pieces th a t are identical. The style o f the piece and any norm al cut lengths are stored in the piece record. I f a piece contains more th a n one cut, these are stored in the linked list o f cut records attached to this piece. These special cuts occur in almost every job b u t the num ber of these special logs is usually quite small. A cut record is shown in Table 13. This record contains d a ta fo r a special cut in the cu rre n t log piece. T able 13. C ut Record. N am e id _num ber g _ le n g th length c_style piece_p aren t n e x t_cut Type D escription integer integer integer string pointer pointer C ut R ecord Id e n tific a tio n N u m b er Length o f cut in screen coordinates Length o f cut in logical coordinates Style code f o r cut Points to the Piece p aren t record Points to the next cut record The d a ta stru c tu re described above is complex but w orks 'very well. results c o n firm the design goal of fast com bination o f walls, openings, and rows. set o f algorithm s w ere developed. d ata access to a F or each type of record described above, T able 14. A L /C A D D ata Structure M an ip u latio n Algorithms. M akeRecord In itR eco rd D isplayR ecord F ileInR ecord F ileO u tR eco rd A ddR ecord D eleteR ecord C hangeR ecord ranging To m anipulate the d ata structure, a the set of algorithm s shown in Table 14 was w ritten. A lgorithm w ide The D escription Create the record. In itialize the fields of the record. D isplay the record on the screen. R ead the data for a record fro m a file. Write a copy of the d a ta fro m a record to a file. A dd the record to the d a ta structure. Delete the record fro m the d ata structure. E d it a record in the d ata structure. 46 The M akeR ecord algorithm requests a correctly sized m em ory segment fro m the mem ory m anager. d a ta fields to zero. NULL. The In itR eco rd algorithm initializes all the integer T he head, tail, and p a r e n t pointer fields are initia lize d to A ny string fields are initialized to blanks and then the end of string in d ic a to r (a null) is placed at the firs t location. generates a dialogue w indow type of display. The D isplayR ecord algorithm (For in fo rm a tio n on the w indow system see the M icrosoft Windows D evelopm ent Tool K it M anual.) The various fields in the record are id e n tifie d and th e ir c u rre n t values are displayed. The F ile In R eco rd an d F ileO utR ecord algorithm s perm it the system to save and restore a d a ta file in a text fo rm at th a t contains the d a ta structure. This allows f o r the backup of a c u rren t d a ta s tru c tu re or fo r saving a s tru ctu re to w ork on at a la ter time. The A ddR ecord algorithm adds a record to the tail of the correct linked list. If the list is em pty, it starts a new linked list. The D eleteR ecord alg o rith m deletes a record fro m the d a ta structure. C hangeR ecord a lg o rith m generates a n o th e r dialogue w indow allowing The the operator to change any fields w ith in a record. A L /C A D Boxing A lgorithm Each w all w hen shown in elevation view will contain fr o m zero to any nu m b e r of openings a n d two or more intersections w ith other walls. boxing algorithm separates the wall into one or more boxes. The A box is a p a rt of the wall th a t is solid wood and contains either no in tersections or a p a rt o f an intersection. e n tire wall. boxes. I f the wall contained no openings, the box w ould be the I f the w all contained one w indow , the algorithm w ould fin d fo u r F igure 32 shows such a w all separated into the f o u r boxes by the 47 boxing algorithm . The data for these boxes is stored in the box records of the d ata structure. ED |9 | A ir- L o c k Z C A D Mode Grid Create Phase Move View Delete Edit File UHBty Debug B oi I B oi 2 B oi 3 B oi 4 H F ig u re 32. Four B o x es In An E lev a tio n . The boxing algorithm starts at the lower left of a wall and moves to the right u n til reaching either an end of wall or the left edge o f an opening. This defines the horizontal dim ension of the box. The horizontal dim ension would be along the X or Y axis depending on the direction of the wall in plan view. H orizontal walls in plan view are placed along the X axis in elevation view. V ertical walls in plan view are placed along the Y axis in elevation view. Two lines are projected up (in the positive Z axis) until they reach the top of 48 the wall. T he d a ta on all openings contained completely or p a rtia lly between these two lines are g ath ered into a list and sorted to f in d the lowest (in the Z axis) bottom of opening. This locates the top of the box. The values calculated are then stored in a new box record. The algorithm then checks to see i f the rig h t han d edge o f this box is an end o f a wall or the le ft edge of an opening. I f it is the le ft edge of an opening, the nex t box origin is started at the bottom rig h t of th a t opening, a n d the operation described above is repeated. This process continues until the rig h t edge o f the w all is reached. The algorithm then moves to the top le ft of the f ir s t box on this wall and repeats its operation. scan is repeated u n til all the boxes are found. boxes com pletely covers the length o f the This le ft to right When the top of one or more wall at its top, the algorithm term inates. T he splicing algorithm th a t is described in the next section depends on th e boxing alg o rith m to divide the e n tire elevation into small boxes, an exam ple of a d ivide a n d conquer technique. A L /C A D Splicing A lgorithm T here are num erous types of logs p roduced by the A ir-Lock m a n u fa c tu rin g process. Some o f these are standard logs, corner logs, h a l f cope logs, and s ta n d a r d crossover logs. Standard logs are hollow com pletely through th e ir length and have a vertical groove cut in each end to fa c ilita te splicing. C orner logs are solid on one end and have a cope cut n e a r the solid end. This cope cut is a h a lf ro u n d notch c u t to allow the logs to interlock at the corner intersection betw een two walls. H a lf cope logs are sim ilar to a corner 49 log th a t was cut o f f exactly h a lf way th ro u g h the cope. b lin d intersection betw een one wall and another. This cut allows fo r a S tandard crossover logs are sim ilar to s ta n d a rd logs b u t have a cope cut somewhere along th e ir length to allow the corner log of an intersecting wall to pass over. These are only fo u r o f the twelve d if f e r e n t styles produced by the A ir-Lock factory. The A L /C A D splicing algorithm calculates the style a n d length of every log piece needed to fill an in d iv id u a l box. Splices w eaken the s tru ctu re of a log wall. The tongue cut longitudinally in the bottom of a log an d the groove cu t longitudinally in the top of a log m ake up fo r the loss of s tru ctu re by spanning the splice in a row both above and below the splice. strong construction. followed. Also, the in terlocking corners provide an extremely However, in splicing a wall various rules For instance, no splices may be m ade over an opening. must be No splice m ay be m ade in one row th a t is directly beneath a splice in the row above it. No splice may be m ade w ith in an intersection. T he box d eterm in e d by the boxing alg o rith m is passed to the splicing algorithm . Since th e re can be an in te rfa c e between two boxes, constraints concerning splices m ust be passed fro m one box to another. T he splicing alg o rith m m ain tain s a list o f these co nstraints u n til all the boxes fro m a wall h av e been processed. D a ta on waste is also m aintained. Waste is d efin e d as th a t portion of an 8-3-0 raw m aterial log le ft over a f te r a piece is removed. F or example, if the splicing algorithm needs a piece th a t is 6-3-0 in length, then the waste w ould be 2-0-0. T he r a w m aterial processed by the fin a l cu ttin g machines in the A ir-Lock fa c to ry is very expensive. desired to reduce the f in a l am ount of waste. T h erefo re, it is 50 As the splicing algorithm processes boxes, it uses a set of strategy tables, a set of rules, and the waste data to m ake the choices required. For example, if the box is less th a n 8-3-0 long and if there are no intersections in the wall a n d i f the le ft and rig h t edges of the box are constrained by openings, then s ta n d a rd logs are d e fin e d of a length equal to the box w idth. However, if the box is constrained on the le ft by the beginning of a wall and constrained on the rig h t by an opening, and if there is only one intersection in the box, and if the intersection is 1-0-0 fro m the le ft edge of the box, a n d if the box is less th a n 8-3-0 in w idth, then simple corner logs are d e fin e d of a length equal to the box w idth. F or boxes longer th a n 8-3-0 the process is com plicated by splices. A ru le stated above requires th a t no splices be in adjoining rows at the same location. This produces w h at is sometimes called the zipper effect. of rows are d efin e d th a t interleave one another. Two sets F igure 33 shows a box of this type a f te r the splicing algorithm is finished. The strategy tables a n d waste d ata are then used to m ake choices as to splice location. T hey contain The strategy tables produce a set of rules to use for splicing. various length values fo r d if f e r e n t box lengths constraints. Each strategy has associated w ith it a p rio rity value. and box All possible strategies are gathered a n d sorted by p rio rity and the highest prio rity is selected. When equal priorities are fo u n d , the contention is resolved using the w aste data. The splicing alg o rith m continues w ith all the boxes of one w all until th a t wall is finished. It then continues w ith the boxes of all o th e r walls until all the boxes in a house are finished. T he splicing algorithm w ill always be u n d er 51 f u r th e r developm ent since the constant need to reduce waste will prom pt con tin u al adjustm ents in the rules, strategy tables, and waste algorithms. I I I I 3-6-0 C I I I I 3-6-0 C I I I I 3-6-0 C I I 3-6-0 C I 6-00 C 6-0-0 C 3-6-0 C 6-0-0 C 6-0-0 C 6-0-0 C 3-6-0 C 6-0-0 C 6-0-0 C 3-6-0 C 9-6-0 F ig u re 33. S p lic in g O n e B ox. I I I I I I I I I I I I I 52 CHAPTER 4 CONCLUSIONS The m ajor goal of this thesis project was to d eterm in e the possibility of using a com puter to design A ir-Lock log houses. This goal was achieved. A design package was developed w hich dem onstrated th a t the in te ra c tiv e n atu re of a w indow ing program . system greatly enhances the frien d lin ess of a com puter The mouse pointing device allowed even an u n in itia te d user to quickly m aster the developm ent process. The sections th a t follow describe in d iv id u a l conclusions about Windows, the Windows D evelopm ent Tool K it, and the A L /C A D developm ent system. E valu atio n of M icrosoft Windows M icrosoft Windows w orked exceedingly well during my project. Windows is essentially a m ulti-tasking operating system w ith a h ig h ly graphics user in terface. The screen representations w ere clear and easy to use. The response tim e was very fa s t and the mouse track in g was sure a n d positive. I was able to copy files betw een sub directories and m a n ip u late ru n images w ith ease. T he docum entation supplied was clear and complete. The sample packages were easy to ru n and dem onstrated the m ain f e a tu r e s of Windows well. This package w ould be a very reasonably priced a d d itio n to any IBM-PC ■ or clone. I' 53 E v alu atio n of Windows D evelopm ent Tool K it The w indow s tool k it used was M icro so ft Windows D evelopm ent Tool K it V ersion 1.04. it. I fo u n d this package w orked well as soon as I was able to learn A f te r over 24 years o f experience w ith com puter h a rd w a re and softw are, I am able to u n d e rs ta n d most softw are or h a rd w a re docu m en tatio n and make use of new products w ith a m inim um of referen c e to the docum entation. k it package was d iffe re n t. This tool It took over one h u n d red a n d tw enty hours of study before I was able to begin to utilize this package effectively. I f I had not been com m itted so strongly to IBM com patibility, I w ould have not used this package. T h ere were th ree complete m anuals of docum entation and six complete sample applications delivered w ith the tool kit. the exam ples w ith o u t any problems. I was able to compile and ru n H owever, in try in g to develop my own application, I began to ru n in to .m a n y problems. The docum entation was poorly organized and it was extrem ely d if f i c u lt to f in d w here the item you needed was located. scratch. T here was no good tu to ria l section th a t helped you start fro m L im itations w ith using C began to appear. F or exam ple, you cannot use the C lib ra ry f u n c tio n fscanf. the m ain in p u t fu n ctio n , w ith MS Windows. T he am ount of source code needed to do even a simple application w indow was extensive. I had problems w ith the various m em ory models in C needed by the 80286 cpu system. I was never able to get the large memory model version of A L /C A D run n in g and h av e only been successful because the A L /C A D package c u rre n tly fits in a small memory model. Since MS Windows has control of the keyboard and screen, debugging was d if f ic u lt. A separate term inal was connected to the a u x ilia ry port on the 54 com puter and a simple symbolic debugger was used. However, I was never able to a rra n g e the c o n fig u ra tio n of the system so th a t I could enter commands fro m this separate term inal. The only d a ta I had d u rin g the m any initial crashes w ere the names of the fu n ctio n s th a t were on the ru n tim e stack at the tim e of the hexadecim al code. manuals. crash. E rror messages produced w ere a fo u r digit This code was then in te rp re te d by re fe re n c e to one of the H owever, a few of the codes presented on the te rm in al were not listed in the m a n u al and I had to use other means to determ ine my error. On the positive side, the docum entation was mostly correct. I fo u n d th a t the fu n ctio n s w orked as described an d param eters were correctly listed. large problem was fin d in g the correct section of the m anual. If The the docu m en tatio n w ere b etter organized, a n d a tutorial section were added, I could recom m end this package. It did save me time at the end of the project w hen I was redesigning the screen display. However, the tim e saved has not yet m ade up f o r the tim e lost in learning th e package. E valuation of A L /C A D T he prototype ADS system proved th a t a com puter p ro g ram could be w ritte n to do log house design. project. This was the major objective of the thesis H owever, the prototype ADS user in te rfa c e was not very easy to use. T he T e k tro n ix 4006-1 storage screen te rm in a l was dim an d h a rd to read in norm al o ffic e light. The user com m ands were understood well by a person f a m ilia r w ith com puters, but the avera g e o ffice w orker d id not have the necessary b ack ground to utilize the package effectively. Since it was so h ard to use the com m ands and so h ard to read the screen, th e o ffic e d raftsm a n n ever spent enough time to adeq u a tely learn the package. The boxing 55 algorithm failed approxim ately ten per-cent of the time leaving large portions of the house design unspliced. This w ould leave m any needed pieces of log m a te ria l out of the f in a l list of materials. The f in a l A L /C A D im plem entation alleviated all of the problems w ith the prototype. T he screen was now b rig h t an d easy to read. T he pop-up menus an d the mouse m ade com m and selection very easy for the o f f ic e staff. There is still a need to u n d e rs ta n d the A ir-Lock log m a n u fa c tu rin g process, but anyone who does know the A ir-Lock system can learn to use the A L /C A D system in a few days. The m ajor d isad v an tag e of t h e . A L /C A D package is in handling the "special cases" th a t alw ays occur in the design of a real log house. The A L /C A D package does not allow f o r easy m odifications o f specific splices. This f e a tu r e is pla n n ed f o r a f u tu r e release of the package. The list of m a te ria l generated by A L /C A D agreed fa v o r a b ly w ith w hat a hu m a n w ould generate. The waste red u ctio n results were ad eq u a te, but f u r th e r developm ent in this area is indicated. A L /C A D proved the applicability of using com puter technology in designing log homes. 56 SELECTED BIB LIO G R A PH Y P rogram m ing R efere n ce M anuals "CodeV iew an d C L anguage R eferen ce M anual." M ICROSO FT C COM PILER. M icroso ft C orp o ratio n . 1986. "MS-DOS U ser’s R eference." HP9000 SERIES300. H ew lett P a c k a rd C orporation. 1987. "P rogram m er’s R eference." M ICROSOFT WINDOWS SOFTW ARE D EV ELO PM ENT K IT . M icrosoft C o rp o ratio n . 1986. "Q uick R e fere n ce/P ro g ram m in g G u id e/A p p lic a tio n Style G uide." M ICROSOFT WINDOWS SOFTW ARE D EV ELO PM EN T K IT . M icrosoft C o rp o ratio n . 1986. "R un-T im e L ib ra ry R e fe re n c e M anual." M ICRO SO FT C C O M PILER. M icrosoft C orporatio n . 1986. "U p d a te/P ro g ram m er’s U tility Guide." M ICROSO FT D EV ELO PM EN T K IT . M icrosoft C orporation. 1986. WINDOWS SOFTWARE "U ser’s Guide." M IC R O SO FT MACRO ASSEMBLER. M icrosoft C orporation. 1986. "U ser’s Guide." M IC R O SO FT MOUSE. M icrosoft C orporation. 1986. "U ser’s Guide." M IC R O SO FT WINDOWS, D ESK TO P A PPLIC A TIO N S, WRITE, AND ' P A IN T . M icrosoft C orp o ratio n . 1987. "Users M anual." M IC R O SO FT C COM PILER. M icrosoft C o rp o ratio n . 1986. "U sing th e DOS Coprocessor." HP9000 SERIES300. H ew lett P a c k a rd C orporation. 1987. B irns, P eter; Brow n, P atric k ; and M uster, Jo h n C. "U nix F o r People." P ren ticeH all, Inc., 1985. C h ristian , K aare. "The U n ix O perating System." John Wiley & Sons, 1983. G eary, M ichael. "M icrosoft Windows 2.0: M ajor E n h an cem en ts Control." M IC R O SO FT SYSTEMS JO U R N A L . (July 1987) 19-36. H oughton, R aym ond C. Jr. "Online H elp Systems: A Conspectus", CO M M U NICA TIO N S O F TH E ACM. (F eb ru ary .1984) 126-133. O ffe r More 57 Jam sa, K ris. "DOS T he C om plete R eference." O sborne M cG raw -H ill. 1987. K e rn ig h a n , B rian W. an d R itch ie, D ennis M. "The C P rogram m ing Language." P ren tice-H all, Inc. 1978. K elley, Al. an d Pohl, Ira. "A Book On C." B en jam in/C um m ings Publishing C om pany, Inc. 1984. O lsen, D an R. Jr. "Pushdow n A utom ata fo r U ser In te rfa c e M anagem ent." ACM TRA N SA C TIO N S ON GRAPHICS. (July 1984) 177-203. S childt, H erb ert. " A rtific ia l In tellig en ce U sing C." O sborne M cG raw -H ill. 1987. W aite, M itchell; M artin , D onald; an d H ow ard W. Sams & Co., Inc., 1983. P ra ta , Stephen. "U nix P rim er P lu s " Wilson, Lynw ood. "R ule-Based P rogram m ing in C." A l E X P E R T 2 (A ugust 1987) 15-21. MONTANA STATE UNIVERSITY LIBRARIES 3 1762 10021532 4