Skip to content

Instantly share code, notes, and snippets.

@magwas
Last active November 15, 2020 09:18
Show Gist options
  • Save magwas/7f22da6ed9c88821af7fe3e244aaa5ca to your computer and use it in GitHub Desktop.
Save magwas/7f22da6ed9c88821af7fe3e244aaa5ca to your computer and use it in GitHub Desktop.
Read a fef file to FreeCAD
import Draft
import FreeCAD
def pointToCoords(point):
x=float(point[0])*1000
y=float(point[1])*1000
z=float(point[2])*1000
return (x,y,z)
def fefread(feffile):
f=open(feffile)
projname=f.readline().strip()
designer=f.readline().strip()
createdby=f.readline().strip()
comment=f.readline().strip()
(length,beam,draft,waterdensity,appendagecoeff,units,mainparticular,precision)=f.readline().strip().split(' ')
numlayers=int(f.readline().strip())
layers=[]
for i in range(numlayers):
name=f.readline()
data=f.readline()
layers.append((name,data))
numpoints=int(f.readline().strip())
points=[]
for i in range(numpoints):
data=f.readline()
#x,y,z,vertextype,selected
points.append(data.strip().split(' '))
numedges=int(f.readline().strip())
edges=[]
for i in range(numedges):
data=f.readline()
start,end,crease,selected=data.strip().split(' ')
start=points[int(start)]
end=points[int(end)]
print(start)
line = Draft.makeWire(
[
FreeCAD.Vector(pointToCoords(start)),
FreeCAD.Vector(pointToCoords(end)),
],
closed=False,face=True,support=None)
Draft.autogroup(line)
f.close()
fefread("/home/mag/Downloads/New model.fef")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment