Bspline abhängig parametrisch an Sketch hängen, wie?
-
- Veteran
- Posts: 7790
- Joined: Tue Jan 07, 2014 11:10 am
- Contact:
Bspline abhängig parametrisch an Sketch hängen, wie?
Gibt es irgend eine Möglichkeit die Stützpunkte eines Bspline nachträglich parametrisch zu ändern?
Super wäre, wenn es an einen Sketch gebunden wäre. Ändert man die Punkte des Sketches soll sich der Bspline bitte auch mit ändern.
Geht das irgendwie?
Super wäre, wenn es an einen Sketch gebunden wäre. Ändert man die Punkte des Sketches soll sich der Bspline bitte auch mit ändern.
Geht das irgendwie?
- microelly2
- Veteran
- Posts: 4688
- Joined: Tue Nov 12, 2013 4:06 pm
- Contact:
Re: Bspline abhängig parametrisch an Sketch hängen, wie?
Mir ist nicht klar, warum es diese Funktion in Draft nicht gibt,
hier schon mal mal zum Testen:
Sketch erzeugen,
Skript aufrufen
Wenn man den Sketch ändert, passt sich die BSpline an.
Edit: execute-Methode hizugefügt ..
hier schon mal mal zum Testen:
Sketch erzeugen,
Skript aufrufen
Wenn man den Sketch ändert, passt sich die BSpline an.
Edit: execute-Methode hizugefügt ..
Code: Select all
# -*- coding: utf-8 -*-
#-------------------------------------------------
#-- bspline on top of a sketch
#--
#-- microelly 2016 v 0.1
#--
#-- GNU Lesser General Public License (LGPL)
#-------------------------------------------------
# bspline von poles erzeugen
class PartFeature:
def __init__(self, obj):
obj.Proxy = self
class MyBSpline(PartFeature):
def __init__(self, obj):
PartFeature.__init__(self, obj)
obj.addProperty("App::PropertyLink","wire","Wire","")
def onChanged(self, fp, prop):
if prop=="wire" and fp.wire <> None:
w=fp.wire
eds=Part.__sortEdges__(w.Shape.Edges)
pts=[]
for e in eds:
ees=e.discretize(2)
pts += ees[0:-1]
pts.append(ees[-1])
sp=Part.BSplineCurve()
sp.increaseDegree(3)
sp.buildFromPoles(pts)
fp.Shape=sp.toShape()
def execute(self, fp):
if fp.wire <> None:
w=fp.wire
eds=Part.__sortEdges__(w.Shape.Edges)
pts=[]
for e in eds:
ees=e.discretize(2)
pts += ees[0:-1]
pts.append(ees[-1])
sp=Part.BSplineCurve()
sp.increaseDegree(3)
sp.buildFromPoles(pts)
fp.Shape=sp.toShape()
pass
class ViewProviderMyBSpline:
def __init__(self, obj):
obj.Proxy = self
self.Object=obj
def makeMySpline():
a=FreeCAD.ActiveDocument.addObject("Part::FeaturePython","MySpline")
MyBSpline(a)
ViewProviderMyBSpline(a.ViewObject)
a.ViewObject.LineColor=(1.00,.00,.00)
a.ViewObject.LineWidth=1
return a
a=makeMySpline()
a.wire=App.ActiveDocument.Sketch
Last edited by microelly2 on Mon Oct 24, 2016 6:31 pm, edited 1 time in total.
Re: Bspline abhängig parametrisch an Sketch hängen, wie?
Weil Draft nicht so gedacht war ...microelly2 wrote:Mir ist nicht klar, warum es diese Funktion in Draft nicht gibt,
So wie ich es bisher verstanden habe:
Zuerst war da nix (OK, der Geist Gottes schwebte über dem Wasser )
Spass beiseite, zuerst kam der Kern, dann zumindest Teile des Mesh-Workbench und dann, nach einer Weile,
die Part-Workbench.
Hauptzweck der Part-Workbench: CSG (Constructive Solid Geometry) Modelling. Also Primitives einfügen und Boolsche Operationen.
Part Extrude und Part Revolve kamen wohl erst später hinzu. Man kann ja Extrude und Revolve auch für Flächenkonstruktion
nehmen (wie Willfried schon gezeigt hat).
Dann kam Part Design mit dem Grundgedanken, Skizzen zu verwenden.
Dann kam Yorik als Architekt ins Spiel. Er bekommt wohl oft Daten von Fremdsystemen und suchte nach einer Möglichkeit,
die Daten für FreeCAD als Arch-Objekte zu definieren und evtl. die Solids noch ein wenig nachbearbeiten zu können (Parametrik
völlig uninteressant) - so entstand die Draft-Workbench mit "fire and forget"-Werkzeugen (Snaps, Wires ...)
Trotzdem bin ich auch dafür, solche Möglichkeiten zu nutzen, danke Thomas ...
Roland
Deutsche FreeCAD Tutorials auf Youtube
My GrabCAD FreeCAD-Projects
FreeCAD lessons for beginners in english
Native german speaker - so apologies for my english, no offense intended
My GrabCAD FreeCAD-Projects
FreeCAD lessons for beginners in english
Native german speaker - so apologies for my english, no offense intended
-
- Veteran
- Posts: 7790
- Joined: Tue Jan 07, 2014 11:10 am
- Contact:
Re: Bspline abhängig parametrisch an Sketch hängen, wie?
Vielen Dank Thomas.
Leider funktioniert das Skript bei mir nicht, siehe: Ich bin jetzt gleich in der Singstunde für 2-3 Std..
Leider funktioniert das Skript bei mir nicht, siehe: Ich bin jetzt gleich in der Singstunde für 2-3 Std..
-
- Veteran
- Posts: 7790
- Joined: Tue Jan 07, 2014 11:10 am
- Contact:
Re: Bspline abhängig parametrisch an Sketch hängen, wie?
Ein kurzes animiertes Gif wie es funktioniert wäre fein.
- microelly2
- Veteran
- Posts: 4688
- Joined: Tue Nov 12, 2013 4:06 pm
- Contact:
Re: Bspline abhängig parametrisch an Sketch hängen, wie?
Ich habe die letze Änderung nicht ins Forum übernommenfreecad-heini-1 wrote:Ein kurzes animiertes Gif wie es funktioniert wäre fein.
Jetzt ist die execute-Methode dabei und es sollte gehen
https://youtu.be/gX3URZQGz4c
Ich werde den Skript, wenn er fertig ist, in die Nurbs WB stellen
Da kann man dann Skizzen machen und daraus die Bsplines und die Nurbs erzeugen und Part Design als Editor für die Kontrollpunkte benutzen.
Aber erstmal testen
- microelly2
- Veteran
- Posts: 4688
- Joined: Tue Nov 12, 2013 4:06 pm
- Contact:
Re: Bspline abhängig parametrisch an Sketch hängen, wie?
Ich hab den Skript jetzt mal hier
https://github.com/microelly2/freeCAD_m ... bspline.py
Es gibt drei Möglickkeiten, die Punkte zu interpretieren
Pole, Interpolation und Approximation
Bei Approximation gibts noch viele Schräubchen, ich muss aber erstmal verstehen, was die alle bringen,
dann kommen die weiteren Paramewter
https://github.com/microelly2/freeCAD_m ... bspline.py
Es gibt drei Möglickkeiten, die Punkte zu interpretieren
Pole, Interpolation und Approximation
Bei Approximation gibts noch viele Schräubchen, ich muss aber erstmal verstehen, was die alle bringen,
dann kommen die weiteren Paramewter
- Attachments
-
- bp_167.png (40.09 KiB) Viewed 2320 times
-
- bp_168.png (39.69 KiB) Viewed 2320 times
-
- bp_169.png (38.83 KiB) Viewed 2320 times
-
- Veteran
- Posts: 7790
- Joined: Tue Jan 07, 2014 11:10 am
- Contact:
Re: Bspline abhängig parametrisch an Sketch hängen, wie?
Vielen Dank Thomas. Ich habe das heute morgen vor der Arbeit zuhause am Notebook getestet, mit neuem github Skript. Leider hat es nicht funktioniert. Nach dem Ändern des Sketches und Anwenden des Skriptes ändert sich der Bspline leider nicht. Ich sehe Body und Body Origin in Deiner Combo-Ansicht, d.h. Du nutzt die 0.17.
Was heißt Nurbs WB, gibt es die schon irgendwo und ich habe sie übersehen?
Welche Vorraussetzungen benötige ich damit das Skript funktioniert?
Was heißt Nurbs WB, gibt es die schon irgendwo und ich habe sie übersehen?
Welche Vorraussetzungen benötige ich damit das Skript funktioniert?
- microelly2
- Veteran
- Posts: 4688
- Joined: Tue Nov 12, 2013 4:06 pm
- Contact:
Re: Bspline abhängig parametrisch an Sketch hängen, wie?
Ich hab in den Skript alle Testdaten rein. Einfach im leeren FreeCAD ausführen.
Dann ist ein Sketch und ein Bspline da
Sketch ändern -> BSpline ändert sich.
BSpline-Parameter ändern -> BSpline ändert sich.
Mit der 0.16 läuft er auch - nur die Approximationsmethoden außer Default gibt es da noch nicht
Was in der 0.17 geht:
http://freecadbuch.de/doku.php?id=blog: ... roximieren
Die Nurbs WB:
https://github.com/microelly2/freecad-nurbs
viewtopic.php?f=3&t=16473
Dann ist ein Sketch und ein Bspline da
Sketch ändern -> BSpline ändert sich.
BSpline-Parameter ändern -> BSpline ändert sich.
Mit der 0.16 läuft er auch - nur die Approximationsmethoden außer Default gibt es da noch nicht
Was in der 0.17 geht:
http://freecadbuch.de/doku.php?id=blog: ... roximieren
Die Nurbs WB:
https://github.com/microelly2/freecad-nurbs
viewtopic.php?f=3&t=16473
-
- Veteran
- Posts: 7790
- Joined: Tue Jan 07, 2014 11:10 am
- Contact:
Re: Bspline abhängig parametrisch an Sketch hängen, wie?
Ein kurzes 10 minütiges Video zum Skript von heute morgen:
http://www.dailymotion.com/video/x4yzrz9
Wo liegt mein Fehler?
http://www.dailymotion.com/video/x4yzrz9
Wo liegt mein Fehler?