Patent Description:
PDM systems manage PLM and other data. Improved methods and systems are desirable.

Various disclosed embodiments include methods for operating a computer aided design (CAD) system model in a modelling system.

The present invention provides, in a first aspect, a method according to claim <NUM> for generating an article to be manufactured, the method performed on a data processing system; the method comprising: receiving a representation of the article in <NUM>-dimensions, or in <NUM>-dimensions as an initial piecewise cubic Bézier curve; receiving one or more constraints for the article associated with a parameter of the article; determining a maximum permissible curvature of one or more parts of the article from the constraints of the article, wherein the parameters of the article comprise a physical property of a material from which a part of the article is to be manufactured; measuring the maximum curvature of the one or more parts of the article in the received representation; comparing the measured maximum curvature with the maximum permissible curvature determined from the constraints of the article; and, if the measured maximum curvature of at least one of the one or more parts exceeds the determined maximum permissible curvature, providing an error indication; or if the measured maximum curvature of each of the one or more parts does not exceed the determined maximum permissible curvature, storing the received representation for the article; wherein the method further comprises generating an optimal piecewise cubic Bézier curve through the same interpolation points as the initial piecewise cubic Bézier curve, the optimal curve having the lowest curvature possible with the same number of Bézier intervals as the initial piecewise cubic Bézier curve.

The present invention provides, in a second aspect, a data processing system according to claim <NUM>, which includes a processor; and an accessible memory, the data processing system particularly configured to carry out the steps of: receiving a representation of the article in <NUM>-dimensions, or in <NUM>-dimensions as an initial piecewise cubic Bézier curve; receiving one or more constraints for the article associated with a parameter of the article wherein the parameters of the article comprise a physical property of a material from which a part of the article is to be manufactured; determining a maximum permissible curvature of one or more parts of the article from the constraints of the article; measuring the maximum curvature of the one or more parts of the article in the received representation; comparing the measured maximum curvature with the maximum permissible curvature determined from the constraints of the article; and, if the measured maximum curvature of at least one of the one or more parts exceeds the determined maximum permissible curvature, providing an error indication; or, if the measured maximum curvature of each of the one or more parts does not exceed the determined maximum permissible curvature, storing the received representation for the article wherein the method further comprises generating an optimal piecewise cubic Bézier curve through the same interpolation points as the initial piecewise cubic Bézier curve, the optimal curve having the lowest curvature possible with the same number of Bézier intervals as the initial piecewise cubic Bézier curve.

The present invention provides, in a third aspect, a non-transitory computer-readable medium according to claim <NUM>, encoded with executable instructions that, when executed, cause one or more data processing systems to perform a method of modifying a computer aided design (CAD) system model, the method performed on a data processing system, the method comprising: receiving a representation of the article in <NUM>-dimensions, or in <NUM>-dimensions as an initial piecewise cubic Bézier curve; receiving one or more constraints for the article associated with a parameter of the article; determining a maximum permissible curvature of one or more parts of the article from the constraints of the article, wherein the parameters of the article comprise a physical property of a material from which a part of the article is to be manufactured; measuring the maximum curvature of the one or more parts of the article in the received representation; comparing the measured maximum curvature with the maximum permissible curvature determined from the constraints of the article; and, if the measured maximum curvature of at least one of the one or more parts exceeds the determined maximum permissible curvature, providing an error indication; or, if the measured maximum curvature of each of the one or more parts does not exceed the determined maximum permissible curvature, storing the received representation for the article; wherein the method further comprises generating an optimal piecewise cubic Bézier curve through the same interpolation points as the initial piecewise cubic Bézier curve, the optimal curve having the lowest curvature possible with the same number of Bézier intervals as the initial piecewise cubic Bézier curve.

The foregoing has outlined rather broadly the features and technical advantages of the present disclosure so that those skilled in the art may better understand the detailed description that follows. Additional features and advantages of the disclosure will be described hereinafter that form the subject of the claims. Those skilled in the art will appreciate that they may readily use the conception and the specific embodiment disclosed as a basis for modifying or designing other structures for carrying out the same purposes of the present disclosure. Those skilled in the art will also realize that such equivalent constructions do not depart from the scope of the disclosure in its broadest form.

Before undertaking the DETAILED DESCRIPTION below, it may be advantageous to set forth definitions of certain words or phrases used throughout this patent document: the terms "include" and "comprise," as well as derivatives thereof, mean inclusion without limitation; the term "or" is inclusive, meaning and/or; and the term "controller" means any device, system or part thereof that controls at least one operation, whether such a device is implemented in hardware, firmware, software or some combination of at least two of the same.

Definitions for certain words and phrases are provided throughout this patent document, and those of ordinary skill in the art will understand that such definitions apply in many, if not most, instances to prior as well as future uses of such defined words and phrases. While some terms may include a wide variety of embodiments, the appended claims may expressly limit these terms to specific embodiments.

<CIT> teaches designing roads having maximum curvatures using CAD. <CIT> and <CIT> teach designing cables having maximum curvatures using CAD.

An example of method and system for modelling an article to be manufactured according to the present disclosure will now be described with reference to the accompanying drawings in which:.

The embodiments of <FIG> used to describe the principles of the present disclosure in this document are by way of illustration only and should not be construed in any way to limit the scope of the disclosure. Those skilled in the art will understand that the principles of the present disclosure may be implemented in any suitably arranged device, apparatus, system, or method.

<FIG> illustrates an example of a data processing system in which an embodiment of the present disclosure may be implemented, for example a CAD system configured to perform processes as described herein. The data processing system <NUM> comprises a processor <NUM> connected to a local system bus <NUM>. The local system bus connects the processor to a main memory <NUM> and graphics display adaptor <NUM>, which may be connected to a display <NUM>. The data processing system may communicate with other systems via a wireless user interface adapter connected to the local system bus <NUM>, or via a wired network, e.g. to a local area network. Additional memory <NUM> may also be connected via the local system bus. A suitable adaptor, such as wireless user interface adapter <NUM>, for other peripheral devices, such as a keyboard <NUM> and mouse <NUM>, or other pointing device, allows the user to provide input to the data processing system. Other peripheral devices may include one or more I/O controllers such as USB controllers, Bluetooth controllers, and/or dedicated audio controllers (connected to speakers and/or microphones). It should also be appreciated that various peripherals may be connected to the USB controller (via various USB ports) including input devices (e.g., keyboard, mouse, touch screen, trackball, camera, microphone, scanners), output devices (e.g., printers, speakers), or any other type of device that is operative to provide inputs or receive outputs from the data processing system. Further it should be appreciated that many devices referred to as input devices or output devices may both provide inputs and receive outputs of communications with the data processing system. Further it should be appreciated that other peripheral hardware connected to the I/O controllers may include any type of device, machine, or component that is configured to communicate with a data processing system. Further, systems may use other types of input devices to provide inputs for manipulating objects such as a mouse, pointer, touch pad, drawing tablet, track ball, joystick, keypad, keyboard, camera, motion sensing device that captures motion gestures, or any other type of input device capable of providing the inputs described herein.

In CAD systems, a user may wish to model a design for an object, generate manufacturing instructions for manufacturing that object, or make modifications to the design or manufacturing instructions. The present disclosure relates to a system and method for controlling behaviour in a <NUM>-dimensional or <NUM>-dimensional parametric model. When creating or editing shapes in such models, it is important that the resulting shape meets the end user's requirements both in the model and when actually manufactured in a specified material. When designing a system, or article for manufacture, it is important that the shape as modelled for the design can actually be manufactured. There may be limitations on the system or articles imposed by the material properties of the material that is to be used to manufacture the article. It is desirable to incorporate these constraints into the model, so that when a design is made, or an edit is applied to any element of a shape of the system or article, the model will not result in a characteristic, which either cannot be manufactured in practice, or which, when manufactured, may fail prematurely. An example of this is a system with pipe work, or cabling, where there are limits on the maximum curvature of the pipes or cables that is acceptable, or metalwork, such as rails, spars, or rigging and terminations for these. The method is also useful to provide curvature control, so that a reasonable shape can be achieved with a minimal number of interpolation points. CAD systems often incorporate the ability to fit a spline curve through a set of interpolation points. This can be achieved in many ways, but one of the desirable features is the ability to specify a maximum curvature for the curve.

Although for a designer, limiting maximum curvature helps to give a curve shape which is pleasing to the eye, i.e. one that does not pass through the interpolation points too tightly, limiting maximum curvature is a critical parameter for routing applications, where it is important to ensure that paths modelling wires and pipes do not exceed the maximum curvature allowed by the relevant physical materials from which those wires or pipes are to be manufactured. In a system comprising multiple components, or parts, including components such as wires or pipes which must be fitted around other bulky products in the system, the model of the system needs to take account the practicality of actually manufacturing a wire or pipe, or other length of a product to have the given curvature that the design shows at each position along its length. Changing the location of another product in the system may result in the line of cable run or pipe run being forced into too tight a curve to be successfully manufactured.

In general, constraining the maximum curvature of a curve is a difficult problem, since the point of maximum curvature is not fixed, and the curvature equation is highly non-linear. The disclosure provides a solution to this problem for the case of an interpolating curve represented by a series of cubic Bézier segments.

The method of the present disclosure provides a way of finding the optimal shape for the spline in a way that is relatively fast - the optimized shape is calculated in O(n) time, where n is the number of interpolation points and with a solution which is generally stable to small changes in the interpolation point positions.

The method is based on a received representation of an article, such as a cable run, or pipe work, or metalwork. Bends in the article designed to fit within a system, or around other products in the system, may be represented as a spline <NUM>, for example a spline comprising cubic Bézier segments, which is a standard form for a spline. The method is used to limit the maximum curvature of the spline. In the example illustrated, each cubic Bézier segment comprises four control points (C<NUM>-C<NUM>), as shown in <FIG>. The curve <NUM> has various key geometric properties, regardless of the positions of the control points. These are that C<NUM> is geometrically coincident to the start of the curve; C<NUM> is geometrically coincident to the end of the curve; the start of the curve is tangent to a line <NUM> between C<NUM> and C<NUM>; and the end of the curve is tangent to a line <NUM> between C3 and C4. For each part of the article, such as a cable or pipe work, or length of metalwork in which there is curvature, a spline representation is allocated in the model and processed as described hereinafter. For simplicity in the explanation, the description refers to the spline or curves of the model representing a part of an article to be manufactured.

An interpolating spline may be constructed using a series of such cubic Bézier segments <NUM>. An example of such a curve <NUM>, or interpolating spline, interpolating the points P1, P2, P3 and P4 is shown in <FIG>. In this example, the spline <NUM> is a piecewise cubic Bézier curve comprising three cubic Bézier segments, or curves <NUM>, <NUM>, <NUM>. The end control points C8, C11 of each segment are shared with the previous and next segments, i.e. the first segment is between C5 and C8, the second between C8 and C11 and the third segment is between C11 and C13. This ensures that the curve is C0 continuous, i.e. with shared end control points, the overall curve will not have any gaps. If the adjoining pairs of control points are collinear, then the overall curve is tangent (G1) at the common control point. In order to ensure that the curve is G1 continuous at the joins between the segments, adjoining pairs of control points must be collinear. Hence, C8 must lie on a line <NUM> between C7 and C9, and C11 must lie on a line <NUM> between C10 and C12. In the same way as in <FIG>, the start of the curve <NUM> is tangent to a line <NUM> between C5 and C6; and the end of the curve <NUM> is tangent to a line <NUM> between C14 and C13.

This example may be generalised to n interpolation points P1 to Pn, for which the curve <NUM> comprises n-<NUM> Bézier segments <NUM>, <NUM>, <NUM>, with <NUM>(n-<NUM>) +<NUM> control points. This example shows the simplest construction for a piecewise Bézier spline, with a single Bézier curve or segment between two interpolation points, but it is also possible to have more than one Bézier curve, or segment, between each pair of interpolation points. This has advantages for minimizing the curvature, since there are more freedoms for the curve. The method described applies equally to those more complex curves. Thus, a cable run with a more complex shape may be represented using multiple Bézier curves between interpolation points. Using more Bézier segments allows a solution with a slightly higher maximum radius of curvature.

Given a set of interpolation points Pi, and the geometric constraints on a piecewise Bézier spline interpolating those points, there are many possible curve shapes that may be generated. The present disclosure provides a method of ensuring that the generated curve does not exceed a given global maximum curvature, k. Typically, this value k is under the control of the user. The value may be provided directly as part of the method, for example, by user input, or extracted from a store, the value having been determined in an earlier step. Alternatively, the value may be calculated as part of the method of the present disclosure, using received inputs relating to the material properties or other parameters which control the behaviour of the material from which the part will be manufactured and so limit the amount of curvature that the part can have.

Whichever way the maximum curvature has been obtained, the method of the present disclosure stars by receiving a representation of the article in <NUM>-dimensions, or in <NUM>-dimensions. That representation may be described as an initial piecewise cubic Bézier curve, for example curves <NUM>, <NUM> as shown in <FIG> and <FIG> and described in more detail below. To ensure that the representation does not exceed the curvature limitation, the maximum curvature of the original curve, or the maximum curvature of each of the segments of the curve, as appropriate, are measured. The measured curvature is then compared with the determined maximum permissible curvature, for given constraints of the article.

If the measured curvature does not exceed the maximum permissible curvature, then the representation of the article as represented by the curve is deemed acceptable and that representation may be stored for use in manufacturing, or used in further processing. If the measured curvature is found to exceed the maximum permissible curvature, then further steps are required to obtain an acceptable amount of curvature. In one case, the next step may be to generate an optimal piecewise cubic Bézier curve through the same interpolation points. This optimal curve is one having the lowest curvature possible with the same number of Bézier intervals as the original curve. This is described in more detail below.

Again, the maximum curvature of the curve, in this case, the optimal curve, is measured. The measured curvature is then compared with the determined maximum permissible curvature, for given constraints of the article. If the measured curvature still exceeds the determined maximum permissible curvature, then the process stops, typically with an error indication, as it is not possible to achieve a better solution than that of the optimal curve. In response a user may need to adjust the interpolation positions slightly, or possibly choose a different material from which to make the article and hence change the constraints. However, if the measured curvature does not exceed the determined maximum permissible curvature, when using an optimal curve, then further steps may be taken to improve upon that optimal, lowest possible curvature, curve.

For example, if there are two curves with the same number of Bézier segments, one of which has a curvature >k, the other having a curvature <k and these curves bound an infinite family of curves, the shapes of which are determined by the control point positions of the initial and optimal curves, as well as a single parameter x (<NUM>≤x≤<NUM>) which is used to select the desired curve, then it is possible to vary the single parameter, x to try to find a member of the family of curves which has a curvature of k, to some specified tolerance. If this step produces a solution, then this intermediate curve may be used. If no solution is found, then the process may terminate with an error condition, or may return the solution closest to the desired curvature, but without exceeding it.

Another option, for a design made up of several segments, some of which are within the acceptable maximum curvature and some of which are not, is to keep the segments that are acceptable and then try modifications to the ones that are not acceptable to obtain a curvature that is within the limits. The whole curve representing the path of the cables or pipes, as modified, is then saved. This may be done by choosing a section of curve which needs to be adjusted, then fixing the tangent directions at the start and end of that section. This gives a sub-curve to optimise using the method as described. If no solution is found, the region may be expanded repeatedly, until it comprises the whole curve.

The procedure is affinely invariant. Hence, if C(p) is the curve from points pi, and T is a translation, rotation or scaling, then T(C(p)) = C(T(p)).

The selection of the optimal curve is a difficult problem. In general, it might be possible to use general n-dimensional minimisation techniques to find the set of control point positions that minimize the global curvature, subject to G1 continuity between the segments. Unfortunately, the maximum curvature is highly non-linear and jumps from place to place along the curve as the control point positions are varied. For small numbers of Bézier segments, it might be possible to search the parameter space exhaustively. Otherwise, we must use methods that find a global minimum that is close in value to the true minimum. Unfortunately, for the problem considered here, such a method leads to unstable spline shapes, changing significantly as the interpolation point positions are varied slightly.

The approach outlined here is to note that, for the case of three points, the lowest curvature path is an arc interpolating the points. Note that, in general, this isn't the case for more than three points. However, many real world interpolation problems are characterised by straight line segments (equivalent to infinite radius circles here) and right-angled bends (quarter circles). In these cases, the lowest curvature path is often a series of lines and arcs. Even for more general cases, such a construction is also close to optimal. We therefore seek an optimal curve which is a Bézier curve approximation to a sequence of arc and straight line segments.

The first step in the calculation of the optimal curve is to fit a series of exact arc segments to the interpolation points, using the following method:.

The result of the process, for a case involving four interpolation points, is shown in <FIG>. A series of three arcs <NUM>, <NUM>, <NUM> are fitted to four interpolation points P5 to P8. Given an initial curve direction (θ1), the parameters of the arcs are uniquely determined. Due to the choice of θ1, the procedure described in steps <NUM> to <NUM> above does not generally give the series of arc segments with lowest curvature through the interpolation points. To achieve the series of arc segments with lowest curvature through the interpolation points, then θ1 is varied, using standard 1D minimization techniques, until the curve with the lowest curvature is found, i.e. the minimum radius of the string of arcs is maximised.

The final step in determining the optimal curve is to convert the series of arcs to a piecewise cubic Bézier representation. The end points of each Bézier segment are known, they are the relevant interpolation points, and the end directions are also known, from the directions of the arcs through the interpolation points. The only freedom for each Bézier segment is therefore the length of C1-C2 and C3-C4 (see <FIG>). Since the aim is to approximate an arc, the lengths of C1-C and C3-C4 are set to be equal to one another, leaving only a single degree of freedom for each Bézier segment <NUM>.

The single degree of freedom may be constrained in various standard ways. The simple requirement that the mid-point M of the Bézier segment <NUM> is geometrically coincident to the midpoint of the relevant arc <NUM> may be adopted. This procedure enables a Bézier curve to approximate circular arcs, i.e. those with internal angles of ≲<NUM>°, to within a few percent, for example, as shown in <FIG> illustrates fitting a Bézier segment <NUM> to an arc <NUM>. The lengths of line C15-C16 <NUM> and line C17-C18 <NUM> are equal. Making midpoint M coincident to the middle of the arc <NUM> gives a Bézier curve <NUM> which is almost indistinguishable from the arc itself. If a curve has more Bézier intervals between each pair of interpolation points P9, P10, co-incident with C1 and C4, an even more exact arc representation may be achieved. Similarly, an exact arc representation may be obtained by using rational spline segments between each pair of points.

Given the initial curve and optimal curves, other curves with intermediate curvature may be calculated by interpolating between the control points of each curve. This interpolation is not calculated using the control point positions directly, since this may break the G1 continuity of the curve. Any interpolation method must therefore be careful to maintain this continuity.

Various interpolation methods are possible and an example of an interpolation method that may be used is described below. However, other interpolation methods may also be valid.

Each curve may be described using the positions of the interpolation points (Pi), the direction of the curve <NUM>, <NUM> at each interpolation point (θi), and the distance to the previous and next Bézier control points (d<NUM>,i and d<NUM>,i), for example as illustrated in <FIG>. In order to calculate the parameters of the intermediate curve, a linear interpolation is carried out between the θi, d<NUM>,i and d<NUM>,i of the original and optimal curves, using a single parameter, x: <MAT> <MAT> <MAT>.

Where the superscripts orig, opt and int, refer to the quantity from the original, optimal and intermediate curves respectively, for example curves as shown in <FIG> and <FIG>. Once the above interpolated quantities are calculated, the positions of the interior control points (i.e. C20, C21, C23 and C24 in <FIG>) are easily computed. <FIG> provides a definition of C21 and C23 in terms of C22, d1, d2 and θ. The start of the curve is tangent to a line between C19 and C20; and the end of the curve is tangent to a line between C24 and C25. The resulting family of G1 continuous curves <NUM>, <NUM>, <NUM>, for example as shown in <FIG> and <FIG>, varies smoothly between the original and optimal curves. As mentioned previously, x is varied from <NUM> to <NUM> in order to find the curve with the specified maximum curvature.

Some examples of the method are shown in <FIG> and <FIG>. In each case, an original Bézier curve <NUM>, <NUM>, the optimal curve <NUM>, <NUM>, and an arbitrary intermediate curve <NUM>, <NUM> obtained by interpolating between the two previous curves <NUM>, <NUM>, <NUM>, <NUM> are shown. In <FIG>, the initial curve <NUM>, optimal curve <NUM> and intermediate curve <NUM> are shown for a case with five interpolation points P11 to P15. The optimal curve <NUM> comprises straight line segments <NUM>, <NUM> between P11-P12 and P14-P15, with an arc <NUM> from P12 to P14. In <FIG>, the optimal curve <NUM> is shown for a case with seven interpolation points, P16 to P22. The optimal curve <NUM> comprises straight line segments <NUM>, <NUM> between P16-P17 and P21-P22, with two arcs <NUM> from P17 to P19 and P19 to P21.

The disclosure provides a method of modelling and article to be manufactured which includes parts where curvature is constrained by the material or other properties of the article and which is able to limit the maximum curvature of a piecewise Bézier curve by constructing an optimal curve, which in the examples shown comprises a spline comprising arc segments and applying an interpolation procedure to find an intermediate curve of the desired curvature. The method allows for custom spline functionality and control of maximum curvature of the spline and hence of the product that the spline represents.

The disclosure is also applicable in the case where more than one curve segment is used between pairs of interpolation points. <FIG> illustrates an example of where two cubic Bézier segments C26 to C29 and C29 to C32 are used between a pair of interpolation points P23 and P24. In this case, the large arc shape is much better represented by two Bézier segments <NUM>, <NUM> than it would be by a single curve. The choice of whether to use a single Bézier curve, or more than one Bézier segment is a trade-off between performance and obtaining the best possible shape. With more curve complexity, the two segment option allows the optimal curve to be approximated more closely. Similarly, a rational spline could be used to represent the arc segments of the optimal curve exactly. The rational spline segment has more freedoms (control point weights) than the Bezier, so it is possible to represent the arcs more exactly. The weights are then interpolated from the initial to optimal splines.

<FIG> is a flow diagram illustrating the main elements of the method of the present disclosure. A representation of an article to be manufactured, such as pipe work, metalwork, or cabling, or other length of material, is received <NUM> by the data processing system. Constraints for the article are received <NUM>, which are associated with a parameter of the article, such as the material properties of the material from which the article is to be made. From the constraint information, a maximum permissible curvature of one or more parts of the article is determined <NUM>. For example, certain materials will not be able to bend beyond a certain amount of curvature without cracking or breaking, or it may not be possible to form an article in that material if the curvature exceeds the determined maximum. The maximum curvature of one or more parts of the article as designed in the model is measured <NUM> and this measured maximum curvature is compared <NUM> with the determined maximum permissible curvature. If the measured curvature does not exceed <NUM> the determined maximum permissible curvature, then the received representation for the article is stored <NUM> and may be used subsequently in a manufacturing step. If the measured curvature exceeds <NUM> the determined maximum permissible curvature, then typically an error indication is provided <NUM>. In response to this, modifications may be made to the design representation before repeating from compare step to adapt the design, so that it is more likely to comply with the constraints. When a design has been determined which does meet the constraints applicable for a particular product made in a particular material, then the representation of the article is stored. The representation may be converted into a set of manufacturing instructions for a computer controlled machine.

In an embodiment, the representation for those parts of the article which do not exceed the determined maximum permissible curvature may be stored a revised representation for the parts of the article which exceed the determined maximum permissible curvature is generated. The process may then be repeated from the comparing step and the revised representation stored for those parts of the article which meet the constraints until a complete representation meeting the constraints has been built up.

The representation of the article may be generated by simulating a system incorporating the article to be manufactured. The parameters of the article, from which the constraints are derived, typically comprise a physical property of a material from which a part of the article is to be manufactured. The constraints may be received from an external source, or extracted from a store.

A method of generating an article comprising a plurality of parts may comprise modelling the article in accordance with a method as described with respect to <FIG>, inputting the stored representation, or dataset, for one or more parts of the article, or a set of manufacturing instructions derived from that dataset, to a computer controlled machine and replicating the parts of the article in the material for which it has been designed, or a material with equivalent properties, using the computer controlled machine.

The method is capable of returning an optimal solution for an important class of input interpolation points, those where the ideal path comprises lines and arcs. This is achieved by the choice of shape for the optimal spline. The method has the advantage of being very fast compared to other, more numerical, methods by using of numerical techniques in a single variable. The solution means that the curve shape is, apart from critical points, stable to small changes in the interpolation point positions. This is important for integration with other applications such as constraint solving using the D-Cubed Dimensional Constraint Managers (D-cubed DCM).

An operating system included in the data processing system enables an output from the system to be displayed to the user on display <NUM> and the user to interact with the system. Examples of operating systems that may be used in a data processing system may include Microsoft WindowsTM, LinuxTM, UNIXTM, iOSTM, and AndroidTM operating systems.

In addition, it should be appreciated that data processing system <NUM> may be implemented as in a networked environment, distributed system environment, virtual machines in a virtual machine architecture, and/or cloud environment. For example, the processor <NUM> and associated components may correspond to a virtual machine executing in a virtual machine environment of one or more servers. Examples of virtual machine architectures include VMware ESCi, Microsoft Hyper-V, Xen, and KVM.

Those of ordinary skill in the art will appreciate that the hardware depicted for the data processing system <NUM> may vary for particular implementations. For example the data processing system <NUM> in this example may correspond to a computer, workstation, and/or a server. However, it should be appreciated that alternative embodiments of a data processing system may be configured with corresponding or alternative components such as in the form of a mobile phone, tablet, controller board or any other system that is operative to process data and carry out functionality and features described herein associated with the operation of a data processing system, computer, processor, and/or a controller discussed herein. The depicted example is provided for the purpose of explanation only and is not meant to imply architectural limitations with respect to the present disclosure.

The data processing system <NUM> may be connected to the network (not a part of data processing system <NUM>), which can be any public or private data processing system network or combination of networks, as known to those of skill in the art, including the Internet. Data processing system <NUM> can communicate over the network with one or more other data processing systems such as a server (also not part of the data processing system <NUM>). However, an alternative data processing system may correspond to a plurality of data processing systems implemented as part of a distributed system in which processors associated with several data processing systems may be in communication by way of one or more network connections and may collectively perform tasks described as being performed by a single data processing system. Thus, it is to be understood that when referring to a data processing system, such a system may be implemented across several data processing systems organized in a distributed system in communication with each other via a network.

Of course, those of skill in the art will recognize that, unless specifically indicated or required by the sequence of operations, certain steps in the processes described above may be omitted, performed concurrently or sequentially, or performed in a different order.

Those skilled in the art will recognize that, for simplicity and clarity, the full structure and operation of all data processing systems suitable for use with the present disclosure is not being depicted or described herein. Instead, only so much of a data processing system as is unique to the present disclosure or necessary for an understanding of the present disclosure is depicted and described. The remainder of the construction and operation of data processing system <NUM> may conform to any of the various current implementations and practices known in the art.

Claim 1:
A method of generating an article comprising:
receiving a representation of the article as an initial piecewise cubic Bézier curve in <NUM>-dimensions, or in <NUM>-dimensions;
receiving one or more constraints for the article associated with a parameter of the article;
determining a maximum permissible curvature of one or more parts of the article from the constraints of the article, wherein the parameter of the article comprises a physical property of a material from which a part of the article is to be manufactured;
measuring the maximum curvature of the one or more parts of the article in the received representation;
comparing the measured maximum curvature with the maximum permissible curvature determined from the constraints of the article; and,
if the measured maximum curvature of at least one of the one or more parts exceeds the determined maximum permissible curvature, providing an error indication; or
if the measured maximum curvature of each of the one or more parts does not exceed the determined maximum permissible curvature,
storing the received representation for the article;
inputting the stored representation for the one or more parts of the article to a computer controlled machine; and
replicating the parts of the article in a material, using the computer controlled machine,
wherein the method further comprises in response to the error indication, receiving modifications to the design representation, or to the constraints; and, repeating from the comparing step, or from the determining step accordingly, until a compliant design is achieved, or the design is rejected.