Giter VIP home page Giter VIP logo

Comments (7)

trelau avatar trelau commented on August 24, 2024

this might be relevant? https://pybind11.readthedocs.io/en/stable/advanced/pycpp/utilities.html#capturing-standard-output-from-ostream

and

https://www.opencascade.com/doc/occt-7.4.0/refman/html/_standard___o_stream_8hxx.html

from pyocct.

frmdstryr avatar frmdstryr commented on August 24, 2024

Thanks for the links, looks like Standard_OStream is just a typedef and pybind has a pythonbuf class for this.

I have two ideas, not sure which is best (or if they'll work):

  1. Change any std::ostream functions to be lambdas that take a pyobject instead of the ostream, then wrap the object in a pythonbuf. This way would allow just using t.DumpJson(some_file_like_obj)
  2. Make Standard_OStream a py::class that creates a pythonbuf, so you have to create a Standard_OStream passing the python file like object, then pass the Standard_OStream to the function.

Any preferences? I can try to make a patch.

from pyocct.

trelau avatar trelau commented on August 24, 2024

hmm....my first thought is 2....i think at the moment Standard_OStream is just skipped in the binder https://github.com/LaughlinResearch/pyOCCT/blob/1c354c2ffb92f5c49d0a4f1c7a26a6483c8b2b9f/binder/config.txt#L118

so, seems like if we just bind Standard_OStream...then we just create one in python and existing functions just work? and it follows the OCCT api. otherwise, #1 seems like a case that will require special logic in the binding generator to handle that type and writing the lambdas. which, we could do, but seems like 2 is worth a shot?

from pyocct.

cfriedland5 avatar cfriedland5 commented on August 24, 2024

In some cases these methods can write to a file so as a workaround I've created a temporary file, used OCCT to write to the file, and then read the file

from pyocct.

ThomasAuzinger avatar ThomasAuzinger commented on August 24, 2024

Did anything happen related to this issue since it was raised? I get similar issues.

from pyocct.

russelmann avatar russelmann commented on August 24, 2024

Seems that this gist provides a smooth and easy to integrate solution to this problem via custom type casting.

from pyocct.

adam-urbanczyk avatar adam-urbanczyk commented on August 24, 2024

I can confirm that the gist was the way to go, though for me it required some modifications: https://github.com/CadQuery/OCP/blob/master/pystreambuf.h

from pyocct.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.