Working with TDocStd_Document: Empty document when trying to use TDocStd_Application::Open wrapped by OCP
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
Línea de trabajo
Comienza con la llamada a TDocStd_Application::Open, el binding open_ocaf_file y el fallo posterior de app.Close(doc) descrito en el issue. Comprueba cómo se gestionan la entrada BytesIO y el estado devuelto; después, verifica que el documento abierto expone formas libres mediante GetFreeShapes y que puede cerrarse correctamente.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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
- Lenguaje dominante
- C++
- Estrellas
- 203
- Forks
- 50
- Merge medio
- 3 d 4 h
- PR fusionados (30 d)
- 1
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de CadQuery/OCP
-
Generation steps fails when OPENGL_INCLUDE_DIRS is a listPosiblemente ocupada @adam-urbanczyk la tomó hace 66 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 58/100
-
Python 3.14t buildAbierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
-
OCCT8
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
Todos los issues de CadQuery/OCP
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
objectionary/eo-graphs#80 ·
-
bug C/C++ code
Dificultad 1/5 Menos de una hora Aptitud para principiantes 78/100
webarkit/WebARKitLib#85 ·
Los mantenedores suelen responder en 1 día
-
SD Card Size correctionAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100
-
[request] vsg/1.1.16Abiertoupstream update
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
conan-io/conan-center-index#31142 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100