I just mean: take only the modeling/data exchange parts of pythonOCC, serialize meshes and then render them with a powerful c++ rendering library (for instance vtk or coin3d).
If ever it's not possible, and you absolutely need the GUI to be launched from the python script, you can perhaps create a python script from your C++ app and laucnh it from a C++ pipe rather than embedding python into C++. Thomas 2011/6/21 Csanády István <istvancsan...@gmail.com> > I am trying to integrate the pyocc with a native C++ application. What do > you mean by "getting out the visualization part out of the subprocesses"? > Hardcoding the library path? If I won't be able to manage this problem, I > will do that. > > On Tue, Jun 21, 2011 at 4:01 PM, Thomas Paviot <tpav...@gmail.com> wrote: > >> Hi Istvan, >> >> Don't know what you're trying to do, but it looks like something >> complicated. Get the visualization part out of the subprocesses and I guess >> it will be better. >> >> THomas >> >> >> 2011/6/21 Csanády István <istvancsan...@gmail.com> >> >>> The problem is caused by this bug: http://bugs.python.org/issue9867 I've >>> been trying to make a workaround, but unfortunately there are many other >>> process calls in the Xlib library, which are suffering from the same >>> issue.... Though I don't understand why aren't these exceptions raised when >>> I run a simple python code. Here is an example: >>> >>> #include <Python/Python.h> >>> >>> //#include <string> >>> >>> >>> int main (int argc, const char * argv[]) >>> >>> { >>> >>> >>> Py_Initialize(); >>> >>> PyRun_SimpleString("import sys;from OCC import V3d;import >>> subprocess;import time;)"); >>> >>> printf("%s\n",Py_GetPath()); >>> >>> >>> >>> //PyRun_AnyFile(fopen("/Users/istvancsanady/Documents/workspace/butterfly/__main__.py", >>> "r"), NULL); >>> >>> PyRun_SimpleString("v3d_module_library = >>> sys.modules['OCC._V3d'].__file__;p1 = >>> subprocess.Popen(['otool','-L','%s'%v3d_module_library],stdout=subprocess.PIPE);time.sleep(1);p2 >>> = >>> subprocess.Popen(['grep','-i','libTkOpenGl'],stdin=p1.stdout,stdout=subprocess.PIPE);time.sleep(1);output >>> = p2.communicate()[0]"); >>> >>> pause(); >>> >>> return 0; >>> >>> } >>> >>> >>> And the exception: >>> >>> >>> *Traceback (most recent call last):* >>> >>> * File "<string>", line 1, in <module>* >>> >>> * File >>> "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/subprocess.py", >>> line 595, in __init__* >>> >>> * errread, errwrite)* >>> >>> * File >>> "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/subprocess.py", >>> line 1101, in _execute_child* >>> >>> * data = os.read(errpipe_read, 1048576) # Exceptions limited to 1 MB* >>> >>> *OSError: [Errno 4] Interrupted system call* >>> >>> * >>> * >>> >>> *Fortunately I can hardcode the linked libraries if I want to distribute >>> an app with pyocc, however this bug is a pain in my ass, because I can't >>> eliminate all process calls in the Xlib... * >>> >>> *Python version: 2.6* >>> >>> *Mac OS X 10.6.7* >>> >>> * >>> * >>> >>> *István* >>> >>> * >>> * >>> >>> On Mon, Jun 20, 2011 at 5:42 PM, Thomas Paviot <tpav...@gmail.com> >>> wrote: >>> > 2011/6/20 Csanády István <istvancsan...@gmail.com> >>> >> >>> >> Hi All! >>> >> I am trying to use pyocc from C++, with the embedded python api. If I >>> >> run the app from XCode, I got the following errors when initializing >>> >> SimpleGUI: >>> >> Traceback (most recent call last): >>> >> File "???", line 7, in <module> >>> >> File >>> "/Users/istvancsanady/Documents/workspace/butterfly/src/pool.py", >>> >> line 12, in <module> >>> >> display, start_display, add_menu, add_function_to_menu = >>> >> init_display() >>> >> File "/Library/Python/2.6/site-packages/OCC/Display/SimpleGui.py", >>> >> line 173, in init_display >>> >> from XDisplay import XOCCWindow >>> >> File "/Library/Python/2.6/site-packages/OCC/Display/XDisplay.py", >>> >> line 28, in <module> >>> >> import OCCViewer >>> >> File "/Library/Python/2.6/site-packages/OCC/Display/OCCViewer.py", >>> >> line 77, in <module> >>> >> set_CSF_GraphicShr() >>> >> File "/Library/Python/2.6/site-packages/OCC/Display/OCCViewer.py", >>> >> line 62, in set_CSF_GraphicShr >>> >> p2 = >>> >> >>> subprocess.Popen(['grep','-i','libTkOpenGl'],stdin=p1.stdout,stdout=subprocess.PIPE) >>> >> File >>> >> >>> "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/subprocess.py", >>> >> line 595, in __init__ >>> >> errread, errwrite) >>> >> File >>> >> >>> "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/subprocess.py", >>> >> line 1101, in _execute_child >>> >> data = os.read(errpipe_read, 1048576) # Exceptions limited to 1 MB >>> >> OSError: [Errno 4] Interrupted system call >>> >> Or the other one: >>> >> Traceback (most recent call last): >>> >> File "???", line 7, in <module> >>> >> File >>> "/Users/istvancsanady/Documents/workspace/butterfly/src/pool.py", >>> >> line 12, in <module> >>> >> display, start_display, add_menu, add_function_to_menu = >>> >> init_display() >>> >> File "/Library/Python/2.6/site-packages/OCC/Display/SimpleGui.py", >>> >> line 174, in init_display >>> >> win = XOCCWindow(display_xlib.Display(),"pythonOCC-%s 3d viewer >>> >> ('python-xlib' backend)"%VERSION) >>> >> File "/Library/Python/2.6/site-packages/Xlib/display.py", line 83, >>> in >>> >> __init__ >>> >> self.display = _BaseDisplay(display) >>> >> File "/Library/Python/2.6/site-packages/Xlib/display.py", line 65, >>> in >>> >> __init__ >>> >> apply(protocol.display.Display.__init__, (self, ) + args, keys) >>> >> File "/Library/Python/2.6/site-packages/Xlib/protocol/display.py", >>> >> line 44, in __init__ >>> >> name, host, displayno, screenno = connect.get_display(display) >>> >> File "/Library/Python/2.6/site-packages/Xlib/support/connect.py", >>> >> line 64, in get_display >>> >> mod = __import__(modname, globals()) >>> >> File >>> "/Library/Python/2.6/site-packages/Xlib/support/unix_connect.py", >>> >> line 43, in <module> >>> >> uname = platform.uname() >>> >> File >>> >> >>> "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/platform.py", >>> >> line 1194, in uname >>> >> processor = _syscmd_uname('-p','') >>> >> File >>> >> >>> "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/platform.py", >>> >> line 950, in _syscmd_uname >>> >> output = string.strip(f.read()) >>> >> IOError: [Errno 4] Interrupted system call >>> >> >>> >> And another one: >>> >> >>> >> Traceback (most recent call last): >>> >> File "???", line 7, in <module> >>> >> File >>> "/Users/istvancsanady/Documents/workspace/butterfly/src/pool.py", >>> >> line 12, in <module> >>> >> display, start_display, add_menu, add_function_to_menu = >>> init_display() >>> >> File "/Library/Python/2.6/site-packages/OCC/Display/SimpleGui.py", >>> >> line 174, in init_display >>> >> win = XOCCWindow(display_xlib.Display(),"pythonOCC-%s 3d viewer >>> >> ('python-xlib' backend)"%VERSION) >>> >> File "/Library/Python/2.6/site-packages/Xlib/display.py", line 83, in >>> >> __init__ >>> >> self.display = _BaseDisplay(display) >>> >> File "/Library/Python/2.6/site-packages/Xlib/display.py", line 65, in >>> >> __init__ >>> >> apply(protocol.display.Display.__init__, (self, ) + args, keys) >>> >> File "/Library/Python/2.6/site-packages/Xlib/protocol/display.py", >>> >> line 44, in __init__ >>> >> name, host, displayno, screenno = connect.get_display(display) >>> >> File "/Library/Python/2.6/site-packages/Xlib/support/connect.py", >>> >> line 64, in get_display >>> >> mod = __import__(modname, globals()) >>> >> File >>> "/Library/Python/2.6/site-packages/Xlib/support/unix_connect.py", >>> >> line 43, in <module> >>> >> uname = platform.uname() >>> >> File >>> >> >>> "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/platform.py", >>> >> line 1194, in uname >>> >> processor = _syscmd_uname('-p','') >>> >> File >>> >> >>> "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/platform.py", >>> >> line 950, in _syscmd_uname >>> >> output = string.strip(f.read()) >>> >> IOError: [Errno 4] Interrupted system call >>> >> >>> >> >>> >> >>> >> And the strangest thing: sometimes IT WORKS! If I start the app from >>> >> Terminal or Finder, everything works always fine... Any ideas? >>> >> >>> >> István >>> > >>> > Hi, >>> > >>> > Reading the trace, I have the feeling you're trying to use >>> multithreading or >>> > multiprocessing. It's a bad idea to call a GUI from a specific thread >>> (the >>> > GUI mainloop generally conflicts with the subthread). >>> > >>> > I can't help you further without any information about the code you're >>> > running. >>> > >>> > Thomas >>> > >>> > >>> > _______________________________________________ >>> > Pythonocc-users mailing list >>> > Pythonocc-users@gna.org >>> > https://mail.gna.org/listinfo/pythonocc-users >>> > >>> > >>> >>> >>> _______________________________________________ >>> Pythonocc-users mailing list >>> Pythonocc-users@gna.org >>> https://mail.gna.org/listinfo/pythonocc-users >>> >>> >> >> _______________________________________________ >> Pythonocc-users mailing list >> Pythonocc-users@gna.org >> https://mail.gna.org/listinfo/pythonocc-users >> >> > > _______________________________________________ > Pythonocc-users mailing list > Pythonocc-users@gna.org > https://mail.gna.org/listinfo/pythonocc-users > >
_______________________________________________ Pythonocc-users mailing list Pythonocc-users@gna.org https://mail.gna.org/listinfo/pythonocc-users