Fläche aus Messwerten
Re: Fläche aus Messwerten
Was bedeutet das für mich?
Für mich klingt das, als ob es ein Work-around gäbe.
Gruß,
Jochen
Für mich klingt das, als ob es ein Work-around gäbe.
Gruß,
Jochen
Jochen
--------------------------------------------
Freecad 0.17 daily build
+Assembly2
+Drawing Dimensioning
Ubuntu 16.04 64 bit
--------------------------------------------
Freecad 0.17 daily build
+Assembly2
+Drawing Dimensioning
Ubuntu 16.04 64 bit
- microelly2
- Veteran
- Posts: 4688
- Joined: Tue Nov 12, 2013 4:06 pm
- Contact:
Re: Fläche aus Messwerten
Auf die Schnelle fallen mir zwei Wege ein:Jochen wrote:Was bedeutet das für mich?
Für mich klingt das, als ob es ein Work-around gäbe.
Gruß,
Jochen
viewtopic.php?f=24&t=5893
und
viewtopic.php?f=8&t=6973&start=40#p111992
Ich hab aber heute keine Zeit mehr, am Wochenende kann ich meine geodaten.Methode für deine Daten anpassen.
Re: Fläche aus Messwerten
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
Re: Fläche aus Messwerten
Jochen wrote:Was bedeutet das für mich?
Für mich klingt das, als ob es ein Work-around gäbe.
Damit meinte werner, dass auf neueren ubuntu versionen als trusty es gundätzlich möglich sein sollte FreeCAD mit point cloud zu kompilieren. Sieht wohl so aus als hat das bisher kaum jemand gemacht. Ich muss selber gestehen, das ich auf meinem Debian Jessie es noch nicht versucht habe FreeCAD mit point cloud zu übersetzen. Ich brauche es so selten, dass ich dann immer schnell windows boote und die dev version verwende. Ich werde das mal in einer freien minute versuchen.wmayer wrote:Allerdings für Versionen neuer als Trusty sollte der pcl-Support grundsätzlich möglich sein.
- microelly2
- Veteran
- Posts: 4688
- Joined: Tue Nov 12, 2013 4:06 pm
- Contact:
Re: Fläche aus Messwerten
Hier mal der Skript zurt Erzeugung einer Interpolation deiner Daten,
die Ergebnisdatei war zu gross fürs Forum.
Anwendung:
1. Ein neues Dkument erzeugen und
2. den Skript im Python Fenster ausführen.
Es ist jetzt eine Fläche mit 100 x 100 Punkten Dünnblech interpoliert.
Ich werde den Skript parametrisierbar machen, dann kann er auf beliebige Datenmengen mit Messpunkten angewendet werden.
Am Ende des Skripts kommt nochmal eine Visualisierung der Höhen mit mathplotlib, dieses Fenster muss man schließen und dann ist die Figur "Interpolation 100" fertig.
Am Ende des Skripts kommt nochmal eine Visualisierung der Höhen mit mathplotlib, dieses Fenster muss man schließen und dann ist die Figur "Interpolation 100" fertig.
die Ergebnisdatei war zu gross fürs Forum.
Anwendung:
1. Ein neues Dkument erzeugen und
2. den Skript im Python Fenster ausführen.
Es ist jetzt eine Fläche mit 100 x 100 Punkten Dünnblech interpoliert.
Ich werde den Skript parametrisierbar machen, dann kann er auf beliebige Datenmengen mit Messpunkten angewendet werden.
Am Ende des Skripts kommt nochmal eine Visualisierung der Höhen mit mathplotlib, dieses Fenster muss man schließen und dann ist die Figur "Interpolation 100" fertig.
Code: Select all
import numpy as np
import matplotlib.pyplot as plt
import scipy.interpolate
hh=10
datatext='''1 1 1
1 2 1
1 3 1
1 4 1
1 5 1
1 6 1
1 7 1
1 8 1
1 9 1
1 10 1
2 1 1
2 2 1
2 3 1.2
2 4 1.2
2 5 1.2
2 6 1
2 7 1
2 8 1
2 9 1
2 10 1
3 1 1
3 2 1
3 3 1.2
3 4 1.3
3 5 1.2
3 6 1
3 7 1
3 8 1
3 9 1
3 10 1
4 1 1
4 2 1
4 3 1.2
4 4 1.2
4 5 1.2
4 6 1
4 7 1
4 8 1
4 9 1
4 10 1
5 1 1
5 2 1
5 3 1
5 4 1
5 5 1
5 6 1
5 7 1
5 8 1
5 9 1
5 10 1
6 1 1
6 2 0.9
6 3 0.9
6 4 0.9
6 5 1
6 6 1
6 7 1
6 8 1
6 9 1
6 10 1
7 1 1
7 2 0.9
7 3 0.8
7 4 0.9
7 5 1
7 6 1
7 7 1
7 8 1
7 9 1
7 10 1
8 1 1
8 2 0.9
8 3 0.9
8 4 0.9
8 5 1
8 6 1
8 7 1
8 8 1
8 9 1
8 10 1
9 1 1
9 2 1
9 3 1
9 4 1
9 5 1
9 6 1
9 7 1
9 8 1
9 9 1
9 10 1
10 1 1
10 2 1
10 3 1
10 4 1
10 5 1
10 6 1
10 7 1
10 8 1
10 9 1
10 10 1
'''
if 1:
data=[]
x=[]; y=[]; z=[]
if len(datatext) <> 0:
lines=datatext.split('\n')
for zn,l in enumerate(lines):
words=l.split()
try:
[xv,yv,zv]=[float(words[0]),float(words[1]),float(words[2])]
print xv+yv+zv
x.append(xv)
y.append(yv)
z.append(zv)
except:
print "Fehler in Zeile ",zn
if 1:
x=np.array(x)
y=np.array(y)
z=np.array(z)
# Set up a regular grid of interpolation points
grids=50 # 100 0.93
grids=100 # 100
xi, yi = np.linspace(x.min(), x.max(), grids), np.linspace(y.min(), y.max(), grids)
xi, yi = np.meshgrid(xi, yi)
# Interpolate rbf
# rbf = scipy.interpolate.Rbf(x, y, z, function='linear')
rbf = scipy.interpolate.Rbf(x, y, z, function='cubic')
rbf = scipy.interpolate.Rbf(x, y, z, function='thin_plate')
# rbf = scipy.interpolate.Rbf(x, y, z, function='multiquadradic')
# rbf = scipy.interpolate.Rbf(x, y, z, function='gaussian')
# interpolate 2d
# rbf = scipy.interpolate.interp2d(x, y, z, kind='cubic')
# rbf = scipy.interpolate.interp2d(x, y, z)
zi = rbf(xi, yi)
# zi ist grids * grids
if 1:
import Draft
lx,ly=zi.shape
ws=[]
for ix in range(lx):
points=[]
for iy in range(ly):
points.append(FreeCAD.Vector(ix,iy,hh*zi[ix,iy]))
w=Draft.makeWire(points,closed=False,face=False,support=None)
ws.append(w)
FreeCAD.activeDocument().recompute()
FreeCADGui.updateGui()
Gui.SendMsgToActiveView("ViewFit")
ll=FreeCAD.activeDocument().addObject('Part::Loft','elevation')
ll.Sections=ws
ll.Ruled = True
ll.ViewObject.ShapeColor = (0.00,0.67,0.00)
ll.ViewObject.LineColor = (0.00,0.67,0.00)
for w in ws:
w.ViewObject.Visibility=False
ll.Placement.Base=FreeCAD.Vector(10.0*grids/100,10.0*grids/100,0)
lc=Draft.clone(ll)
ll.ViewObject.Visibility=False
lc.Label="Interpolation Gitter " + str(grids)
#lc.Scale=(0.95,0.95,1.0)
lc.Scale=(0.92,0.92,1.0)
FreeCAD.activeDocument().recompute()
FreeCADGui.updateGui()
for n in range(x.shape[0]):
a=App.ActiveDocument.addObject("Part::Cylinder","YY" + str(n) )
a.Radius=1.0*grids/100
a.Height=1.0/100
a.Placement.Base=FreeCAD.Vector(10*y[n]*grids/100,10*x[n]*grids/100,hh*z[n])
a.ViewObject.ShapeColor=(1.0,0.0,1.0)
App.activeDocument().recompute()
if 1:
plt.imshow(zi, vmin=z.min(), vmax=z.max(), origin='lower',
extent=[x.min(), x.max(), y.min(), y.max()])
plt.scatter(x, y, c=z)
plt.colorbar()
plt.show()
Re: Fläche aus Messwerten
Hallo microelly2,
ich weiß gar nicht was ich sagen soll! Perfekt!
Ich habe nur SciPy nachinstallieren müssen und dann hat's auch schon funktioniert. Bin gespannt, was ich damit noch alles machen kann.
Vielen Dank und Gruß,
Jochen
ich weiß gar nicht was ich sagen soll! Perfekt!
Ich habe nur SciPy nachinstallieren müssen und dann hat's auch schon funktioniert. Bin gespannt, was ich damit noch alles machen kann.
Vielen Dank und Gruß,
Jochen
Jochen
--------------------------------------------
Freecad 0.17 daily build
+Assembly2
+Drawing Dimensioning
Ubuntu 16.04 64 bit
--------------------------------------------
Freecad 0.17 daily build
+Assembly2
+Drawing Dimensioning
Ubuntu 16.04 64 bit
-
- Veteran
- Posts: 7791
- Joined: Tue Jan 07, 2014 11:10 am
- Contact:
Re: Fläche aus Messwerten
Phantastisch! Super Leute hier!
- microelly2
- Veteran
- Posts: 4688
- Joined: Tue Nov 12, 2013 4:06 pm
- Contact:
Re: Fläche aus Messwerten
Freut mich, dass es bei euch funktioniert,
es sind noch einige bugs drin
aber ich glaube, mein nächstes gartenbauprojekt bekomm ich damit simuliert:
markante punkte messen, dann flächenmodell als vierecksmesh ausrechen lassen und dann kann man beliebig genau planen.
ich stell den skript jetzt mal in meine rekonstruktions workbench
https://raw.githubusercontent.com/micro ... iongrid.py
dort wird er die kommenden tage aktualisiert: dialog mit parametren, datenimport der pointcloud.
mittlerweile passen die messpunkte schon genau.
es sind noch einige bugs drin
aber ich glaube, mein nächstes gartenbauprojekt bekomm ich damit simuliert:
markante punkte messen, dann flächenmodell als vierecksmesh ausrechen lassen und dann kann man beliebig genau planen.
ich stell den skript jetzt mal in meine rekonstruktions workbench
https://raw.githubusercontent.com/micro ... iongrid.py
dort wird er die kommenden tage aktualisiert: dialog mit parametren, datenimport der pointcloud.
mittlerweile passen die messpunkte schon genau.
- Attachments
-
- bp_012.png (121.89 KiB) Viewed 2547 times
- microelly2
- Veteran
- Posts: 4688
- Joined: Tue Nov 12, 2013 4:06 pm
- Contact:
Re: Fläche aus Messwerten
Ich habe mal pcl auf ubuntu installiert und die pcl-python bindings von http://strawlab.github.io.
Mit der Python-Schnittstelle funktioniert schon mal: Segmentation und Filter.
http://pointclouds.org/documentation/tu ... n-tutorial
Damit kann man geometrische Strukturen (Ebene, Zylinder ..) erkennen und nachbearbeiten.
Mit der Python-Schnittstelle funktioniert schon mal: Segmentation und Filter.
http://pointclouds.org/documentation/tu ... n-tutorial
Damit kann man geometrische Strukturen (Ebene, Zylinder ..) erkennen und nachbearbeiten.
Re: Fläche aus Messwerten
Gibt es denn irgendwo auch etwas um aus so einer "Gartenlandschaft" (einer triangulierten Punktoberfläche) dann in FreeCAD Höhenlinien zu errechnen?