master
John Lauer LED colour pass: coloured STEP is the default (lens colour from the datasheet dominant wavelength, softened), plain STE… c7192f0 20d ago
import sys
from OCP.STEPCAFControl import STEPCAFControl_Reader
from OCP.TDocStd import TDocStd_Document
from OCP.TCollection import TCollection_ExtendedString
from OCP.XCAFDoc import XCAFDoc_DocumentTool
from OCP.TDF import TDF_ChildIterator
from OCP.TDataStd import TDataStd_Name
from OCP.GProp import GProp_GProps
from OCP.BRepGProp import BRepGProp
from OCP.TopExp import TopExp_Explorer
from OCP.TopAbs import TopAbs_FACE
def info(p):
    doc = TDocStd_Document(TCollection_ExtendedString("d")); r = STEPCAFControl_Reader(); r.SetColorMode(True); r.SetNameMode(True); r.ReadFile(p); r.Transfer(doc)
    st = XCAFDoc_DocumentTool.ShapeTool_s(doc.Main()); it = TDF_ChildIterator(st.Label(), False); out=[]
    while it.More():
        l = it.Value(); it.Next()
        if st.IsFree_s(l) and st.IsTopLevel(l):
            s = st.GetShape_s(l); g = GProp_GProps(); BRepGProp.VolumeProperties_s(s, g); nm = TDataStd_Name()
            n = nm.Get().ToExtString() if l.FindAttribute(TDataStd_Name.GetID_s(), nm) else ''
            ex = TopExp_Explorer(s, TopAbs_FACE); nf = 0
            while ex.More(): nf += 1; ex.Next()
            c = g.CentreOfMass(); out.append((n, nf, round(g.Mass(), 6), (round(c.X(),5), round(c.Y(),5), round(c.Z(),5))))
    return out
a, b = info(sys.argv[1]), info(sys.argv[2])
print('SAME' if a == b else 'DIFF', a, b)