echte 3D DXF Datei in Freecad zu Solid umwandeln
-
- Posts: 57
- Joined: Thu Jan 31, 2019 4:15 pm
echte 3D DXF Datei in Freecad zu Solid umwandeln
ich habe jetzt 2 Tage damit verbracht, etwas einzuscannen (abtasten), weil alle Welt auf 3D-dxf schwört... gesagt getan, nur sitze ich jetzt vor dem PC und habe die dxf importiert und kann leider nichts (aber auch gar nichts) machen. Egal welche WB ich ansteuere, alles ist grau. Hat jemand nen Tipp? Hab mir zusätylich das Paket Oda converter installiert, um ne dwg daraus zu machen, aber das bringt mich auch nicht weiter. Der Scan ist fantastisch---schön scharfe Konturen und keine Fehler oder offene Linien. Ich will doch einfach dieses Drahtgitter mit einer "Hülle" überziehen, damit ich ein 3D Modell bekomme. Wo oder wie muss ich hier rangehen? Ich hänge die Datei mal mit an
- Attachments
-
- FINAL 10500 punkte CNC Datei 686 SW Obelix Griffschale.dfx.dxf
- (471.21 KiB) Downloaded 80 times
-
- Veteran
- Posts: 7790
- Joined: Tue Jan 07, 2014 11:10 am
- Contact:
Re: echte 3D DXF Datei in Freecad zu Solid umwandeln
Woher hast Du diese Info?Danilo0702 wrote: ↑Thu Oct 10, 2019 7:56 pm ich habe jetzt 2 Tage damit verbracht, etwas einzuscannen (abtasten), weil alle Welt auf 3D-dxf schwört...
Ich möchte Dich bitten zu recherchieren, was ist 3D-DXF? Wer hat daran die Rechte, wer hat es entwickelt? Woher kommt es? Wer steckt dahinter? Mit welchen Software Progammen kann man eine 3D-DXF öffnen / bearbeiten?Danilo0702 wrote: ↑Thu Oct 10, 2019 7:56 pm gesagt getan, nur sitze ich jetzt vor dem PC und habe die dxf importiert und kann leider nichts (aber auch gar nichts) machen.
Viele GrüßeDanilo0702 wrote: ↑Thu Oct 10, 2019 7:56 pm Egal welche WB ich ansteuere, alles ist grau. Hat jemand nen Tipp? Hab mir zusätylich das Paket Oda converter installiert, um ne dwg daraus zu machen, aber das bringt mich auch nicht weiter. Der Scan ist fantastisch---schön scharfe Konturen und keine Fehler oder offene Linien. Ich will doch einfach dieses Drahtgitter mit einer "Hülle" überziehen, damit ich ein 3D Modell bekomme. Wo oder wie muss ich hier rangehen? Ich hänge die Datei mal mit an
Wilfried
Re: echte 3D DXF Datei in Freecad zu Solid umwandeln
Also ich konnte die Datei öffnen, auch wenn es etwas gedauert hat. Wie man das allerdings mit FreeCADkonvertiert, weiß ich nicht. Ich habe ein paar Online-Converter probiert, die haben aber alle Murks geliefert, das könnte also schwierig werden. Du könntest dir aber die Tets-Version von AutoCAD runterladen und das damit zu einem STL, STEP, oä. konvertieren.
usbhub
usbhub
-
- Posts: 57
- Joined: Thu Jan 31, 2019 4:15 pm
Re: echte 3D DXF Datei in Freecad zu Solid umwandeln
@freecad-heini-1 mit alle Welt meinte ich alle meine Bekannten in der CNC Szene--- ja, Autodesk ist der Macher, aber es muss doch möglich sein, solche Dateien zu konvertieren. Ich kann die dfx in Freecad einlesen und es werden mir ca 5000 Shapes angezeigt. Die Grafik des Scans stimmt in Freecad auch. Nur kann man da nichts anwählen.freecad-heini-1 wrote: ↑Fri Oct 11, 2019 2:17 pmWoher hast Du diese Info?Danilo0702 wrote: ↑Thu Oct 10, 2019 7:56 pm ich habe jetzt 2 Tage damit verbracht, etwas einzuscannen (abtasten), weil alle Welt auf 3D-dxf schwört...Ich möchte Dich bitten zu recherchieren, was ist 3D-DXF? Wer hat daran die Rechte, wer hat es entwickelt? Woher kommt es? Wer steckt dahinter? Mit welchen Software Progammen kann man eine 3D-DXF öffnen / bearbeiten?Danilo0702 wrote: ↑Thu Oct 10, 2019 7:56 pm gesagt getan, nur sitze ich jetzt vor dem PC und habe die dxf importiert und kann leider nichts (aber auch gar nichts) machen.Viele GrüßeDanilo0702 wrote: ↑Thu Oct 10, 2019 7:56 pm Egal welche WB ich ansteuere, alles ist grau. Hat jemand nen Tipp? Hab mir zusätylich das Paket Oda converter installiert, um ne dwg daraus zu machen, aber das bringt mich auch nicht weiter. Der Scan ist fantastisch---schön scharfe Konturen und keine Fehler oder offene Linien. Ich will doch einfach dieses Drahtgitter mit einer "Hülle" überziehen, damit ich ein 3D Modell bekomme. Wo oder wie muss ich hier rangehen? Ich hänge die Datei mal mit an
Wilfried
Re: echte 3D DXF Datei in Freecad zu Solid umwandeln
Du hast den Scan ja mit irgendeiner Art von Software erstellt. Das erzeugte das erzeugte Modell musstest du ja exportieren. Könntest du nicht den vorhandenen Scan mit der Scan-Software erneut exportieren und ein anderes Format nehmen. Geht natürlich nur, wenn die Rohdaten noch vorhanden sind.
Ich würde aber weiterhin zu der Methode mit der AutoCAD-Test-Version tendieren.
Merke: Proprietäre Datenformate soweit irgendwie möglich, vermeiden (auch wenn der Bekanntenkreis das Gegenteil behauptet ).
Ich würde aber weiterhin zu der Methode mit der AutoCAD-Test-Version tendieren.
Merke: Proprietäre Datenformate soweit irgendwie möglich, vermeiden (auch wenn der Bekanntenkreis das Gegenteil behauptet ).
-
- Veteran
- Posts: 7790
- Joined: Tue Jan 07, 2014 11:10 am
- Contact:
Re: echte 3D DXF Datei in Freecad zu Solid umwandeln
Versuche bitte mal den umgedrehten Weg eine Freecad fcstd in Autodesk zu öffnen.Danilo0702 wrote: ↑Fri Oct 11, 2019 5:50 pm @freecad-heini-1 mit alle Welt meinte ich alle meine Bekannten in der CNC Szene--- ja, Autodesk ist der Macher, aber es muss doch möglich sein, solche Dateien zu konvertieren. Ich kann die dfx in Freecad einlesen und es werden mir ca 5000 Shapes angezeigt. Die Grafik des Scans stimmt in Freecad auch. Nur kann man da nichts anwählen.
Falls das nicht geht, dann frage bitte die "alle Welt" Bekannten und / oder den Support von Autodesk.
Closed-Source Dateiformate kann man meist nur mit dem Originalprogramm öffnen, oder mit Programmen, die für die Schnittstelle Lizensgebühren an den Hersteller bezahlen.
Ich habe mir den CAD-Exchanger gekauft, denn ab- und zu muss ich native closed-Source CAD-Formate öffnen und weiter bearbeiten.
Siehe dazu meine Foren-Fragen mit den jeweiligen Antworten:
https://forum.freecadweb.org/viewtopic. ... id#p239784
https://forum.freecadweb.org/viewtopic. ... id#p206067
Re: echte 3D DXF Datei in Freecad zu Solid umwandeln
Habe mir gerade den CAD-Exchanger angesehen. Ist ja ein cooles Teil! Unter Pricing gibt es im Tab "Cloud" auch Free. Dann kannst du zwar nur Dateien bis 50MB und 10 Konvertierungen im Monat machen, das dürfte ja aber reichen. Man muss sich nur einmal anmelden.
Alternativ kannst du evtl. auch Wilfried ganz lieb bitten, ob er dir die Datei konvertiert
Alternativ kannst du evtl. auch Wilfried ganz lieb bitten, ob er dir die Datei konvertiert
-
- Posts: 57
- Joined: Thu Jan 31, 2019 4:15 pm
Re: echte 3D DXF Datei in Freecad zu Solid umwandeln
@usbhub; nein, das ist nicht möglich. Das ist winpcnc, eine NC Software mit ganz einfachen CAM Möglichkeiten. Es gehen nur (nc, cnc, plt und txt).usbhub wrote: ↑Fri Oct 11, 2019 6:40 pm Du hast den Scan ja mit irgendeiner Art von Software erstellt. Das erzeugte das erzeugte Modell musstest du ja exportieren. Könntest du nicht den vorhandenen Scan mit der Scan-Software erneut exportieren und ein anderes Format nehmen. Geht natürlich nur, wenn die Rohdaten noch vorhanden sind.
Ich würde aber weiterhin zu der Methode mit der AutoCAD-Test-Version tendieren.
Merke: Proprietäre Datenformate soweit irgendwie möglich, vermeiden (auch wenn der Bekanntenkreis das Gegenteil behauptet ).
Der Scan kann theoretisch sofort über das Programm gefräst werden. Was ist aber, wenn mann den Scan noch ein bisschen modifizieren möchte?
-
- Posts: 57
- Joined: Thu Jan 31, 2019 4:15 pm
Re: echte 3D DXF Datei in Freecad zu Solid umwandeln
Habe mir auch grad den CAD Exchanger angeschaut und mal gedownloadet. Das Programm kann keine 3D dxf Dateien konvertieren.
Re: echte 3D DXF Datei in Freecad zu Solid umwandeln
Die DXF-Datei enthält einfach nur Linien. Ich hatte mal eine einfache DXF-Lib mit numpy gebastelt. Wenn du Konsole kopierst, kannst du die nachfolgenden Schritt testen:
1. fc_dxflib.py
2. Datei laden
3. Infos anzeigen
4. Linien erstellen
Eine Punktewolke aus dem jeweils ersten Punkt der Linie wäre sicherlich sinnvoller um eine Fläche zu generieren. Evt. kann ich mir das morgen mal anschauen.
Gruß
Benjamin
1. fc_dxflib.py
Code: Select all
# a FreeCAD Library
#***************************************************************************
#* (c) Benjamin Alterauge (gift) 2018 - 2019 *
#* *
#* This file is part of the FreeCAD CAx development system. *
#* *
#* This program is free software; you can redistribute it and/or modify *
#* it under the terms of the GNU Lesser General Public License (LGPL) *
#* as published by the Free Software Foundation; either version 2 of *
#* the License, or (at your option) any later version. *
#* for detail see the LICENCE text file. *
#* *
#* FreeCAD is distributed in the hope that it will be useful, *
#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
#* GNU Lesser General Public License for more details. *
#* *
#* You should have received a copy of the GNU Library General Public *
#* License along with FreeCAD; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
#* USA *
#* *
#***************************************************************************
import numpy as np
import FreeCAD
GC_ENTITY_TYPE = 0
GC_HANDLE = 5
GC_DOUBLE = np.concatenate((np.arange(10,59),np.arange(140,147)))
GC_INT16 = np.concatenate((np.arange(60,79),np.arange(170,175),np.arange(400,409),np.arange(1060,1070)))
GC_INT32 = np.concatenate((np.arange(90,99),[1071]))
GC_X = 10
GC_Y = 20
GC_Z = 30
class DXFEntity:
def __init__(self, et=''): self.groupcodes = {GC_ENTITY_TYPE : et}
def set(self, gc, vl): self.groupcodes[gc] = vl
def value(self, gc): return self.groupcodes[gc]
def type(self): self.groupcodes[GC_ENTITY_TYPE]
def handle(self): self.groupcodes[GC_HANDLE]
def set_list(self, gc, vl):
if gc in self.groupcodes:
self.groupcodes[gc].append(vl)
else:
self.groupcodes[gc] = [vl]
class DXFPolyline(DXFEntity):
def __init__(self, et='POLYLINE'):
self.vertexes = []
DXFEntity.__init__(self, et)
def add_vertex(self, obj):
self.vertexes.append(obj)
def get_vertexes(self):
return self.vertexes
def count_vertexes(self):
return len(self.vertexes)
def to_wire(self):
import Part
dw = Part.makePolygon([i.vector() for i in self.get_vertexes()])
Part.show(dw)
return dw
def to_points(self):
import Points
pp=Points.Points()
pp.addPoints([i.vector() for i in self.get_vertexes()])
Points.show(pp)
return pp
def to_fc(self):
return self.to_wire()
def is_polyline(self):
return True
class DXFVertex(DXFEntity):
def __init__(self, et='VERTEX'):
DXFEntity.__init__(self, et)
self.set(GC_X, 0.0)
self.set(GC_Y, 0.0)
self.set(GC_Z, 0.0)
def x(self): return self.value(GC_X)
def y(self): return self.value(GC_Y)
def z(self): return self.value(GC_Z)
def vector(self): return FreeCAD.Vector(self.x(), self.y(), self.z())
def is_vertex(): return True
class DXFLine(DXFEntity):
def __init__(self, et='LINE'):
DXFEntity.__init__(self, et)
self.set(GC_X, 0.0)
self.set(GC_Y, 0.0)
self.set(GC_Z, 0.0)
self.set(GC_X+1, 0.0)
self.set(GC_Y+1, 0.0)
self.set(GC_Z+1, 0.0)
def x1(self): return self.value(GC_X)
def y1(self): return self.value(GC_Y)
def z1(self): return self.value(GC_Z)
def x2(self): return self.value(GC_X+1)
def y2(self): return self.value(GC_Y+1)
def z2(self): return self.value(GC_Z+1)
# def vector(self): return FreeCAD.Vector(self.x(), self.y(), self.z())
def is_line(self): return True
class DXFSpline(DXFEntity):
def __init__(self, et='VERTEX'):
DXFEntity.__init__(self, et)
def flag(self): return self.value(70)
def is_spline(self): return True
def is_closed(self): return (self.value(70)<<1)
def is_periodic(self): return (self.value(70)<<2)
def is_rational(self): return (self.value(70)<<4)
def is_planar(self): return (self.value(70)<<8)
def is_linear(self): return (self.value(70)&16) > 0
def to_polygon(self):
import FreeCAD, Part
poly = []
for i in np.arange(len(self.value(GC_X))):
poly.append(FreeCAD.Vector(self.value(GC_X)[i],self.value(GC_Y)[i],self.value(GC_Z)[i]))
poly.pop(0)
print poly
try:
if (poly > 2):
print poly
return Part.makePolygon(poly)
elif (poly == 2):
return Part.LineSegment(poly)
else:
return None
except Part.OCCError:
return None
def dublette(dxffile):
code = int(dxffile.readline())
value = dxffile.readline().strip()
if (code == GC_ENTITY_TYPE):
value.upper()
elif code in GC_INT16:
value = np.int16(value)
elif code in GC_INT32:
value = np.int32(value)
elif code in GC_DOUBLE:
value = np.float64(value)
return [code, value]
def prase(filename):
entries = { 'POLYLINE': 0, 'VERTEX': 0, 'LINE': 0, 'SPLINE': 0 }
result = []
dxffile = open(filename,'r')
while True:
code, value = dublette(dxffile)
if (value=='EOF'): break
elif (value=='SECTION'):
code, value = dublette(dxffile)
if (value=='ENTITIES'):
polyline = None
code, value = dublette(dxffile)
while not (value=='ENDSEC'):
if (code==GC_ENTITY_TYPE):
support = 0
if (value=='POLYLINE'):
polyline = DXFPolyline()
result.append(polyline)
support = 1
elif (value=='VERTEX'):
if polyline:
result.append(DXFVertex())
polyline.add_vertex(result[-1])
support = 1
elif (value=='SEQEND'):
if polyline:
polyline = None
elif (value=='LINE'):
result.append(DXFLine())
support = 1
elif (value=='SPLINE'):
result.append(DXFSpline())
support = 2
if support>0:
entries[value] += 1
else:
if (support==1):
result[-1].set(code, value)
elif (support==2):
if code in [10,20,30,40]:
result[-1].set_list(code, value)
else:
result[-1].set(code, value)
code, value = dublette(dxffile)
dxffile.close()
return [entries, result]
Code: Select all
entries, result = prase('Dateiname.dxf')
Code: Select all
>>> entries
{'VERTEX': 0, 'LINE': 5331, 'POLYLINE': 0, 'SPLINE': 0}
4. Linien erstellen
Code: Select all
import Part
grp = []
for ln in result:
grp.append(Part.LineSegment(FreeCAD.Vector(ln.x1(),ln.y1(),ln.z1()), FreeCAD.Vector(ln.x2(),ln.y2(),ln.z2())))
s = Part.Shape(grp)
Part.show(s)
Gruß
Benjamin
- Attachments
-
- Import.FCStd
- (236.78 KiB) Downloaded 47 times
-
- import.jpg (105.35 KiB) Viewed 2148 times