Introduction

XNurbs uses one simple UI to solve all kinds of problems for NURBS creations – It virtually has an unlimited capacity for solving NURBS and generating high-quality surfaces based on energy-minimization method. Its energy-minimization algorithm produces high-quality surfaces that are analogous to a physical model: when a wooden batten bends, it always assumes a shape that minimizes its bending energy to form a smooth curve.

Key Features:

· Unlimited capacity for solving NURBS: Its optimization algorithm can solve virtually any NURBS surface on the fly (regardless of how complex the constraints are).

· High-quality surfaces: For a given set of constraints, XNurbs’ optimization algorithm uses energy-minimization method to generate the smoothest NURBS surface among all possible solutions. The generated surface quality is outstanding.

· XNurbs is one super powerful NURBS tool that fixes virtually all surfacing issues for Rhino.

· Easy-to-use: It uses one simple UI for all kinds of NURBS modeling.

· Super robust: XNurbs is rock solid and works flawlessly.

· Native CAD surfaces: XNurbs generates native CAD surfaces, i.e., trimmed/untrimmed NURBS surfaces, which can be directly used for any CAD modeling operations.

· Fully support editing and rebuilding.

Users can compare the results themselves (You can find Y.stp and UVFlowAngle.stp illustrated in the images under the /Tutorial folder).

GTR Car (Most surfaces of the GTR model are generated by XNurbs. Courtesy of Alexandre Galin.)

Watertight Bumper (All surfaces of the bumper are generated by XNurbs with G2 continuity. Courtesy of Vladimir Aleksic, an experienced designer.)

Users should check out our tutorial videos for how to use x NURBS efficiently and correctly. (XNurbs Rhino plugin and XNurbs SolidWorks plugin have a very similar capacity and UI so they share some screenshots/videos.)

There are numerous operations or scenarios how XNurbs could be used. Since it is impossible to demonstrate all of them, the followings are just some examples. From users’ viewpoint, all operations or scenarios are the same: users just select curves or points, XNurbs will generate the smoothest NURBS surfaces that satisfy all the inputted constraints.

Watertight Jet Ski Hull (All are generated by XNurbs with G2 continuity. Refer to the Tutorial Section for how the Hull is created on the fly. Click here to play the demo video showing how the bottom surface of the Hull is created. While the video only demonstrates the most basic operation for XNurbs, once you understand how to operation XNurbs, then you can use XNurbs in thousands of different operations and XNurbs generates all other Hull patches in the same way. Notice the surface quality generated by XNurbs. Courtesy of Vladimir Aleksic.)

Watertight Mouse (All are generated by XNurbs with G2 continuity. Click to play the video for the creation of the top mouse surfaces, the video for the creation of the side mouse surfaces and the video for creating one side surface of the mouse in “slow-motion”. Courtesy of Vladimir Aleksic.)

Watertight Fender (All are generated by XNurbs with G2 continuity. Courtesy of Vladimir Aleksic.)

Aircraft Wing Tip (Click to play the demo video showing how XNurbs smartly blends G2 and G0 continuity along the edge of aircraft wing. Courtesy of FILOU)

Multiblending/Lofting with G2 Continuity

Y Lofting with G2 Continuity

Filling with G2 Continuity

From V3.0, XNurbs command supports history - it fully supports editing and rebuilding XNurbs surfaces created with History.


What’s New (V6.1)

V6.1 is powered by xn kernel 2023.0, which includes a number of enhancements. The following are some of the improvements:

1. V6.1 further improves surfacing quality.

Rounding a corner with G2 continuity

2. V6.1 uses less control points to satisfy the required deviation. On average, V6.1 reduces the number of control points needed by 20%.

Filling a n-sided hole with G2 continuity

3. V6.1 switches on the "Show preview" checkbox by default.

What’s New (V6.0)

V6.0 is powered by xn kernel 2022.0, which includes a number of enhancements. The following are some of the improvements:

1. V6.0 further improves surfacing quality.

2. V6.0 reduces the G2 deviation achieved (It also further reduces the G1 deviation achieved). For some models, the G2 deviation achieved by V6.0 is significantly smaller than the previous version, e.g., the models below.

G2 Deviation: V6.0 uses less control points (18 X 15 VS 21 X 21) and achieves a smaller deviation (0.001 VS 0.01).

3. V6.0 handles conflicting G2 requirement and when it is impossible to strictly meet the specified G2 continuity because of conflicting G2 deviation along the boundary geometries, xNURBS will output the best possible surfaces from poor input geometries and will also output the following warning messages at the command prompt:

· The generated surface might not strictly satisfy the specified curvature requirement because of inconsistent curvature along the boundary geometries.

Conflicting curvatures: For the model above, the boundary conditions only support tangent continuity and they have inconsistent or conflicting curvatures. xNURBS will output the best possible solution and a warning G2 messages.

4. V6.0 shows the precision values for G0 and G1 precision sliders.

What’s New (V5.2)

V5.2 is powered by xn kernel 2021.2, which includes a number of enhancements. Except for surfacing quality improvements, the following are some of other improvements:

1. V5.2 provides a new capability of automatically trimming the boundary curves (See the screenshot below).

If the boundary curves need to be automatically trimmed, then the trimming curves need touch the curves of being trimmed. After trimming, the boundary curves should form a closed loop.

2. V5.2 further reduces the G1 deviation achieved.

3. This version is compatible with Rhino 7 SR11 or later.

What’s New (V5.1)

V5.1 is powered by xn kernel 2021.1.1, which includes a number of enhancements.

1. The most important improvement is that v5.1 significantly reduces the deviation, and the deviation achieved by V5.1 can be easily 10 times smaller compared with the previous version. (For the car side mirror below, V5.1 generates a model with 0.00059 mm of G0 deviation and 0.04 degree of G1 deviation. As a comparison, with the exactly same model and the same xNURBS setting for V5, the G0 deviation is 0.00997 mm and the G1 deviation is 0.4 degree.)

Car Side Mirror: All surfaces of the car side mirror are generated by XNurbs. Click https://youtu.be/R0ydRkBEBI0 to watch the tutorial video of modeling car side mirror.

2. Because of the deviation improvement by Version 5.1, generally you shouldn’t use the leftmost position of the G0 Precision slider. Only use the leftmost position of G0 slider when it is absolutely necessary.

3. To keep xNURBS UI unchanged, the new algorithm of deviation improvement is hooked with “Normal to Curve” and “Align to Adjacent Curve” under the “UV flow” option, i.e., selecting the two options will trigger the new algorithm of deviation improvement. (Users have been generally using these two options, so there is basically no change from users’ perspective.)

What’s New (V5.0)

V5.0 is powered by xn kernel 2021.0, which includes a number of enhancements. The following are some major improvements from users’ perspective:

1. Because of the new xn kernel, V5 generates better surfaces. For many models, the improvements are significant.

2. V5 can process constraints in a better way and relaxes some requirements for boundary/internal constraints. For example, prior to V5, the right model in the screenshot below contains conflicting constraints, and users are required to keep noticeable gaps between the boundary and internal constraints as illustrated by the left model, i.e., Solution 1 of Case 1 as discussed in the Rule section of xNURBS V4 manual. (Since some users do not read the manual, so they don’t know how to set the constraints correctly and it results in downgraded surfacing quality.) As illustrated below, V5 can generate the correct surface from the set of constraints. (The requirement for Case 1, which is discussed in the Rule section of xNURBS V4 manual, is removed from the V5 manual.)

3. The Quad-Sided option can process three-sided boundaries.

4. V5 exports a set of APIs so that users can run xNURBS inside the code they develop or run xNURBS without showing the xNURBS UI.

5. A set of tutorial videos are uploaded to https://www.xnurbs.com/tutorial/ . We will add more tutorial videos. Please check out our tutorial videos for how to use xNURBS efficiently and correctly.

6. V5 fixes a couple of minor bugs.

What’s New (V4.0)

V4.0 is powered by xn kernel 2020, which includes a number of enhancements and produces better surfaces. The following are some of the major improvements:

1. V4 is particularly optimized for quad-sided surfaces. As illustrated in the curvature mapping example below, if the boundary conditions are relatively simple - a common case for traditional surfacing tools, when dragging the Flatness slider to the rightmost, V4 triggers a special optimization and can generate “perfect” surfaces for such quad-sided surfaces. With the enhancements of xn kernel 2020, V4 should largely replace the traditional surfacing tools, e.g., curve network, blending, and lofting etc.

2. V4 achieves smaller tangent deviation. A new tangent precision is added and the minimum tangent deviation achieved is about 0.04 degree.

3. V4 provides an "Edit" option. As demonstrated by the animation below, you can select a xNURBS surface created with History and then change its constraint selection and xNURBS settings.

4. V4 fixes a couple of bugs.

What’s New (V3.0)

V3.0 is powered by xn kernel 2019.39, which produces better surfaces. Except for surfacing quality improvements, V3.0 provides new capabilities:

1. From V3.0, XNurbs command supports history. By simply modifying the inputted geometries, XNurbs plugin will automatically reproduce the surfaces it generated previously. Users can use this new XNurbs capacity for a number of circumstances, e.g., re-editing XNurbs surfaces and form finding etc. (To enable history, users need switch on Rhino "Record History" option.)

2. From V3.0, XNurbs supports cloud-based licenses and provides a new tool for licensing management. With a simple UI for licensing management, users can transfer XNurbs license to other PC and can also switch between computer-locked and cloud-based licenses with just one click. Refer to License Activation for details.

What’s New (V2.1)

V2.1 is powered by xn kernel 2019.30, which produces better surfaces. Particularly, it can generate nearly “perfect” surfaces from poor input geometries, e.g., the overlap/gap between the boundary edges etc. Also it is optimized for small models, e.g., jewelry design. Except for surfacing quality improvements, V2.1’s UI provides new capabilities:

1. “Satisfy Precision Requirements”: V2.1 can output a surface that satisfies the precision requirements and also a surface that ignores the precision requirements. (V2.0 can only output a surface that satisfies the precision requirements. For V2.1, the preview surface is the same as the final surface generated by the “Create” button.) Un-checking “Satisfy Precision Requirements” is useful for a number of circumstances, e.g., rapid concept design/form finding, refining layout/curves, or generating a single span surface etc. While generating a single span surface is not the main applications of “Satisfy Precision Requirements”, as shown in the following image, by using “Satisfy Precision Requirements” and “Quality Control”, users can also use this option to generate a single span surface.

2. A new “Align to Adjacent Curve” option: The image below illustrates the generated surfaces when using different “UV flow”. (You can find “UVFlow.3dm” illustrated in the image under the /Tutorial folder). This animated gif shows the generated surfaces when using different “UV flow”.

3. Warning messages: For V2.1, when it is impossible to strictly meet the specified precision requirements because of the overlap and deviation between the boundary edges, xNURBS will output the best possible surfaces from poor input geometries and will also output the following warning messages at the command prompt:

· “The generated surface might not strictly satisfy the specified tangent requirement because of the overlap/gap between the boundary edges and inconsistent tangent direction along the neighboring geometries.”

· Or “The generated surface might not strictly satisfy the specified positional requirement because of the overlap/gap between the boundary edges.”

What’s New (V2.0)

V2.0 is powered by xn kernel 2019.20, which produces better surfaces. Except for surfacing quality improvements, V2.0’s UI provides a set of new capabilities:

1. A new “Keep U/V Mutually Perpendicular” option: When selected, XNurbs will try to keep U/V isocurves mutually perpendicular. Generally, users should switch on this option as it normally generates better surfaces. For Quad-Sided Surface, as illustrated by the image below, this option will also keep the isocurves of generated XNurbs surface normal to the boundary curves (You can find “UVFlow.3dm” illustrated in the image under the /Tutorial folder). For some very curved surfaces, this option can prevent the generated surface from contracting (in case you do not specify enough boundary constraints). Next XNurbs version may have more options for U/V flow.

2. Zebra Preview: Display the Zebra preview of the generated surface. (The Zebra Preview uses the current Zebra setting. If your Zebra/Mesh setting is very high, then “Zebra Preview” may be slow.)

3. G0/G1 precision: Set the positional and tangent tolerance.

4. A new flatness option: add a new option for the Flatness slider.

What’s New (V1.42)

V1.42 further improves the surface quality generated. Main improvements:

1. V1.42 is powered by xn kernel 2019.11, which produces better surfaces.

2. V1.42 can better handle conflict constraints. For example, as illustrated by the image below, for the following models, because of the overlap/gap between the boundary edges, it is not possible to strictly satisfy the tangent requirement. V1.42 can better blend such “unintentional” conflict constraints. This capacity is helpful if users have to work with the existing surfaces, which are not ideal or bad.

3. V1.42 adds a new flatness option. When the input is not ideal or even bad, XNurbs can generate perfect surfaces by dragging the Flatness control to the rightmost position. The typical application of this new flatness option is for quad-sided option.

In the following image, compared with the ideal surface generated by XNurbs, the existing boundary surface has ‘sharp’ bending (XNurbs tries to distribute the curvature flow over the whole surface and generate high-quality surface). For this model, users have to work with the existing surfaces and cannot modify the surrounding geometries. Dragging the Flatness control to the rightmost position will generate ‘perfect’ surface even the input is not ideal or bad.


Enabling the XNurbs Plugin

To use XNurbs, you must install and enable the XNurbs Plugin. If you haven’t done it, you can download “XNurbsRhino.rhi” from www.xnurbs.com and run the rhi file, which should automatically install and enable the plugin. To run XNurbs, type “XNurbs” at the Rhino command prompt or click [image] on the toolbar. The XNurbs UI will show up. Type the XNurbsHelp command or click [image] to show the help. For the first time of running XNurbs, you should adjust the XNurbs toolbar as shown in the screenshot below. You can drag the toolbar button or toolbar tab to a different Rhino toolbar.

For the first time of running XNurbs, you also need adjust the XNurbs dialog and you can drag and dock the dialog to any place. We recommend docking it to the Panel on the right of Rhino Windows.

In case you need manually enable the XNurbs plugin:

1. From within Rhino, navigate to Tools > Options. Navigate to the Plug-ins page under “Rhino Options”.

2. Click the “Install…” button, navigate to the fold where you install XNurbs and select XNurbsRhino.rhp.

3. Click OK to close the options dialog.


XNurbs Dialog:

To run XNurbs, type the XNurbs command name at the command prompt or click [image] on the toolbar as discussed in Enabling the XNurbs Plugin. The XNurbs Dialog will show up. After selecting constraints and specifying the options, click the Create Button to create a XNurbs surface. From V3.0, XNurbs command supports history. Type the XNurbsHelp command or click [image] on the toolbar to show the help. Refer to the Tutorial Section for how to use x NURBS efficiently and correctly.

When running XNurbs command, you can directly select constraints. If you would like to edit a xNURBS surface created with History, you can select the command-line option "Edit". As demonstrated by the animated GIF, by selecting a xNURBS surface created with History, you can change its constraint selection and xNURBS settings. Also by simply modifying the inputted geometries, XNurbs plugin will automatically reproduce the surfaces it generated previously. (To enable history, users need switch on Rhino "Record History" option.)

The XNurbs Dialog panel includes two sections:

· Constraints

· Options

Constraints:

The Constraints Section shows the constraints you select. You can select surface/solid edges, vertexes, as well as 2D or 3D curves and points as constraints. For each constraint, you can apply Contact, Tangent and Curvature continuity by selecting the corresponding radio button under “Continuity:”.

· For surfaces or solid edges, you can select a Contact, Tangent or Curvature continuity if the number of faces adjacent to the selected edges is 1.

· For curves and points, you can select only a Contact continuity.

· For vertexes, you can select a Contact continuity, and if the number of faces adjacent to this vertex is one, you can also specify a Tangent continuity.

For each constraint, you also need specify if the constraint is a boundary constraint (i.e., lie on the outer loop/boundary of the generated surface) or an internal constraint by selecting or de-selecting the “Boundary Constraint” checkbox under “Topology:”. (You must correctly specify the "Boundary Constraint" checkbox for each constraint. Otherwise, your input does not make sense because in the real world no geometries can meet your constraints and XNurbs cannot produce perfect surfaces from poor input.)

After selecting constraints, as shown in the image below, you can also re-specify a different continuity and topology for each constraint by selecting an item in the Selection Box and then changing its continuity and topology. (When you select an item in the Selection Box, the continuity and topology info for the constraint are shown in both the graphics and the dialog panel.)

Options:

In the Options section, you can

Show preview: Display a preview of the surface generated.

Satisfy Precision Requirements: specify whether to output a surface that satisfies the precision requirements or a surface that ignores the precision requirements. Un-checking “Satisfy Precision Requirements” is useful for a number of circumstances, e.g., rapid concept design/form finding, refining layout/curves, or generating a single span surface etc.

Zebra Preview: Display the Zebra preview of the generated surface. (Zebra Preview is disabled for Rhino 5 as Rhino 5 SDK does not support Zebra Preview. The Zebra Preview uses the current Zebra setting. If your Zebra/Mesh setting is very high, then “Zebra Preview” may be slow.)

Apply Continuity to All Constraints: The Apply Continuity to all Constraints checkbox enables you to apply the current continuity control to all constraints when possible. (For some constraints, e.g., curves, only a Contact continuity can be specified.)

Optimize for Quad-Sided Surface: Specify if the generated surface is optimized as a trimmed surface or as an untrimmed surface (i.e., 4-sided). (If you select the Quad-Sided option, then the boundary curves must form a two-sided boundary, three-sided or four-sided boundary. When selecting the Optimize for Quad-Sided Surface option, no internal constraints is allowed.)

Trim the Generated Surface: Specify whether or not to trim the generated surface (Obviously, if you select Quad-Sided Surface, this option is ignored.). This is useful if you are not sure how to draw good curves in space. In this case, you can first create an untrimmed surface with a minimum number of constraints, and then draw/extract curves from the generated surface and trim the surface manually. (When selecting “Trim the Generated Surface”, if XNurbs were unable to trim the generated surface as expected, it would generally mean that the constraints are not correctly setup, i.e., incorrectly specifying the boundary/internal checkbox. In this case, using XNurbs standard, the quality of the generated surface is poor. The conflict constraints should be fixed first. Refer to the “Rules” section)

UV flow: There are three options

· Natural: No requirement for UV flow.

· Normal to Curve: With this option, XNurbs will try to keep U/V isocurves mutually perpendicular. Generally, users should switch on this option as it will normally generate better surfaces. For Quad-Sided Surface, as illustrated by the image below, this option will also keep the isocurves of generated XNurbs surface normal to the boundary curves. For some very curved surfaces, this option can prevent the generated surface from contracting (in case you do not specify enough boundary constraints).

· Align to Adjacent Curve: Align V isocurves of the generated XNurbs surface to adjacent curves. This option only works for Quad-Sided Surface and when “Quad-Sided Surface” is unselected, this option is the same as “Normal to Curve”.

This animated gif shows the generated surfaces when using different “UV flow”.

The following four sliders (i.e., G0 Precision, G1 Precision, Quality Control and Flatness Control) can be used to further control the surface shape generated.

G0 Precision: The G0 Precision slider enables you to apply a different G0 precision, e.g., 0.001mm or 0.1 mm. Dragging to the right lowers the precision requirement, i.e.,

· 0.001mm

· 0.01mm

· 0.1mm

· 0.5 mm

G1 Precision: The G1 Precision slider enables you to apply a different tangent precision, e.g., 0.1 degree or 1 degree. Dragging to the right lowers the precision requirement, i.e.,

· 0.04 Degree

· 0.1 Degree

· 1 Degree

· 5 Degree

Relaxing precision requirement may improve the quality of generated surfaces (when using with Quality Control), and for some conflict (or ill-conditioned) constraints, it enables XNurbs to satisfy the precision requirement when it is difficult or impossible to meet a strict precision requirement under such circumstances.

Quality Control: If the generated surface is not smooth enough, you can improve its quality by adjusting this slider (Dragging to the right increases the surface quality).

Flatness Control: Control the flatness (also smoothness) of generated surface. This image demonstrates the effect of using this slider. Users should check out our tutorial videos for how to use x NURBS efficiently and correctly.

Click the Create Button (or press the Enter key) to create a XNurbs surface and exit the command. If XNurbs could not generate the correct surface from your input constraints, then nothing would be show and XNurbs won’t exit the command - XNurbs would wait your further action (Fixing conflict constraints, specifying additional constraints, or relaxing precision may solve the problem.). Click the Cancel button to cancel the XNurbs command. (To cancel the XNurbs command, you can also press the Esc key.) Click the Help button to show the help.

You should understand the discussions in the “Rules” section before using XNurbs in professional design!


Rules (or Tips):

· The “Boundary Constraint” checkbox under “Topology” means whether or not a constraint lies on the outer loop/boundary of a trimmed surface, i.e., whether a constraint is a part of a curve that trims a surface. If not, it should be specified as an internal constraint, i.e., the unchecked state of the “Boundary Constraint” checkbox. The following image shows the definition of boundary and internal constraints for a trimmed surface.

Correctly specifying the “Boundary Constraint” checkbox is necessary, otherwise, except for very simple surfaces, incorrectly specifying the “Boundary Constraint” checkbox always results in poor surfaces, i.e., larger tolerance, more control points and surfacing imperfection etc. Obviously, any open surface can only contain one outer loop. Forgetting to specify the boundary/internal checkbox is the most common mistake when operating XNurbs. For example, in the example below, obviously the two points should be internal constraints.

When specifying boundary/internal constraints, there is a case that needs a special treatment:

For the left image below, the points in the red boxes belong to Internal (I) constraints, but they obviously should be a part of Boundary (B) constraints. You should either keep the internal constraint within the boundary (i.e., leaving “a noticeable gap” between the boundary and internal constraint) or add two boundary point constraints (two red points as two boundary point constraints). The right image below illustrates the scenario that, by adding two boundary point constraints (i.e., simply selecting two red points as boundary point constraints), the trimmed surface is correctly generated.

The image below (Courtesy of Vladimir Aleksic) illustrates the scenario of keeping the internal constraint within the boundary (a “lofting” operation. Also note the fact that some curve constraint is much shorter than others: For XNurbs, you can use any constraints suitable for your design.).

· If Show preview does not show the correct trimmed surface (a rare case), then it means that XNurbs cannot deduce the correct surface from the input constraints due to the following reasons:

1. Conflict/unrealistic constraints, e.g., incorrectly specifying the “Boundary Constraint” checkbox.

2. Lack of constraints. There is not enough information for XNurbs to deduce the correct surface from your input, e.g., only specifying a straight line as a constraint or the desired shape is too difficult to work out from your input. Simply adding some (boundary or internal) constraints will provide XNurbs with additional information to deduce the correct surface.

· For most design, XNurbs can generate satisfied surfaces without users’ interaction. However, for some complex surfaces, interactive design might be necessary. If XNurbs does not generate a satisfied surface (it means the desired shape is too complex to work out from your input), you should add more internal or boundary constraints, consider “layout”, i.e., splitting the surface into two or more patches, or change the settings of XNurbs dialog. For example:

1. In the following tunnel design, without the inner guiding curve, XNurbs won’t generate a satisfied G2 surface. Simply specifying a guiding curve will generate the right surface. (The inner guiding curves don’t need to be perfect or precise, as XNurbs will automatically optimize and “correct” the guiding curves. So you can just draw the inner curves on the fly.)

For complex surfaces, e.g., the following aircraft wing tip, you may need to add more internal curves.

2. In the following example, without the two inner point constraints, XNurbs would generate a surface with a dip (This could happen for very curved/complex surfaces when only specifying boundary constraints).

Simply specifying inner point/curve constraints will produce a satisfied surface, e.g., adding two inner point constraints as shown below.

3. For some very curved surfaces, if you do not specify enough boundary constraints, then the generated surface might tend to “contract”. Simply adding more boundary constraints will produce a desired surface.

· You can use internal constraints to control the surface shape generated. Also when necessary, internal constraints can be used to reduce the deviation XNurbs can achieve.

· XNurbs generates native CAD surfaces, i.e., trimmed NURBS surfaces, which can be directly used for any Rhino modeling operations. (Some Rhino modeling operations may also require a surface being a part of solid models or knitted with other surfaces, so you may need to join the surface with others.)

· In case the surface generated by XNurbs cannot “Edit > Join” with the existing surfaces, please check “Tools > Options > Units > Absolute Tolerance”. You may also need to run “RebuildEdges” on existing surfaces (The edges of existing surfaces may have large deviation.). For example, in the image below, the surface generated by XNurbs has a large “gap” with the existing surface. The “gap” actually is the deviation of the existing edge and has nothing to do with XNurbs. (To show the deviation of existing edges, select the associated surface and navigate to Edit > Object Properties... and Click the “Details…” button.) Running “RebuildEdges” on existing surfaces will eliminate the gap.

· Conflict Constraints:

1. Forgetting to specify the boundary/internal checkbox is the most common mistake when operating XNurbs. Please correctly specify the “Boundary Constraint” checkbox for each constraint.

2. Tangent/Curvature continuity: Many existing models or boundary conditions may not support Tangent/Curvature continuity. For example, the boundary conditions below only support tangent continuity, and they have inconsistent or conflict curvatures. For such models, directly enforcing a higher continuity, e.g., Curvature, is not recommended. (You can use XNurbs to re-generate the surrounding surfaces so that they are G2 continuous.)

3. Overlaps/Gaps: Many existing models have some tolerances. For example, in the image below, the original curves/edges have a gap/overlap, and they actually do not connect with each other. If the constraints are curves and you would like to modify them, then you could make them connect to each other. If they are a part of existing edges or you won’t modify them, then the specified tolerance should be >= 0.5 * the original tolerance/gap (using the Relax Precision slider).

The image below illustrates that, because of the overlap/gap between the boundary edges, it may not be possible to strictly satisfy the tangent requirement. While XNurbs can blend such “unintentional” conflict constraints, users should be aware that, except for positional deviation, there may be some tangent deviation at the gaps.

4. Curvature continuity involving curves: The intersection of two curves or edges determines the generated surface’s tangent plane and curvature at that point, which may not agree to the existing surface’s tangent plane and curvature. In other words, the boundary conditions may not support Tangent/Curvature continuity. For example, in the following model, the existing boundary curves do not support G2 continuity (For designers, it may be difficult to draw a curve that is G2 continuous to the connected surface.). Disconnecting the boundary curves is a solution for enforcing G2 under such circumstance.

G2 Curve Solution1600.png

· XNurbs mainly handles open surfaces (like a sheet of paper). For closed surfaces, e.g., a cylinder that is closed in one parametric direction and a sphere that is closed in both parametric directions, you should split such a surface into two surfaces.

· Single span surface: The main applications of un-checking “Satisfy Precision Requirements” are for rapid concept design/form finding and refining layout/curves etc. However, as shown in the following image, by using “Satisfy Precision Requirements” and “Quality Control”, users can also use this option to generate a single span surface.

· Before roughly selecting all constraints, you may not want to switch on “Show preview” as it only wastes your computer power to generate some useless surfaces.


Tutorials:

Users should check out our tutorial videos for how to use x NURBS efficiently and correctly.

The following are additional tutorials and do not need an internet connection.

1. Jet Ski Hull Tutorial: This tutorial demonstrates the creation of watertight hull with G2 continuity. (Courtesy of Vladimir Aleksic)

Click here to go through the step-by-step design.

2. Watertight Mouse: This tutorial demonstrates the creation of watertight mouse with G2 continuity. (Courtesy of Vladimir Aleksic)

Click here to go through the detailed design.

3. Watertight Bumper: This tutorial demonstrates the creation of watertight bumper with G2 continuity. (Courtesy of Vladimir Aleksic.)

Click here to go through the step-by-step design.


Jet Ski Hull Tutorial:

This tutorial demonstrates the creation of watertight hull with G2 continuity. The demo video shows how XNurbs creates the bottom surface of the Hull. While the video only demonstrates the most basic operation for XNurbs, once you understand how to operation XNurbs, then you can use XNurbs in thousands of different operations and XNurbs generates all other Hull patches in the same way: users just select curves or points, XNurbs will generate the smoothest NURBS surfaces that satisfy all the inputted constraints. (Courtesy of Vladimir Aleksic)

Step 1: Create the bottom surface (two boundary curves + two internal curves. Play the video. Note how this video handles Case 1 and Case2 discussed in the Rules section.)

Step 2: Create the side surface from a curve network, which is used as a draft surface for form finding or a rapid concept design (Keep G2 continuity with the bottom surface created in Step 1.)

Step 3: Refine the side surface created in Step 2. (Use the surface created in Step 2 as a rapid concept surface, extract curves from the draft surface, split the side surface into two patches and edit the extracted curves, then run XNurbs again to generate the refined surfaces on the fly.

Step 4: Refine the bottom surface and complete the front surface. (Similar to Step 3, use the surface created in Step 1 to extract curves, edit the middle curve to the desired shape, then run XNurbs again to generate the refined bottom surface. As shown in the image, keep G2 with the neighboring surfaces.)

Step 5: the whole watertight Jet Ski Hull.


Mouse Tutorial:

This tutorial demonstrates the creation of watertight Mouse with G2 continuity (Courtesy of Vladimir Aleksic).

Click here to play the video for the creation of the top mouse surfaces.

Click here to play the video for the creation of the side mouse surfaces and click here to play the video for creating one side surface of the mouse in “slow-motion”.

Click here to play the video for the mouse rendering.


Bumper Tutorial:

This tutorial demonstrates the creation of watertight Bumper with G2 continuity. You can play the video for the creation of the whole Bumper surfaces - https://www.xnurbs.com/videos/Bumper.mp4. (Courtesy of Vladimir Aleksic)

Step 1: Create the first front surface from boundary curves.

Step 2: Create other two front surfaces (Keep G2 with the surface created in Step 1)

Step 3: Create the top and bottom surfaces (Selecting Quad-Sided option. Keep G2 with the surfaces created previously).

Step 4: Create and refine the remaining front surfaces. (First use XNurbs to create a draft surface with a “Relax Precision”. Extract curves from the draft surface and edit the extracted curves. Then refine the surface by splitting it into multiple patches and running XNurbs again to generate the refined surfaces on the fly.)

Step 5: Edit the small feature (Split the surface, bend cv rows, then trim the bended surface, and use XNurbs to blending the gap with G2 continuity).

Step 6: Mirror and done


Troubleshooting:

When using XNurbe correctly, XNurbs should always generate high-quality NURBS surfaces that satisfy all the inputted constraints. Incorrectly specifying the constraints generally results in poor surfaces, i.e., larger tolerance, more control points and surfacing imperfection etc. However, even under such circumstances, the poor surfaces generated by XNurbs may be still better than the surfaces generated by other tools. So from XNurbs’s output, users should be able to know if they setup the constraints properly and the wrong constraints should be fixed first.

Before you click the “Create” Button to create a surface, it is wise to review the generated surface by switching on the "Show preview" and “Full Preview” checkboxes. You can use the "Show preview" and “Full Preview” checkboxes to troubleshoot if the constraints are setup properly.

Step 1: When selecting the "Show preview" checkbox and unselecting the “Full Preview” checkbox

If “Show preview” does not show anything, then it means that XNurbs cannot deduce the correct surface from the input constraints. There are two possible reasons:

· There is not enough information for XNurbs to deduce the correct surface from your input, e.g., only specifying a point as a constraint;

· The desired shape is impossible or too complex to work out from your input. Fixing conflict constraints, simply adding some (boundary or internal) constraints or considering “layout” will provide XNurbs with additional information to deduce the correct surface.

If XNurbs would show a surface but it were unable to trim the generated surface as expected, it would generally mean that the “Boundary Constraint” checkbox is not correctly specified. (You must correctly specify the "Boundary Constraint" checkbox for each constraint. Otherwise, your input does not make sense because in the real world no geometries can meet your constraints and XNurbs cannot produce perfect surfaces from poor input.)

Step 2: When selecting both the "Show preview" and “Full Preview” checkbox

If XNurbs could not generate a perfect surface, i.e., it generates an imperfect surface, e.g., larger tolerance, more control points and surfacing imperfection etc., then you need first check Step 1 above (selecting the "Show preview" checkbox and unselecting the “Full Preview” checkbox). If Step 1 works correctly, then there are two possible reasons:

· “Conflict Constraints” as discussed in the Rules section. Please refer to the discussion in the Rules section. You should fix the "Boundary Constraint" checkbox, fix the conflicting Tangent/Curvature continuity or manipulate the Relax Precision slider.

· As discussed in the Rules section, the desired shape is too complex to work out from your input. You can improve the surface by adding more constraints or considering “layout”, i.e., splitting the surface into two or more patches, or changing the settings of XNurbs dialog.


License Activation

If you use the 30-day trial version, after 15 days of installation, XNurbs will pop up a message box and ask you if you would like to activate XNurbs plugin with a license key. (The message box also provides the detailed info if it fails to find a valid license so users themselves can follow the instruction and fix potential licensing issues.) Clicking the “Yes” button will start “xNURBS License Manager.exe”.

After purchasing a license, you will receive the key by email and you can activate XNurbs by running “xNURBS License Manager.exe” and inputting your key. (“xNURBS License Manager.exe” is under your XNurbs installation directory. To manually access the installation directory, run Rhino, then Tools > Options > Plug-ins > XNurbs > details > File Name. Or click here for the detailed instruction of accessing XNurbs installation directory).

xNURBS License Manager:

This simple tool should be used as the main tool for XNurbs license management. You can use it to activate or deactivate/transfer XNurbs license to other PC. You can also use it to switch between computer-locked and cloud-based licenses with just one click (if your licenses support cloud-based licenses). xNURBS License Manager includes two pages:

· Status page

· Standalone/Cloud page

Status page:

Status page shows the status of your license on this computer. If your computer has an activated key or seat, then the “Refresh License” button will be enabled. You can use the button to update your license. For example, if you purchase an upgrade to cloud-based licenses, then clicking the “Refresh License” button will immediately refresh and update your existing license to the cloud-based license on the computer you are running.

Standalone/Cloud page:

In this page, you can

“Activate”: By clicking the “Activate” button, you can activate an inputted key on the computer. (If this computer is currently activated with a license key, then you need deactivate the key first before you can access the “Activate” button. If the computer was activated before, then you can also specify the “Use the existing key” checkbox when activating XNurbs.)

“Deactivate”: By clicking the “Deactivate” button, you can deactivate XNurbs license. (To transfer a XNurbs license to other PC, you need deactivate the XNurbs license on the PC and then activate the key on other PC.) If your licenses only support standalone or computer-locked licenses, then each license only has 10 deactivations in total. Cloud-based licenses have unlimited deactivations and can be used on any computer.

“Automatic”/“Standalone”: If your licenses support cloud-based licenses, you can switch between computer-locked and cloud-based licenses by selecting the “Automatic” or “Standalone” option.

· Selecting the “Automatic” option will enable “clouding” licenses. “Clouding” licenses will work without a constant internet connection – it only needs an internet connection when starting and exiting xNURBS plugin, i.e., when requesting a clouding license seat and when freeing up the seat.

· Selecting the “Standalone” option will “check out” a license for this particular computer and the clouding license will behave like a standalone or computer-locked license. The “Standalone” option enables xNURBS plugin work “offline”. For example, if you are going to work on the road without an internet connection, you can use the “Standalone” option to check out a license in advance. To free up the license seat when you are done with the license, just select the “Automatic” option and click the “OK” button (You need an internet connection when freeing up the license seat).

· The “Automatic” and “Standalone” option are ignored if your license is a standalone license.


APIs Exported from XNurbs Rhino Plugin

From V5.0, XNurbs exports a set of APIs so that users can run XNurbs inside the code they develop or run XNurbs without showing the XNurbs UI. The APIs are a subset of the fully-fledged APIs from XN Kernel.

The API package is freely available to customers with a XNurbs Rhino Plugin license key. Please contact our support for the API package.


About XNurbs Rhino Plugin V6.1

Copyright (C) 2023 XNurbs. All rights reserved.

This software is powered by XN Kernel. All rights reserved.

Check www.xnurbs.com for Updates.


XNurbs installation directory

Inside Rhino, click Tools > Options > Plug-ins > XNurbs > details

Rhino Options Dialog690.png

Inside the properties-window of the Plugin, click on the “File Name”, and this will jump directly to the XNurbs installation folder where the executable, e.g., “xNURBS License Manager.exe” or "TurboActivate.exe", can be found.

Rhino Plugin Property Dialog.png