May I suggest the upper with a different color in the middle? I would do it, if you agree.
Edit: Oops, far too slow to keep pace with Werner - Thanks!
May I suggest the upper with a different color in the middle? I would do it, if you agree.
Tested your "Sections" (Multi section surface creator) on:
Yes, we follow the convention how OCC defines it. It distinguishes between geometry and topology. Geometric entities are points, curves and surfaces. A curve can be a line, circle, ellipse, ... and a surface can be a plane, a cylindrical surface, spherical surface, ...And I could make a surface by selecting surface edges as well as lines/curves. (Do we have a distinct definition of lines/curves/edges somewhere?
Good to know.
Brilliant explanation! With a question: you state wire = topological entity AND "other topological entity", can it be both? If so, how?wmayer wrote: ↑Mon Sep 28, 2020 9:53 am Geometric entities are points, curves and surfaces.
A curve can be a line, circle, ellipse,
... a surface can be a plane, a cylindrical surface, spherical surface, ...
Topological entities are a vertex, edge, wire, face, shell, solid, compound or compound solid.
Vertex, edge and face are special topological entities because they directly correspond to the geometries point, curve and surface.
The other topological entities (wire, shell, ...) are higher-order entities because they can be built from several edges or faces.
Then the algorithm must tweaked to take "wires" as an argument. Or develop a new algorithm, or work around it without resorting to approximation, or try to find some other algorithm in OCCT which do take wires as an argument.wmayer wrote: ↑Mon Sep 28, 2020 9:53 am As said above the class used to create a surface from sections is GeomFill_NSections and according to its name it works with geometries, i.e. curves in this context. So, there is no direct way to support wires. The best way to achieve this is using a function to select several adjacent curves and approximate them with a B-spline curve and then use the B-spline as a section.
Sorry, I don't understand your question. Can you explain what you want to know?With a question: you state wire = topological entity AND "other topological entity", can it be both? If so, how?
In the Curves add-on there is such a function. Just select several adjacent edges and it will approximate a B-spline curve out of them.Then the algorithm must tweaked to take "wires" as an argument. Or develop a new algorithm, or work around it without resorting to approximation, or try to find some other algorithm in OCCT which do take wires as an argument.
For many algorithms in OCC there is a Geom version that accepts only geometries and a Brep variant that accepts shapes as arguments. This is also the case here with the class BRepFill_NSections.or try to find some other algorithm in OCCT which do take wires as an argument.
Joining the non-adjacent sections to a compound makes no sense and very likely won't work. Joining adjacent sections to a wire possibly works when using the class BRepFill_NSections. But this must be tested.If the user first make a "join" (maybe it's called compound?) of the involved wires, would that move us forward?
I reread your statement a few times and now the coin dropped. You type almost as good as I do...
This is exactly what FreeCAD shall not do. Not at all ! We shall have exact curves in each and every operation there is.wmayer wrote: ↑Mon Sep 28, 2020 3:20 pmIn the Curves add-on there is such a function. Just select several adjacent edges and it will approximate a B-spline curve out of them.Pauvres_honteux wrote:Then the algorithm must tweaked to take "wires" as an argument. Or develop a new algorithm, or work around it without resorting to approximation, or try to find some other algorithm in OCCT which do take wires as an argument.
Now that's what I'm talking about!wmayer wrote: ↑Mon Sep 28, 2020 3:20 pmFor many algorithms in OCC there is a Geom version that accepts only geometries and a Brep variant that accepts shapes as arguments. This is also the case here with the class BRepFill_NSections.Pauvres_honteux wrote:or try to find some other algorithm in OCCT which do take wires as an argument.
I think I must make a picture of how I imagined it, but that will not be done in the next few days.wmayer wrote: ↑Mon Sep 28, 2020 3:20 pmJoining the non-adjacent sections to a compound makes no sense and very likely won't work. Joining adjacent sections to a wire possibly works when using the class BRepFill_NSections. But this must be tested.Pauvres_honteux wrote:If the user first make a "join" (maybe it's called compound?) of the involved wires, would that move us forward?
In an perfect world, maybe everything would be that simple.Pauvres_honteux wrote: ↑Mon Sep 28, 2020 6:32 pm This is exactly what FreeCAD shall not do. Not at all ! We shall have exact curves in each and every operation there is.
A surface shall not start with/be created from an approximated curve or line! Never ever!!!
Attached is a small project with two B-spline surfaces (extruded from sketches) and filled with a G1-continuoues surface. The only limitation is that for this function you need a closed curve network. So, the way how microelly2 does it in his video is not directly possible. These two missing curves can be created with the Curves wb.Pauvres_honteux wrote: ↑Wed May 27, 2020 1:46 pm Hi, anyone working on surface to surface tangency with the intent of up-streaming it to master?
The surfaces shall have a common curve ruling them both.
Attached is a model as shown in Roman's blog. When using the Surface wb you can fill the gap with a surface (behind the scene it uses BRepFill_Filling). If you zoom at the created surface you will see that it's only C0 continuous but by double-clicking the list items you can set G1 continuity and when observing the surface you see that it fits better and better for each G1 continuous edge.mnesarco wrote: ↑Thu Sep 24, 2020 4:56 pm I have tried BRepFill_Filling without success, i have read surface modeling part 6 many times, many times it leads to invalid shapes, segfaults, in general I never got a desired result. Maybe I am doing something batantly wrong, but again the documentation does not help.
OCCT formun is rarely useful, questions get never answered or partially answered or answered with "contact our paid support services"
It looks like you have knowledge about this topic, it would be great if you can share it.
Code: Select all
v1=App.Vector(0,0,0)
v2=App.Vector(10,0,0)
v3=App.Vector(10,10,3)
v4=App.Vector(0,10,0)
v5=App.Vector(5,5,5)
l1=Part.LineSegment(v1, v2)
l2=Part.LineSegment(v2, v3)
l3=Part.LineSegment(v3, v4)
l4=Part.LineSegment(v4, v1)
c1=Part.GeomPlate.CurveConstraint(l1)
c2=Part.GeomPlate.CurveConstraint(l2)
c3=Part.GeomPlate.CurveConstraint(l3)
c4=Part.GeomPlate.CurveConstraint(l4)
c5=Part.GeomPlate.PointConstraint(v5)
bp=Part.GeomPlate.BuildPlateSurface()
bp.add(c1)
bp.add(c2)
bp.add(c3)
bp.add(c4)
bp.add(c5)
bp.perform()
s=bp.surface()
bs=s.makeApprox()
Part.show(bs.toShape())
Part.show(l1.toShape())
Part.show(l2.toShape())
Part.show(l3.toShape())
Part.show(l4.toShape())