b-Spline

In diesem Forum Fragen und Diskussionen in Deutsch
Forum rules
Foren-Regeln und hilfreiche Informationen

WICHTIG: Bitte zuerst lesen, bevor Sie posten
Franz Tenbrock
Posts: 366
Joined: Tue Sep 05, 2017 8:19 am

Re: b-Spline

Postby Franz Tenbrock » Mon Oct 21, 2019 7:03 pm

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
Attachments
schweller.FCStd
(12.85 KiB) Downloaded 9 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 :mrgreen:
User avatar
microelly2
Posts: 4560
Joined: Tue Nov 12, 2013 4:06 pm
Contact:

Re: b-Spline

Postby microelly2 » Mon Oct 21, 2019 7:15 pm

Franz 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
der Begriff parallel ist da nicht ganz eindeutig, hier zwei Ansätze

a) Parallelverschiebung
b) Offset
Franz Tenbrock
Posts: 366
Joined: Tue Sep 05, 2017 8:19 am

Re: b-Spline

Postby Franz Tenbrock » Mon Oct 21, 2019 7:22 pm

Hallo
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 :mrgreen:
Franz Tenbrock
Posts: 366
Joined: Tue Sep 05, 2017 8:19 am

Re: b-Spline

Postby Franz Tenbrock » Mon Oct 21, 2019 7:44 pm

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
;-)
Attachments
159 komplett raus.JPG
159 komplett raus.JPG (49.1 KiB) Viewed 382 times
schweller.FCStd
(13.6 KiB) Downloaded 11 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 :mrgreen:
chrisb
Posts: 21503
Joined: Tue Mar 17, 2015 9:14 am

Re: b-Spline

Postby chrisb » Mon Oct 21, 2019 8:28 pm

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.
User avatar
hammax
Posts: 1007
Joined: Thu Jan 19, 2017 5:03 pm
Location: Ammersee

Re: b-Spline

Postby hammax » Tue Oct 22, 2019 5:43 am

… 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.

Schweller.PNG
Schweller.PNG (15.15 KiB) Viewed 349 times
Attachments
schweller_2.FCStd
(20.02 KiB) Downloaded 6 times
Franz Tenbrock
Posts: 366
Joined: Tue Sep 05, 2017 8:19 am

Re: b-Spline

Postby Franz Tenbrock » Tue Oct 22, 2019 5:44 am

mit den Tip hats gereicht
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 :mrgreen:
wmayer
Site Admin
Posts: 15298
Joined: Thu Feb 19, 2009 10:32 am

Re: b-Spline

Postby wmayer » Tue Oct 22, 2019 9:28 am

wmayer wrote:
Mon Oct 21, 2019 9:18 am
Die Frage ist also was passiert mit der Stetigkeit, wenn die Multiplizität so aussieht: [4, 1, 1, 3, 1, 1, 4]? Oder hat das gar keinen Einfluss darauf?
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),)
Also durch Verschieben der benachbarten Pole kann man die Tangentenstetigkeit wiederherstellen.
wmayer
Site Admin
Posts: 15298
Joined: Thu Feb 19, 2009 10:32 am

Re: b-Spline

Postby wmayer » Tue Oct 22, 2019 9:43 am

chrisb wrote:
Mon Oct 21, 2019 9:37 am
Im Sketcher gibt es bereits ohne Zusatzhilfsmittel die Funktionen "Increase/Decrease knot multiplicity". Ich weiß eben nur nicht, wie ich die dazu passenden Elemente auswählen kann.
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.
User avatar
microelly2
Posts: 4560
Joined: Tue Nov 12, 2013 4:06 pm
Contact:

Re: b-Spline

Postby microelly2 » Tue Oct 22, 2019 9:53 am

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),)
>>>
>>>

aa.png
aa.png (61.13 KiB) Viewed 318 times