b-Spline
-
- Posts: 469
- Joined: Tue Sep 05, 2017 8:19 am
Re: b-Spline
Hallo wo ihr gerde hier mit bsplines dran seit
habe da auch was was zum Thema passt
möchte ein Teil von einem Schweller mit einer 15 mm hohen Aufkantung versehen,
hab mit Kontrollpunkten das flache Teil gut hinbekommen,
im geraden Teil kann ich einfach den Sketch für die Aufkantung ( wird später aufgepolstert ) machen
dann aber im Bereich des Bsplines keine Frage wie ich das machen soll,
man kann ja den bspline als externe Referenz angeben, wie bekomme ich aber 2 parallele bslpines hin
habe da auch was was zum Thema passt
möchte ein Teil von einem Schweller mit einer 15 mm hohen Aufkantung versehen,
hab mit Kontrollpunkten das flache Teil gut hinbekommen,
im geraden Teil kann ich einfach den Sketch für die Aufkantung ( wird später aufgepolstert ) machen
dann aber im Bereich des Bsplines keine Frage wie ich das machen soll,
man kann ja den bspline als externe Referenz angeben, wie bekomme ich aber 2 parallele bslpines hin
- Attachments
-
- schweller.FCStd
- (12.85 KiB) Downloaded 23 times
Anfänger mit einigen freecad Erfolgserlebnissen in recht kurzer Zeit, aber nur Dank der Hilfe hier
wer es nie versucht, schafft es nie, und wer dranbleibt bei dem läuft es immer besser
wer es nie versucht, schafft es nie, und wer dranbleibt bei dem läuft es immer besser
- microelly2
- Veteran
- Posts: 4688
- Joined: Tue Nov 12, 2013 4:06 pm
- Contact:
Re: b-Spline
der Begriff parallel ist da nicht ganz eindeutig, hier zwei AnsätzeFranz Tenbrock wrote: ↑Mon Oct 21, 2019 7:03 pm man kann ja den bspline als externe Referenz angeben, wie bekomme ich aber 2 parallele bslpines hin
a) Parallelverschiebung
b) Offset
-
- Posts: 469
- Joined: Tue Sep 05, 2017 8:19 am
Re: b-Spline
Hallo
dazu müsste ich die Bspline erst mal kopieren aus sketch 1 ?
das dann 2 mal und dann um 1 mm verschieben?
dazu müsste ich die Bspline erst mal kopieren aus sketch 1 ?
das dann 2 mal und dann um 1 mm verschieben?
Anfänger mit einigen freecad Erfolgserlebnissen in recht kurzer Zeit, aber nur Dank der Hilfe hier
wer es nie versucht, schafft es nie, und wer dranbleibt bei dem läuft es immer besser
wer es nie versucht, schafft es nie, und wer dranbleibt bei dem läuft es immer besser
-
- Posts: 469
- Joined: Tue Sep 05, 2017 8:19 am
Re: b-Spline
Hallo
hab in sketch die obere Linie kopiert
dann im neuen sketch eingefügt
dann beide Kurven über eine Linie verbunden senkrechte Linien 1 mm
aber wenn ich dann aufpolstern will fragt er mich nach abhängigen Kopien
egal was ich dann mache es geht nciht weiter,
es könnte alles so einfahc sein wenn man weiss wie es geht.
Habd da gerade so ein größeres langfristiges Projekt
hab in sketch die obere Linie kopiert
dann im neuen sketch eingefügt
dann beide Kurven über eine Linie verbunden senkrechte Linien 1 mm
aber wenn ich dann aufpolstern will fragt er mich nach abhängigen Kopien
egal was ich dann mache es geht nciht weiter,
es könnte alles so einfahc sein wenn man weiss wie es geht.
Habd da gerade so ein größeres langfristiges Projekt
- Attachments
-
- 159 komplett raus.JPG (49.1 KiB) Viewed 1138 times
-
- schweller.FCStd
- (13.6 KiB) Downloaded 28 times
Anfänger mit einigen freecad Erfolgserlebnissen in recht kurzer Zeit, aber nur Dank der Hilfe hier
wer es nie versucht, schafft es nie, und wer dranbleibt bei dem läuft es immer besser
wer es nie versucht, schafft es nie, und wer dranbleibt bei dem läuft es immer besser
Re: b-Spline
Das Sketch ist nicht im Body drin, und wenn es so wäre, dann müsstest Du noch die SingleSolid-Regel beachten. Vielleicht solltest Du das lieber in einem eigenen Thema besprechen.
A Sketcher Lecture with in-depth information is available in English, auf Deutsch, en français, en español.
Re: b-Spline
… abgesehen davon, dass du an deinen BSpline-Sketches einiges "reduziert" hast und sie deshalb nur schwer nachvollziehbar sind,
geht die von microelly vorgeschlagene Offset-Methode auch für BSplines doch recht zwangfrei.
geht die von microelly vorgeschlagene Offset-Methode auch für BSplines doch recht zwangfrei.
- Attachments
-
- schweller_2.FCStd
- (20.02 KiB) Downloaded 20 times
-
- Posts: 469
- Joined: Tue Sep 05, 2017 8:19 am
Re: b-Spline
mit den Tip hats gereicht
THX
THX
Anfänger mit einigen freecad Erfolgserlebnissen in recht kurzer Zeit, aber nur Dank der Hilfe hier
wer es nie versucht, schafft es nie, und wer dranbleibt bei dem läuft es immer besser
wer es nie versucht, schafft es nie, und wer dranbleibt bei dem läuft es immer besser
Re: b-Spline
Also die Stetigkeit ist C0 an der Stelle 0.5 wie man am folgenden Beispiel schön sehen kann:
Code: Select all
shape=App.ActiveDocument.ActiveObject.Shape
curve=shape.Edge1.Curve
mults=[4, 1, 1, 3, 1, 1, 4]
knots=[0.0, 0.125, 0.25, 0.5, 0.75, 0.875, 1.0]
poles=curve.getPoles()
bs=Part.BSplineCurve()
bs.buildFromPolesMultsKnots(poles, mults, knots)
bs.Continuity # => C0
curve.Continuity # => C2
# Bei dem originalen Sketcher-Spline stimmen linker und rechter Grenzwert überein, also tangentenstetig
curve.tangent(0.499) # => (Vector (0.9972653976155952, -0.07390349598367282, 0.0),)
curve.tangent(0.501) # => (Vector (0.9965391281915383, -0.08312500215487884, 0.0),)
curve.tangent(0.49999) # => (Vector (0.9969160393014639, -0.0784755413073526 , 0.0),)
curve.tangent(0.50001) # => (Vector (0.9969087115098288, -0.07856857460723583, 0.0),)
curve.tangent(0.500001) # => (Vector (0.9969120100055813, -0.07852671078449583, 0.0),)
curve.tangent(0.499999) # => (Vector (0.9969127428433228, -0.07851740671088812, 0.0),)
# Vielfachheit von Knoten reduziert die Stetigkeit
# Linker und rechter Grenzwert stimmen nicht überein, also keine Tangentenstetigkeit
bs.tangent(0.49) # => (Vector (0.9783463560038542, 0.20697441313838688, 0.0),)
bs.tangent(0.51) # => (Vector (0.9551412865366238, -0.2961505069270744, 0.0),)
bs.tangent(0.4999) # => (Vector (0.9669962670708495, 0.25479054038767224, 0.0),)
bs.tangent(0.5001) # => (Vector (0.9481854535257094, -0.3177173991493774, 0.0),)
bs.tangent(0.499999) # => (Vector (0.9668747182617052, 0.25525140388712486, 0.0),)
bs.tangent(0.500001) # => (Vector (0.9481152985836909, -0.3179266905932227, 0.0),)
# an anderen Stellen mit Vielfachheit von 1 gibt es aber Tangentenstetigkeit
bs.tangent(0.24) # => (Vector (-0.12240584694964646, -0.9924801300945726, 0.0),)
bs.tangent(0.26) # => (Vector (0.0030047750644470413, -0.999995485653216, 0.0),)
bs.tangent(0.249) # => (Vector (-0.07134348270518814, -0.9974518070942047, 0.0),)
bs.tangent(0.251) # => (Vector (-0.05814872260810156, -0.9983079314815875, 0.0),)
bs.tangent(0.2499) # => (Vector (-0.06546063359243001, -0.9978551525395245, 0.0),)
bs.tangent(0.2501) # => (Vector (-0.06413446371768845, -0.9979412660891643, 0.0),)
bs.tangent(0.24999) # => (Vector (-0.06486440596561724, -0.9978940869845495, 0.0),)
bs.tangent(0.25001) # => (Vector (-0.06473172190898702, -0.9979027027614955, 0.0),)
bs.tangent(0.249999) # => (Vector (-0.06480470362916746, -0.9978979659201315, 0.0),)
bs.tangent(0.250001) # => (Vector (-0.06479143455268586, -0.9978988275414522, 0.0),)
Re: b-Spline
Wenn Du eine B-Spline zeichnest, dann solltest Du einige rote Punkt sehen, die direkt auf der Kurve liegen. Das sind die zugehörigen Punkt zum Knotenwert und bei Auswahl kannst Du die Vielfachheit erhöhen. Verringern scheint allerdings nicht immer zu funktionieren, da ich bei vorheriger Erhöhung auf 2 immer eine Fehlermeldung erhalte. Verringern von 3 auf 2 scheint dann aber wieder zu gehen.
- microelly2
- Veteran
- Posts: 4688
- Joined: Tue Nov 12, 2013 4:06 pm
- Contact:
Re: b-Spline
Die Ausgangskurve hat 11 Pole, wenn man Pole 5,6,7 kollinear macht, ist das Ergebnis im Knoten 0,5 tangentenstetig.
>>>
>>> shape=App.ActiveDocument.Sketch.Shape
>>> curve=shape.Edge1.Curve
>>>
>>> mults=[4, 1, 1, 3, 1, 1, 4]
>>> knots=[0.0, 0.125, 0.25, 0.5, 0.75, 0.875, 1.0]
>>> poles=curve.getPoles()
>>>
>>> bs=Part.BSplineCurve()
>>> bs.buildFromPolesMultsKnots(poles, mults, knots)
>>> Part.show(bs.toShape())
>>>
>>> bs.tangent(0.49)
(Vector (0.9987629670217796, -0.04972459859920049, 0.0),)
>>> bs.tangent(0.51)
(Vector (0.9895744136135236, -0.14402249796976432, 0.0),)
>>>
>>> bs.tangent(0.4999)
(Vector (0.9958118904525609, -0.09142581054219388, 0.0),)
>>> bs.tangent(0.5001)
(Vector (0.9957289497560973, -0.09232474542406992, 0.0),)
>>>
>>> bs.tangent(0.499999)
(Vector (0.9957755884458664, -0.0918203542537738, 0.0),)
>>> bs.tangent(0.500001)
(Vector (0.9957747598996921, -0.09182933924792505, 0.0),)
>>>
>>>
>>>
>>> shape=App.ActiveDocument.Sketch.Shape
>>> curve=shape.Edge1.Curve
>>>
>>> mults=[4, 1, 1, 3, 1, 1, 4]
>>> knots=[0.0, 0.125, 0.25, 0.5, 0.75, 0.875, 1.0]
>>> poles=curve.getPoles()
>>>
>>> bs=Part.BSplineCurve()
>>> bs.buildFromPolesMultsKnots(poles, mults, knots)
>>> Part.show(bs.toShape())
>>>
>>> bs.tangent(0.49)
(Vector (0.9987629670217796, -0.04972459859920049, 0.0),)
>>> bs.tangent(0.51)
(Vector (0.9895744136135236, -0.14402249796976432, 0.0),)
>>>
>>> bs.tangent(0.4999)
(Vector (0.9958118904525609, -0.09142581054219388, 0.0),)
>>> bs.tangent(0.5001)
(Vector (0.9957289497560973, -0.09232474542406992, 0.0),)
>>>
>>> bs.tangent(0.499999)
(Vector (0.9957755884458664, -0.0918203542537738, 0.0),)
>>> bs.tangent(0.500001)
(Vector (0.9957747598996921, -0.09182933924792505, 0.0),)
>>>
>>>