Bspline abhängig parametrisch an Sketch hängen, wie?

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

WICHTIG: Bitte zuerst lesen, bevor Sie posten
User avatar
microelly2
Posts: 4455
Joined: Tue Nov 12, 2013 4:06 pm
Contact:

Re: Bspline abhängig parametrisch an Sketch hängen, wie?

Postby microelly2 » Mon Nov 07, 2016 5:17 pm

Es bleibt aber trotzdem dieser Fehlereffekt und der bringt eine Menge Aufwand, wenn man z.B. ein nicht rundes Profil zieht (z.B. Brett oder Papierstreifen. Ich hab mir bisher so geholfen, dass ich die Kurve in einzelne Segmente mit Krümmung in einer Richtung zerlegt habe, aber elegant ist das noch nicht. Konvex-Konkav-Übergänge, die auch bei Flächen vorkommen sind nicht einfach.
User avatar
r.tec
Posts: 442
Joined: Thu Oct 23, 2014 4:06 pm
Location: Bad Münstereifel, NRW, Germany
Contact:

Re: Bspline abhängig parametrisch an Sketch hängen, wie?

Postby r.tec » Mon Nov 07, 2016 5:37 pm

...ich versuche gerade ein Rohr mit Thickness daraus zu machen. Das klappt aber nicht so wie gedacht.
mario52
Posts: 2693
Joined: Wed May 16, 2012 2:13 pm

Re: Bspline abhängig parametrisch an Sketch hängen, wie?

Postby mario52 » Mon Nov 07, 2016 8:23 pm

hi
ok off is False my fault sorry

but many problem for non circle example my macro Macro_FCSpring_Helix_Variable with or without Frenet
after modification of pitch between 2 spires

Image

the codes used :
before

Code: Select all

#                        ressort = Draft.makeBSpline(points,closed=False)                     # creation spring Draft " makeBSpline "
current

Code: Select all

                        ressort = Part.BSplineCurve()                                        # creation spring Part  " BSplineCurve "
                        ressort.interpolate(points,True)#False
                        ressort0 = Part.Edge(ressort)
                        Part.show(ressort0)
but same result
only exploitable circle (with little deformation)

With_Frenet
With_Frenet0.png
With_Frenet0.png (24.35 KiB) Viewed 982 times
WithOut_Frenet
WithOut_Frenet0.png
WithOut_Frenet0.png (22.84 KiB) Viewed 982 times
EDIT 08/11/2016 11:35 Paris : forget it my images ???

mario
Last edited by mario52 on Tue Nov 08, 2016 10:37 am, edited 1 time in total.
Maybe you need a special feature, go into Macros_recipes and Code_snippets, Dialog creation. My macros on Gist.github.
User avatar
microelly2
Posts: 4455
Joined: Tue Nov 12, 2013 4:06 pm
Contact:

Re: Bspline abhängig parametrisch an Sketch hängen, wie?

Postby microelly2 » Mon Nov 07, 2016 9:45 pm

r.tec wrote:...ich versuche gerade ein Rohr mit Thickness daraus zu machen. Das klappt aber nicht so wie gedacht.
Ich nehme zwei konzentrische Kreise, darauf die Sweeps und die Boolsche Differenz aus Part.
bp_184.png
bp_184.png (43.12 KiB) Viewed 1006 times
Mit Thickness und Abrundungen habe ich oft Sorgen, deshalb versuche ich sie zu umgehen
freecad-heini-1
Posts: 6020
Joined: Tue Jan 07, 2014 11:10 am
Contact:

Re: Bspline abhängig parametrisch an Sketch hängen, wie?

Postby freecad-heini-1 » Tue Nov 08, 2016 8:13 am

Sehr schade, dass Thickness so schwach ist. In früheren Versionen funktionierte Thickness schon mal deutlich besser.
User avatar
microelly2
Posts: 4455
Joined: Tue Nov 12, 2013 4:06 pm
Contact:

Re: Bspline abhängig parametrisch an Sketch hängen, wie?

Postby microelly2 » Sat Nov 12, 2016 6:35 am

+mario52

I have tried an other way to get a right helix using nurbs, it gives me full freedom to create such surfaces
here one result, may be this is an idea to fix your problem.

Nach der reinen Lehre können Nurbs alles, so hab ich eine verzogen Helix mal als nurbs generiert und sie tuts
Auf diese Weise kann ich jetzt ziehen und biegen, wie es mir gefällt.
Das ist zwar erst ein Prototyp, aber ich sehe hier großes Potential:
Grundprofil als Poygonzug
Trägerkurve
und ein Operator, der das Grundprofil antlang der Trägerkurve modifiziert und ausrichtet
Mit geänderten Knotenvektoren und Gewichten bekommt man auch Kanten rein oder eben saubere Abrundungen.

Hier ein konischer Verlauf mit einer aufmodulierten Schwingung in z-Richtung ;)
bp_200.png
bp_200.png (131.41 KiB) Viewed 965 times

Code: Select all

# -*- coding: utf-8 -*-
#-------------------------------------------------
#-- create a helix like as nurbs -
#--
#-- microelly 2016 v 0.1
#--
#-- GNU Lesser General Public License (LGPL)
#-------------------------------------------------
# 
# 


import numpy as np

NbVPoles=70
NbUPoles=5

fig=[[400,0,0],[800,0,0],[800,0,200],[800,0,200],[300,0,50],]

ps=[]
for k in range(NbVPoles):
	pps=[]
	for p in fig:
		gg=0.001+np.pi/6
		gg2=0.2
		gg3=10
		hh=45.0
		p2=[ (p[0]+gg3*k)*np.cos(gg*k),(p[0]+gg3*k)*np.sin(gg*k),p[2]+hh*(k+5*np.sin(gg2*k)) ]
		pps.append(p2)
	ps.append(pps)

ps=np.array(ps)


interpol=False

bs=Part.BSplineSurface()
if interpol:
	bs.interpolate(ps)
	bs.setVPeriodic()

else:

	kv=[1.0/(NbVPoles-1)*i for i in range(NbVPoles)]
	ku=[1.0/(NbUPoles-1)*i for i in range(NbUPoles)]
	mu=[2]+[1]*(NbUPoles-2)+[2]

	bs.buildFromPolesMultsKnots(ps,
			[3]+[1]*(NbVPoles-2) +[3],
			#[3]+[1]*(NbUPoles-2)+[3],
			mu,
			kv,
			ku,
			False,True,
			3,3)

	'''
	# open
	mu=[3,1,1,1,3]
	bs.buildFromPolesMultsKnots(ps,
			[3]+[1]*(NbVPoles-2) +[3],
			#[3]+[1]*(NbUPoles-2)+[3],
			mu,
			kv,
			ku,
			False,False,
			3,3)
	'''




import Points
pps=[tuple(ppp) for ppp in ps.reshape(NbUPoles*NbVPoles,3)]
pcl=Points.Points(pps)
Points.show(pcl)

Part.show(bs.toShape())

mario52
Posts: 2693
Joined: Wed May 16, 2012 2:13 pm

Re: Bspline abhängig parametrisch an Sketch hängen, wie?

Postby mario52 » Sun Nov 13, 2016 12:25 pm

hi
good solution
i tray extract the wire and sweep it and the result is perfect (with Frenet)
Spring_to_Nurbs00.png
Spring_to_Nurbs00.png (13.48 KiB) Viewed 949 times
for the moment i work spring on path
Spring_to_Path.png
Spring_to_Path.png (2.64 KiB) Viewed 949 times
thanks
mario
Maybe you need a special feature, go into Macros_recipes and Code_snippets, Dialog creation. My macros on Gist.github.