Solid nach B-Spline-Surface wandeln
Re: Solid nach B-Spline-Surface wandeln
Hier noch mal eine Variante auf der Basis Deines Modells. Man muss nur ein subtraktives Ellipsoid einfügen. Dazu:
- Tip auf Ellipsoid setzen
- Subtraktives Ellipsoid erzeugen
- Optional: RadiusX per Expression auf Ellipsoid.RadiusX - 1mm setzen
- Tip wieder auf Pocket setzen.
Mit dem optionalen Schritt passt sich die Aushöhlung immer an das äußere Ellipsoid an.
- Tip auf Ellipsoid setzen
- Subtraktives Ellipsoid erzeugen
- Optional: RadiusX per Expression auf Ellipsoid.RadiusX - 1mm setzen
- Tip wieder auf Pocket setzen.
Mit dem optionalen Schritt passt sich die Aushöhlung immer an das äußere Ellipsoid an.
- Attachments
-
- forum_ellipsoid_cb2.FCStd
- (52.04 KiB) Downloaded 27 times
A Sketcher Lecture with in-depth information is available in English, auf Deutsch, en français, en español.
-
- Veteran
- Posts: 7791
- Joined: Tue Jan 07, 2014 11:10 am
- Contact:
Re: Solid nach B-Spline-Surface wandeln
Genial!chrisb wrote: ↑Wed Oct 06, 2021 8:57 am Hier noch mal eine Variante auf der Basis Deines Modells. Man muss nur ein subtraktives Ellipsoid einfügen. Dazu:
- Tip auf Ellipsoid setzen
- Subtraktives Ellipsoid erzeugen
- Optional: RadiusX per Expression auf Ellipsoid.RadiusX - 1mm setzen
- Tip wieder auf Pocket setzen.
Mit dem optionalen Schritt passt sich die Aushöhlung immer an das äußere Ellipsoid an.
SnipScreenshot-67e297.png
Re: Solid nach B-Spline-Surface wandeln
Nur zur Info: Skalieren ist kein Offset. Wenn man eine Box mit 100mm x 1mm x 1mm macht und mit 0.1 skaliert, erhält man eine Box mit 10mm x 0.1mm x 0.1mm. D. h. eine Seite 5mm Wandstärke, die anderen beiden 0.05mm. Auch wenn man richtungsorientiert skaliert (Faktoren in den Richtungen anpasst), erhält man bei Ellipsen keinen Offset.
Ja das stimmt.
Auch nur zur Info, das ist auch kein Offset, aber eine sehr gute Näherung. Je dünner der Ellipsoid und je weiter diese vom Zentrum sind, desto besser ist es.freecad-heini-1 wrote: ↑Wed Oct 06, 2021 8:20 am Wenn es genau werden soll, würde ich einen zweiten Ellipsoid in der Part-WB erzeugen, exakt um die gewünschte Wanddicke kleiner. Den kleinen vom großen per boolschen Cut abziehen.
Grüße
user1234
Re: Solid nach B-Spline-Surface wandeln
Hi,
Aber: Das Skalierverhalten dass Du beschreibst trifft so nur bei Objekten auf deren Ursprung an einer Ecke liegt. Bei Kugeln, Ellipsoiden und anderen Objeten liegt der Ursprung aber in der Mitte des Objektes und zu diesem Ursprung wird auch skaliert.
Das Ergebnis entspricht also der Annäherung der Methode "Kopieren und Abmessungen verkleinern", bei lezterer ist allerdings die Wandstärke einfacher "einstellbar".
Hier ein Schnitt durch das so erzeugte Objekt:
ja, Skalieren ist kein Offset...user1234 wrote: ↑Wed Oct 06, 2021 9:35 amNur zur Info: Skalieren ist kein Offset. Wenn man eine Box mit 100mm x 1mm x 1mm macht und mit 0.1 skaliert, erhält man eine Box mit 10mm x 0.1mm x 0.1mm. D. h. eine Seite 5mm Wandstärke, die anderen beiden 0.05mm. Auch wenn man richtungsorientiert skaliert (Faktoren in den Richtungen anpasst), erhält man bei Ellipsen keinen Offset.
Aber: Das Skalierverhalten dass Du beschreibst trifft so nur bei Objekten auf deren Ursprung an einer Ecke liegt. Bei Kugeln, Ellipsoiden und anderen Objeten liegt der Ursprung aber in der Mitte des Objektes und zu diesem Ursprung wird auch skaliert.
Das Ergebnis entspricht also der Annäherung der Methode "Kopieren und Abmessungen verkleinern", bei lezterer ist allerdings die Wandstärke einfacher "einstellbar".
Hier ein Schnitt durch das so erzeugte Objekt:
Gruß Herbert
Re: Solid nach B-Spline-Surface wandeln
Nein, ich bin bereits vom Ursprung in der Mitte ausgegangen, auch bei der Box.
(10 - (10 * 0.1) ) / 2 = 4.5
(1 - (1 * 0.1) ) / 2 = 0.45
4.5 != 0.45
Grüße
user1234
- Attachments
-
- 0.png (240.88 KiB) Viewed 1967 times
-
- 0.FCStd
- (6.91 KiB) Downloaded 26 times
Re: Solid nach B-Spline-Surface wandeln
Vollständigerweise die Box.
Grüße
user1234
Grüße
user1234
- Attachments
-
- 0.png (178.45 KiB) Viewed 1957 times
-
- 0.FCStd
- (9.46 KiB) Downloaded 27 times
Re: Solid nach B-Spline-Surface wandeln
Bei der Variante mit zwei ineinanderliegenden Ellipsen, die an beiden Hauptachsen einen Abstand von 1mm haben, ist der minimale Abstand > 0,9235mm, also etwas weniger als 8%.
A Sketcher Lecture with in-depth information is available in English, auf Deutsch, en français, en español.
Re: Solid nach B-Spline-Surface wandeln
Bei einem Ellipsoid ist die zugrunde liegende Geometrie bereits eine B-Spline-Fläche. Das kommt daher, dass OCCT Ellipsoide gar nicht direkt unterstützt und wir diese mit Hilfe einer Kugel und drei Skalierungen in X,Y,Z erzeugen. Dabei ersetzt OCCT die ursprüngliche Geometrie durch B-Splines.
Mit Python kann man eine echte Offset-Fläche zum Ellipsoid erzeugen:
Code: Select all
s = App.ActiveDocument.Ellipsoid.Shape.Face1.Surface
o = Part.OffsetSurface(s, 1.0)
Part.show(o.toShape())
Code: Select all
e = App.ActiveDocument.Ellipsoid.Shape.Face1.Surface
s = e.toShell(Segment=True)
o = s.makeOffsetShape(1.0,0.01)
s1 = Part.Solid(o)
s2 = Part.Solid(s)
c = s1.cut(s2)
Part.show(c)
Re: Solid nach B-Spline-Surface wandeln
Interessant.wmayer wrote: ↑Wed Oct 06, 2021 4:14 pmBei einem Ellipsoid ist die zugrunde liegende Geometrie bereits eine B-Spline-Fläche. Das kommt daher, dass OCCT Ellipsoide gar nicht direkt unterstützt und wir diese mit Hilfe einer Kugel und drei Skalierungen in X,Y,Z erzeugen. Dabei ersetzt OCCT die ursprüngliche Geometrie durch B-Splines.
Mit einer Mischung aus Python und UI hab’ ich’s jetzt geschafft. Die Frage ist, warum geht es in der UI nicht?Mit Python kann man eine echte Offset-Fläche zum Ellipsoid erzeugen:
Danke.
- Attachments
-
- Ellipsoid3.FCStd
- (177.22 KiB) Downloaded 21 times
Re: Solid nach B-Spline-Surface wandeln
In der UI gibt es ja schon eine Funktion, die da heißt "3D-Versatz" und die arbeitet auf der Brep-Datenstruktur, nicht direkt auf der Geometrie. Diese sollte eigentlich das gleiche können, wenn man es aber auf ein Ellipsoid anwendet, erhält man jedes Mal eine Fehlermeldung.
Man könnte vielleicht die Funktion dahingehend ändern, dass man direkt OffsetSurface aufruft, wenn das Eingabe-Objekt eine einzelne Fläche ist.