Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from __future__ import print_function, unicode_literals
- import argparse
- import os
- import uuid
- try:
- import salome
- from salome.geom import geomBuilder
- from salome.smesh import smeshBuilder
- except ImportError:
- raise ImportError("SALOME import failed. Are you running inside salome?")
- IGES_IGNORE_UNITS = False
- def main(args):
- salome.salome_init()
- geom = geomBuilder.New(salome.myStudy)
- smesh = smeshBuilder.New(salome.myStudy)
- root_shape = geom.ImportIGES(args.input, IGES_IGNORE_UNITS)
- faces = geom.ExtractShapes(root_shape, geom.ShapeType["FACE"])
- print ("Number of extracted faces: {}".format(len(faces)))
- face_list = {}
- for face in faces:
- point_list = []
- for point in geom.ExtractShapes(face, geom.ShapeType["VERTEX"], isSorted=False):
- coords = geom.PointCoordinates(point)
- point_list.append(coords)
- face_name = str(uuid.uuid4())
- face_list[face_name] = point_list
- with open(args.output, "w") as f:
- f.write('<X3D version="3.2" profile="CADInterchange" xmlns="">\n')
- f.write(' <Scene>\n')
- f.write(' <CADPart name="{}">\n'.format(args.input))
- for face_name, point_list in face_list.iteritems():
- f.write(' <CADFace name="{}">\n'.format(face_name))
- f.write(' <Shape containerField="shape">\n')
- f.write(' <Appearance>\n')
- f.write(' <Material diffuseColor="0.8 0.8 0.8"></Material>\n')
- f.write(' </Appearance>\n')
- coord_index = range(len(point_list)) # [0, 1, ... , n]
- coords = [coord for point in point_list for coord in point] # [x1, y1, z1, x2, y2, z2, ...]
- f.write(' <IndexedFaceSet coordIndex="{} -1">\n'.format(
- " ".join(map(str, coord_index))))
- f.write(' <Coordinate point="{}"></Coordinate>\n'.format(
- " ".join(map(str, coords))))
- f.write(' </IndexedFaceSet>\n')
- f.write(' </Shape>\n')
- f.write(' </CADFace>\n')
- f.write(' </CADPart>\n')
- f.write(' </Scene>\n')
- f.write('</X3D>\n')
- print ("Conversion ended. Number of faces: {}. Number of vertices: {}".format(
- len(face_list), ""))
- if __name__ == "__main__":
- parser = argparse.ArgumentParser(prog='prepare-part', description='')
- parser.add_argument("input")
- parser.add_argument("output")
- parser.set_defaults(func=main)
- args = parser.parse_args()
- args.func(args)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement