import random
import os
import os.path
import sys
from OCC.STEPControl import STEPControl_Reader
from OCC.IFSelect import IFSelect_RetDone, IFSelect_ItemsByEntity
sys.path.append('..')
from core_topology_traverse import Topo
from OCC.Display.WebGl.jupyter_renderer import JupyterRenderer, format_color
def read_step_file(filename):
""" read the STEP file and returns a compound
"""
step_reader = STEPControl_Reader()
status = step_reader.ReadFile(filename)
if status == IFSelect_RetDone: # check status
failsonly = False
step_reader.PrintCheckLoad(failsonly, IFSelect_ItemsByEntity)
step_reader.PrintCheckTransfer(failsonly, IFSelect_ItemsByEntity)
ok = step_reader.TransferRoot(1)
_nbs = step_reader.NbShapes()
aResShape = step_reader.Shape(1)
else:
print("Error: can't read file.")
sys.exit(0)
return aResShape
shp = read_step_file(os.path.join('..', 'models', 'RC_Buggy_2_front_suspension.stp')) # this is a compound
my_renderer = JupyterRenderer(size=(700, 700))
my_renderer.Display()
# loop over subshapes so that each subshape is meshed/displayed
t = Topo(shp)
from random import randint
for solid in t.solids():
random_color = format_color(randint(0,255), randint(0,255), randint(0,255))
my_renderer.DisplayShape(solid, shape_color=random_color)