Sign up to receive free email alerts when patent applications with chosen keywords are publishedSIGN UP

Abstract:

A system, method, and computer program for selecting geometries from a
solid model that is manipulated in a computer having software
instructions, comprising: a computer system, wherein the computer system
includes a memory, a processor, a user input device, and a display
device; a computer generated geometric model stored in the memory in the
memory of the computer system; and wherein the computer system selects a
two-dimensional sketch geometry from a two-dimensional sketch to form a
three-dimensional model using a feature command; identifies a plurality
of elements on the two-dimensional sketch geometry that correspond to the
three-dimensional model; forms a counterpart element on the
three-dimensional model that is one of a dimension and a constraint from
the identified plurality of elements; and provides the capability to
modify the three-dimensional model by manipulating the counterpart
element; and appropriate means and computer-readable instructions.

Claims:

1. A system for selecting geometries from a solid model that is
manipulated in a computer having software instructions, comprising:a
computer system, wherein the computer system includes a memory, a
processor, a user input device, and a display device;a computer generated
geometric model stored in the memory in the memory of the computer
system; andwherein the computer system selects a two-dimensional sketch
geometry from a two-dimensional sketch to form a three-dimensional model
using a feature command; identifies a plurality of elements on the
two-dimensional sketch geometry that correspond to the three-dimensional
model; forms a counterpart element on the three-dimensional model that is
one of a dimension and a constraint from the identified plurality of
elements; and provides the capability to modify the three-dimensional
model by manipulating the counterpart element.

2. The system of claim 1, wherein the computer system displays to a user
the three-dimensional model using modified visual display information.

3. The system of claim 2, wherein the computer system displays a solid
model without design intent intelligence computed from a visual display
information extracted from a solid model data file.

4. The system of claim 3, wherein the computer system loads a solid model
data file having visual display data into a solid model modeling
application.

5. The system of claim 4, wherein the computer system computes the
modified solid model into the solid model data file.

6. A method for design in a solid model, comprising:selecting a
two-dimensional sketch geometry from a two-dimensional sketch to form a
three-dimensional model using a feature command;identifying a plurality
of elements on the two-dimensional sketch that correspond to the
three-dimensional model;forming a counterpart element on the
three-dimensional model that is one of a dimension and a constraint from
the identified plurality of elements; andproviding the capability to
modify the three-dimensional model by manipulating the counterpart
element.

7. The method of claim 6, further comprising displaying to a user the
three-dimensional model using modified visual display information.

10. The method of claim 9, further comprising computing the modified solid
model into the solid model data file.

11. A computer program product, comprising a computer usable medium having
a computer readable program code embodied therein, the computer readable
program code adapted to be executed to implement a method for selecting
geometries to a solid model, the method comprising:providing a system,
wherein the system comprises a logic processing module, a display
processing module, and a method processing module;selecting a
two-dimensional sketch geometry from a two-dimensional sketch to form a
three-dimensional model using a feature command, and wherein the
selecting is performed by a method processing module in response to being
called by the logic processing module;identifying a plurality of elements
on the two-dimensional sketch that correspond to the three-dimensional
model, and wherein the identifying is performed by a method processing
module in response to being called by the logic processing module;forming
a counterpart element on the three-dimensional model that is one of a
dimension and a constraint from the identified plurality of elements, and
wherein the forming is performed by a method processing module in
response to being called by the logic processing module; anddisplaying to
a user the three-dimensional model using a modified visual display
information from the method processing module, and wherein the displaying
is performed by the display processing module.

12. The computer program product of claim 11, further comprising
displaying to a user the three-dimensional model using modified visual
display information, and wherein the displaying is performed by the
display processing module.

13. The computer program product of claim 12, further comprising
displaying the three-dimensional model without design intent intelligence
computed from visual display information extracted from a data file, and
wherein the displaying is performed by the display processing module.

14. The computer program product of claim 13 claim 8, further comprising
loading the data file having visual display data into a solid model
modeling application, and wherein the loading is performed by a data file
processing module in response to being called by the logic processing
module.

15. The computer program product of claim 14, further comprising computing
the three-dimensional model into the data file by the data file
processing module in response to being called by the logic processing
module.

Description:

[0002]The system of the innovations described herein relates generally to
computer-aided design software applications. More specifically, the
system relates to converting two-dimensional dimensions to
three-dimensional dimensions.

BACKGROUND

[0003]In today's world of computer-aided design (CAD) applications and
geometry modeling systems, parts are commonly designed in one of two
ways: history-based or history-less. A history-based system is commonly
characterized by the parametric modeling paradigm that emerged in the
mid-1980s. In parametric modeling systems, a recipe, or history tree, is
created to reflect how things are related to one another. When a change
is made to one original item, all items created later in time from the
original item are updated. In this way, for example, two faces may remain
coplanar, because they were designed with such a relationship captured
during the design process and simply "replayed" during the update
process. FIGS. 1a-c illustrate a trimetric projection of a
three-dimensional block. Referring to FIG. 1a, a C block 100 in
three-dimension ("3D") is viewable to a user on a computer display and is
in need of a modification by a user by altering a bottom leg 105, a top
leg 110, or both the bottom leg 105 and the top leg 110. In a
history-based system, how easily the user modifies the C block 100
depends upon how it was originally designed in the CAD application
system, such as SolidEdge by Siemens Product Lifecycle Management
Software Inc. Commonly, an original designer creates and/or designs a
part that is later modified by a modify designer who maybe completely
unfamiliar to the original designer. For example, if the original
designer, i.e., the person that originally designed the C block 100, had
the design method intent to constrain the faces related to the bottom leg
105 and the top leg 110 as coplanar, then the modification action
illustrated in Figure is easy to accomplish using known
parametric/history-based modeling techniques that are basic to one
skilled in the art of 3D model design, but for simple explanation because
the two faces are constrained to be coplanar, moving one face will cause
the other face to move as well. If on the other hand, the modify designer
intends to move only the face associated with the bottom leg 105 while
leaving the top leg 110 alone, e.g., FIG. 1b, then several additional
steps must transpire to remove the coplanar constraint requiring several
additional steps that begins with understanding how the two legs of the C
block 100 were created if the modify designer was not the original
designer. Furthermore, if the original designer of the C block 100 did
not model the bottom leg 105 and the top leg 110 to be coplanar but
modeled the legs by some other method such as a distance or a formula,
then to modify both as seen in FIG. 1c would increase the difficulty to a
point where the modify designer may as well model the C block 100 from
scratch.

[0004]On the other hand, modifying the C block 100 in a history-less or
the body-based approach taken by companies like CoCreate, IronCAD, and
Kubotek, for example, fails to maintain the history-tree made popular by
the parametric modeling paradigm. In the history-less approach, changes
are made explicitly for each item on a solid model. If the original
designer of the C block 100 intended that the faces on the bottom leg 105
and the top leg 110 maintain a coplanar relationship, later modifications
require the manual selection of the faces for edit to ensure the desired
result, which is difficult if the original designer's intent is unknown
or unascertainable. For example, the modify designer can make either
change illustrated in FIG. 1b or FIG. 1c is simply be selecting the one
face or individually select all of the other coplanar faces, which
happens to be a small number in this example but could be in the hundreds
in a complex assembly model. Alternatively, some software applications
could allow the modify designer to "make faces coplanar" and permanently
capture the design intent after the fact at time of edit, but this can
also be cumbersome particularly with very large models. This later
alteration would make the modification see in FIG. 1b difficult at a
later date particularly since now the design intent may be baked into the
model contrary to design intent.

[0005]The issue with the history-based approach is that design intent is
incorporated and fixed at the time of model creation, which can
complicate making changes later-on that were not anticipated at the time
of model creation. In contrast, the history-less systems are flexible
about change at a later date, but capture very little intelligence about
how things are related. If modify designers determine to manually capture
such intelligence at a later point in time, then, like history-based
systems, that intelligence is incorporated and fixed thereby limiting
further flexibility.

[0006]That said, although the history-less systems are more flexible
because a "driving dimension" can be added to the solid model after model
creation, dimensions from a two-dimensional sketch are not transferrable
to the 3D solid model. A driving dimension is one that allows the
designer to manage the design more precisely by causing modifications or
alterations based upon numerical values identified by the dimension.

[0007]The inventors have advantageously recognized a need for a system and
method for migrating dimensions from a 2D sketch model to a solid model.

SUMMARY

[0008]To address the identified need and related problems, a system
provides a system for selecting modifications to a solid model that is
manipulated in a computer having software instructions, comprising: a
computer system, wherein the computer system includes a memory, a
processor, a user input device, and a display device; a computer
generated geometric model stored in the memory in the memory of the
computer system; and wherein the computer system selects a
two-dimensional sketch geometry from a two-dimensional sketch to form a
three-dimensional model using a feature command; identifies a plurality
of elements on the two-dimensional sketch that correspond to the
three-dimensional model; forms a counterpart element on the
three-dimensional model that is one of a dimension and a constraint from
the identified plurality of elements; and provides the capability to
modify the three-dimensional model by manipulating the counterpart
element.

[0009]Other features of the system are set forth in part in the
description and in the drawings that follow, and, in part are learned by
practice of the system. The system will now be described with reference
made to the following Figures that form a part hereof. It is understood
that other embodiments may be utilized and changes may be made without
departing from the scope of the system.

BRIEF DESCRIPTION OF THE DRAWINGS

[0010]A system will hereinafter be described in conjunction with the
appended drawings, wherein like designations denote like elements, and:

[0011]FIGS. 1a-1c illustrate a trimetric projection of a three-dimensional
block;

[0017]FIGS. 7a-7b illustrate an implementation of the dimension method.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

1. Introduction

[0018]A method and system for modifying geometric relationships in a solid
model are described. In the following description, for the purposes of
explanation, numerous specific details are set forth in order to provide
a thorough understanding of the system. It will be apparent, however, to
one skilled in the art that the system may be practiced without these
specific details. In other instances, well-known structures and devices
are shown in block diagram form in order to avoid unnecessarily obscuring
the system.

[0019]FIG. 2 illustrates a sample virtual product development environment.
The virtual development environment employed today typically begins with
a customer request, or an innate desire, to create or improve upon a
product, generally shown at 200. That product can be as simple as a
bottle opener or as complex as a submarine. Referring further to FIG. 2,
an original designer models a desired product according to known methods
employed by a computer-aided design (CAD) application 205, The CAD
application 205 is executed on a general computing machine which
subsequently becomes a specific purpose computing environment for the
sake of executing computer-aided design routines at the time of
application execution and interaction, the details of which are discussed
below. The CAD application 205 is preferably SolidEdge or NX both offered
for license by Siemens Product Lifecycle Management Software Inc. A CAD
user operates the CAD application 205 in a well known and understood
manner so as to virtually display a solid model that resembles and
conforms to an original design requirement ascertained from the customer
request or the innate desire. The solid model is commonly an assembly of
components and assemblies, where the assemblies are further broken down
into sub-assemblies and/or components, all preferably having a virtual
representation stored for subsequent recall in solid model data files
225.

[0020]Once the solid model is determined to be in a suitable form
comporting to the original design requirements, it is preferably tested
using a computer-aided engineering (CAE) application 210 such as NX CAE
or FEMAP offered by Siemens Product Lifecycle Management Software Inc by
a CAE user for part fault-tolerance tests and a variety of other
engineering tests. If the CAE user determines that the solid model has to
be modified to successfully pass the fault-tolerance tests the solid
model is returned to the CAD user for modification in the CAD application
205. This iteration between the CAD application 205 and the CAE
application 210 and the respective users is recursive until the solid
model successfully passes necessary design requirements and engineering
test.

[0021]Following successful completion, the solid model in its final design
form is further designed for physical manufacture in a computer-aided
manufacturing (CAM) application 215 such as NX CAM or CAM Express both
offered by Siemens Product Lifecycle Management Software Inc. By using
the CAM application 215, a CAM user will model how numerical control
programs, molds, tools and dies manufacture a physical product 230. The
CAM user may have additional modifications to comport to the original
design requirements, for example, using eletro-discharge machining (EDM)
may require different techniques depending if a wire-cut EDM or
die-sinking EDM is used to manufacture the physical product 230. To
virtually mill a part, the CAM application 215 defines the preferably
electrode path of the orbit for the EDM process. The CAM user may
determine that in order to comport to design and engineering
requirements, the solid model requires a subtle modification in
dimensions, for example following a cool-down to allow for hardening of
the material comprising the physical product 230.

[0022]Following the successful virtual designing, engineering, and
manufacturing of the product, a manufacturer can link all manufacturing
disciplines with product engineering related to the product including:
process layout and design, process simulation/engineering, and production
management utilizing a digital factory application 220 such as Tecnomatix
offered by Siemens Product Lifecycle Management Software Inc. The
manufacturer may find the need to modify the physical product 230 because
the CAM users modeled the product with, for example, an EDM system that
is outdated and requires the manufacturer to use a 5-axis turning machine
to create the necessary blank or the manufacturer has shifted to
injection molding rather than compression molding to form the parts that
comprise the physical product 230. For example, the solid model has to be
modified to comport to the final requirements to manufacture the physical
product 230.

[0023]Throughout the virtual product development described above, the
product design flowed for example from the customer request to the CAD
user to the CAE user to the CAD user, back to the CAE user, to the CAM
user, and then to the Manufacturer for physical production of the
physical product 230. With each edit to the solid model, geometric
relationships are also modified so as to comport to the necessary design
changes by the CAD user, the CAE user, the CAM user, and the
Manufacturer, for example. Further as each of the CAD/CAE/CAM users
modify the solid model, a data model that defines the solid model is also
modified to properly account for the changes discussed above and properly
stored in the solid model data files 225. The manufacturer then proceeds
to produce the physical product 230 according to the original design
specifications and subsequent engineering modifications. The virtual
product development occurs in a system, where the system and method for
modifying geometric relationships in a solid model is executable in a
variety of software applications resident in memory on a variety of
hardware systems, described in more detail below.

2. Computer Program Product

[0024]Turning now to a hardware system, FIG. 3 is a block diagram of a
computer system in which the system may be practiced. FIG. 3 and the
following discussion are intended to provide a brief, general description
of a suitable hardware system and computing environment in which the
embodiment may be implemented. The embodiment may be performed in any of
a variety of known computing environments.

[0025]Referring to FIG. 3, an exemplary computer system includes a
computing device in the form of a computer 300, such as a desktop or
laptop computer, which includes a plurality of related peripheral devices
(not depicted). The computer 300 includes a central processing unit (CPU)
305 and a bus 310 employed to connect and enable communication between
the central processing unit 305 and a plurality of components of the
computer 300 in accordance with known techniques. The operation of the
CPU 305 is well understood in the art that is preferably an electric
circuit that can execute computer programs having computer-executable
instructions encoded thereon, such as program modules, which are executed
by the computer 300. Generally, program modules include routines,
programs, objects, components, data structures, etc., that perform
particular tasks or implementation particular data types. Preferably the
program modules include a file processing module 306, a data display
module 307, a logic processing module 308, and a method processing module
309. The logic processing module 308 sends requests to the file
processing module 306, the data display module 307 and the method
processing module 309 to operate according to the computer-executable
instructions. Likewise the logic processing module receives requests from
the file processing module 306, the data display module 307 and the
method processing module 309 to operate according to the
computer-executable instructions. The bus 310 also enables communication
among the various program modules and the plurality of components. The
bus 310 may be any of several types of bus structures including a memory
bus or memory controller, a peripheral bus, and a local bus using any of
a variety of bus architectures. The computer 300 typically includes a
user interface adapter 315, which connects the central processing unit
305 via the bus 310 to one or more interface devices, such as a keyboard
320, mouse 325, and/or other interface devices 330, which can be any user
interface device, such as a touch sensitive screen, digitized pen entry
pad, etc. The bus 310 also connects a display device 335, such as an LCD
screen or monitor, to the central processing unit 305 via a display
adapter 340. The bus 310 also connects the central processing unit 305 to
a memory 345, which can include ROM, RAM, etc.

[0026]The computer 300 further includes a drive interface 350 that couples
at least one storage device 355 and/or at least one optical drive 360 to
the bus. The storage device 355 can include a hard disk drive, not shown,
for reading and writing to a disk, a magnetic disk drive, not shown, for
reading from or writing to a removable magnetic disk drive. Likewise the
optical drive 360 can include an optical disk drive, not shown, for
reading from or writing to a removable optical disk such as a CD ROM or
other optical media. The aforementioned drives and associated
computer-readable media provide non-volatile storage of computer readable
instructions, data structures, program modules, and other data for the
computer 300 that is accessible by the file processing module 306
according to instructions received by the logic processing module 308 in
the method described by instructions provided by the method processing
module 309.

[0027]The computer 300 can communicate via a communications channel 365
with other computers or networks of computers. The computer 300 may be
associated with such other computers in a local area network (LAN) or a
wide area network (WAN), or it can be a client in a client/server
arrangement with another computer, etc. Furthermore, the embodiment may
also be practiced in distributed computing environments where task
instructions provided by the logic processing module 308 in the method
described by instructions provided by the method processing module 309
and are performed by remote processing devices that are linked through a
communications network. In a distributed computing environment, the
program modules may be located in both local and remote memory storage
devices. All of these configurations, as well as the appropriate
communications hardware and software, are known in the art.

[0028]Turning now to the program modules in more detail, FIGS. 4a-4b
illustrate a general concept of a software programming code embodied in a
software application. Referring further to FIG. 4a, the program modules
will be described in more detail below in the context of the embodiment
where a software application 400 contains accessible program modules as
those discussed above. The software application 400 may be in the form of
a solid modeling application such as the aforementioned CAD application
205, the CAE application 210 or CAM application 215. Further it is
contemplated that the software application 400 is provided by a third
party vendor with particular API ("application programming interface")
call features for access and utilization. Continuing, as the user
interacts with the software application 400, certain modification events
trigger interaction with a variational modeling toolkit 405, to be
discussed in greater detail below. The software application 400 and the
variational modeling toolkit 405 together or individually utilize the
logic processing module 308 in the method described by instructions
provided by the method processing module 309 to call a low-level
geometric modeling kernel to accomplish the certain modification events
of the solid model according to the commands selected by the user and
executed by the software application 400, as generally understood in the
art of solid modeling, but also discussed in more detail below. The
low-level geometric modeling kernel is commonly a collection of at least
a three-dimensional (3D) geometric modeler 410 like Parasolid licensed by
Siemens Product Lifecycle Management Software Inc and a collection of
geometric software component libraries 415 like the 2D or 3D Dimensional
Constraint Manager ("DCM") product offered by Siemens Product Lifecycle
Management Software Inc.

[0029]Put another way, referring to FIG. 4b, the variational modeling
toolkit 405 operates on variational edit commands communicated from the
software application 400. Additionally, the software application 400
communicates non-variational modeling calls to the 3D geometric modeler
410, and the 3D geometric modeler 410 utilizes the collection of
geometric software component libraries 415 as normally understood in the
art of geometric modelers. With regard to the variational modeling
toolkit 405, and to be discussed in greater detail below, several
operations occur related to the variational edit that involve find, edit,
solve and apply. It is commonly understood in the art of solid modeling
that the collection of geometric software component libraries above
provides modeling functionality such as geometric constraint solving,
variational design, parametric design, motion simulation, collision
detection, clearance computations, topology location, topology move
solution, and hidden line removal, for example. It is also contemplated
to be within the scope of this embodiment that the 3D geometric modeler
410 and the component libraries 415 are components of the same
application rather than separate components, or combinations thereof.
Having described the computer program product, more detail is now
provided with regard to a splitting system.

3. Dimension System

[0030]Turning now to the face splitting system, FIG. 5 is a box diagram of
a general view of a method employed by the embodiment. Referring to FIG.
5, the embodiment discloses the logic processing module 308 using the
method described by instructions provided by the method processing module
309, where the described method is a method for design in a solid model
that is manipulated in a computer having software instructions for
design, generally depicted at 500. The following steps are mentioned to
provide an overview of the embodiment described in the system having
details that are subsequently discussed. The system selects
two-dimensional sketch geometry from a two-dimensional sketch to form a
three-dimensional model using a feature command (Step 500). The system
identifies a plurality of elements on the two-dimensional sketch that
correspond to the three-dimensional model (Step 505). The system forms a
counterpart element on the three-dimensional model that is one of a
dimension and a constraint from the identified plurality of elements
(Step 510). The system provides the capability to modify the
three-dimensional model by manipulating the counterpart element (Step
515).

[0031]FIG. 6 illustrates an exemplary solid model modification system. The
user using the software application 400 executes the necessary commands
for the software application 400 to access the storage device 355 that is
preferably a hard disk drive 600 having data related to a virtual
representation of a solid model stored in the solid model data files 425
that are preferably accessible by the software application 400, the
variational modeling toolkit 405, the 3D geometric modeler 410 and the
component libraries 415. Referring further to FIG. 6, the software
application 400 is characterized by a solid modeling application 605 that
accesses the solid model data files 425 structured preferably as data
files 610 stored on the hard disk drive 600 in preferably a stand.x_t
format that refers to a modeler transmit file type for the 3D geometric
modeler 410, a stand.vtk_data format that refers to a variational
modeling toolkit information file type for the variational modeling
toolkit 405, where stand* refers to a generic part file name. The solid
modeling application 605 has its own recognized file type extensions, for
example APP, which it uses to obtain sufficient information for
manipulation of the solid model. Continuing, the solid modeling
application 605 loads the stand.x_t file into a 3D geometric modeler
session body to be accessed by the 3D geometric modeler 410. The
stand.vtk_data file is loaded and added to the 3D geometric modeler
session body. The solid modeling application 605 loads the application
data relating to the solid model and accesses the data files 610
according to its own file type, for example PRT.

[0032]The designer of the loaded solid model intends to modify some aspect
of the viewed solid model. In so intending, the designer selects a
topology that can be a face, edge, or vertex, to modify. By selecting the
topology to modify, the solid modeling application begins interactions
with the variational modeling toolkit 405 to handle the modification
computations by way of the variational modeling toolkit API 615 using
techniques known in the art. Following the solid model modification, in
order to save the modified solid model to the hard disk drive 600, block
620 illustrates the data related to the variational modeling toolkit 405
is striped from the solid model and placed into a vtk_data data structure
that is then saved to the stand.vtk_data file. The stripped solid body is
also saved to the hard disk drive 600, as is the application data.

[0033]The designer commonly generates or designs the solid model and
associated features by first drawing 2D geometry on a sketch plane in a
3D environment using software application 400 and techniques well known
and commonly understood in the art. The planar geometry is then
preferably dimensions and those dimensions are used to modify the 2D
sketch by input from the designer to change the value of the dimensions.
2D sketch dimensions changed in the this manner results in the 2D sketch
geometry processed through a 2D dimensional constraint manager, already
discussed, to form the geometry changes needed to meet the desired
dimension change. In addition to dimensions, constraints and other
annotation objects may be placed on the 2D geometry to provide geometric
relationships (constraints) or manufacturing notes (annotations).
Collectively, these objects are called DAC's (Dimensions, Annotations,
and Constraints). The geometric element that a DAC is connected to is
called a parent of that DAC. A dimension is typically connected to one or
two parents, while a constraint may be connected to one, two, or more
parents.

4. Dimension Method

[0034]Turning now to the dimension system in greater detail, the system
includes a dimension method that calls a Feature Command Procedure, which
calls a DAC Procedure, according to the following sample pseudo-code:

TABLE-US-00001
Feature Command Procedure
{
Request the designer to select 2D sketch geometry as input to
the feature
Put the 2d geometry in a list, L.
Form the 3d solid feature [not explained here]
Initiate DAC migration:
For each 2d segment S in list L
{
Find all DACs related to S
Save a map that relates each DAC found to the segment, S
}
For each DAC in the map
{
Obtain geometry parents for this DAC that are in the list L and
add those parents to a new list, P
Call the DAC procedure, OnParentElementsConsumed( ),
to perform the migration and pass in the list, P
}
}
DAC Procedure OnParentElementsConsumed( P, the List of
2dGeometryParents used in feature creation)
{
If all parents of this DAC are in the list P, then
{
Migrate this DAC to the solid:
For each parent in the list
{
Determine the 2d connect point, CP, of the DAC to this
parent
Convert the CP 2d Position to a 3d position, CP3, using the
sketch plane
Find all 3d Feature Edges created from this 2d parent
For each 3d Edge found
{
Project the edge to the sketch plane
If projection is a point, skip this edge [because we
cannot connect a DAC to edges normal to the sketch
plane]
Determine the distance of each 3d edge endpoint to
CP3
}
Determine which edge has the endpoint closest to CP3 and
designate it as a New Parent
}
When all New Parents are determined:
Create a new 3d DAC element using the New Parents
Copy all original 2d sketch DAC contents to the new 3d DAC
Mark the original 2d sketch DAC for delete
}
Else [only some parents of this DAC are used in the feature creation
process]
{
Keep this DAC as a 2d Sketch DAC, but reconnected it from the
consumed parent to a newly created edge of the model:
For each parent in the list
{
Determine the 2d connect point, CP, of the DAC to this
parent
Find all 3d Feature Edges created from this 2d parent
For each 3d Edge found
{
Project the edge to the sketch plane
If projection is a point, skip this edge [because we
cannot connect a DAC to edges normal to the sketch
plane]
Project all keypoints of the 3d edge to the 2d sketch
plane
Determine the distance of each 3d edge endpoint to
CP
}
Determine which edge has the projected keypoint closest to
CP and designate it as a New Parent
Disconnect the DAC from the original sketch element and
reconnect it to the projected 2d proxy of the New Parent
edge.
}
}
}

5. Method Illustration

[0035]FIGS. 7a-7b illustrate an implementation of the dimension method.
Referring to FIG. 7a, simple 2D sketch 700 is illustrated along with
dimensions and constraints. Solid model features are then created by the
designer from the simple 2D sketch 700 geometry by selecting the 2D
geometry as input to a feature command, for example, a protrusion feature
command. When the designer starts the protrusion feature command and
selects a 2D face 705 geometry, for example, then a 3D solid model 710
illustrated in FIG. 7b is displayed to the user using techniques well
known and understood in the art of 3D modeling. The dimensions are
migrated from the 2D sketch 700 to the 3D solid model 705 according to
the described dimensioning method.

[0036]During the creation of the 3D solid model 710, the designer
preferably selects the 2D face 705 as input to the protrusion feature
command. The protrusion feature command tracks each 2D geometry segment
from the simple 2D sketch 700 that is used as input to create the
feature. After the 2D face 705 is successfully created, the protrusion
feature command forms a mapping of the resulting edges on the 3D solid
model 710 that correspond to, or were created by, the original 2D
geometry. The protrusion feature command then initiates the sketch to
perform migration of the DAC objects connected to the 2D geometry. Each
DAC object determines if migration is possible and then it migrates to a
3D DAC, remains a 2D DAC reconnecting to the edge of the 3D solid model
710, or fails to migrate. The command provides the sketch with a list, L,
which contains the mapping from geometry segments in the sketch to the
corresponding 3d edges of the feature. The sketch regenerates, or
migrates, the DAC objects according to the dimension method described
above.

6. Conclusion

[0037]The embodiment may be implemented in digital electronic circuitry,
or in computer hardware, firmware, software, or in combinations thereof.
An apparatus of the embodiment may be implemented in a computer program
product tangibly embodied in a machine-readable storage device for
execution by a programmable processor; and method steps of the embodiment
may be performed by a programmable processor executing a program of
instructions to perform functions of the embodiment by operating on input
data and generating output.

[0038]The embodiment may advantageously be implemented in one or more
computer programs that are executable on a programmable system including
at least one programmable processor coupled to receive data and
instructions from, and to transmit data and instructions to, a data
storage system, at least one input device, and at least one output
device. The application program may be implemented in a high-level
procedural or object-oriented programming language, or in assembly or
machine language if desired; and in any case, the language may be a
compiled or interpreted language.

[0039]Generally, a processor will receive instructions and data from a
read-only memory and/or a random access memory. Storage devices suitable
for tangibly embodying computer program instructions and data include
numerous forms of nonvolatile memory, including by way of example
semiconductor memory devices, such as EPROM, EEPROM, and flash memory
devices; magnetic disks such as internal hard disks and removable disks;
magneto-optical disks; and CD-ROM disks. Any of the foregoing may be
supplemented by, or incorporated in, specially-designed ASICs
(application2-specific integrated circuits).

[0040]A number of embodiments have been described. It will be understood
that various modifications may be made without departing from the spirit
and scope of the embodiment. It is anticipated that the disclosed active
selection system will work as well with conditions such as coplanar,
coaxial, etc., as it does with features. Therefore, other implementations
are within the scope of the following claims.