Punkte (bzw. Koordinaten) aus Tabelle importieren

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

WICHTIG: Bitte zuerst lesen, bevor Sie posten
User avatar
bernd
Veteran
Posts: 12851
Joined: Sun Sep 08, 2013 8:07 pm
Location: Zürich, Switzerland
Contact:

Re: Punkte (bzw. Koordinaten) aus Tabelle importieren

Post by bernd »

wmayer wrote:

Code: Select all

import ReverseEngineering as Reen
points=App.ActiveDocument.terrain.Points
mesh=Reen.triangulate(points, 10000, 3.5)
import Mesh
Mesh.show(mesh)
Was bedeuten die Parameter 10000 und 3.5?
wmayer
Founder
Posts: 20310
Joined: Thu Feb 19, 2009 10:32 am
Contact:

Re: Punkte (bzw. Koordinaten) aus Tabelle importieren

Post by wmayer »

So, mit git commit 212e2bf19c24f hat nun auch der B-Spline-Fit von pcl Einzug gehalten.

Code: Select all

import ReverseEngineering as Reen
spline=Reen.fitBSpline(Points=App.ActiveDocument.bunny.Points)
shape=App.ActiveDocument.addObject("Part::Spline","Spline")
shape.Shape=spline.toShape()
Als Testdatensatz kann man den Stanford bunny nehmen. aus der .pcd-Datei lässt sich einfach eine .asc-Datei erzeugen: entferne Zeile 2-10 und ändere Dateierweiterung von pcd auf asc

Zum Vergleich mit dem anderen Fit:

Code: Select all

import ReverseEngineering as Reen

points = App.ActiveDocument.bunny.Points
data = [(i.x,i.y,i.z) for i in points.Points]

surf=Reen.approxSurface(Points=data,UDegree=2,VDegree=2,NbUPoles=18,NbVPoles=18,Smooth=True,Weight=0.01,Grad=0.9,Bend=0.1,Iterations=5,Correction=True,PatchFactor=1.2)

shape=App.ActiveDocument.addObject("Part::Spline")
shape.Shape=surf.toShape()
markus
Posts: 8
Joined: Mon Oct 12, 2015 3:14 pm

Re: Punkte (bzw. Koordinaten) aus Tabelle importieren

Post by markus »

Hallo liebe FreeCAD'er,

das importieren von Punkten (bzw. Koordinaten) hat Dank eurer Hilfe wunderbar funktioniert.
Recht herzlichen Dank nochmal.
Jetzt stehe ich aber vor dem nächsten Problem.
Ich möchte wieder Punkte importieren, diesmal aber mit anderen Parametern.
Und zwar Endpunkte von Vektoren.

Hier ein Beispiel:

Punkt 0: Endpunkt des Vektors 0 [Startpunkt x=0, y=0 ; Winkel a = 0 Grad (liegt also auf der x-Achse) ; Länge = 1000mm]
Punkt 1: Endpunkt des Vektors 1 [Startpunkt x=0, y=0 ; Winkel b = 1 Grad ; Länge = 995mm]
Punkt 2: Endpunkt des Vektors 2 [Startpunkt x=0, y=0 ; Winkel c = 2 Grad ; Länge = 990mm]

usw. ....

Alle Punkte (Endpunkte der Vektoren) sollen auf der X-Y Ebene liegen.
Der Startpunkt der einzelnen Vektoren ist in diesem Fall immer der gleiche, nämlich: x=0 ; y=0 ;
Der Winkel der Vektoren zur X-Achse sollte in diesem Fall jeweils um 1 Grad zunehmen,
die Länge der Vektoren sollte jeweils um 5mm abnehmen.

Und wie bereits erwähnt, benötige ich eigentlich nur die Endpunkte der Vektoren.

Vielleicht könnt Ihr mir helfen.

Vielen Dank für eure Mühen schon mal im Voraus.

Markus
wmayer
Founder
Posts: 20310
Joined: Thu Feb 19, 2009 10:32 am
Contact:

Re: Punkte (bzw. Koordinaten) aus Tabelle importieren

Post by wmayer »

Der Winkel der Vektoren zur X-Achse sollte in diesem Fall jeweils um 1 Grad zunehmen,
die Länge der Vektoren sollte jeweils um 5mm abnehmen.
Das ist im Prinzip eine Archimed'sche Spirale, wobei die Punkte in Polarkoordinaten gegeben sind.

Mit diesem Script sollten die Punkte wie gewünscht erzeugt werden können:

Code: Select all

import math
import Points

start = 1000
step = 5
pts=[App.Vector((start-step*i)*math.cos(math.radians(i)),(start-step*i)*math.sin(math.radians(i)),0) for i in range(start/step+1)]

p=Points.Points()
p.addPoints(pts)
Points.show(p)
freecad-heini-1
Veteran
Posts: 7790
Joined: Tue Jan 07, 2014 11:10 am
Contact:

Re: Punkte (bzw. Koordinaten) aus Tabelle importieren

Post by freecad-heini-1 »

Ich brauche das demnächst auch mal.
Punkte in die Points-Workbench importieren klappt.

Wie geht es ab hier weiter?

Wer kann mir das bitte Schritt für Schritt verständlich erklären?

Was ist das mit dem Git?

OS: Ubuntu 16.04.1 LTS
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.16.6703 (Git)
Build type: None
Branch: releases/FreeCAD-0-16
Hash: 2ce5c8d2e3020d05005ed71f710e09e9aa561f40
Python version: 2.7.11+
Qt version: 4.8.7
Coin version: 4.0.0a
OCC version: 6.8.0.oce-0.17
User avatar
bernd
Veteran
Posts: 12851
Joined: Sun Sep 08, 2013 8:07 pm
Location: Zürich, Switzerland
Contact:

Re: Punkte (bzw. Koordinaten) aus Tabelle importieren

Post by bernd »

freecad-heini-1 wrote:Ich brauche das demnächst auch mal.
Punkte in die Points-Workbench importieren klappt.

Wie geht es ab hier weiter?

Wer kann mir das bitte Schritt für Schritt verständlich erklären?

Was ist das mit dem Git?
Werner hatte damals genau in Bezug auf die Disskussion einige neue Funktionen hinzgefügt. FreeCAD nutzt zur Verwaltung seines Source codes die Software Git. Wenn eine Änderung am FreeCAD Sourcecode erstellt wird wird diese mit einem commit in die software Git eingepflegt. Du kannts dir alle commits schön anschauen. Siehe hier: https://github.com/FreeCAD/FreeCAD/commits/master Das ist das officealle Repository von FreeCAD. Da kannst du mit verfolgen in welchem Tempe FreeCAD voranschreitet.

Werner posted dann öfters ohne grosser Erklären einen Link auf den commit den er im FreeCAD sourcen gemacht hat. Macht er öfters so, ohne grosses drum herum kurz erklärt wo das problem ist ohne jeglichen hinweis ob er das programmiert oder nicht. Einige zeit später kommt dann nur en post mit dem link auf den fix oder die neue funktion oder eben auch nicht.

In Bezug auf die Funktionen hier. Schliesse dich mal mit micrelley2 kurz. Das hier war vor seiner geodata workbench. Ich glaube die kann das jetzt evtl. sogar noch besser. Ansonsten einfach einen Ausschnitt der Daten posten und wir machen das dann live mit deinen Daten mit pcl.

gruss bernd
freecad-heini-1
Veteran
Posts: 7790
Joined: Tue Jan 07, 2014 11:10 am
Contact:

Re: Punkte (bzw. Koordinaten) aus Tabelle importieren

Post by freecad-heini-1 »

Hallo bernd,
ich habe noch keine Daten. Das kann noch einige Wochen dauern bis die Daten eigescannt werden können, weil die Teile dazu noch nicht fertig sind.

Mir geht es aber schon mal darum mich mit der Thematik vertraut zu machen.
Der Kopf in diesem Thread hilft mir und dem Themenstarter:
viewtopic.php?p=145028#p145028
Viele Grüße
Wilfried
arvindm93
Posts: 1
Joined: Mon May 01, 2017 7:33 pm

Re: Punkte (bzw. Koordinaten) aus Tabelle importieren

Post by arvindm93 »

wmayer wrote:
Wow, ist zwar nicht das womit ich sinnvoll weiterarbeiten kann, aber wie geht das ?!?
Leider (noch) nicht mit FreeCAD.
Die Grundfläche wüsste ich noch, aber mit den seitenflächen hab ich meine mühe. Wie kann ich die mit python erstellen. Das endziel wäre ein solid wie im beigefügten screen. (der ist importiert mittels ifc.)
Mit Python ist das durchaus machbar, aber ich habe (für das obige Beispiel) den Shape builder verwendet. Dazu muss man zuerst aus dem Mesh in Shape erzeugen, dann geht man zu den vier Eckpunkten um die Koordinaten zu erfahren. Da die Fläche (mehr oder weniger) in Richtung z-Achse zeigt, erstellt man vier neue Punkte mit jeweils denselben x-,y-Koordinaten und z entsprechend so, dass die vier Punkte auf einer Ebene liegen.

Nun hat man alles beisammen, um den Shape builder zu starten. Zunächst erstellt man sich die acht Kanten und dann die fünf Flächen. Danach baut man aus den Flächen eine Shell und dann ein Solid.
Hello,
Sorry for the english,my german is not that good. I have a problem similar to the one you have provided solution here. I have used triangulation for a surface via meshlab,because the mesh from trigulate in Freecad gave a very incomplete mesh with various elements missing some overlapping.
Regardless my problem now is that i am unable to create the faces for the sides as the triangulation provides small edges and it is not feasible to select every single edge. I would be grateful if you could point me in the right direction.
User avatar
microelly2
Veteran
Posts: 4688
Joined: Tue Nov 12, 2013 4:06 pm
Contact:

Re: Punkte (bzw. Koordinaten) aus Tabelle importieren

Post by microelly2 »

arvindm93 wrote: Hello,
Sorry for the english,my german is not that good. I have a problem similar to the one you have provided solution here. I have used triangulation for a surface via meshlab,because the mesh from trigulate in Freecad gave a very incomplete mesh with various elements missing some overlapping.
Regardless my problem now is that i am unable to create the faces for the sides as the triangulation provides small edges and it is not feasible to select every single edge. I would be grateful if you could point me in the right direction.
There are some possibilites depending on the quality of your data

1. convert a mesh to a part with Part workbench: create shape from mesh
2. use a python script to build the shape on an optimized way if your data have a "nice" structure
3. approximate/interpolate your data to get BSpline surfaces

You may get more detailed tipps, when you post your data here in the forum.

Weil das hier der deutsche Bereich ist

1. Neben der Möglichkeit, ein Mesh direkt über Menü zu konvertieren
2. lohnt sich der Blick in die Daten, um mit einem Skript schneller zu sein. Oft haben die Daten schöne Strukturen, aus denen sich Flächen generieren lassen: Was aussieht wie eine Kugel, ist meist auch eine Kugel.
3. Mesh sind immer nur Näherungen mit großen Datenmengen, mit der Annäherung durch ein gutes Nurbs Modell kann man viel Punkte und damit Rechenzeit sparen.
bp_490.png
bp_490.png (45.94 KiB) Viewed 3319 times
quelle http://www.sintef.no/globalassets/uploa ... vadina.pdf
Post Reply