further work on ifcopenshell integration

This commit is contained in:
Yorik van Havre
2012-01-06 18:39:17 -02:00
parent 02464cf2a9
commit f8bbbb1513
4 changed files with 271 additions and 157 deletions

View File

@@ -36,7 +36,12 @@ def open(filename):
doc = FreeCAD.newDocument(docname)
doc.Label = decode(docname)
FreeCAD.ActiveDocument = doc
read(filename)
p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Arch")
p = p.GetBool("useIfcOpenShell")
if p:
readOpenShell(filename)
else:
read(filename)
return doc
def decode(name):
@@ -78,10 +83,39 @@ def getIfcOpenShell():
print "Couldn't import IfcOpenShell"
def readOpenShell(filename):
import Mesh
getIfcOpenShell()
if IfcOpenShell:
IfcOpenShell.Init(filename)
return IfcOpenShell.Get()
while True:
obj = IfcOpenShell.Get()
print "parsing ",obj.guid,": ",obj.name," of type ",obj.type
meshdata = []
n = obj.name
if not n: n = "Unnamed"
f = obj.mesh.faces
v = obj.mesh.verts
m = obj.matrix
print "verts: ",len(v)," faces: ",len(f)
mat = FreeCAD.Matrix(m[0], m[1], m[2], 0,
m[3], m[4], m[5], 0,
m[6], m[7], m[8], 0,
m[9], m[10], m[11], 1)
for i in range(0, len(f), 3):
print "face ",f[i],f[i+1],f[i+2]
face = []
print "i:",i
for j in range(3):
vi = f[i+j]*3
print "vi:",vi
face.append([v[vi],v[vi+1],v[vi+2]])
meshdata.append(face)
newmesh = Mesh.Mesh(meshdata)
mobj = FreeCAD.ActiveDocument.addObject("Mesh::Feature",n)
mobj.Mesh = newmesh
mobj.Placement = FreeCAD.Placement(mat)
if not IfcOpenShell.Next():
break
return None
def read(filename):