[fast gelöst] Trennfläche für Formenbau, Trimmen an Silhouette - 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: 4197
Joined: Tue Nov 12, 2013 4:06 pm
Contact:

Re: Trennfläche für Formenbau, Trimmen an Silhouette - wie?

Postby microelly2 » Sat Feb 16, 2019 10:34 am

freecad-heini-1 wrote:
Sat Feb 16, 2019 9:44 am
Was hälst Du von dem was Saso gepostet hat? Ist das evt. einfacher, wenn OCC solche Tools bereits zur Verfügung stellt?
Das ist es genau wie wir es brauchen: HLRAppli_ReflectLines
wmayer wrote:
Wenn wir dafür ein Python Interface hätten, wären wir schon fast fertig.
Ansonsten muss ich noch das Poblem lösen, aus meiner Punktmenge einen Polygonzug zu machen, d.h.die Punkte zu ordnen.
Ich denke so oder so in einer Woche haben wir was. :)
User avatar
saso
Posts: 1135
Joined: Fri May 16, 2014 1:14 pm
Contact:

Re: Trennfläche für Formenbau, Trimmen an Silhouette - wie?

Postby saso » Sat Feb 16, 2019 10:53 am

microelly2 wrote:
Sat Feb 16, 2019 10:34 am
Das ist es genau wie wir es brauchen: HLRAppli_ReflectLines
Wenn wir dafür ein Python Interface hätten, wären wir schon fast fertig.
Yes, IMO we should first try how well HLRAppli_ReflectLines works.

And if wmayer makes the needed interface then maybe also Chris_G would be interested to add this tool to his Curves WB (would IMO fit well there). But I am not saying this because I would not trust you with it Thomas :) but because I feel it would be even more interesting if you could take the magic that you have in this video https://forum.freecadweb.org/viewtopic. ... 40#p194307 and make an "draft analysis" tool out of it. It seems to me like you already have everything needed? Together with ReflectLines things would get really interesting :roll:

http://catiadoc.free.fr/online/cfyugfss ... ut0306.htm
https://www.youtube.com/watch?v=rx508dWvr8M
https://forum.freecadweb.org/viewtopic. ... 10#p193656
freecad-heini-1
Posts: 5199
Joined: Tue Jan 07, 2014 11:10 am
Contact:

Re: Trennfläche für Formenbau, Trimmen an Silhouette - wie?

Postby freecad-heini-1 » Sat Feb 16, 2019 11:56 am

Freunde und Kollegen, ihr seid spitze!!!
User avatar
microelly2
Posts: 4197
Joined: Tue Nov 12, 2013 4:06 pm
Contact:

Re: Trennfläche für Formenbau, Trimmen an Silhouette - wie?

Postby microelly2 » Sat Feb 16, 2019 12:13 pm

saso wrote:
Sat Feb 16, 2019 10:53 am
but because I feel it would be even more interesting if you could take the magic that you have in this video https://forum.freecadweb.org/viewtopic. ... 40#p194307 and make an "draft analysis" tool out of it.
Es gibt da einen Unterschied.
Im Video berechne ich die Richtungen auf einem Gitter und mache daraus Farbpunkte,
Mit dem Verfahren hier bestimme ich die genaue Position von Punkten so genau wie gewollt.

Die Zielfunktion ist dabei fast willkürlich
hier haben wir den Winkel zur Sichtrichtung = 90°,

genauso gut würde aber auch gehen:
Gaußsche Krümmung = 0 - Ideale Linien für Abwicklungen
Mittlere Krümmung = 0 - Minimalkurven
oder fester Abstand von einem gegebenen Punkt für Parkettierungen
User avatar
saso
Posts: 1135
Joined: Fri May 16, 2014 1:14 pm
Contact:

Re: Trennfläche für Formenbau, Trimmen an Silhouette - wie?

Postby saso » Sat Feb 16, 2019 2:10 pm

microelly2 wrote:
Sat Feb 16, 2019 12:13 pm
saso wrote:
Sat Feb 16, 2019 10:53 am
but because I feel it would be even more interesting if you could take the magic that you have in this video https://forum.freecadweb.org/viewtopic. ... 40#p194307 and make an "draft analysis" tool out of it.
Es gibt da einen Unterschied.
Im Video berechne ich die Richtungen auf einem Gitter und mache daraus Farbpunkte,
Mit dem Verfahren hier bestimme ich die genaue Position von Punkten so genau wie gewollt.
Ok, thanks for the explanation. Well if not now, then maybe we will manage to add the "draft analysis" functionality at some other time :)
wmayer
Site Admin
Posts: 13770
Joined: Thu Feb 19, 2009 10:32 am

Re: Trennfläche für Formenbau, Trimmen an Silhouette - wie?

Postby wmayer » Mon Feb 25, 2019 10:17 am

git commit d3631968abc

Code: Select all

from pivy import coin
shape=App.ActiveDocument.ActiveObject.Shape

rot=Gui.ActiveDocument.ActiveView.getCameraOrientation()
vdir=App.Vector(0,0,-1)
vdir=rot.multVec(vdir)
udir=App.Vector(0,1,0)
udir=rot.multVec(udir)

pos=Gui.ActiveDocument.ActiveView.getCameraNode().position.getValue().getValue()
pos=App.Vector(*pos)

reflect=shape.reflectLines(ViewDir=vdir, ViewPos=pos, UpDir=udir)
Part.show(reflect)
Übrigens: Wer in Blender ein Netz lädt, sollte eine orangefarbene Silhouette sehen. Diese Funktion gibt es nämlich direkt in OpenGL und wird durch den sogenannten Stencil-Buffer ermöglicht: https://www.codeproject.com/Articles/84 ... -in-OpenGL
freecad-heini-1
Posts: 5199
Joined: Tue Jan 07, 2014 11:10 am
Contact:

Re: Trennfläche für Formenbau, Trimmen an Silhouette - wie?

Postby freecad-heini-1 » Mon Feb 25, 2019 1:24 pm

wmayer wrote:
Mon Feb 25, 2019 10:17 am
git commit d3631968abc

Code: Select all

from pivy import coin
shape=App.ActiveDocument.ActiveObject.Shape

rot=Gui.ActiveDocument.ActiveView.getCameraOrientation()
vdir=App.Vector(0,0,-1)
vdir=rot.multVec(vdir)
udir=App.Vector(0,1,0)
udir=rot.multVec(udir)

pos=Gui.ActiveDocument.ActiveView.getCameraNode().position.getValue().getValue()
pos=App.Vector(*pos)

reflect=shape.reflectLines(ViewDir=vdir, ViewPos=pos, UpDir=udir)
Part.show(reflect)
Übrigens: Wer in Blender ein Netz lädt, sollte eine orangefarbene Silhouette sehen. Diese Funktion gibt es nämlich direkt in OpenGL und wird durch den sogenannten Stencil-Buffer ermöglicht: https://www.codeproject.com/Articles/84 ... -in-OpenGL
Hallo Werner,
vielen lieben Dank. Wie genau muss man vorgehen um eine Silhoutten zu erzeugen?
Viele Grüße
Wilfried
wmayer
Site Admin
Posts: 13770
Joined: Thu Feb 19, 2009 10:32 am

Re: Trennfläche für Formenbau, Trimmen an Silhouette - wie?

Postby wmayer » Mon Feb 25, 2019 2:55 pm

Die OCCT-Klasse HLRAppli_ReflectLines erwartet drei Vektoren, mit der man die Lage des Anwenders im Weltkoordinatensystem beschreibt. Das ist die Blickrichtung, die Position und die Richtung, die nach Oben zeigt. All diese Informationen erhält man vom Kamera-Knoten im Szenengraph und passiert in den Zeilen 4-11 im obigen Makro.

Wenn Du das an Deinem Testobjekt ausprobieren möchtest, dann mach folgendes:
Selektiere das Objekt und führe unten stehenden Code aus:

Code: Select all

from pivy import coin
shape=Gui.Selection.getSelection()[0].Shape

rot=Gui.ActiveDocument.ActiveView.getCameraOrientation()
vdir=App.Vector(0,0,-1)
vdir=rot.multVec(vdir)
udir=App.Vector(0,1,0)
udir=rot.multVec(udir)

pos=Gui.ActiveDocument.ActiveView.getCameraNode().position.getValue().getValue()
pos=App.Vector(*pos)

reflect=shape.reflectLines(ViewDir=vdir, ViewPos=pos, UpDir=udir)
Part.show(reflect)
freecad-heini-1
Posts: 5199
Joined: Tue Jan 07, 2014 11:10 am
Contact:

Re: Trennfläche für Formenbau, Trimmen an Silhouette - wie?

Postby freecad-heini-1 » Mon Feb 25, 2019 5:43 pm

wmayer wrote:
Mon Feb 25, 2019 2:55 pm
Die OCCT-Klasse HLRAppli_ReflectLines erwartet drei Vektoren, mit der man die Lage des Anwenders im Weltkoordinatensystem beschreibt. Das ist die Blickrichtung, die Position und die Richtung, die nach Oben zeigt. All diese Informationen erhält man vom Kamera-Knoten im Szenengraph und passiert in den Zeilen 4-11 im obigen Makro.

Wenn Du das an Deinem Testobjekt ausprobieren möchtest, dann mach folgendes:
Selektiere das Objekt und führe unten stehenden Code aus:

Code: Select all

from pivy import coin
shape=Gui.Selection.getSelection()[0].Shape

rot=Gui.ActiveDocument.ActiveView.getCameraOrientation()
vdir=App.Vector(0,0,-1)
vdir=rot.multVec(vdir)
udir=App.Vector(0,1,0)
udir=rot.multVec(udir)

pos=Gui.ActiveDocument.ActiveView.getCameraNode().position.getValue().getValue()
pos=App.Vector(*pos)

reflect=shape.reflectLines(ViewDir=vdir, ViewPos=pos, UpDir=udir)
Part.show(reflect)
Danke Werner. Ich habe die Zeilen in ein Makro kopiert, wähle mein Testobjekt, letztes Feature und führe das Makro aus.
Testobjekt_silhouette_trimmen.FCStd
(69.56 KiB) Downloaded 19 times
Oder in der Python Konsole:

Code: Select all

>>> from pivy import coin
>>> shape=Gui.Selection.getSelection()[0].Shape
>>> 
>>> rot=Gui.ActiveDocument.ActiveView.getCameraOrientation()
>>> vdir=App.Vector(0,0,-1)
>>> vdir=rot.multVec(vdir)
>>> udir=App.Vector(0,1,0)
>>> udir=rot.multVec(udir)
>>> 
>>> pos=Gui.ActiveDocument.ActiveView.getCameraNode().position.getValue().getValue()
>>> pos=App.Vector(*pos)
>>> 
>>> reflect=shape.reflectLines(ViewDir=vdir, ViewPos=pos, UpDir=udir)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
AttributeError: 'Part.Solid' object has no attribute 'reflectLines'
>>> Part.show(reflect)
Was heißt:
Part.Solid' object has no attribute 'reflectLines'
User avatar
saso
Posts: 1135
Joined: Fri May 16, 2014 1:14 pm
Contact:

Re: Trennfläche für Formenbau, Trimmen an Silhouette - wie?

Postby saso » Mon Feb 25, 2019 5:58 pm

First you need build 0.18.15974 or newer...