Abstract:
In one aspect, a computer aided design (CAD) system is disclosed that includes a user interface comprising means for updating a current reference point for specifying a plurality of coordinate positions indicating endpoints of a plurality of graphical objects. The user interface can accept successive coordinate positions corresponding to the endpoints from a user, wherein any two endpoints define a direction. Upon specification of a new endpoint, the updating means updates the current reference point to be a penultimate endpoint if the new endpoint and the penultimate endpoint define a new direction. And if the new endpoint and the penultimate endpoint define the same direction as a current direction, the updating means maintains the current reference point (i.e., it does not change the current reference point).

Description:
RELATED APPLICATIONS  
       [0001]     This application claims priority to a provisional application entitled “A Tool For Use in Computer-Aided Design (CAD) Systems,” filed on May 1, 2006, and having an Application Ser. No. 60/796,437. This provisional application is incorporated by reference herein in its entirety. Further, the present application is a continuation-in-part (CIP) of pending U.S. patent application entitled, “Computer Aided Design (CAD) System,” herein incorporated by reference, which was filed on Apr. 30, 2004 and having a Ser. No. 10/837,253 which in turn claims priority to a provisional application by the same title filed on May 2, 2003 and having a Ser. No. 60/467,569. 
     
    
     BACKGROUND OF THE INVENTION  
       [0002]     The present invention relates generally to an enhanced CAD system for generating drawings, and more particularly, it relates to such a CAD system that provides enhanced functionality.  
         [0003]     A variety of CAD systems are known in the art, and are utilized by a variety of professionals, such as, engineers and architects, for generating drawings. These conventional CAD systems, though useful in accomplishing many tasks, are in need of improvement for providing a user with more flexibility and efficiency in creating and/or modifying drawings.  
         [0004]     Thus, there is a need for CAD systems that can be readily utilized.  
         [0005]     Moreover, there is a need for such CAD systems that provide enhanced functionality for generating drawings.  
       SUMMARY OF THE INVENTION  
       [0006]     The present invention provides a CAD system having enhanced functionality that can be implemented on a variety of platforms, and is particularly suited for implementation on a personal digital assistant (PDA), such as a Palm™ or PocketPC™ platform, although it can also be readily implemented on a desktop computer.  
         [0007]     In one aspect, a computer aided design (CAD) system is disclosed that includes a user interface comprising means for updating a current reference point for specifying a plurality of coordinate positions indicating endpoints of a plurality of graphical objects. The user interface can accept successive coordinate positions corresponding to the endpoints from a user, wherein any two endpoints define a direction. Upon specification of a new endpoint, the updating means updates the current reference point to be a penultimate endpoint if the new endpoint and the penultimate endpoint define a new direction. And if the new endpoint and the penultimate endpoint define the same direction as a current direction, the updating means maintains the current reference point (i.e., it does not change the current reference point).  
         [0008]     The user interface can allow a user to enter the coordinate positions and/or is capable of communicating with an electronic measuring device, such as a laser measurement device, to receive the coordinate positions.  
         [0009]     In a related aspect, the graphical objects, e.g., a plurality of line segments, define a drawing, e.g., a floor plan.  
         [0010]     In another aspect, a user interface in a CAD system is disclosed that includes means for accepting a plurality of coordinate positions corresponding to endpoints of a plurality of graphical objects relative to a current reference point, and means for dynamically updating the current reference point. Upon entry of a new endpoint, the updating means updates the current reference point to be a penultimate endpoint if the new endpoint and the penultimate endpoint define a new direction; otherwise it leaves the current reference point unchanged.  
         [0011]     In a related aspect, in the above CAD system, the graphical objects can comprise a plurality of line and/or gap segments that collectively define a drawing.  
         [0012]     In another aspect, a method of generating a drawing in CAD system is disclosed that includes specifying a current reference point and specifying a plurality of coordinate positions corresponding to endpoints of a plurality of graphical objects (e.g., line and/or gap segments), where any two endpoints define a direction. The method further calls for updating the current reference point if a new endpoint and a penultimate endpoint define a new direction. The updating of the current reference point can include assigning the penultimate endpoint to the current reference point.  
         [0013]     Further understanding of the invention can be obtained by reference to the following detailed description in conjunction with associated drawings described briefly below. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0014]      FIG. 1  illustrates a drawing formed of a plurality of line and gap segments that is generated by employing a “Lines-and-Gaps” tool in a CAD system according to the teachings of the invention,  
         [0015]      FIGS. 2 and 3  schematically illustrate steps in generating the drawing shown in  FIG. 1  by utilizing two tools available in a conventional CAD system,  
         [0016]      FIG. 4  illustrates an interface utilized in a CAD system of the invention,  
         [0017]      FIG. 5  illustrates exemplary drawings that can be generated by a module of a CAD system of the invention that extends the functionality of the “Lines-and-Gaps” module,  
         [0018]      FIG. 6  illustrates a drawing consisting a series of alternating objects of two different types that can be generated by a tool of a CAD system of the invention,  
         [0019]      FIG. 7  illustrates a drawing composed of alternating circles and squares, each of which is delimited by two successive points in a series of points selected by a user,  
         [0020]      FIG. 8  illustrates an interface of a CAD application according to one embodiment of the invention implemented on a Palm™ platform,  
         [0021]      FIG. 9  illustrates a pop-up keypad of the application of  FIG. 8 , and  
         [0022]      FIG. 10  illustrates a drawing menu of the CAD application of  FIG. 8 .  
         [0023]      FIG. 11  illustrates a drawing generated by a tool of a CAD system according to an embodiment of the invention, which is configured to automatically update a current reference point,  
         [0024]      FIG. 12  schematically illustrates a user interface in an exemplary embodiment of a CAD system of the invention capable of accepting coordinate positions corresponding to endpoints of graphical objects,  
         [0025]      FIG. 13  illustrates another drawing comprising a plurality of graphical objects that collectively present a floor plan,  
         [0026]      FIG. 14  is a partial system diagram of a CAD system according to some embodiments of the invention, and  
         [0027]      FIG. 15  schematically illustrates a CAD system according to an embodiment of the invention in communication with an electronic measuring device. 
     
    
     DETAILED DESCRIPTION  
       [0028]     The present invention relates to a computer aided design system that is particularly suited for implementation on a personal digital assistant (PDA), such as a Palm™ or PocketPC™ platform. A CAD system of the invention can include a plurality of tools, also herein referred to as modules, each of which provides a selected functionality. These tools cooperatively provide a CAD system that can be readily utilized, especially in the field, to generate a variety of drawings, such as, architectural floor plans.  
         [0029]     In one embodiment, a CAD system of the invention includes a plurality of drawing tools, herein also referred to as Draw tools, that allow a user to add lines, shapes and text to a drawing. These tools can include, without limitation, a “Line” tool for generating a line segment, a “Polyline” tool for generating a polygon, and 3-Pt Arc tool for generating an arc by specifying three points on the arc, a “Radius Arc” tool for generating an arc by specifying an endpoint of the arc, a radius, and an angle that the arc subtends. Other tools can include, for example, a “Box” tool for generating a box, a “Circle” tool for generating a circle, and an “Ellipse” tool for generating an ellipse. In addition, a CAD system of the invention can include a “Lines and Gaps” tool for generating line segments selectively separated by gaps, as described in more detail below. Moreover, a CAD system of the invention can include a “Text” tool that can be utilized to insert text into a drawing. Those having ordinary skill in the art will appreciate that the above list of tools is not intended to be exhaustive, and other tools can also be employed in a CAD system according to the teachings of the invention.  
         [0030]     The “Lines-and-Gaps” tool in a CAD system of the invention allows generating a plurality of line segments interspersed with gap segments that selectively separate these line segments. In other words, this tool allows drawing a plurality of line segments with gaps separating selected ones of these line segments. More specifically, the “Lines-and-Gaps” tool can be utilized to generate successive line segments and gap segments along a given direction by successive selection of points in that direction. For example, two line segments separated by a gap segment can be generated by simply selecting, in succession, four points such that the first and second points correspond to the endpoints of one of the line segments, the second and the third points correspond to the beginning and the end of the gap segment, and the third point and the fourth point correspond to the two endpoints of the second line segment. Subsequent to the selection of the fourth point, if another point along a direction different from that defined by the first two line segments is selected, another line segment connecting the fourth point to the fifth point is generated. In this manner, a plurality of line and gap segments can be formed such that along any given direction, line segments separated by one or more gap segments can be generated by simply selecting points corresponding to the endpoints of these segments.  
         [0031]     Hence, a “Lines-and-Gaps” module of a CAD system of the invention allows generating a plurality of lines selectively separated by one or more gap segments by utilizing a single tool and selecting successive points corresponding to the beginnings and the ends of the line and the gap segments without any other intervening operations, e.g., without activating another tool.  
         [0032]     By way of example and for further illustration of the functionality of the “Lines-and-Gaps” module of a CAD system of the invention,  FIG. 1  illustrates a drawing  10 , e.g., an architectural floor plan, that is generated by employing the “Lines-and-Gaps” tool of the invention. To generate the drawing  10 , an initial line segment  12  can be generated by selecting point A followed by point B corresponding to two endpoints of the line segment  12 . Subsequent selection of a point C along the same direction as that of the line segment  12 , herein referred to as direction NORTH, results in generating a gap segment  14  adjacent to the line segment  12 . Another line segment  16  perpendicular to the direction NORTH can then be generated by selecting a point D, followed by generating a gap segment  18  by selection of a point E, and another line segment  20  by selection of a point F. The above procedure can then be iteratively repeated to generate the drawing  10 . It should be understood that the drawing  10  can also be generated by initially selecting a line segment other than the line segment  12  employed in the above exemplary procedure.  
         [0033]     In some embodiments, a line segment is generated, e.g., by default, between the first two initial selected points followed by alternating gap and line segments as additional points are successively selected. Alternatively, a gap segment can form the initial segment that is generated. Further, in some embodiments, a user can specify, for example, by selecting an option presented in a menu, whether a line or a gap forms the initial segment.  
         [0034]     A “Lines-and-Gaps” module in a CAD system of the invention substantially facilitates generating drawings having a plurality of line segments selectively separated by a plurality of gap segments. In particular, it allows generating such drawings by utilizing a single tool rather than employing two or more tools in a conventional CAD system. To further appreciate the enhanced functionality provided by the “Lines-and-Gaps” tool of the invention,  FIGS. 2 and 3  schematically illustrate exemplary steps for generating the above floor plan  10  by employing tools available in conventional CAD systems. As shown in  FIG. 2 , initially a polygon  22  formed of consecutive line segments connected head to tail can be generated, based on user-specified endpoints, by employing, for example, a Polyline tool. Subsequently, segments corresponding to the gap segments  10  can be removed by specifying selected points, such as points N, O, P, Q, R, and S. Hence, generating the drawing  10  by utilizing conventional tools is at best a two-step process requiring two separate tools. In contrast, the “Lines-and-Gap” module of a CAD system of the invention allows generating the same drawing by employing a single tool.  
         [0035]     Although a CAD system according to the teachings of the invention can be implemented on a variety of platforms, in one preferred embodiment, the platform is selected to be a personal digital assistant (PDA), such as a Palm™ or PocketPC™. Such platforms are especially suited for generating drawings, e.g., architectural floor plans, in the field. This allows a user, for example, an architect to generate drawings, such as, floor plans, in the field, and subsequently, download the floor plans, if desired, onto other platforms, such as, a personal computer (PC) in the architect&#39;s office. This advantageously allows the architect to generate drawings while at a site away from office, e.g., at a construction site, without a need for carrying even laptop computers to the site.  
         [0036]     It should, however, be understood that various modules of a CAD system of the invention, including the “Lines-and-Gaps” module can be implemented on platforms other than a PDA, such as, desktop computers.  
         [0037]     A CAD system of the invention can provide a variety of different interfaces that allow a user to access to different tools available for generating, editing, and viewing drawings. By way of example,  FIG. 4  illustrates an interface  24  in an exemplary implementation of a CAD system of the invention on a Palm™ or PocketPC™ platform that includes a drawing/display area  26  below which a plurality of graphical objects, in the form of buttons, are provided. These graphical objects allow a user to access various functionalities of the CAD system. For example, each button in a toolbar  28  can be activated to access selected tools. More specifically, pressing a toolbar button can result in appearance of a pop-up menu containing several tools, each of which can be individually activated. For example, a toolbar button  30  can be activated to access Draw tools described above. Other toolbar buttons  32 ,  34 , and  36  can be activated to access, respectively, Select tools, View tools, and Build tools.  
         [0038]     With continued reference to  FIG. 4 , additional features are accessible by tapping a menu button  38 , which can activate a pull-down menu containing Drawings, Edit, and Settings menu items. In addition, the exemplary interface  24  includes input fields  40  that allow a user to enter selected attributes of graphical objects, e.g., line segments or arcs, generated in the drawing area  24 . For example, activating the input fields can result in appearance of a pop-up keypad that allows a user to enter dimensions and angles associated with a graphical object in the drawing area. Moreover, the interface  24  includes an information button  42  that provides a user access to information regarding various aspects and functionalities of the CAD system.  
         [0039]     One advantage of the above exemplary interface  24  is that the dimension of the drawing area relative to the portion devoted to various buttons for accessing tools, and other functionalities, is selected to provide a user with ample space for generating drawings while ensuring that various buttons can be readily accessed.  
         [0040]     In some embodiments, a CAD system of the invention can include a module that is an extension of the above “Lines-and-Gaps” module in that, in addition to having the functionality of the above-described “Lines-and-Gaps” module, it allows generating drawing in which the above gap segments, and/or the line segments, can be substituted with any desired graphical object, such as, a line of a drawing style or color different that the line segments, or a group of several lines representing an object in the drawing, such as, a door or a window. For example, with reference to  FIG. 5 , this module can be utilized to generate a drawing  44  having two line segments  46  and  48  separated by a gap segment  50  by sequential selection of points corresponding to the beginning and the end of each segment without any other intervening operation, e.g., choosing another tool. In addition, and by way of example, this module can be utilized to generate another drawing  52  having two solid line segments  54  and  56  selectively separated by a dashed line  58  by selecting, in succession, points that define the limits of successive solid and dashed line segments. In another drawing, the dashed line segments, or the solid line segments, can be replaced with boxes or any other graphical objects of interest. For example, this module can be employed to generate a drawing  60  having graphical objects  62  and  64  separated by another graphical object  66  by successive selection of points  66 ,  68 ,  70 , and  72 . The drawing  60 , for example, can represent an architectural floor plan in which the graphical objects  62  and  64  represent two wall segments, and the graphical object  66  represents a window or a door. It should be understood that the drawings  50 ,  52 , and  62  are presented for illustrative purposes, and this module of a CAD system of the invention can be utilized to generate drawings having any desired number of one set of graphical objects separated selectively by another set of graphical objects through successive selection of points corresponding to limits of these objects.  
         [0041]     Further, any two neighboring graphical objects in a set of objects generated by a “Lines-and-Gaps” module of the invention can form any desired angle, e.g., zero or non-zero angles, relative to one another. By way of example,  FIG. 6  schematically shows a drawing  74  formed as alternating succession of two types of graphical objects (objects A and B) by successive selections of points  74 - 92 , each of which designates an endpoint of two neighboring objects. The neighboring objects form either vanishing or non-vanishing angles relative to one another. For example, any two neighboring objects in each of the segments C, D, or E form a zero angle relative to one another. On the other hand, objects  94  and  98  form non-zero angles, and A, respectively, with objects  96  and  100 .  
         [0042]     In many embodiments of the invention, when the “Lines-and Gaps” module, or an extension thereof, is utilized for generating a succession of different object types, a user can specify which object type would form the initial object generated between the first two selected points. Alternatively, the CAD system can provide this choice by default.  
         [0043]     In the above exemplary embodiments of a “Lines-and-Gaps” module of the invention, selection of two successive points results in generation of an object that extends between those points. In another embodiment of the module, selection of two successive points results in generation of an object that is contained between those two points, but does not necessarily connect one point to the other. In other words, the successive points delimit the position of the object rather identifying its actual endpoints. As an example of the type of drawings that can be generated by utilizing this embodiment,  FIG. 7  schematically shows a drawing  102  that includes alternating square and circle graphical objects, generated by successive selection of points  104 - 122  without any intervening operations. Each of the circles or the squares is contained between two points without being connected to either one. For example, points  104  and  106  delimit square A, and points  106  and  108  delimit circle B.  
         [0044]     In this embodiment, the position of each object, e.g., each square or circle in  FIG. 7 , relative to the points delimiting its location can be selected by a user. For example, in some embodiments, the user is provided with a menu that presents a number of options for position of each object relative to the points within which it is contained, e.g., half-way between the points. Alternatively, a user can specify any desired location for the object, for example, as a percentage of distance between the two delimiting points relative to one of them. Although in some embodiments, the locations of two neighboring objects relative to their respective delimiters are the same, in some other embodiments, a user can specify different locations for two neighboring objects relative to their respective delimiters. For example, in the above  FIG. 7 , each circle and each square is positioned halfway between its respective delimiting points. In an alternative drawing, each circle and/or square can be generated closer to one delimiting point or the other, for example, based on a user&#39;s instructions.  
         [0045]     A CAD system according to the teachings of the invention, and particularly its “Lines-and-Gaps” module, can find a variety of applications. For example, as noted above, an architect can utilize the CAD system of the invention, implemented on a PDA, in the field to generate architectural drawings. In another application, an interior designer can employ the system to map out the locations of various items, such as furniture, in a space. For example, the designer can employ the functionality described in connection with the above  FIG. 7 , to specify locations of various items of furniture in a room. In yet another application, a telecommunications technician can employ the system in the field to generate a map of power lines.  
         [0046]     A CAD system according to the teachings can be implemented on various platforms by employing any suitable programming language. For example, various object oriented programming languages, such as, C++, Visual Basic, and Java™, can be utilized to implement a CAD system according to the invention. Those having ordinary skill in the art will, however, realize that various functionalities of a CAD system of the invention, and particularly, the “Lines-and-Gaps” module, can also be implemented by utilizing other object-oriented languages. Various modules of a CAD system of the invention can be implemented by employing routine programming practices known to those having ordinary skill in the art. Further, a CAD system of the invention can be implemented not only on a PDA but any other platform, e.g., desktop computers or work stations.  
         [0047]     An exemplary implementation of a CAD system according to the teachings of the invention, marketed by Applicant under trade designation ZIPCAD is discussed below. It should be understood that the following description is provided for illustrative purposes, and is not intended to limit implementations of a CAD system of the invention.  
         [0048]     With reference to  FIG. 8 , in this exemplary implementation, the most frequently used tools are accessible from a toolbar on the lower left corner of the screen. Pressing a toolbar button activates a popup menu containing several tools. Each toolbar button corresponds to one of four categories of tools. The categories and their tools are:  
         [0049]     Draw Tools: Line, Polyline, 3-Point Arc, Radius Arc, Lines &amp; Gaps, Box, Circle, Ellipse, Text.  
         [0050]     Select Tools: Pick, Select All, Deselect All, Area Select, Area Inclusive.  
         [0051]     View Tools: View All, Window, Previous View, Last View, Recenter, Zoom In/Out, Saved Views  
         [0052]     Build Tools: Line Offset, Corner Trim, Line Trim, 2-Point Trim, Break Line, Delete Segment, Mirror, Stretch, Rotate, Move, Resize, Group/Ungroup, Query, Measure, Calculate Area  
         [0053]     A more detailed description of each tool is provided below. Most tools prompt the user through a series of steps. As the user taps locations or other information, the data is displayed in the lower right portion of the screen. Tapping an input field will cause a keypad to pop-up, which allows a user to modify parameter values (as shown in  FIG. 9 ).  
         [0054]     Keypads allow users to enter precise dimensions and angles. The coordinate system can be set based on a user preference as either a Cartesian (x, y) or a Polar (distance, angle) coordinate. Likewise, lengths can be entered in metric or English units, and English measurements can be entered as feet,-inches or as decimal.  
         [0055]     As shown in  FIG. 10 , additional features are accessible by tapping the Palm menu button to the left of the Graffiti writing area. Three pull down menus are provided: Drawings, Edit, and Settings. The Drawings menu is similar to the File menu common to most desktop software applications; where drawings can be created, opened, exported, etc. The Edit menu also has common editing features such as cut/copy/paste, undo/redo, delete, etc. Finally, the Settings menu is specific to CAD features. Here is where drawing attributes, such as the current line type, color, layer settings, etc, are set.  
         [0056]     In this implementation, the main toolbar on the lower left portion of the screen has four buttons. To activate a tool, an appropriate button of the tool bar can be tapped and a tool item from a pop-up menu can be selected.  
         [0057]     Some tools are modal and their icons are displayed in the toolbar while the tool is active (see, e.g.,  FIG. 8 ). Other tools, such as the View All tool, simply perform their respective operations and then return control back to the previously active tool.  
         [0058]     Using a tool generally requires specifying locations in the drawing by tapping. Below are exemplary tools available from the toolbar.  
         [0000]     Draw Tools  
         [0059]     The right-most button of the toolbar displays the Draw tools. These tools add lines, shapes and text to the drawings:  
         [0060]     Line, Polyline, 3-Pt Arc, Radius Arc, Box, Circle, Ellipse: These tools are consistent with most CAD applications.  
         [0061]     Lines &amp; Gaps: This is one embodiment of a tool according to the teachings of the invention described above. It can be utilized to leave gaps between line segments when the preceding line was drawn in the same direction This tool is particularly helpful for rectilinear drawings with openings, such as floor plans.  
         [0062]     Text: To enter text, the location for the text can be tapped and then the text can be entered using the Graffiti area. The size of the text can be specified by utilizing “Settings&gt;Preferences&gt;Text Size.” Text in the drawing can be edited by selecting it with the Pick tool described in “Select Tools” below.  
         [0000]     Select Tools  
         [0063]     In this implementation, many tools operate only on selected objects. For example, “Edit&gt;Delete” will delete selected entities and groups in a drawing. Selected objects are indicated as being drawn more thickly than unselected objects. Below are the Select tools available from the toolbar:  
         [0064]     Pick: Entities and groups can be tapped to select them. Tapping selected objects deselects them.  
         [0065]     Select All/Deselect All: Selects/deselects all of the visible objects in a drawing, including objects outside of the screen&#39;s viewing area. Objects on layers that are not visible are not affected.  
         [0066]     Area Select: Selects objects completely contained in a user-specified rectangular window.  
         [0067]     Area Include: Select objects completely and/or partially contained in a user-specified rectangular window.  
         [0000]     View Tools  
         [0068]     There are several ways to navigate the drawing. Below are the View tools available from second button from the left:  
         [0069]     View All: This will bring visible on- and off-screen objects to within view.  
         [0070]     Window: Allows the user to specify a rectangular viewing window.  
         [0071]     Previous View: Returns to the previous view in which the drawing was modified.  
         [0072]     Last View. Returns to the most recent view in which the drawing was modified.  
         [0073]     Recenter. Allows the user to tap a new center for the viewing area.  
         [0074]     Zoom In: Enlarges the current view of a drawing.  
         [0075]     Zoom Out. Shrinks the current view of a drawing.  
         [0076]     Saved Views: Shows a dialog for saving and managing views. Views remember the viewing area of the drawing and the layer settings. For large drawings, saving views for fast recall can be a timesaver.  
         [0000]     Build Tools  
         [0077]     The following tools for trimming entities, moving, mirroring, etc., are collectively referred to as Build tools:  
         [0078]     Corner Trim: Trims two user selected lines to form a corner. The lines are selected after the tool is activated.  
         [0079]     Offset: Copies an entity to a specified offset distance. If the “Fix d” button is activated, the distance is fixed by the value in the “d:” input field. When not activated the distance is specified by the tap of the stylus. The user can toggle the “Fix d:” activation on or off at any′time by tapping its button.  
         [0080]     Line Trim: Trims entities to the specified line.  
         [0081]     2-Pt Trim: Performs the same operation as Line Trim except the user specifies a trim line by selecting two points.  
         [0082]     BreakLine: Breaks an entity at the tapped point. If two or more lines are tapped at the same time (e.g., a line intersection) then the selected line is given precedence.  
         [0083]     Del Segment: Deletes a segment from an entity. When selecting circles or ellipses, a point on a portion of the curve to be deleted is tapped.  
         [0084]     Mirror: Reflects selected entities about a line specified by two points.  
         [0085]     Stretch: “Stretches” objects by moving some of their points a specified distance. This is not a proportional stretch, but rather moves all of the points within the user-specified window by the given distance.  
         [0086]     Move/Rotate: Moves/rotates the selected objects a given distance/angle. Executing the “Edit&gt;Duplicate” tool immediately after these tools will create a copy of the objects with offset specified.  
         [0087]     Resize: Enlarges or shrinks selected objects a specified amount.  
         [0088]     Group/Ungroup: Group collects entities into a single group that can be selected with a single tap. Ungroup disassembles a group into its original objects.  
         [0089]     Query: Gives information about the selected objects. If more than one object is selected when the tool is activated, it gives all of the information common to the selected objects. After activation, it gives information on subsequently tapped objects.  
         [0090]     Measure: Displays the distance between two user-specified points. The default display is Cartesian (x,y). This format will display the distance along the x- and y-axis. To change the display to Polar, which will give the total distance between the points and the corresponding angle, the setting of “Setting&gt;Preferences&gt;Coordinates” can be changed to Polar while this tool is active.  
         [0091]     Area: Calculates the area of a user-specified polygon. If any lines of the polygon overlap, the area is invalid and a 0.0 is displayed.  
         [0000]     Snapping  
         [0092]     Most of the aforementioned tools require a user to specify locations on the screen by tapping. When snapping is enabled, the user&#39;s tap may be interpreted as certain snap locations, such as line intersections, end-points, etc. “Settings&gt;Snap Preferences.” can be utilized to specify tapping behavior.  
         [0000]     Anytime Viewing  
         [0093]     Two View tools for navigating the drawing are always active:  
         [0094]     Anytime Recenter-and-Zoom. To change the center of a viewing area at anytime, a stylus can be held to the screen. After a short delay, the location indicated by the stylus will move to the center of the screen. If the stylus is continued to be held to the screen, the system will zoom in on that location. This operation can be performed at anytime, even when using another tool that expects a tap (the delayed tap for Recenter and-Zoom will be ignored by the currently active tool)  
         [0095]     HardKey Pan-and-Zoom: A drawing can be panned and zoomed at anytime using the hard keys at the bottom of the device (Calendar, Addresses, etc.) For most Palm OS handhelds that have an up/down key in the center, the key mapping is:  
         [0096]     Calender: Zoom Out  
         [0097]     Addresses: Pan Left  
         [0098]     Up: Pan Up  
         [0099]     Down. Pan Down  
         [0100]     Tasks: Pan Right  
         [0101]     Memo Pad: Zoom In  
         [0102]     For devices that have a four-way navigator button with a select button, the key mapping is  
         [0103]     Calender. View All  
         [0104]     Addresses: Zoom Out  
         [0105]     4-way navigation: Pan left/right/up/down  
         [0106]     Select: Zoom In.  
         [0107]     Tasks: Previous View  
         [0108]     Memo Pad: Last View  
         [0000]     Menu Tools  
         [0109]     Several tools are available from the pull down menus, accessible by tapping the handheld&#39;s menu button ( FIG. 10 ). Below is a list of the menus and their tools.  
         [0000]     Drawings Menu  
         [0110]     The Drawings Menu is very similar to the File menu found in most desktop software applications.  
         [0111]     New: Start a new drawing. If the drawing currently being edited is named, it is automatically saved. If it is not named, the user is given the option of saving the drawing with a name or discarding the drawing.  
         [0112]     Open . . . , Save As . . . : Similar to New, these features save or give the option of discarding the currently active drawing. They then display a File Dialog box listing all of the ZIPCAD drawings on the handheld. These dialogs also give the user the option of deleting existing drawings.  
         [0113]     Revert: Discards all of the changes made since the drawing was last saved.  
         [0114]     Info: Displays information about a drawing, such as the size of the drawing and the number of entities.  
         [0115]     Export DXF: Queues the drawing for DXF file exporting during the next HotSync operation. In this implementation, the status of the drawing at the time of the HotSync operation is what is exported, not the state of the drawing when the export was queued. Exporting will be canceled if the drawing is deleted.  
         [0000]     Edit Menu  
         [0116]     This menu is similar to the Edit menu on most desktop software applications. The features available from this menu are:  
         [0117]     InfiniteUndolRedo: Any change to the drawing can be undone or redone with these tools. Exiting the drawing clears the UndolRedo stack.  
         [0118]     Cut/CopylPaste: These are ZiPCAD clipboard features for moving or copying objects across layers and drawings.  
         [0119]     Delete: Similar to Cut, except a copy of the objects is not placed on the clipboard.  
         [0000]     Settings Menu  
         [0120]     This menu allows users to customize their drawings and ZiPCAD preferences to their liking.  
         [0121]     Layers: Layers can be added, deleted, renamed, toggled on/off, and set as the active layer. The active layer receives all newly created entities.  
         [0122]     Line Types/Colors: Four line types are available: solid, dotted, dashed, and dot-dashed. Selecting a line type will change the type for all of the selected entities and for all newly created entities. For handhelds that support color, 16 user-customized colors are provided. When DXF files are exported, no color table is exported. Rather, only the color index (1-16) for each object is exported. This allows customizing ZiPCAD color table to match the settings of desktop CAD program.  
         [0123]     Snap Preferences: The snap settings available in this implementation are End-Point, Mid-Point, Perpendicular, Intersection, Curve Quadrant, and Snap Angle. These can be used in any combination. The maximum distance between the tap location and the snap point is specified by the Snap Aperture setting.  
         [0124]     Help: This provides a much-abbreviated version of a manual for the application. When running certain ZiPCAD tools a small information button with an “i” in it appears in the lower right-hand corner of the screen (see  FIG. 8 ). This button can be tapped to obtain information regarding the currently active tools.  
         [0125]     About ZiPCAD: Displays some company information and the “Register . . . ” button allowing unregistered users to enter the unique ZiPCAD key.  
         [0126]     The tools discussed above can be employed to generate various types of drawings, such as floor plans and exterior elevations. In many implementations, a user can utilize a user interface to enter values of endpoints (i.e., point locations) of graphical objects, such as line and gap segments, that comprise such drawings. When specifying point locations, the user typically enters values in Cartesian coordinates (x,y,z) or polar coordinates (distance, angle). The location of each point needs to be unambiguously specified regardless of how it is accomplished.  
         [0127]     The value entered when specifying a point is relative to some known point in the drawing. It can be relative to the origin of the drawing (typically (0,0,0) in Cartesian coordinates) or it can be relative to an existing point in the drawing, such as the end-point of an existing line segment, the center of an existing circle, etc.  
         [0128]     When specifying locations relative to an existing point in the drawing, the existing point is referred to as the current reference point. In some embodiments, the current reference point remains static (i.e., it does not change) as various graphical objects are added to a drawing. In contrast, in other embodiments, the current reference point is dynamically updated as various objects are included in a drawing. By way of example, in some embodiments, one or more drawing tools are configured (e.g., via communication with a software component of the user interface) to automatically specify the current reference point as the location of the last change in a direction when specifying a sequence of points that may or may not change direction along a line, as determined by previous two points entered. The last two points entered define a current direction. If a subsequent point is specified along the current direction, the current reference point remains unchanged. However, if a subsequent point is specified along a different direction, the penultimate point entered (i.e., the point entered immediately prior to a new point) will be utilized as the current reference point. Again, the last two points entered define the new current direction.  
         [0129]     By way of illustration,  FIG. 11  shows an exemplary drawing  200  generated by a tool of a CAD system according to an embodiment of the invention, which is configured to automatically update a current reference point. The drawing  200  includes eleven points, which specify the endpoints of a plurality of line segments that collectively constitute the drawing. The endpoints of the line segments can be entered by the user specified points within the drawing, e.g., by tapping the points within a drawing or specifying the coordinates via a user interface. By way of example, by reference to  FIG. 12 , a user interface  300  can provide a pair of dialog boxes  300   a / 300   b  within which the coordinates of a given point can be entered. The dialog boxes can be invoked, e.g., via a button in a pull-down menu or any other manner known in the art.  
         [0130]     Referring again to  FIG. 11 , dots are indicated where the reference point was automatically updated based on a change in direction, where a current direction is defined by last two points entered. In this example, after specifying the first point, the subsequent drawing was created by specifying following values in Table 1 below.  
                                         TABLE 1                                   Point   (X, Y)                                        1   —           2    (0′-0″, −11′-0″)           3   (3′-6″, 0′-0″)           4   (0′-0″, 2′-6″)           5   (3′-0″, 0′-0″)           6   (6′-0″, 0′-0″)           7   (8′-9″, 0′-0″)           8   (0′-0″, 2′-9″)           9   (0′-0″, 5′-9″)           10   (0′-0″, 8′-6″)           11   (−12′-3″, 0′-0″)                       
 
         [0131]     By way of example, initially point  1  (i.e., the initial point) is the current reference point. The initial point and a subsequent point  2  define an initial direction. As the direction defined by point  2  and subsequent point  3  is different than the initial direction (i.e., direction defined by points  1  and  2 ), upon entry of point  3 , the current reference point is updated to be at the location of point  2 . Similarly, as subsequent point  4  and point  3  define a different direction than that defined by points  2  and  3 , upon entry of point  4 , the current reference point is updated to be at the location of point  3 . Entry of point  5  also results in updating of the current reference to the location of point  4  as the direction defined by points  5  and  4  is different than that defined by points  4  and  3 . However, the entry of a subsequent point  6  does not result in updating of the current point (i.e., the current reference point remains at the location of point  4 ) since the direction defined by points  6  and  5  is the same as the direction defined by points  5  and  4 . This updating process is repeated until the last point ( 11 ) is entered.  
         [0132]     The dynamic updating of the current reference point provides a number of advantages. By way of example, when spatial dimensions are collected in the field, e.g., via a laser, tape measure or otherwise, dynamic updating of the current reference point can facilitate logging of those dimensions spatially when there are significant changes in geometry.  
         [0133]     The use of dynamic updating of the current reference point is not limited to a particular type of drawing, such as the above exemplary drawings  200 , but can be utilized for a variety of drawing that include various types of graphical objects. For example, one or more line segments in the above drawing  200  can be replaced with other graphical objects, such as gaps, windows, doors, etc. By way of further illustration,  FIG. 13  provides an example of another drawing  400  in which dynamic updating of the current reference point can be utilized.  
         [0134]     The dynamic updating of the current reference point can be employed in a user interface in connection with any of the tools discussed above. The software implementation of the dynamic updating of the current reference point can be achieved by utilizing any suitable programming language, such as Java™, C/C++, or any other equivalent technology, including assembly language. By of way of illustration,  FIG. 14  depicts a partial system drawing of a CAD embodiment  500 , indicating a plurality of drawing tools  502  (such as the tools discussed above) that are in communication with a user interface  504 . A software component  506 , in communication with the interface and/or the tools, provides updating of the current reference point.  
         [0135]     In some embodiments, the points can be obtained by utilizing an electronic measuring device, for example, a laser distance meter. By way of example, such a laser distance meter can be interfaced with a CAD system incorporating a drawing tool to obtain a plurality of points, e.g., corresponding to a floor plan, and transmit the coordinates of those points to that tool.  FIG. 15  schematically depicts a CAD system  600  in accordance with such an embodiment that includes a communication module  602  for communicating with an electronic measuring device  604 , e.g., a laser-based device, via any suitable communication protocol. The communication module can receive coordinate positions (e.g., coordinate positions corresponding to various locations of an enclosure (e.g., a room)) and can transmit those coordinates to other components of the CAD system for further processing.  
         [0136]     Those having ordinary skill in the art will appreciate that various modifications can be made to the above embodiments without departing from the scope of the invention.