You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm trying to read/open an XDE/OCAF XML file. I've tried already different ways of doing it. First, I've tried to read from the disk a .xml file, using: TDocStd_Application::Open
and in my last attempt I've tried to read from an io.BytesIO() that comes from my C++ code also using TDocStd_Application::Open.
Bellow my code:
def read_ocaf_file():
output_stream = io.BytesIO()
# Save the document contents to the provided output stream
success = open_ocaf_file(output_stream) # C++ binded fuction that returns a stream containing the data of the TDocStd_Document
if success:
# prepare a doc
app = XCAFApp_Application.GetApplication_s()
doc = TDocStd_Document(TCollection_ExtendedString("XmlXCAF"))
app.InitDocument(doc)
#app = XCAFApp_Application.GetApplication_s()
tool = XCAFDoc_DocumentTool.ShapeTool_s(doc.Main())
tool.SetAutoNaming_s(False)
ctool = XCAFDoc_DocumentTool.ColorTool_s(doc.Main())
store = XmlXCAFDrivers_DocumentStorageDriver(
TCollection_ExtendedString("Copyright: Open Cascade, 2001-2002")
)
ret = XmlXCAFDrivers_DocumentRetrievalDriver()
app.DefineFormat(
TCollection_AsciiString("XmlXCAF"),
TCollection_AsciiString("Xml XCAF Document"),
TCollection_AsciiString("xml"),
ret,
store,
)
#doc.UnsetIsReadOnly()
status = app.Open(io.BytesIO(output_stream.getvalue()), doc)
assert status == PCDM_StoreStatus.PCDM_SS_OK
else:
print("Failed to save the document.")
labels = TDF_LabelSequence()
tool.GetFreeShapes(labels)
shapes = []
for i in range(1, labels.Length() + 1):
label = labels.Value(i)
shape = self.shape_tool.GetShape_s(label)
shapes.append(shape)
app.Close(doc)
Although, at the end the app.Open returns PCDM_StoreStatus.PCDM_SS_OK when I try to get data from the doc is like it's empty, If I try to do for example: app.Close(doc), I get this following error:
app.Close(doc)
OCP.Standard.Standard_Failure: cannot close a document that has not been opened
Does anyone have experience on working with OCAF/XDE files and has experienced similar difficulties with TDocStd_Document?
Any insights or examples on this matter would be highly appreciated!
Thank you very much for the attention
The text was updated successfully, but these errors were encountered:
I'm trying to read/open an XDE/OCAF XML file. I've tried already different ways of doing it. First, I've tried to read from the disk a .xml file, using:
TDocStd_Application::Open
and in my last attempt I've tried to read from an io.BytesIO() that comes from my C++ code also using TDocStd_Application::Open.
Bellow my code:
Although, at the end the app.Open returns PCDM_StoreStatus.PCDM_SS_OK when I try to get data from the doc is like it's empty, If I try to do for example: app.Close(doc), I get this following error:
Does anyone have experience on working with OCAF/XDE files and has experienced similar difficulties with TDocStd_Document?
Any insights or examples on this matter would be highly appreciated!
Thank you very much for the attention
The text was updated successfully, but these errors were encountered: