You can subscribe to this list here.
2010 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(3) |
Jul
|
Aug
|
Sep
|
Oct
(4) |
Nov
(3) |
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2011 |
Jan
(4) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
(3) |
Oct
|
Nov
|
Dec
(3) |
2012 |
Jan
|
Feb
(10) |
Mar
(4) |
Apr
(9) |
May
(14) |
Jun
(16) |
Jul
(1) |
Aug
(12) |
Sep
(4) |
Oct
(24) |
Nov
(8) |
Dec
(3) |
2013 |
Jan
|
Feb
|
Mar
(2) |
Apr
|
May
(1) |
Jun
|
Jul
(2) |
Aug
|
Sep
|
Oct
(4) |
Nov
|
Dec
(5) |
2014 |
Jan
(10) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2015 |
Jan
(7) |
Feb
(2) |
Mar
|
Apr
(2) |
May
(4) |
Jun
(2) |
Jul
(6) |
Aug
|
Sep
|
Oct
(3) |
Nov
|
Dec
|
2016 |
Jan
|
Feb
(2) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(12) |
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
2017 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
From: Werner (GMX) <wer...@gm...> - 2015-07-02 08:49:19
|
Hi, try this: import Mesh mesh=Mesh.createCylinder(2,10) doc=App.newDocument() fea=doc.addObject("Mesh::Feature","Mesh") fea.Mesh=mesh fea.ViewObject.DisplayMode="Wireframe" Cheers, Werner Am 18.06.2015 um 18:26 schrieb Michael Scheerer: > Hello! > I have a question: > I create a mesh and show it with: > meshObject = Mesh.Mesh(self.mesh) > Mesh.show(meshObject) > It is shown as a solid. I want to show it as wirerframe programmatically (via > Python). > Even Mesh.show is not in the API documentation. > How can I set the wirerframe property. Mesh.setProperty .... ? > With much greetings, > Michael Scheerer > > > ------------------------------------------------------------------------------ > > > _______________________________________________ > Free-cad-development mailing list > Fre...@li... > https://lists.sourceforge.net/lists/listinfo/free-cad-development |
From: Michael S. <M_S...@we...> - 2015-06-18 16:26:41
|
<html><head></head><body><div style="font-family: Verdana;font-size: 12.0px;"><div>Hello!</div> <div> </div> <div>I have a question:</div> <div> </div> <div>I create a mesh and show it with:</div> <div> </div> <div>meshObject = Mesh.Mesh(self.mesh)<br/> Mesh.show(meshObject)</div> <div> </div> <div>It is shown as a solid. I want to show it as wirerframe programmatically (via Python).</div> <div>Even <span style="font-family: Verdana; font-size: 12px; line-height: 19.2000007629395px;">Mesh.show is not in the API documentation.</span></div> <div> </div> <div>How can I set the wirerframe property. Mesh.setProperty .... ?</div> <div> </div> <div>With much greetings,</div> <div>Michael Scheerer</div></div></body></html> |
From: Csaba N. <nc...@gm...> - 2015-06-16 22:05:29
|
Hi Werner, This is a continuation of the discussion I started on the general list, about how to make it easier to install free-cad extensions coming as external python modules installed via pip or setup-tools. I cited below the relevant section of my former mail. I actually had a look at the free-cad code, and it is not that hard to add some new options to get FreeCADCmd output the relevant path where modules/macros need to be installed - see attached patch (done against git master branch head). That can be used by external python packages to add the macros/modules at installation time. With that patch applied I can do: > FreeCADCmd --help ... Generic options: -v [ --version ] Prints version string -h [ --help ] Prints help message -c [ --console ] Starts in console mode --response-file arg Can be specified with '@name', too --dump-config Dumps configuration --get-config arg Prints the value of the requested configuration key > FreeCADCmd --dump-config [see command output at the mail end] > FreeCADCmd --get-config UserAppData /home/csaba/.FreeCAD/ > FreeCADCmd --get-config AppHomePath /home/csaba/deploy/freecad/ One can use this then to install the macros/modules of an external module automatically when the python package is installed. The package post-install hook can query the free-cad executable it finds on the path where the macro/modules directory lives, and can use it to copy the needed files there. This is not 100% fool proof, but it will work 99% of the time. I would be happy to get any feedback if it would be interesting for the free-cad project if I create a template python plugin project others can reuse for their own free-cad extensions, to make extensions as easy to install as "pip install extension-name" (or run setup.py). Cheers, Csaba On So, 2015-06-14 at 23:35 +0200, Csaba Nagy wrote: > It's not enough to distribute the macro code, you actually need to make > sure it is on the python path, and the easiest way to achieve that is to > package it in an external (to free-cad) module. > > BTW, is there a cross-platform way to find the free-cad macro directory > at python package installation time ? If the external package could copy > it's macro/module files at installation time in the right directory, > that would make distributing free-cad extensions a lot easier ! > > What about a simple "freecad-config" utility or so, which can be run to > figure out where to put the macros/modules ? That could be used in a > post-installation step when installing with from sources/pip, a la: > > https://github.com/ncsaba/python-brlcad/blob/master/setup.py#L128 > > The python-brlcad code is dynamically searching for a BRL-CAD > installation (which actually has a brlcad-config utility) and wrapping > it using ctypesgen, but the same infrastructure of post-install hooks > could be used to put free-cad extensions in the right macro directory, > in a cross-platform way. Output of "FreeCADCmd --dump-config" on my box: AppDataSkipVendor=true AppHomePath=/home/csaba/deploy/freecad/ BinPath=/home/csaba/deploy/freecad/bin/ BuildRepositoryURL=git://git.code.sf.net/p/free-cad/code master BuildRevision=5096 (Git) BuildRevisionBranch=master BuildRevisionDate=2015/06/13 10:48:21 BuildRevisionHash=d0d98b87751f4e5308916f509b72f14053caa61e BuildVersionMajor=0 BuildVersionMinor=16 CopyrightInfo=(c) Juergen Riegel, Werner Mayer, Yorik van Havre 2001-2015 ##### #### ### #### # # # # # # # ## #### #### # # # # # #### # # # # # # # ##### # # # # #### #### # # # # # # # # # # # # # # ## ## ## # # #### #### ### # # #### ## ## ## Debug=0 DocPath=/home/csaba/deploy/freecad/doc/ ExeName=FreeCAD ExeVendor=FreeCAD ExeVersion=0.16 PythonSearchPath=/usr/lib/python2.7/:/usr/lib/python2.7/plat-i386-linux-gnu:/usr/lib/python2.7/lib-tk:/usr/lib/python2.7/lib-old:/usr/lib/python2.7/lib-dynload RunMode=Exit UserAppData=/home/csaba/.FreeCAD/ UserHomePath=/home/csaba |
From: Michael S. <M_S...@we...> - 2015-05-22 15:13:17
|
<html><head></head><body><div style="font-family: Verdana;font-size: 12.0px;"><div style="font-family: Verdana; font-size: 12px; line-height: normal;">Hello!</div> <div style="font-family: Verdana; font-size: 12px; line-height: normal;"> </div> <div style="font-family: Verdana; font-size: 12px; line-height: normal;">I load a file "test.brep" and then I have to select the shown object in order to enable a Python Module.</div> <div style="font-family: Verdana; font-size: 12px; line-height: normal;"> </div> <div style="font-family: Verdana; font-size: 12px; line-height: normal;">The I want to only get the File name fullpath+test.brep for a Python function.</div> <div style="font-family: Verdana; font-size: 12px; line-height: normal;"> </div> <div style="font-family: Verdana; font-size: 12px; line-height: normal;">All tries with methods via .....FileName contained nothing. See: http://forum.freecadweb.org/viewtopic.php?t=9811</div> <div style="font-family: Verdana; font-size: 12px; line-height: normal;"> <div> </div> <div>Another question: How many work to bring Freecad to SWIG 2.08 would you guess?</div> <div> </div> </div> <div style="font-family: Verdana; font-size: 12px; line-height: normal;"> </div> <div style="font-family: Verdana; font-size: 12px; line-height: normal;">With much greetings!</div> <div style="font-family: Verdana; font-size: 12px; line-height: normal;">Michael Scheerer</div></div></body></html> |
From: Werner (GMX) <wer...@gm...> - 2015-05-19 18:58:09
|
Hi, Am 19.05.2015 um 18:00 schrieb Michael Scheerer: > Hello! > Traceback (most recent call last): > File "<input>", line 1, in <module> > Exception: Cannot find type information for requested type > I thought I had to pass it a shape, is this correct? > > Yes, the problem is that pythonOCC and FreeCAD (i.e. the swig interface file) > are built with different swig versions which are incompatible. Unfortunately SWIG always makes minor or major changes on its internals with every release. For applications/libraries using SWIG you have to make sure to use the same version as otherwise the behaviour is undefined: sometimes it still works, sometimes it doesn't and sometimes it even crashes. But FreeCAD is built to support SWIG-wrapped libraries that use version 1.3.25, 1.3.33, 1.3.36, 1.3.38 or 1.3.40. At runtime it reads in one of the .py files created by SWIG and determines its version information so that it an use the matching wrapper functions. > And? Further? Does it mean, pythonOCC is *not* installed automatically together > with Freecad (at least and also with the correct version). Usually, with FreeCAD we do not install pythonOCC. To be honest, I'm not sure if this is still maintained. > But the methods to get access are there? In case there is no way in getting to run Part.__fromPythonOCC__ or Part.__toPythonOCC__ you have the option to dump your BRep to disk using pythonOCC methods and read-it in with Part.read. > With much greetings! > Michael Scheerer Hope this helps a bit. Cheers, Werner Mayer > > > ------------------------------------------------------------------------------ > One dashboard for servers and applications across Physical-Virtual-Cloud > Widest out-of-the-box monitoring support with 50+ applications > Performance metrics, stats and reports that give you Actionable Insights > Deep dive visibility with transaction tracing using APM Insight. > http://ad.doubleclick.net/ddm/clk/290420510;117567292;y > > > _______________________________________________ > Free-cad-development mailing list > Fre...@li... > https://lists.sourceforge.net/lists/listinfo/free-cad-development |
From: Michael S. <M_S...@we...> - 2015-05-19 16:00:36
|
<html><head></head><body><div style="font-family: Verdana;font-size: 12.0px;"><div> <div style="font-family: Verdana;font-size: 12.0px;line-height: normal;">Hello!</div> <div style="font-family: Verdana;font-size: 12.0px;line-height: normal;"> </div> <div style="font-family: Verdana;font-size: 12.0px;line-height: normal;"> <div> Traceback (most recent call last):<br/> File "<input>", line 1, in <module><br/> Exception: Cannot find type information for requested type<br/> I thought I had to pass it a shape, is this correct?</div> <div> </div> <div>> Yes, the problem is that pythonOCC and FreeCAD (i.e. the swig interface file) are built with different swig versions which are incompatible.</div> <div> </div> <div>And? Further? Does it mean, pythonOCC is *not* installed automatically together with Freecad (at least and also with the correct version).</div> <div>But the methods to get access are there?</div> </div> <div style="font-family: Verdana;font-size: 12.0px;line-height: normal;"> </div> <div style="font-family: Verdana;font-size: 12.0px;line-height: normal;">With much greetings!</div> <div style="font-family: Verdana;font-size: 12.0px;line-height: normal;">Michael Scheerer</div> </div></div></body></html> |
From: Michael S. <M_S...@we...> - 2015-05-04 16:18:17
|
<html><head></head><body><div style="font-family: Verdana;font-size: 12.0px;"><div>Hello!</div> <div> </div> <div>I have written a new Workbench named information. It replaces the Info-Script giving informations like Volume. How can I contribute it?</div> <div>Is there any interest?</div> <div> </div> <div>With much greetings,</div> <div>Michael Scheerer </div></div></body></html> |
From: Werner (GMX) <wer...@gm...> - 2015-04-30 12:12:40
|
Hi Michael, installing a module works exactly the same way on all systems. Am 30.04.2015 um 13:56 schrieb Michael Scheerer: > Hello! > Under Linux it is very easy to install a new Python Module e. g. "Information" > into Freecad. Just copy and paste the "Information" folder into > /urs/lib/freecad/Mod. > Restart Freecad. And a new Workbench is added. > Under Windows7 the same approach doesn't work. I mean copying "Information"into > C:\Program Files\FreeCAD 0.15\Mod and restart Freecad. If your "Information" folder is not picked up by FreeCAD then because of an error. You should check the output window if there is an error message. Additionally, you can start FreeCAD with the option "--write-log" and then check the FreeCAD.log file under %APPDATA%\FreeCAD for errors. Hope this helps! > With much greetings! > Michael Scheerer Cheers, Werner > > > ------------------------------------------------------------------------------ > One dashboard for servers and applications across Physical-Virtual-Cloud > Widest out-of-the-box monitoring support with 50+ applications > Performance metrics, stats and reports that give you Actionable Insights > Deep dive visibility with transaction tracing using APM Insight. > http://ad.doubleclick.net/ddm/clk/290420510;117567292;y > > > _______________________________________________ > Free-cad-development mailing list > Fre...@li... > https://lists.sourceforge.net/lists/listinfo/free-cad-development |
From: Michael S. <M_S...@we...> - 2015-04-30 11:56:53
|
<html><head></head><body><div style="font-family: Verdana;font-size: 12.0px;"><div>Hello!</div> <div> </div> <div>Under Linux it is very easy to install a new Python Module e. g. "Information" into Freecad. Just copy and paste the "Information" folder into /urs/lib/freecad/Mod.</div> <div>Restart Freecad. And a new Workbench is added.</div> <div> </div> <div>Under Windows7 the same approach doesn't work. I mean copying "Information"into C:\Program Files\FreeCAD 0.15\Mod and restart Freecad.</div> <div> </div> <div>With much greetings!</div> <div>Michael Scheerer</div></div></body></html> |
From: Werner (GMX) <wer...@gm...> - 2015-02-27 10:55:27
|
Hi Erik, when using FreeCAD without GUI and saving a FCStd file then this will be saved without the file GuiDocument.xml. And it's this file that contains information about the GUI appearance of objects like visibility, colours and so on. Unfortunately, I don't know of a way to avoid this problem. Cheers, Werner Am 24.02.2015 um 19:31 schrieb Erik Lentz: > Hello, > > While trying to integrate FreeCAD with one of my Python projects, I > experienced an unexpected short circuit between FreeCAD features and their > representations. The issue came up when running a Python script which > alters some geometric features within a pre-existing FreeCAD file. Below is > the offending code > > #-------------------------------# > import FreeCAD > > file = "path\\to\\file.FCStd" > doc = FreeCAD.openDocument(file) > obj = doc.getObjectsByLabel("object_label")[0] > > obj.Height = height > obj.Length = length > obj.Width = width > > doc.recompute() > doc.save() > > import subprocess > > open_cmd = "path\\to\\FreeCAD.exe" + " " + file > subprocess.call(open_cmd, shell=True) > #--------------------------------# > > When FreeCAD is run at the end of this script, all the objects in the file > are seen to be invisible (Visibility=False for each object), regardless of > whether they were altered in the above script of not. This is especially > confusing as the GUI sector of the file was not accessed, and the FreeCAD > module should not allow access to those attributes. How did this crossover > occur? How can it be prevented? Is there a work-around that allows the > representation attributes to be set without running the FreeCAD GUI? > > Thanks in advance for your help, > > Erik Lentz > > OS: Windows 7 Home Premium SP 1 > FreeCAD version: 0.15.4572 x86 > System Python version: 2.7.9 > > > > ------------------------------------------------------------------------------ > Dive into the World of Parallel Programming The Go Parallel Website, sponsored > by Intel and developed in partnership with Slashdot Media, is your hub for all > things parallel software development, from weekly thought leadership blogs to > news, videos, case studies, tutorials and more. Take a look and join the > conversation now. http://goparallel.sourceforge.net/ > > > _______________________________________________ > Free-cad-development mailing list > Fre...@li... > https://lists.sourceforge.net/lists/listinfo/free-cad-development |
From: Erik L. <len...@gm...> - 2015-02-24 18:32:18
|
Hello, While trying to integrate FreeCAD with one of my Python projects, I experienced an unexpected short circuit between FreeCAD features and their representations. The issue came up when running a Python script which alters some geometric features within a pre-existing FreeCAD file. Below is the offending code #-------------------------------# import FreeCAD file = "path\\to\\file.FCStd" doc = FreeCAD.openDocument(file) obj = doc.getObjectsByLabel("object_label")[0] obj.Height = height obj.Length = length obj.Width = width doc.recompute() doc.save() import subprocess open_cmd = "path\\to\\FreeCAD.exe" + " " + file subprocess.call(open_cmd, shell=True) #--------------------------------# When FreeCAD is run at the end of this script, all the objects in the file are seen to be invisible (Visibility=False for each object), regardless of whether they were altered in the above script of not. This is especially confusing as the GUI sector of the file was not accessed, and the FreeCAD module should not allow access to those attributes. How did this crossover occur? How can it be prevented? Is there a work-around that allows the representation attributes to be set without running the FreeCAD GUI? Thanks in advance for your help, Erik Lentz OS: Windows 7 Home Premium SP 1 FreeCAD version: 0.15.4572 x86 System Python version: 2.7.9 |
From: Thierry T. <thierry@FreeBSD.org> - 2015-01-31 17:12:43
|
Hello, Trying to compile freecad on FreeBSD, with clang, it fails with the following error: [ 70%] Building CXX object src/Mod/Robot/App/CMakeFiles/Robot.dir/RobotObject.cpp.o cd /usr/ports/cad/freecad.WIP/work/.build/src/Mod/Robot/App && /usr/local/libexec/ccache/c++ -DEIGEN2_SUPPORT -DHAVE_CONFIG_H -DHAVE_LIMITS_H -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_SVG_LIB -DQT_UITOOLS_LIB -DQT_WEBKIT_LIB -DQT_XML_LIB -DRobot_EXPORTS -D_OCC64 -O2 -pipe -march=corei7 -fstack-protector -fno-strict-aliasing -Wno-deprecated -Wno-write-strings -D_OCC64 -O2 -pipe -march=corei7 -fstack-protector -fno-strict-aliasing -fPIC -I/usr/ports/cad/freecad.WIP/work/.build -isystem /usr/local/include/qt4 -isystem /usr/local/include/qt4/QtOpenGL -isystem /usr/local/include/qt4/QtSvg -isystem /usr/local/include/qt4/QtUiTools -isystem /usr/local/include/qt4/QtWebKit -isystem /usr/local/include/qt4/QtGui -isystem /usr/local/include/qt4/QtXml -isystem /usr/local/include/qt4/QtNetwork -isystem /usr/local/include/qt4/QtCore -I/usr/ports/cad/freecad.WIP/work/.build/src -I/usr/ports/cad/freecad.WIP/work/freecad-20150106/src -I/usr/ports/cad/freecad.WIP/work/.build/src/Mod/Robot/App -I/usr/local/include -I/usr/local/include/OpenCASCADE -I/usr/local/include/eigen3 -I/usr/local/include/python2.7 -o CMakeFiles/Robot.dir/RobotObject.cpp.o -c /usr/ports/cad/freecad.WIP/work/freecad-20150106/src/Mod/Robot/App/RobotObject.cpp In file included from /usr/ports/cad/freecad.WIP/work/freecad-20150106/src/Mod/Robot/App/RobotObject.cpp:29: In file included from /usr/ports/cad/freecad.WIP/work/freecad-20150106/src/Mod/Robot/App/RobotObject.h:27: In file included from /usr/ports/cad/freecad.WIP/work/freecad-20150106/src/App/GeoFeature.h:27: In file included from /usr/ports/cad/freecad.WIP/work/freecad-20150106/src/App/DocumentObject.h:30: In file included from /usr/ports/cad/freecad.WIP/work/freecad-20150106/src/Base/TimeInfo.h:31: /usr/include/sys/timeb.h:42:2: warning: "this file includes <sys/timeb.h> which is deprecated" [-W#warnings] #warning "this file includes <sys/timeb.h> which is deprecated" ^ In file included from /usr/ports/cad/freecad.WIP/work/freecad-20150106/src/Mod/Robot/App/RobotObject.cpp:29: In file included from /usr/ports/cad/freecad.WIP/work/freecad-20150106/src/Mod/Robot/App/RobotObject.h:32: In file included from /usr/ports/cad/freecad.WIP/work/freecad-20150106/src/Mod/Robot/App/Robot6Axis.h:27: In file included from /usr/ports/cad/freecad.WIP/work/freecad-20150106/src/Mod/Robot/App/kdl_cp/chain.hpp:25: In file included from /usr/ports/cad/freecad.WIP/work/freecad-20150106/src/Mod/Robot/App/kdl_cp/segment.hpp:26: /usr/ports/cad/freecad.WIP/work/freecad-20150106/src/Mod/Robot/App/kdl_cp/frames.hpp:247:25: error: friend declaration specifying a default argument must be a definition inline friend bool Equal(const Vector& a,const Vector& b,double eps=epsilon); Strangely, this is a tarball from 20150106, and this error has been previously fixed: see <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=755305> with an attached patch, freecad.diff, reportedly applied in 0.14.3702+dfsg-2. Could you please reapply this patch? Thanks. -- Th. Thomas. |
From: Werner (GMX) <wer...@gm...> - 2015-01-18 10:43:18
|
Hi all, Am 18.01.2015 um 06:25 schrieb Richard Houser: >> I assume then you have a 6 core machine? More than 2 threads per core > won't likely get you much and may actually be slower... > > Two of my machines have 8 cores, the other has 4 cores plus > hyper-threading. I usually try to shoot for about 1.0-1.5/threads per > hardware thread to keep from getting I/O starved, depending on architecture > (Intel w/ hyperthreading = 1.0, AMD - 1.5, etc.). > >> cmake handles multiple threads just fine but it's where you put the > option that you might be getting confused. Cmake only creates the build > scrips and defaults to makefiles on *nix systems so you would just add the > option to make... > > Yup, that's exactly what happened. Before I managed to patch the autoconf > stuff, I accidentally commented out the %make in the build section. I got > mixed up and thought %cmake was doing the build itself, but it was falling > through to the make install. Compilation should be happening in %make, not > %makeinstall, so the later didn't seem to run in parallel. Note, support for autotools has been dropped for a couple of years and recently we removed all Makefile.am's , configure.ac and other autotools related files from the source repository. > > Things are building SOOOOO much faster now. Thanks! > >>> This is what my build section currently looks like: >>> ./autogen.sh >> No point is mixing autotools and cmake... > I found that cmake is internally calling configure, which doesn't yet > exist. You mean the autotools configure script? No, cmake doesn't share anything with autotools. It is completely independent and has its own macros to detect libraries on a system. cmake is supposed to work like this: 1. You usually make a separate build directory outside the source tree 2. From within this build directory you run cmake with the desired arguments and pass the (absolute or relative) path to the source tree to the top-level CMakeLists.txt file. 3. Run make with the desired arguments Regards, Werner > So, cmake won't work until I first call autogen.sh. I also tried > calling configure directly (without cmake), but didn't get anywhere with > that. From what I saw, it wasn't supported. > > >>> %cmake --parallel \ >> You can use cmake to pass commands to the build scripts, like you have > above, but I never you them nor have I seen anyone else in all the packages > I maintain and comaintain for Fedora... > > I found references to that --parallel flag elsewhere, but it didn't seem to > have any effect. I'm removing it. > > > On Sat, Jan 17, 2015 at 10:07 PM, Richard Shaw <hob...@gm...> wrote: > >> On Sat, Jan 17, 2015 at 7:07 PM, Richard Houser <ri...@di...> >> wrote: >> >>> What would really help here is parallel builds, so I can have 12 threads >>> or so working on the job. With gmake, etc. it's as simple as make -j X, >>> but I haven't been find the equivalent for the cmake system in use. Is >>> there a simple way to do this in cmake? >>> >>> As near as I can tell, the autotool build method is unsupported for the >>> FreeCAD project, but many parts of the chain appear to still be in use >>> under the covers. If cmake can't support parallel builds directly, is >>> there a way to decouple the configuration and build portions, so I could >>> use cmake to set up all the configuration and gmake to run the build in >>> parallel and then the install? >>> >> >> I assume then you have a 6 core machine? More than 2 threads per core >> won't likely get you much and may actually be slower... >> >> cmake handles multiple threads just fine but it's where you put the option >> that you might be getting confused. Cmake only creates the build scrips and >> defaults to makefiles on *nix systems so you would just add the option to >> make... >> >> >> >>> This is what my build section currently looks like: >>> >>> ./autogen.sh >>> >> No point is mixing autotools and cmake... >> >> >> >>> %cmake --parallel \ >>> >> You can use cmake to pass commands to the build scripts, like you have >> above, but I never you them nor have I seen anyone else in all the packages >> I maintain and comaintain for Fedora... >> >> >> >>> -DCMAKE_INSTALL_PREFIX=%{_libdir}/%{name} \ >>> -DCMAKE_INSTALL_DATADIR=%{_datadir}/%{name} \ >>> -DCMAKE_INSTALL_DOCDIR=%{_docdir}/%{name} \ >>> -DCMAKE_INSTALL_INCLUDEDIR=%{_includedir} \ >>> -DRESOURCEDIR=%{_libdir}/%{name} \ >>> -DDOCDIR=%{_docdir}/%{name} \ >>> -DUSE_OCC=TRUE \ >>> -DOCC_INCLUDE_DIR=/usr/include/opencascade \ >>> -DOCC_INCLUDE_PATH=/usr/include/opencascade \ >>> -DSMESH_INCLUDE_DIR=%{_includedir} \ >>> -DFREECAD_USE_EXTERNAL_ZIPIOS=TRUE \ >>> -DFREECAD_USE_EXTERNAL_PIVY=TRUE \ >>> ../ >>> >>> And the install section: >>> >>> pushd build >>> %makeinstall_std >>> popd >>> #plus a bunch of various other stuff not directly related to the build >>> >> Here's where you need to do it. I'm not sure what %makeinstall_std expands >> to on your system but I presume that you could add "-j12" on the end of it. >> >> Also, the forums are a good place for questions. I had actually completely >> forgotten that this mailing list exists and that I was subscribed, which >> tells you how often it's used. >> >> Thanks, >> Richard >> >> >> ------------------------------------------------------------------------------ >> New Year. New Location. New Benefits. New Data Center in Ashburn, VA. >> GigeNET is offering a free month of service with a new server in Ashburn. >> Choose from 2 high performing configs, both with 100TB of bandwidth. >> Higher redundancy.Lower latency.Increased capacity.Completely compliant. >> http://p.sf.net/sfu/gigenet >> _______________________________________________ >> Free-cad-development mailing list >> Fre...@li... >> https://lists.sourceforge.net/lists/listinfo/free-cad-development >> >> > > > ------------------------------------------------------------------------------ > New Year. New Location. New Benefits. New Data Center in Ashburn, VA. > GigeNET is offering a free month of service with a new server in Ashburn. > Choose from 2 high performing configs, both with 100TB of bandwidth. > Higher redundancy.Lower latency.Increased capacity.Completely compliant. > http://p.sf.net/sfu/gigenet > > > _______________________________________________ > Free-cad-development mailing list > Fre...@li... > https://lists.sourceforge.net/lists/listinfo/free-cad-development |
From: Richard H. <ri...@di...> - 2015-01-18 05:25:46
|
> I assume then you have a 6 core machine? More than 2 threads per core won't likely get you much and may actually be slower... Two of my machines have 8 cores, the other has 4 cores plus hyper-threading. I usually try to shoot for about 1.0-1.5/threads per hardware thread to keep from getting I/O starved, depending on architecture (Intel w/ hyperthreading = 1.0, AMD - 1.5, etc.). > cmake handles multiple threads just fine but it's where you put the option that you might be getting confused. Cmake only creates the build scrips and defaults to makefiles on *nix systems so you would just add the option to make... Yup, that's exactly what happened. Before I managed to patch the autoconf stuff, I accidentally commented out the %make in the build section. I got mixed up and thought %cmake was doing the build itself, but it was falling through to the make install. Compilation should be happening in %make, not %makeinstall, so the later didn't seem to run in parallel. Things are building SOOOOO much faster now. Thanks! >> This is what my build section currently looks like: >> ./autogen.sh > No point is mixing autotools and cmake... I found that cmake is internally calling configure, which doesn't yet exist. So, cmake won't work until I first call autogen.sh. I also tried calling configure directly (without cmake), but didn't get anywhere with that. From what I saw, it wasn't supported. >> %cmake --parallel \ > You can use cmake to pass commands to the build scripts, like you have above, but I never you them nor have I seen anyone else in all the packages I maintain and comaintain for Fedora... I found references to that --parallel flag elsewhere, but it didn't seem to have any effect. I'm removing it. On Sat, Jan 17, 2015 at 10:07 PM, Richard Shaw <hob...@gm...> wrote: > On Sat, Jan 17, 2015 at 7:07 PM, Richard Houser <ri...@di...> > wrote: > >> What would really help here is parallel builds, so I can have 12 threads >> or so working on the job. With gmake, etc. it's as simple as make -j X, >> but I haven't been find the equivalent for the cmake system in use. Is >> there a simple way to do this in cmake? >> > >> As near as I can tell, the autotool build method is unsupported for the >> FreeCAD project, but many parts of the chain appear to still be in use >> under the covers. If cmake can't support parallel builds directly, is >> there a way to decouple the configuration and build portions, so I could >> use cmake to set up all the configuration and gmake to run the build in >> parallel and then the install? >> > > > I assume then you have a 6 core machine? More than 2 threads per core > won't likely get you much and may actually be slower... > > cmake handles multiple threads just fine but it's where you put the option > that you might be getting confused. Cmake only creates the build scrips and > defaults to makefiles on *nix systems so you would just add the option to > make... > > > >> This is what my build section currently looks like: >> >> ./autogen.sh >> > > No point is mixing autotools and cmake... > > > >> %cmake --parallel \ >> > > You can use cmake to pass commands to the build scripts, like you have > above, but I never you them nor have I seen anyone else in all the packages > I maintain and comaintain for Fedora... > > > >> -DCMAKE_INSTALL_PREFIX=%{_libdir}/%{name} \ >> -DCMAKE_INSTALL_DATADIR=%{_datadir}/%{name} \ >> -DCMAKE_INSTALL_DOCDIR=%{_docdir}/%{name} \ >> -DCMAKE_INSTALL_INCLUDEDIR=%{_includedir} \ >> -DRESOURCEDIR=%{_libdir}/%{name} \ >> -DDOCDIR=%{_docdir}/%{name} \ >> -DUSE_OCC=TRUE \ >> -DOCC_INCLUDE_DIR=/usr/include/opencascade \ >> -DOCC_INCLUDE_PATH=/usr/include/opencascade \ >> -DSMESH_INCLUDE_DIR=%{_includedir} \ >> -DFREECAD_USE_EXTERNAL_ZIPIOS=TRUE \ >> -DFREECAD_USE_EXTERNAL_PIVY=TRUE \ >> ../ >> >> And the install section: >> >> pushd build >> %makeinstall_std >> popd >> #plus a bunch of various other stuff not directly related to the build >> > > Here's where you need to do it. I'm not sure what %makeinstall_std expands > to on your system but I presume that you could add "-j12" on the end of it. > > Also, the forums are a good place for questions. I had actually completely > forgotten that this mailing list exists and that I was subscribed, which > tells you how often it's used. > > Thanks, > Richard > > > ------------------------------------------------------------------------------ > New Year. New Location. New Benefits. New Data Center in Ashburn, VA. > GigeNET is offering a free month of service with a new server in Ashburn. > Choose from 2 high performing configs, both with 100TB of bandwidth. > Higher redundancy.Lower latency.Increased capacity.Completely compliant. > http://p.sf.net/sfu/gigenet > _______________________________________________ > Free-cad-development mailing list > Fre...@li... > https://lists.sourceforge.net/lists/listinfo/free-cad-development > > |
From: Richard S. <hob...@gm...> - 2015-01-18 03:07:09
|
On Sat, Jan 17, 2015 at 7:07 PM, Richard Houser <ri...@di...> wrote: > What would really help here is parallel builds, so I can have 12 threads > or so working on the job. With gmake, etc. it's as simple as make -j X, > but I haven't been find the equivalent for the cmake system in use. Is > there a simple way to do this in cmake? > > As near as I can tell, the autotool build method is unsupported for the > FreeCAD project, but many parts of the chain appear to still be in use > under the covers. If cmake can't support parallel builds directly, is > there a way to decouple the configuration and build portions, so I could > use cmake to set up all the configuration and gmake to run the build in > parallel and then the install? > I assume then you have a 6 core machine? More than 2 threads per core won't likely get you much and may actually be slower... cmake handles multiple threads just fine but it's where you put the option that you might be getting confused. Cmake only creates the build scrips and defaults to makefiles on *nix systems so you would just add the option to make... > This is what my build section currently looks like: > > ./autogen.sh > No point is mixing autotools and cmake... > %cmake --parallel \ > You can use cmake to pass commands to the build scripts, like you have above, but I never you them nor have I seen anyone else in all the packages I maintain and comaintain for Fedora... > -DCMAKE_INSTALL_PREFIX=%{_libdir}/%{name} \ > -DCMAKE_INSTALL_DATADIR=%{_datadir}/%{name} \ > -DCMAKE_INSTALL_DOCDIR=%{_docdir}/%{name} \ > -DCMAKE_INSTALL_INCLUDEDIR=%{_includedir} \ > -DRESOURCEDIR=%{_libdir}/%{name} \ > -DDOCDIR=%{_docdir}/%{name} \ > -DUSE_OCC=TRUE \ > -DOCC_INCLUDE_DIR=/usr/include/opencascade \ > -DOCC_INCLUDE_PATH=/usr/include/opencascade \ > -DSMESH_INCLUDE_DIR=%{_includedir} \ > -DFREECAD_USE_EXTERNAL_ZIPIOS=TRUE \ > -DFREECAD_USE_EXTERNAL_PIVY=TRUE \ > ../ > > And the install section: > > pushd build > %makeinstall_std > popd > #plus a bunch of various other stuff not directly related to the build > Here's where you need to do it. I'm not sure what %makeinstall_std expands to on your system but I presume that you could add "-j12" on the end of it. Also, the forums are a good place for questions. I had actually completely forgotten that this mailing list exists and that I was subscribed, which tells you how often it's used. Thanks, Richard |
From: Richard H. <ri...@di...> - 2015-01-18 01:33:13
|
Hello all. I'm a packager for the Mageia distro trying to get FreeCAD imported. I'm currently working on getting 0.14.3256 packaged (huge improvement to the 0.13 file layout, btw), but each build takes forever. It's bad enough on my machine, but I really don't want to tie the official build servers up for the better part of an hour each run. In theory, ccache should help for local builds, but that's not really a viable option for the build server. Additionally, I was running into what looked like a hash collision on 0.13 with another machine. I couldn't build correctly until I turned ccache off. What would really help here is parallel builds, so I can have 12 threads or so working on the job. With gmake, etc. it's as simple as make -j X, but I haven't been find the equivalent for the cmake system in use. Is there a simple way to do this in cmake? As near as I can tell, the autotool build method is unsupported for the FreeCAD project, but many parts of the chain appear to still be in use under the covers. If cmake can't support parallel builds directly, is there a way to decouple the configuration and build portions, so I could use cmake to set up all the configuration and gmake to run the build in parallel and then the install? This is what my build section currently looks like: ./autogen.sh %cmake --parallel \ -DCMAKE_INSTALL_PREFIX=%{_libdir}/%{name} \ -DCMAKE_INSTALL_DATADIR=%{_datadir}/%{name} \ -DCMAKE_INSTALL_DOCDIR=%{_docdir}/%{name} \ -DCMAKE_INSTALL_INCLUDEDIR=%{_includedir} \ -DRESOURCEDIR=%{_libdir}/%{name} \ -DDOCDIR=%{_docdir}/%{name} \ -DUSE_OCC=TRUE \ -DOCC_INCLUDE_DIR=/usr/include/opencascade \ -DOCC_INCLUDE_PATH=/usr/include/opencascade \ -DSMESH_INCLUDE_DIR=%{_includedir} \ -DFREECAD_USE_EXTERNAL_ZIPIOS=TRUE \ -DFREECAD_USE_EXTERNAL_PIVY=TRUE \ ../ And the install section: pushd build %makeinstall_std popd #plus a bunch of various other stuff not directly related to the build ----------------------------------------------------------- Also... I get a lot of these: src/Base/Makefile.am:250: warning: source file '$(ZIPIOS_SRC)/zipoutputstream.cpp' is in a subdirectory, src/Base/Makefile.am:250: but option 'subdir-objects' is disabled Do I need to patch every Makefile.am in the project to add "AUTOMAKE_OPTIONS = subdir-objects", or am I missing something obvious at the top level? Thank you in advance! -Rick |
From: Erik L. <len...@gm...> - 2015-01-12 03:44:25
|
Hello, I am currently trying to use my system's Python installation to run FreeCAD, but have encountered a problem when importing the necessary modules. My project requires that I embed FreeCAD in another program which requires my system's Python distribution to operate. My use of FreeCAD is an important part of a much larger project with looming deadlines, so a quick response would be very much appreciated! It is worth noting that I had none of the below problems when using the internal FreeCAD Python distribution. Possibly pertinent information: OS: Windows 7 FreeCAD version: 0.14 system Python version: 2.7.9 Using the information on the Embedding FreeCAD wiki ( http://www.freecadweb.org/wiki/index.php?title=Embedding_FreeCAD), I first tried, within a command prompt, appending the FreeCAD application's path to my system's Python path and import FreeCAD to the following effect -------------------------------------------------------------------------------------------------------------- >>> sys.path.append("C:\\Program Files (x86)\\FreeCAD 0.14\\bin") >>> import FreeCAD FreeCAD 0.14, Libs: 0.14R3700 (Git) No modules found in C:\Mod Traceback (most recent call last): File "<stdin>", line 1, in <module> SystemError: dynamic module not initialized properly -------------------------------------------------------------------------------------------------------------- Seeing that the module was looking for the Mod directory within the main FreeCAD directory, I tried to help it along a bit by adding other paths to system Python's path. Subsequent interactions went like this: -------------------------------------------------------------------------------------------------------------- >>> import sys >>> sys.path.append("C:\\Program Files (x86)\\FreeCAD 0.14\\bin") >>> sys.path.append("C:\\Program Files (x86)\\FreeCAD 0.14\\Mod") >>> import FreeCAD FreeCAD 0.14, Libs: 0.14R3700 (Git) No modules found in C:\Mod Traceback (most recent call last): File "<stdin>", line 1, in <module> SystemError: dynamic module not initialized properly -------------------------------------------------------------------------------------------------------------- and -------------------------------------------------------------------------------------------------------------- >>> import sys >>> sys.path.append("C:\\Program Files (x86)\\FreeCAD 0.14\\bin") >>> import FreeCAD FreeCAD 0.14, Libs: 0.14R3700 (Git) No modules found in C:\Mod Traceback (most recent call last): File "<stdin>", line 1, in <module> SystemError: dynamic module not initialized properly >>> sys.path.append("C:\Program Files (x86)\FreeCAD 0.14\Mod") >>> import FreeCAD FreeCAD 0.14, Libs: 0.14R3700 (Git) FreeCAD 0.14, Libs: 0.14R3700 (Git) Terminating... This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information. Abnormal program termination... Initialization of FreeCAD failed: While initializing FreeCAD the following exception occurred: 'Break signal occo ured' Please contact the application's support team for more information. Traceback (most recent call last): File "<stdin>", line 1, in <module> SystemError: dynamic module not initialized properly -------------------------------------------------------------------------------------------------------------- Why did the use of single forward slashes in the Mod path produce this error. Is it possible that there are some other paths, either internal to FreeCAD Python or the system Python, that need to be altered? Are there some irreconcilable differences between my system Python and FreeCAD Python that require a more drastic solution? I have been unable to find answers to these questions in either the forum or the archived mailing list. To reiterate my overall goal, I want to interact with FreeCAD from an external program that uses its own Python distribution. Thank you very much for your time and I look forward to hearing from you soon! Erik |
From: Erik L. <len...@gm...> - 2015-01-10 02:29:59
|
Hello, I sent the below message to the FreeCAD development mailing list as a non-subscriber on the 7th. I am sending it again as a subscriber in hopes that it will be accepted/considered more quickly. Thanks in advance! """ Hello, I am currently trying to use my system's Python installation to run FreeCAD, but have encountered a problem when importing the necessary modules. My project requires that I embed FreeCAD in another program which requires my system's Python distribution to operate. It is worth noting that I had none of the below problems where encountered when using the internal FreeCAD Python distribution. Possibly pertinent information: OS: Windows 7 FreeCAD version: 0.14 system Python version: 2.7.9 Using the information on the Embedding FreeCAD wiki ( http://www.freecadweb.org/wiki/index.php?title=Embedding_FreeCAD), I first tried, within a command prompt, appending the FreeCAD application's path to my system's Python path and import FreeCAD to the following effect -------------------------------------------------------------------------------------------------------------- >>> sys.path.append("C:\\Program Files (x86)\\FreeCAD 0.14\\bin") >>> import FreeCAD FreeCAD 0.14, Libs: 0.14R3700 (Git) No modules found in C:\Mod Traceback (most recent call last): File "<stdin>", line 1, in <module> SystemError: dynamic module not initialized properly -------------------------------------------------------------------------------------------------------------- Seeing that the module was looking for the Mod directory within the main FreeCAD directory, I tried to help it along a bit by adding other paths to system Python's path. Subsequent interactions went like this: -------------------------------------------------------------------------------------------------------------- >>> import sys >>> sys.path.append("C:\\Program Files (x86)\\FreeCAD 0.14\\bin") >>> sys.path.append("C:\\Program Files (x86)\\FreeCAD 0.14\\Mod") >>> import FreeCAD FreeCAD 0.14, Libs: 0.14R3700 (Git) No modules found in C:\Mod Traceback (most recent call last): File "<stdin>", line 1, in <module> SystemError: dynamic module not initialized properly -------------------------------------------------------------------------------------------------------------- and -------------------------------------------------------------------------------------------------------------- >>> import sys >>> sys.path.append("C:\\Program Files (x86)\\FreeCAD 0.14\\bin") >>> import FreeCAD FreeCAD 0.14, Libs: 0.14R3700 (Git) No modules found in C:\Mod Traceback (most recent call last): File "<stdin>", line 1, in <module> SystemError: dynamic module not initialized properly >>> sys.path.append("C:\Program Files (x86)\FreeCAD 0.14\Mod") >>> import FreeCAD FreeCAD 0.14, Libs: 0.14R3700 (Git) FreeCAD 0.14, Libs: 0.14R3700 (Git) Terminating... This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information. Abnormal program termination... Initialization of FreeCAD failed: While initializing FreeCAD the following exception occurred: 'Break signal occo ured' Please contact the application's support team for more information. Traceback (most recent call last): File "<stdin>", line 1, in <module> SystemError: dynamic module not initialized properly -------------------------------------------------------------------------------------------------------------- Why did the use of single forward slashes in the Mod path produce this error. Is it possible that there are some other paths, either internal to FreeCAD Python or the system Python, that need to be altered? Are there some irreconcilable differences between my system Python and FreeCAD Python that require a more drastic solution? I have been unable to find answers to these questions in either the forum or the archived mailing list. To reiterate my overall goal, I want to interact with FreeCAD from an external program that uses its own Python distribution. Thank you very much for your time and I look forward to hearing from you soon! Erik """ |
From: Werner (GMX) <wer...@gm...> - 2014-01-16 09:01:59
|
Hi alfa, so, the complete script is below. When running it there is no error and setting the dock window works as expected. Do you get any error messages? Cheers, Werner from PyQt4 import QtCore, QtGui try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: _fromUtf8 = lambda s: s class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName(_fromUtf8("MainWindow")) MainWindow.resize(737, 717) self.centralWidget = QtGui.QWidget(MainWindow) self.centralWidget.setObjectName(_fromUtf8("centralWidget")) self.formLayout = QtGui.QFormLayout(self.centralWidget) self.formLayout.setObjectName(_fromUtf8("formLayout")) self.pushButton = QtGui.QPushButton(self.centralWidget) self.pushButton.setObjectName(_fromUtf8("pushButton")) self.formLayout.setWidget(0, QtGui.QFormLayout.SpanningRole, self.pushButton) self.textEdit = QtGui.QTextEdit(self.centralWidget) self.textEdit.setObjectName(_fromUtf8("textEdit")) self.formLayout.setWidget(1, QtGui.QFormLayout.SpanningRole, self.textEdit) self.textBrowser = QtGui.QTextBrowser(self.centralWidget) self.textBrowser.setObjectName(_fromUtf8("textBrowser")) self.formLayout.setWidget(3, QtGui.QFormLayout.SpanningRole, self.textBrowser) self.pushButton_2 = QtGui.QPushButton(self.centralWidget) self.pushButton_2.setObjectName(_fromUtf8("pushButton_2")) self.formLayout.setWidget(2, QtGui.QFormLayout.SpanningRole, self.pushButton_2) self.pushButton_3 = QtGui.QPushButton(self.centralWidget) self.pushButton_3.setObjectName(_fromUtf8("pushButton_3")) self.formLayout.setWidget(5, QtGui.QFormLayout.SpanningRole, self.pushButton_3) self.pushButton_4 = QtGui.QPushButton(self.centralWidget) self.pushButton_4.setObjectName(_fromUtf8("pushButton_4")) self.formLayout.setWidget(6, QtGui.QFormLayout.SpanningRole, self.pushButton_4) MainWindow.setCentralWidget(self.centralWidget) self.menuBar = QtGui.QMenuBar(MainWindow) self.menuBar.setGeometry(QtCore.QRect(0, 0, 737, 23)) self.menuBar.setObjectName(_fromUtf8("menuBar")) MainWindow.setMenuBar(self.menuBar) self.mainToolBar = QtGui.QToolBar(MainWindow) self.mainToolBar.setObjectName(_fromUtf8("mainToolBar")) MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.mainToolBar) self.statusBar = QtGui.QStatusBar(MainWindow) self.statusBar.setObjectName(_fromUtf8("statusBar")) MainWindow.setStatusBar(self.statusBar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8)) self.pushButton.setText(QtGui.QApplication.translate("MainWindow", "Data", None, QtGui.QApplication.UnicodeUTF8)) self.pushButton_2.setText(QtGui.QApplication.translate("MainWindow", "Result", None, QtGui.QApplication.UnicodeUTF8)) self.pushButton_3.setText(QtGui.QApplication.translate("MainWindow", "Adjustment", None, QtGui.QApplication.UnicodeUTF8)) self.pushButton_4.setText(QtGui.QApplication.translate("MainWindow", "Action - TBD", None, QtGui.QApplication.UnicodeUTF8)) def getMainWindow(): toplevel = QtGui.qApp.topLevelWidgets() for i in toplevel: if i.metaObject().className() == "Gui::MainWindow": return i raise Exception("No main window found") FCmw = getMainWindow() # Here your write what your ScriptCmd does... import FreeCAD, FreeCADGui, PyQt4 from PyQt4 import QtGui, QtCore from PyQt4 import uic FreeCAD.Console.PrintMessage('in MenuDock Class..') app2 = QtGui.qApp #FCmw = app2.activeWindow() FCmw = getMainWindow() menuFreeCADWidget = QtGui.QDockWidget() # create a new dockwidget menuFreeCADWidget.ui = Ui_MainWindow() mw = QtGui.QMainWindow() menuFreeCADWidget.ui.setupUi(mw) menuFreeCADWidget.setWidget(mw) FCmw.addDockWidget(QtCore.Qt.RightDockWidgetArea, menuFreeCADWidget) Am 15.01.2014 15:22, schrieb alfa: > Hi Werner, > > Thanks for the reply and guide. Only one thing I'm confused, regarding > to set it as right docked window as I did before like below: > > FCmw.addDockWidget(QtCore.Qt.RightDockWidgetArea, menuFreeCADWidget) > > But then, if you suggest to assign, > > FCmw = getMainWindow() > > Then, FCmv has no longer the feature to be set as right dock or other > configuration, how do I achieve that? > > > Thanks in advance. > > -alfa- > > > On Wednesday, January 15, 2014 7:06 PM, Werner (GMX) > <wer...@gm...> wrote: > Hi, > >> menuFreeCADWidget = QtGui.QDockWidget() # create a new dckwidget >> menuFreeCADWidget.ui = menu.Ui_MainWindow() >> menuFreeCADWidget.ui.setupUi(menuFreeCADWidget) > That's wrong. You create an instance of QDockWidget but Ui_MainWindow > expects an instance of QMainWindow in its setupUi method. > So, you have to write: > > menuFreeCADWidget = QtGui.QDockWidget() # create a new dockwidget > menuFreeCADWidget.ui = menu.Ui_MainWindow() > mw = QtGui.QMainWindow() > menuFreeCADWidget.ui.setupUi(mw) > menuFreeCADWidget.setWidget(mw) > > Then FCmw = app2.activeWindow() is not very reliable because the > active window can also be a dialog under circumstances. Here you > better use: > > def getMainWindow(): > toplevel = QtGui.qApp.topLevelWidgets() > for i in toplevel: > if i.metaObject().className() == "Gui::MainWindow": > return i > raise Exception("No main window found") > > FCmw = getMainWindow() > > > > Am 15.01.2014 10:56, schrieb alfa: >> Hi again, >> >> ..and I'm on development version by the way. > See also this thread: > http://forum.freecadweb.org/viewtopic.php?f=10&t=5303&start=70 > > Cheers, > Werner > > >> >> Thanks in advance. >> >> -alfa- >> >> >> >> On Wednesday, January 15, 2014 5:34 PM, Werner (GMX) >> <wer...@gm...> <mailto:wer...@gm...> wrote: >> Hi alfa, >> >> I do not understand how this is related to FreeCAD. The code you >> attached works pretty well for me. And creating an instance of the form: >> mw=QtGui.QMainWindow() >> ui=Ui_MainWindow() >> ui.setupUi(mw) >> mw.show() >> >> works for me, too. In case you want to embed this into FreeCAD's main >> window then the relevant code part is missing. >> >> BTW, in the development branch we currently move from PyQt to PySide. >> So, in the long-term you may have to use PySide, too. >> >> Cheers, >> Werner >> >> >> Am 15.01.2014 03:59, schrieb alfa: >>> Dear all, >>> >>> I have a problem regarding adding a docked widget/window that was >>> generated from Qt designer to the FreeCAD. >>> >>> The QtDesigner code(UI) is rather simple as below but then, it >>> complains about the interfaces of setCentralWidget(), setMenuBar(), >>> setStatusBar(), addToolBar() from MainWindow object. If I comment >>> these four methods/functions, I won't get what I want in terms of >>> the GUI features: >>> >>> from PyQt4 import QtCore, QtGui >>> >>> try: >>> _fromUtf8 = QtCore.QString.fromUtf8 >>> except AttributeError: >>> _fromUtf8 = lambda s: s >>> >>> class Ui_MainWindow(object): >>> def setupUi(self, MainWindow): >>> MainWindow.setObjectName(_fromUtf8("MainWindow")) >>> MainWindow.resize(737, 717) >>> self.centralWidget = QtGui.QWidget(MainWindow) >>> self.centralWidget.setObjectName(_fromUtf8("centralWidget")) >>> self.formLayout = QtGui.QFormLayout(self.centralWidget) >>> self.formLayout.setObjectName(_fromUtf8("formLayout")) >>> self.pushButton = QtGui.QPushButton(self.centralWidget) >>> self.pushButton.setObjectName(_fromUtf8("pushButton")) >>> self.formLayout.setWidget(0, QtGui.QFormLayout.SpanningRole, >>> self.pushButton) >>> self.textEdit = QtGui.QTextEdit(self.centralWidget) >>> self.textEdit.setObjectName(_fromUtf8("textEdit")) >>> self.formLayout.setWidget(1, QtGui.QFormLayout.SpanningRole, >>> self.textEdit) >>> self.textBrowser = QtGui.QTextBrowser(self.centralWidget) >>> self.textBrowser.setObjectName(_fromUtf8("textBrowser")) >>> self.formLayout.setWidget(3, QtGui.QFormLayout.SpanningRole, >>> self.textBrowser) >>> self.pushButton_2 = QtGui.QPushButton(self.centralWidget) >>> self.pushButton_2.setObjectName(_fromUtf8("pushButton_2")) >>> self.formLayout.setWidget(2, QtGui.QFormLayout.SpanningRole, >>> self.pushButton_2) >>> self.pushButton_3 = QtGui.QPushButton(self.centralWidget) >>> self.pushButton_3.setObjectName(_fromUtf8("pushButton_3")) >>> self.formLayout.setWidget(5, QtGui.QFormLayout.SpanningRole, >>> self.pushButton_3) >>> self.pushButton_4 = QtGui.QPushButton(self.centralWidget) >>> self.pushButton_4.setObjectName(_fromUtf8("pushButton_4")) >>> self.formLayout.setWidget(6, QtGui.QFormLayout.SpanningRole, >>> self.pushButton_4) >>> MainWindow.setCentralWidget(self.centralWidget) >>> self.menuBar = QtGui.QMenuBar(MainWindow) >>> self.menuBar.setGeometry(QtCore.QRect(0, 0, 737, 23)) >>> self.menuBar.setObjectName(_fromUtf8("menuBar")) >>> MainWindow.setMenuBar(self.menuBar) >>> self.mainToolBar = QtGui.QToolBar(MainWindow) >>> self.mainToolBar.setObjectName(_fromUtf8("mainToolBar")) >>> MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.mainToolBar) >>> self.statusBar = QtGui.QStatusBar(MainWindow) >>> self.statusBar.setObjectName(_fromUtf8("statusBar")) >>> MainWindow.setStatusBar(self.statusBar) >>> >>> self.retranslateUi(MainWindow) >>> QtCore.QMetaObject.connectSlotsByName(MainWindow) >>> >>> def retranslateUi(self, MainWindow): >>> MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", >>> "MainWindow", None, QtGui.QApplication.UnicodeUTF8)) >>> self.pushButton.setText(QtGui.QApplication.translate("MainWindow", >>> "Data", None, QtGui.QApplication.UnicodeUTF8)) >>> self.pushButton_2.setText(QtGui.QApplication.translate("MainWindow", >>> "Result", None, QtGui.QApplication.UnicodeUTF8)) >>> self.pushButton_3.setText(QtGui.QApplication.translate("MainWindow", >>> "Adjustment", None, QtGui.QApplication.UnicodeUTF8)) >>> self.pushButton_4.setText(QtGui.QApplication.translate("MainWindow", >>> "Action - TBD", None, QtGui.QApplication.UnicodeUTF8)) >>> >>> Any helps or ideas are highly appreciated. Thanks in advance. >>> >>> P/S: I followed this link by the >>> way(http://www.freecadweb.org/wiki/index.php?title=PyQt). >>> >>> -alfa- >>> >>> >>> >>> >>> ------------------------------------------------------------------------------ >>> CenturyLink Cloud: The Leader in Enterprise Cloud Services. >>> Learn Why More Businesses Are Choosing CenturyLink Cloud For >>> Critical Workloads, Development Environments & Everything In Between. >>> Get a Quote or Start a Free Trial Today. >>> http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk >>> >>> >>> _______________________________________________ >>> Free-cad-development mailing list >>> Fre...@li... <mailto:Fre...@li...> >>> https://lists.sourceforge.net/lists/listinfo/free-cad-development >> >> >> ------------------------------------------------------------------------------ >> CenturyLink Cloud: The Leader in Enterprise Cloud Services. >> Learn Why More Businesses Are Choosing CenturyLink Cloud For >> Critical Workloads, Development Environments & Everything In Between. >> Get a Quote or Start a Free Trial Today. >> http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk >> >> _______________________________________________ >> Free-cad-development mailing list >> Fre...@li... >> <mailto:Fre...@li...> >> https://lists.sourceforge.net/lists/listinfo/free-cad-development >> >> > > > ------------------------------------------------------------------------------ > CenturyLink Cloud: The Leader in Enterprise Cloud Services. > Learn Why More Businesses Are Choosing CenturyLink Cloud For > Critical Workloads, Development Environments & Everything In Between. > Get a Quote or Start a Free Trial Today. > http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk > > _______________________________________________ > Free-cad-development mailing list > Fre...@li... > <mailto:Fre...@li...> > https://lists.sourceforge.net/lists/listinfo/free-cad-development > > |
From: alfa <alf...@ya...> - 2014-01-15 14:22:20
|
Hi Werner, Thanks for the reply and guide. Only one thing I'm confused, regarding to set it as right docked window as I did before like below: FCmw.addDockWidget(QtCore.Qt.RightDockWidgetArea, menuFreeCADWidget) But then, if you suggest to assign, FCmw = getMainWindow() Then, FCmv has no longer the feature to be set as right dock or other configuration, how do I achieve that? Thanks in advance. -alfa- On Wednesday, January 15, 2014 7:06 PM, Werner (GMX) <wer...@gm...> wrote: Hi, menuFreeCADWidget = QtGui.QDockWidget() # create a new dckwidget > menuFreeCADWidget.ui = menu.Ui_MainWindow() > menuFreeCADWidget.ui.setupUi(menuFreeCADWidget) > That's wrong. You create an instance of QDockWidget but Ui_MainWindow expects an instance of QMainWindow in its setupUi method. So, you have to write: menuFreeCADWidget = QtGui.QDockWidget() # create a new dockwidget menuFreeCADWidget.ui = menu.Ui_MainWindow() mw = QtGui.QMainWindow() menuFreeCADWidget.ui.setupUi(mw) menuFreeCADWidget.setWidget(mw) Then FCmw = app2.activeWindow() is not very reliable because the active window can also be a dialog under circumstances. Here you better use: def getMainWindow(): toplevel = QtGui.qApp.topLevelWidgets() for i in toplevel: if i.metaObject().className() == "Gui::MainWindow": return i raise Exception("No main window found") FCmw = getMainWindow() Am 15.01.2014 10:56, schrieb alfa: Hi again, > >..and I'm on development version by the way. > See also this thread: http://forum.freecadweb.org/viewtopic.php?f=10&t=5303&start=70 Cheers, Werner >Thanks in advance. > >-alfa- > > > > > > >On Wednesday, January 15, 2014 5:34 PM, Werner (GMX) <wer...@gm...> wrote: > >Hi alfa, > >I do not understand how this is related to FreeCAD. The code you attached works pretty well for me. And creating an instance of the form: >mw=QtGui.QMainWindow() >ui=Ui_MainWindow() >ui.setupUi(mw) >mw.show() > >works for me, too. In case you want to embed this into FreeCAD's main window then the relevant code part is missing. > >BTW, in the development branch we currently move from PyQt to PySide. So, in the long-term you may have to use PySide, too. > >Cheers, >Werner > > >Am 15.01.2014 03:59, schrieb alfa: > >Dear all, >> >> >>I have a problem regarding adding a docked widget/window that was generated from Qt designer to the FreeCAD. >> >> >>The QtDesigner code(UI) is rather simple as below but then, it complains about the interfaces of setCentralWidget(), setMenuBar(), setStatusBar(), addToolBar() from MainWindow object. If I comment these four methods/functions, I won't get what I want in terms of the GUI features: >> >> >> from PyQt4 import QtCore, QtGui >> >>try: >> _fromUtf8 = QtCore.QString.fromUtf8 >>except AttributeError: >> _fromUtf8 = lambda s: s >> >>class Ui_MainWindow(object): >> def setupUi(self, MainWindow): >> MainWindow.setObjectName(_fromUtf8("MainWindow")) >> MainWindow.resize(737, 717) >> self.centralWidget = QtGui.QWidget(MainWindow) >> self.centralWidget.setObjectName(_fromUtf8("centralWidget")) >> self.formLayout = QtGui.QFormLayout(self.centralWidget) >> self.formLayout.setObjectName(_fromUtf8("formLayout")) >> self.pushButton = QtGui.QPushButton(self.centralWidget) >> self.pushButton.setObjectName(_fromUtf8("pushButton")) >> self.formLayout.setWidget(0, QtGui.QFormLayout.SpanningRole, self.pushButton) >> self.textEdit = QtGui.QTextEdit(self.centralWidget) >> self.textEdit.setObjectName(_fromUtf8("textEdit")) >> self.formLayout.setWidget(1, QtGui.QFormLayout.SpanningRole, self.textEdit) >> self.textBrowser = QtGui.QTextBrowser(self.centralWidget) >> self.textBrowser.setObjectName(_fromUtf8("textBrowser")) >> self.formLayout.setWidget(3, QtGui.QFormLayout.SpanningRole, self.textBrowser) >> self.pushButton_2 = QtGui.QPushButton(self.centralWidget) >> self.pushButton_2.setObjectName(_fromUtf8("pushButton_2")) >> self.formLayout.setWidget(2, QtGui.QFormLayout.SpanningRole, self.pushButton_2) >> self.pushButton_3 = QtGui.QPushButton(self.centralWidget) >> self.pushButton_3.setObjectName(_fromUtf8("pushButton_3")) >> self.formLayout.setWidget(5, QtGui.QFormLayout.SpanningRole, self.pushButton_3) >> self.pushButton_4 = QtGui.QPushButton(self.centralWidget) >> self.pushButton_4.setObjectName(_fromUtf8("pushButton_4")) >> self.formLayout.setWidget(6, QtGui.QFormLayout.SpanningRole, self.pushButton_4) >> MainWindow.setCentralWidget(self.centralWidget) >> self.menuBar = QtGui.QMenuBar(MainWindow) >> self.menuBar.setGeometry(QtCore.QRect(0, 0, 737, 23)) >> self.menuBar.setObjectName(_fromUtf8("menuBar")) >> MainWindow.setMenuBar(self.menuBar) >> self.mainToolBar = QtGui.QToolBar(MainWindow) >> self.mainToolBar.setObjectName(_fromUtf8("mainToolBar")) >> MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.mainToolBar) >> self.statusBar = QtGui.QStatusBar(MainWindow) >> self.statusBar.setObjectName(_fromUtf8("statusBar")) >> MainWindow.setStatusBar(self.statusBar) >> >> self.retranslateUi(MainWindow) >> QtCore.QMetaObject.connectSlotsByName(MainWindow) >> >> def retranslateUi(self, MainWindow): >> MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8)) >> self.pushButton.setText(QtGui.QApplication.translate("MainWindow", "Data", None, QtGui.QApplication.UnicodeUTF8)) >> self.pushButton_2.setText(QtGui.QApplication.translate("MainWindow", "Result", None, QtGui.QApplication.UnicodeUTF8)) >> self.pushButton_3.setText(QtGui.QApplication.translate("MainWindow", "Adjustment", None, QtGui.QApplication.UnicodeUTF8)) >> self.pushButton_4.setText(QtGui.QApplication.translate("MainWindow", "Action - TBD", None, QtGui.QApplication.UnicodeUTF8)) >> >> >>Any helps or ideas are highly appreciated. Thanks in advance. >> >> >>P/S: I followed this link by the way(http://www.freecadweb.org/wiki/index.php?title=PyQt). >> >> >>-alfa- >> >> >> >> >> >> >> >>------------------------------------------------------------------------------ CenturyLink Cloud: The Leader in Enterprise Cloud Services. Learn Why More Businesses Are Choosing CenturyLink Cloud For Critical Workloads, Development Environments & Everything In Between. Get a Quote or Start a Free Trial Today. http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk >> >> >>_______________________________________________ Free-cad-development mailing list Fre...@li... https://lists.sourceforge.net/lists/listinfo/free-cad-development > > >------------------------------------------------------------------------------ >CenturyLink Cloud: The Leader in Enterprise Cloud Services. >Learn Why More Businesses Are Choosing CenturyLink Cloud For >Critical Workloads, Development Environments & Everything In Between. >Get a Quote or Start a Free Trial Today. >http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk > >_______________________________________________ >Free-cad-development mailing list >Fre...@li... >https://lists.sourceforge.net/lists/listinfo/free-cad-development > > > ------------------------------------------------------------------------------ CenturyLink Cloud: The Leader in Enterprise Cloud Services. Learn Why More Businesses Are Choosing CenturyLink Cloud For Critical Workloads, Development Environments & Everything In Between. Get a Quote or Start a Free Trial Today. http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk _______________________________________________ Free-cad-development mailing list Fre...@li... https://lists.sourceforge.net/lists/listinfo/free-cad-development |
From: Werner (GMX) <wer...@gm...> - 2014-01-15 11:06:19
|
Hi, > menuFreeCADWidget = QtGui.QDockWidget() # create a new dckwidget > menuFreeCADWidget.ui = menu.Ui_MainWindow() > menuFreeCADWidget.ui.setupUi(menuFreeCADWidget) That's wrong. You create an instance of QDockWidget but Ui_MainWindow expects an instance of QMainWindow in its setupUi method. So, you have to write: menuFreeCADWidget = QtGui.QDockWidget() # create a new dockwidget menuFreeCADWidget.ui = menu.Ui_MainWindow() mw = QtGui.QMainWindow() menuFreeCADWidget.ui.setupUi(mw) menuFreeCADWidget.setWidget(mw) Then FCmw = app2.activeWindow() is not very reliable because the active window can also be a dialog under circumstances. Here you better use: def getMainWindow(): toplevel = QtGui.qApp.topLevelWidgets() for i in toplevel: if i.metaObject().className() == "Gui::MainWindow": return i raise Exception("No main window found") FCmw = getMainWindow() Am 15.01.2014 10:56, schrieb alfa: > Hi again, > > ..and I'm on development version by the way. See also this thread: http://forum.freecadweb.org/viewtopic.php?f=10&t=5303&start=70 Cheers, Werner > > Thanks in advance. > > -alfa- > > > > On Wednesday, January 15, 2014 5:34 PM, Werner (GMX) > <wer...@gm...> wrote: > Hi alfa, > > I do not understand how this is related to FreeCAD. The code you > attached works pretty well for me. And creating an instance of the form: > mw=QtGui.QMainWindow() > ui=Ui_MainWindow() > ui.setupUi(mw) > mw.show() > > works for me, too. In case you want to embed this into FreeCAD's main > window then the relevant code part is missing. > > BTW, in the development branch we currently move from PyQt to PySide. > So, in the long-term you may have to use PySide, too. > > Cheers, > Werner > > > Am 15.01.2014 03:59, schrieb alfa: >> Dear all, >> >> I have a problem regarding adding a docked widget/window that was >> generated from Qt designer to the FreeCAD. >> >> The QtDesigner code(UI) is rather simple as below but then, it >> complains about the interfaces of setCentralWidget(), setMenuBar(), >> setStatusBar(), addToolBar() from MainWindow object. If I comment >> these four methods/functions, I won't get what I want in terms of the >> GUI features: >> >> from PyQt4 import QtCore, QtGui >> >> try: >> _fromUtf8 = QtCore.QString.fromUtf8 >> except AttributeError: >> _fromUtf8 = lambda s: s >> >> class Ui_MainWindow(object): >> def setupUi(self, MainWindow): >> MainWindow.setObjectName(_fromUtf8("MainWindow")) >> MainWindow.resize(737, 717) >> self.centralWidget = QtGui.QWidget(MainWindow) >> self.centralWidget.setObjectName(_fromUtf8("centralWidget")) >> self.formLayout = QtGui.QFormLayout(self.centralWidget) >> self.formLayout.setObjectName(_fromUtf8("formLayout")) >> self.pushButton = QtGui.QPushButton(self.centralWidget) >> self.pushButton.setObjectName(_fromUtf8("pushButton")) >> self.formLayout.setWidget(0, QtGui.QFormLayout.SpanningRole, >> self.pushButton) >> self.textEdit = QtGui.QTextEdit(self.centralWidget) >> self.textEdit.setObjectName(_fromUtf8("textEdit")) >> self.formLayout.setWidget(1, QtGui.QFormLayout.SpanningRole, >> self.textEdit) >> self.textBrowser = QtGui.QTextBrowser(self.centralWidget) >> self.textBrowser.setObjectName(_fromUtf8("textBrowser")) >> self.formLayout.setWidget(3, QtGui.QFormLayout.SpanningRole, >> self.textBrowser) >> self.pushButton_2 = QtGui.QPushButton(self.centralWidget) >> self.pushButton_2.setObjectName(_fromUtf8("pushButton_2")) >> self.formLayout.setWidget(2, QtGui.QFormLayout.SpanningRole, >> self.pushButton_2) >> self.pushButton_3 = QtGui.QPushButton(self.centralWidget) >> self.pushButton_3.setObjectName(_fromUtf8("pushButton_3")) >> self.formLayout.setWidget(5, QtGui.QFormLayout.SpanningRole, >> self.pushButton_3) >> self.pushButton_4 = QtGui.QPushButton(self.centralWidget) >> self.pushButton_4.setObjectName(_fromUtf8("pushButton_4")) >> self.formLayout.setWidget(6, QtGui.QFormLayout.SpanningRole, >> self.pushButton_4) >> MainWindow.setCentralWidget(self.centralWidget) >> self.menuBar = QtGui.QMenuBar(MainWindow) >> self.menuBar.setGeometry(QtCore.QRect(0, 0, 737, 23)) >> self.menuBar.setObjectName(_fromUtf8("menuBar")) >> MainWindow.setMenuBar(self.menuBar) >> self.mainToolBar = QtGui.QToolBar(MainWindow) >> self.mainToolBar.setObjectName(_fromUtf8("mainToolBar")) >> MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.mainToolBar) >> self.statusBar = QtGui.QStatusBar(MainWindow) >> self.statusBar.setObjectName(_fromUtf8("statusBar")) >> MainWindow.setStatusBar(self.statusBar) >> >> self.retranslateUi(MainWindow) >> QtCore.QMetaObject.connectSlotsByName(MainWindow) >> >> def retranslateUi(self, MainWindow): >> MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", >> "MainWindow", None, QtGui.QApplication.UnicodeUTF8)) >> self.pushButton.setText(QtGui.QApplication.translate("MainWindow", >> "Data", None, QtGui.QApplication.UnicodeUTF8)) >> self.pushButton_2.setText(QtGui.QApplication.translate("MainWindow", >> "Result", None, QtGui.QApplication.UnicodeUTF8)) >> self.pushButton_3.setText(QtGui.QApplication.translate("MainWindow", >> "Adjustment", None, QtGui.QApplication.UnicodeUTF8)) >> self.pushButton_4.setText(QtGui.QApplication.translate("MainWindow", >> "Action - TBD", None, QtGui.QApplication.UnicodeUTF8)) >> >> Any helps or ideas are highly appreciated. Thanks in advance. >> >> P/S: I followed this link by the >> way(http://www.freecadweb.org/wiki/index.php?title=PyQt). >> >> -alfa- >> >> >> >> >> ------------------------------------------------------------------------------ >> CenturyLink Cloud: The Leader in Enterprise Cloud Services. >> Learn Why More Businesses Are Choosing CenturyLink Cloud For >> Critical Workloads, Development Environments & Everything In Between. >> Get a Quote or Start a Free Trial Today. >> http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk >> >> >> _______________________________________________ >> Free-cad-development mailing list >> Fre...@li... <mailto:Fre...@li...> >> https://lists.sourceforge.net/lists/listinfo/free-cad-development > > > ------------------------------------------------------------------------------ > CenturyLink Cloud: The Leader in Enterprise Cloud Services. > Learn Why More Businesses Are Choosing CenturyLink Cloud For > Critical Workloads, Development Environments & Everything In Between. > Get a Quote or Start a Free Trial Today. > http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk > > _______________________________________________ > Free-cad-development mailing list > Fre...@li... > <mailto:Fre...@li...> > https://lists.sourceforge.net/lists/listinfo/free-cad-development > > |
From: alfa <alf...@ya...> - 2014-01-15 09:56:16
|
Hi again, ..and I'm on development version by the way. Thanks in advance. -alfa- On Wednesday, January 15, 2014 5:34 PM, Werner (GMX) <wer...@gm...> wrote: Hi alfa, I do not understand how this is related to FreeCAD. The code you attached works pretty well for me. And creating an instance of the form: mw=QtGui.QMainWindow() ui=Ui_MainWindow() ui.setupUi(mw) mw.show() works for me, too. In case you want to embed this into FreeCAD's main window then the relevant code part is missing. BTW, in the development branch we currently move from PyQt to PySide. So, in the long-term you may have to use PySide, too. Cheers, Werner Am 15.01.2014 03:59, schrieb alfa: Dear all, > > >I have a problem regarding adding a docked widget/window that was generated from Qt designer to the FreeCAD. > > >The QtDesigner code(UI) is rather simple as below but then, it complains about the interfaces of setCentralWidget(), setMenuBar(), setStatusBar(), addToolBar() from MainWindow object. If I comment these four methods/functions, I won't get what I want in terms of the GUI features: > > > from PyQt4 import QtCore, QtGui > >try: > _fromUtf8 = QtCore.QString.fromUtf8 >except AttributeError: > _fromUtf8 = lambda s: s > >class Ui_MainWindow(object): > def setupUi(self, MainWindow): > MainWindow.setObjectName(_fromUtf8("MainWindow")) > MainWindow.resize(737, 717) > self.centralWidget = QtGui.QWidget(MainWindow) > self.centralWidget.setObjectName(_fromUtf8("centralWidget")) > self.formLayout = QtGui.QFormLayout(self.centralWidget) > self.formLayout.setObjectName(_fromUtf8("formLayout")) > self.pushButton = QtGui.QPushButton(self.centralWidget) > self.pushButton.setObjectName(_fromUtf8("pushButton")) > self.formLayout.setWidget(0, QtGui.QFormLayout.SpanningRole, self.pushButton) > self.textEdit = QtGui.QTextEdit(self.centralWidget) > self.textEdit.setObjectName(_fromUtf8("textEdit")) > self.formLayout.setWidget(1, QtGui.QFormLayout.SpanningRole, self.textEdit) > self.textBrowser = QtGui.QTextBrowser(self.centralWidget) > self.textBrowser.setObjectName(_fromUtf8("textBrowser")) > self.formLayout.setWidget(3, QtGui.QFormLayout.SpanningRole, self.textBrowser) > self.pushButton_2 = QtGui.QPushButton(self.centralWidget) > self.pushButton_2.setObjectName(_fromUtf8("pushButton_2")) > self.formLayout.setWidget(2, QtGui.QFormLayout.SpanningRole, self.pushButton_2) > self.pushButton_3 = QtGui.QPushButton(self.centralWidget) > self.pushButton_3.setObjectName(_fromUtf8("pushButton_3")) > self.formLayout.setWidget(5, QtGui.QFormLayout.SpanningRole, self.pushButton_3) > self.pushButton_4 = QtGui.QPushButton(self.centralWidget) > self.pushButton_4.setObjectName(_fromUtf8("pushButton_4")) > self.formLayout.setWidget(6, QtGui.QFormLayout.SpanningRole, self.pushButton_4) > MainWindow.setCentralWidget(self.centralWidget) > self.menuBar = QtGui.QMenuBar(MainWindow) > self.menuBar.setGeometry(QtCore.QRect(0, 0, 737, 23)) > self.menuBar.setObjectName(_fromUtf8("menuBar")) > MainWindow.setMenuBar(self.menuBar) > self.mainToolBar = QtGui.QToolBar(MainWindow) > self.mainToolBar.setObjectName(_fromUtf8("mainToolBar")) > MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.mainToolBar) > self.statusBar = QtGui.QStatusBar(MainWindow) > self.statusBar.setObjectName(_fromUtf8("statusBar")) > MainWindow.setStatusBar(self.statusBar) > > self.retranslateUi(MainWindow) > QtCore.QMetaObject.connectSlotsByName(MainWindow) > > def retranslateUi(self, MainWindow): > MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8)) > self.pushButton.setText(QtGui.QApplication.translate("MainWindow", "Data", None, QtGui.QApplication.UnicodeUTF8)) > self.pushButton_2.setText(QtGui.QApplication.translate("MainWindow", "Result", None, QtGui.QApplication.UnicodeUTF8)) > self.pushButton_3.setText(QtGui.QApplication.translate("MainWindow", "Adjustment", None, QtGui.QApplication.UnicodeUTF8)) > self.pushButton_4.setText(QtGui.QApplication.translate("MainWindow", "Action - TBD", None, QtGui.QApplication.UnicodeUTF8)) > > >Any helps or ideas are highly appreciated. Thanks in advance. > > >P/S: I followed this link by the way(http://www.freecadweb.org/wiki/index.php?title=PyQt). > > >-alfa- > > > > > > > >------------------------------------------------------------------------------ CenturyLink Cloud: The Leader in Enterprise Cloud Services. Learn Why More Businesses Are Choosing CenturyLink Cloud For Critical Workloads, Development Environments & Everything In Between. Get a Quote or Start a Free Trial Today. http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk > > >_______________________________________________ Free-cad-development mailing list Fre...@li... https://lists.sourceforge.net/lists/listinfo/free-cad-development ------------------------------------------------------------------------------ CenturyLink Cloud: The Leader in Enterprise Cloud Services. Learn Why More Businesses Are Choosing CenturyLink Cloud For Critical Workloads, Development Environments & Everything In Between. Get a Quote or Start a Free Trial Today. http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk _______________________________________________ Free-cad-development mailing list Fre...@li... https://lists.sourceforge.net/lists/listinfo/free-cad-development |
From: alfa <alf...@ya...> - 2014-01-15 09:52:21
|
Hi Werner, Thanks a lot for the reply. Yes, actually I want to embed the QT into the FreeCAD as the latter you clarified. And, the FreeCAD code snippet where I use is as below: def Activated(self): # Here your write what your ScriptCmd does... import FreeCAD, FreeCADGui, PyQt4 from PyQt4 import QtGui, QtCore from PyQt4 import uic import menu FreeCAD.Console.PrintMessage('in MenuDock Class..') app2 = QtGui.qApp FCmw = app2.activeWindow() menuFreeCADWidget = QtGui.QDockWidget() # create a new dckwidget menuFreeCADWidget.ui = menu.Ui_MainWindow() menuFreeCADWidget.ui.setupUi(menuFreeCADWidget) FCmw.addDockWidget(QtCore.Qt.RightDockWidgetArea, menuFreeCADWidget) def GetResources(self): return {'Pixmap' : 'utk_menu', 'MenuText': 'Short text', 'ToolTip': 'Add docked widget'} Hope you can advise any fix on the code. I only get a plain right docked widget without any buttons if I comment those four MainWindow member variables that I previously mentioned. Thanks in advance. -alfa- On Wednesday, January 15, 2014 5:34 PM, Werner (GMX) <wer...@gm...> wrote: Hi alfa, I do not understand how this is related to FreeCAD. The code you attached works pretty well for me. And creating an instance of the form: mw=QtGui.QMainWindow() ui=Ui_MainWindow() ui.setupUi(mw) mw.show() works for me, too. In case you want to embed this into FreeCAD's main window then the relevant code part is missing. BTW, in the development branch we currently move from PyQt to PySide. So, in the long-term you may have to use PySide, too. Cheers, Werner Am 15.01.2014 03:59, schrieb alfa: Dear all, > > >I have a problem regarding adding a docked widget/window that was generated from Qt designer to the FreeCAD. > > >The QtDesigner code(UI) is rather simple as below but then, it complains about the interfaces of setCentralWidget(), setMenuBar(), setStatusBar(), addToolBar() from MainWindow object. If I comment these four methods/functions, I won't get what I want in terms of the GUI features: > > > from PyQt4 import QtCore, QtGui > >try: > _fromUtf8 = QtCore.QString.fromUtf8 >except AttributeError: > _fromUtf8 = lambda s: s > >class Ui_MainWindow(object): > def setupUi(self, MainWindow): > MainWindow.setObjectName(_fromUtf8("MainWindow")) > MainWindow.resize(737, 717) > self.centralWidget = QtGui.QWidget(MainWindow) > self.centralWidget.setObjectName(_fromUtf8("centralWidget")) > self.formLayout = QtGui.QFormLayout(self.centralWidget) > self.formLayout.setObjectName(_fromUtf8("formLayout")) > self.pushButton = QtGui.QPushButton(self.centralWidget) > self.pushButton.setObjectName(_fromUtf8("pushButton")) > self.formLayout.setWidget(0, QtGui.QFormLayout.SpanningRole, self.pushButton) > self.textEdit = QtGui.QTextEdit(self.centralWidget) > self.textEdit.setObjectName(_fromUtf8("textEdit")) > self.formLayout.setWidget(1, QtGui.QFormLayout.SpanningRole, self.textEdit) > self.textBrowser = QtGui.QTextBrowser(self.centralWidget) > self.textBrowser.setObjectName(_fromUtf8("textBrowser")) > self.formLayout.setWidget(3, QtGui.QFormLayout.SpanningRole, self.textBrowser) > self.pushButton_2 = QtGui.QPushButton(self.centralWidget) > self.pushButton_2.setObjectName(_fromUtf8("pushButton_2")) > self.formLayout.setWidget(2, QtGui.QFormLayout.SpanningRole, self.pushButton_2) > self.pushButton_3 = QtGui.QPushButton(self.centralWidget) > self.pushButton_3.setObjectName(_fromUtf8("pushButton_3")) > self.formLayout.setWidget(5, QtGui.QFormLayout.SpanningRole, self.pushButton_3) > self.pushButton_4 = QtGui.QPushButton(self.centralWidget) > self.pushButton_4.setObjectName(_fromUtf8("pushButton_4")) > self.formLayout.setWidget(6, QtGui.QFormLayout.SpanningRole, self.pushButton_4) > MainWindow.setCentralWidget(self.centralWidget) > self.menuBar = QtGui.QMenuBar(MainWindow) > self.menuBar.setGeometry(QtCore.QRect(0, 0, 737, 23)) > self.menuBar.setObjectName(_fromUtf8("menuBar")) > MainWindow.setMenuBar(self.menuBar) > self.mainToolBar = QtGui.QToolBar(MainWindow) > self.mainToolBar.setObjectName(_fromUtf8("mainToolBar")) > MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.mainToolBar) > self.statusBar = QtGui.QStatusBar(MainWindow) > self.statusBar.setObjectName(_fromUtf8("statusBar")) > MainWindow.setStatusBar(self.statusBar) > > self.retranslateUi(MainWindow) > QtCore.QMetaObject.connectSlotsByName(MainWindow) > > def retranslateUi(self, MainWindow): > MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8)) > self.pushButton.setText(QtGui.QApplication.translate("MainWindow", "Data", None, QtGui.QApplication.UnicodeUTF8)) > self.pushButton_2.setText(QtGui.QApplication.translate("MainWindow", "Result", None, QtGui.QApplication.UnicodeUTF8)) > self.pushButton_3.setText(QtGui.QApplication.translate("MainWindow", "Adjustment", None, QtGui.QApplication.UnicodeUTF8)) > self.pushButton_4.setText(QtGui.QApplication.translate("MainWindow", "Action - TBD", None, QtGui.QApplication.UnicodeUTF8)) > > >Any helps or ideas are highly appreciated. Thanks in advance. > > >P/S: I followed this link by the way(http://www.freecadweb.org/wiki/index.php?title=PyQt). > > >-alfa- > > > > > > > >------------------------------------------------------------------------------ CenturyLink Cloud: The Leader in Enterprise Cloud Services. Learn Why More Businesses Are Choosing CenturyLink Cloud For Critical Workloads, Development Environments & Everything In Between. Get a Quote or Start a Free Trial Today. http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk > > >_______________________________________________ Free-cad-development mailing list Fre...@li... https://lists.sourceforge.net/lists/listinfo/free-cad-development ------------------------------------------------------------------------------ CenturyLink Cloud: The Leader in Enterprise Cloud Services. Learn Why More Businesses Are Choosing CenturyLink Cloud For Critical Workloads, Development Environments & Everything In Between. Get a Quote or Start a Free Trial Today. http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk _______________________________________________ Free-cad-development mailing list Fre...@li... https://lists.sourceforge.net/lists/listinfo/free-cad-development |
From: Werner (GMX) <wer...@gm...> - 2014-01-15 09:34:16
|
Hi alfa, I do not understand how this is related to FreeCAD. The code you attached works pretty well for me. And creating an instance of the form: mw=QtGui.QMainWindow() ui=Ui_MainWindow() ui.setupUi(mw) mw.show() works for me, too. In case you want to embed this into FreeCAD's main window then the relevant code part is missing. BTW, in the development branch we currently move from PyQt to PySide. So, in the long-term you may have to use PySide, too. Cheers, Werner Am 15.01.2014 03:59, schrieb alfa: > Dear all, > > I have a problem regarding adding a docked widget/window that was > generated from Qt designer to the FreeCAD. > > The QtDesigner code(UI) is rather simple as below but then, it > complains about the interfaces of setCentralWidget(), setMenuBar(), > setStatusBar(), addToolBar() from MainWindow object. If I comment > these four methods/functions, I won't get what I want in terms of the > GUI features: > > from PyQt4 import QtCore, QtGui > > try: > _fromUtf8 = QtCore.QString.fromUtf8 > except AttributeError: > _fromUtf8 = lambda s: s > > class Ui_MainWindow(object): > def setupUi(self, MainWindow): > MainWindow.setObjectName(_fromUtf8("MainWindow")) > MainWindow.resize(737, 717) > self.centralWidget = QtGui.QWidget(MainWindow) > self.centralWidget.setObjectName(_fromUtf8("centralWidget")) > self.formLayout = QtGui.QFormLayout(self.centralWidget) > self.formLayout.setObjectName(_fromUtf8("formLayout")) > self.pushButton = QtGui.QPushButton(self.centralWidget) > self.pushButton.setObjectName(_fromUtf8("pushButton")) > self.formLayout.setWidget(0, QtGui.QFormLayout.SpanningRole, > self.pushButton) > self.textEdit = QtGui.QTextEdit(self.centralWidget) > self.textEdit.setObjectName(_fromUtf8("textEdit")) > self.formLayout.setWidget(1, QtGui.QFormLayout.SpanningRole, > self.textEdit) > self.textBrowser = QtGui.QTextBrowser(self.centralWidget) > self.textBrowser.setObjectName(_fromUtf8("textBrowser")) > self.formLayout.setWidget(3, QtGui.QFormLayout.SpanningRole, > self.textBrowser) > self.pushButton_2 = QtGui.QPushButton(self.centralWidget) > self.pushButton_2.setObjectName(_fromUtf8("pushButton_2")) > self.formLayout.setWidget(2, QtGui.QFormLayout.SpanningRole, > self.pushButton_2) > self.pushButton_3 = QtGui.QPushButton(self.centralWidget) > self.pushButton_3.setObjectName(_fromUtf8("pushButton_3")) > self.formLayout.setWidget(5, QtGui.QFormLayout.SpanningRole, > self.pushButton_3) > self.pushButton_4 = QtGui.QPushButton(self.centralWidget) > self.pushButton_4.setObjectName(_fromUtf8("pushButton_4")) > self.formLayout.setWidget(6, QtGui.QFormLayout.SpanningRole, > self.pushButton_4) > MainWindow.setCentralWidget(self.centralWidget) > self.menuBar = QtGui.QMenuBar(MainWindow) > self.menuBar.setGeometry(QtCore.QRect(0, 0, 737, 23)) > self.menuBar.setObjectName(_fromUtf8("menuBar")) > MainWindow.setMenuBar(self.menuBar) > self.mainToolBar = QtGui.QToolBar(MainWindow) > self.mainToolBar.setObjectName(_fromUtf8("mainToolBar")) > MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.mainToolBar) > self.statusBar = QtGui.QStatusBar(MainWindow) > self.statusBar.setObjectName(_fromUtf8("statusBar")) > MainWindow.setStatusBar(self.statusBar) > > self.retranslateUi(MainWindow) > QtCore.QMetaObject.connectSlotsByName(MainWindow) > > def retranslateUi(self, MainWindow): > MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", > "MainWindow", None, QtGui.QApplication.UnicodeUTF8)) > self.pushButton.setText(QtGui.QApplication.translate("MainWindow", > "Data", None, QtGui.QApplication.UnicodeUTF8)) > self.pushButton_2.setText(QtGui.QApplication.translate("MainWindow", > "Result", None, QtGui.QApplication.UnicodeUTF8)) > self.pushButton_3.setText(QtGui.QApplication.translate("MainWindow", > "Adjustment", None, QtGui.QApplication.UnicodeUTF8)) > self.pushButton_4.setText(QtGui.QApplication.translate("MainWindow", > "Action - TBD", None, QtGui.QApplication.UnicodeUTF8)) > > Any helps or ideas are highly appreciated. Thanks in advance. > > P/S: I followed this link by the > way(http://www.freecadweb.org/wiki/index.php?title=PyQt). > > -alfa- > > > > > ------------------------------------------------------------------------------ > CenturyLink Cloud: The Leader in Enterprise Cloud Services. > Learn Why More Businesses Are Choosing CenturyLink Cloud For > Critical Workloads, Development Environments & Everything In Between. > Get a Quote or Start a Free Trial Today. > http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk > > > _______________________________________________ > Free-cad-development mailing list > Fre...@li... > https://lists.sourceforge.net/lists/listinfo/free-cad-development |
From: alfa <alf...@ya...> - 2014-01-15 02:59:38
|
Dear all, I have a problem regarding adding a docked widget/window that was generated from Qt designer to the FreeCAD. The QtDesigner code(UI) is rather simple as below but then, it complains about the interfaces of setCentralWidget(), setMenuBar(), setStatusBar(), addToolBar() from MainWindow object. If I comment these four methods/functions, I won't get what I want in terms of the GUI features: from PyQt4 import QtCore, QtGui try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: _fromUtf8 = lambda s: s class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName(_fromUtf8("MainWindow")) MainWindow.resize(737, 717) self.centralWidget = QtGui.QWidget(MainWindow) self.centralWidget.setObjectName(_fromUtf8("centralWidget")) self.formLayout = QtGui.QFormLayout(self.centralWidget) self.formLayout.setObjectName(_fromUtf8("formLayout")) self.pushButton = QtGui.QPushButton(self.centralWidget) self.pushButton.setObjectName(_fromUtf8("pushButton")) self.formLayout.setWidget(0, QtGui.QFormLayout.SpanningRole, self.pushButton) self.textEdit = QtGui.QTextEdit(self.centralWidget) self.textEdit.setObjectName(_fromUtf8("textEdit")) self.formLayout.setWidget(1, QtGui.QFormLayout.SpanningRole, self.textEdit) self.textBrowser = QtGui.QTextBrowser(self.centralWidget) self.textBrowser.setObjectName(_fromUtf8("textBrowser")) self.formLayout.setWidget(3, QtGui.QFormLayout.SpanningRole, self.textBrowser) self.pushButton_2 = QtGui.QPushButton(self.centralWidget) self.pushButton_2.setObjectName(_fromUtf8("pushButton_2")) self.formLayout.setWidget(2, QtGui.QFormLayout.SpanningRole, self.pushButton_2) self.pushButton_3 = QtGui.QPushButton(self.centralWidget) self.pushButton_3.setObjectName(_fromUtf8("pushButton_3")) self.formLayout.setWidget(5, QtGui.QFormLayout.SpanningRole, self.pushButton_3) self.pushButton_4 = QtGui.QPushButton(self.centralWidget) self.pushButton_4.setObjectName(_fromUtf8("pushButton_4")) self.formLayout.setWidget(6, QtGui.QFormLayout.SpanningRole, self.pushButton_4) MainWindow.setCentralWidget(self.centralWidget) self.menuBar = QtGui.QMenuBar(MainWindow) self.menuBar.setGeometry(QtCore.QRect(0, 0, 737, 23)) self.menuBar.setObjectName(_fromUtf8("menuBar")) MainWindow.setMenuBar(self.menuBar) self.mainToolBar = QtGui.QToolBar(MainWindow) self.mainToolBar.setObjectName(_fromUtf8("mainToolBar")) MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.mainToolBar) self.statusBar = QtGui.QStatusBar(MainWindow) self.statusBar.setObjectName(_fromUtf8("statusBar")) MainWindow.setStatusBar(self.statusBar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8)) self.pushButton.setText(QtGui.QApplication.translate("MainWindow", "Data", None, QtGui.QApplication.UnicodeUTF8)) self.pushButton_2.setText(QtGui.QApplication.translate("MainWindow", "Result", None, QtGui.QApplication.UnicodeUTF8)) self.pushButton_3.setText(QtGui.QApplication.translate("MainWindow", "Adjustment", None, QtGui.QApplication.UnicodeUTF8)) self.pushButton_4.setText(QtGui.QApplication.translate("MainWindow", "Action - TBD", None, QtGui.QApplication.UnicodeUTF8)) Any helps or ideas are highly appreciated. Thanks in advance. P/S: I followed this link by the way(http://www.freecadweb.org/wiki/index.php?title=PyQt). -alfa- |