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: 469
Joined: Tue Sep 05, 2017 8:19 am

Re: b-Spline

Post by Franz Tenbrock »

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 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 :mrgreen:
User avatar
microelly2
Veteran
Posts: 4688
Joined: Tue Nov 12, 2013 4:06 pm
Contact:

Re: b-Spline

Post by microelly2 »

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: 469
Joined: Tue Sep 05, 2017 8:19 am

Re: b-Spline

Post by Franz Tenbrock »

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: 469
Joined: Tue Sep 05, 2017 8:19 am

Re: b-Spline

Post by Franz Tenbrock »

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 1139 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 :mrgreen:
chrisb
Veteran
Posts: 53922
Joined: Tue Mar 17, 2015 9:14 am

Re: b-Spline

Post by chrisb »

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

Re: b-Spline

Post by hammax »

… 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 1106 times
Attachments
schweller_2.FCStd
(20.02 KiB) Downloaded 20 times
Franz Tenbrock
Posts: 469
Joined: Tue Sep 05, 2017 8:19 am

Re: b-Spline

Post by Franz Tenbrock »

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
Founder
Posts: 20243
Joined: Thu Feb 19, 2009 10:32 am
Contact:

Re: b-Spline

Post by wmayer »

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
Founder
Posts: 20243
Joined: Thu Feb 19, 2009 10:32 am
Contact:

Re: b-Spline

Post by wmayer »

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
Veteran
Posts: 4688
Joined: Tue Nov 12, 2013 4:06 pm
Contact:

Re: b-Spline

Post by microelly2 »

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 1075 times
Post Reply