![]() ![]() Sometimes they may even be adequate to patch a hole in a shell, if the surrounding surfaces are simple. It is theoretically possible to modify the inner control points and weights of a bezier to control the curvature (G2) across the seams in some cases, but this requires manipulating several control points at once, and maintaining tangent continuity is hard to begin with.įor now, the Bezier curves and surfaces are considered to be ‘rough drafts’ of the final surfaces. I have a basic quadrilateral surface patch, and a rudimentary triangular suface patch (one collapsed edge/corner). Arcs can be converted to rational Bezier and used in surfaces. The weight control interface is incomplete, but curve weights are incorporated into the surfaces in a crude way. The cubic bezier form is the simplest form that can connect two points with specified tangents (G1), and i am exploring its limits. High degrees and complex knot vectors give great smoothness, but few of the control points correspond to actual surface points, so they are challenging to fit among other engineering forms and constrain correctly. ![]() I am learning as i go, so i am trying to ‘juice’ the most out of the basic NURBS formulations before moving on to more complex forms. The seams joining adjacent surfaces should always have the same level of continuity as the adjacent curves at the surface corners. consistent: produce a scaled result for a scaled input. repeatable: produce the same result for the same inputs NURBS in general, and what these scripts are trying to doįor now, my focus is on skinning sets of 3 or 4 curves in a loop, and then smoothing out the seams between neighboring surfaces. svg) in this repository are offered under the terms of CC-BY I have started making some tutorials: go to tutorial 0.01, ControlPoly4 and CubicCurve4 go to Tutorial 0.02, ControlGrid44 and CubicSurface44 go to Tutorial 0.03 Point_onCurve ControlPoly4_segment ControlPoly6 and CubicCurve6 Workbench release planned soon. fcmacro) in this repository are offered under the terms of the GPLv3Īll models (file extension. OpenCascade itself already has all of these functions built in, but c++ is beyond my skills right now, so i’ll stick yo python.Īll scripts (file extension. These are not the ‘classic’ surfacing tools like sweep, loft, blend, trim, etc, although there are many parallels.įreeCAD already has some of these tools in the Part module and i believe the PartDesign module is slated to get improved versions soon. At this stage however, a minimum understanding of control points is still necessary to use the tools. What this means in practice is that eventually the user will not need to know anything about control points, knot vectors, or weights. So when we dimension/constrain the handles, we are dimensioning the surface itself. The main difference with subdivision surfaces being that with full NURBS, we can have perfect conics, no intrinsic continuity limits, and the ‘handles’ stay on the surface itself. Ideally, the user interaction with the points/normals would be analogous to manipulating a coarse mesh, like subdivision surfaces. This is very personal, and cannot address all individual preferences. ![]() I have some ideas as to what constitutes an efficient and intuitive input/interface structure. The ultimate goal is to implement a set of tools that require very few points and tangents/normals to generate NURBS surfaces of high continuity. Moving the white lines of the sketch sculpts the blended surface. There is a fair amount of work to setup a blended model, but the payoff is that all the work is parametric, so one can go back and edit the initial overall sketch, and everything, including the blends will update. trim/clip sections of curves / surfaces (several steps needed here) convert the polygons to curves (black lines), or combine the polygons into grids (light blues lines) convert the sketches to polygons (blues lines) create and position sketches using FreeCAD (white lines) The next image shows the current required steps: It shows control of an overall shape with ‘main’ sketches, and automatic ‘blending’ of the corners of the main surfaces to obtain curvature continuity (G2). What does it do right now? Here is my favorite model so far. The sketches are used to control NURBS curves and surfaces. The workflow is based on sketches drawn in FreeCAD 0.17 or later. This is the rough workflow prototyping phase. My python scripts for creating surfaces in FreeCAD. View the Project on GitHub edwardvmills/NURBSlib_EVMĪLL DEVELOPMENT HAS MIGRATED TO SILK NURBSlib_EVM Python scripts and macros to make NURBS surfaces in FreeCAD. ![]()
0 Comments
Leave a Reply. |