fstl-app / fstl Goto Github PK
View Code? Open in Web Editor NEWA fast STL file viewer
A fast STL file viewer
Just add the version number to the about screen or somewhere else. Couldn't find it in the programm.
In file src/window.cpp
, method Window::on_open()
(lines 181-189), there is a typo in line 184:
void Window::on_open()
{
QString filename = QFileDialog::getOpenFileName(
this, "Load .stl file", QString(), "STL files (*.stl, *.STL)"); // *** here!!
if (!filename.isNull())
{
load_stl(filename);
}
}
Just need to remove last comma in line 184, the proper string to be as: "STL files (*.stl *.STL)"
Otherwise, in Fedora 36 (for example), open cannot access files with extension *.stl
(lowercase) only uppercase ones. Actually, the current version is filtering *.stl,
extensions which makes no sense.
why your last release doesnt contain binray for linux?
The desktop can be something like:
Type=Application
Version= 0.9.3
Name=fstl
Comment=Fast viewer for .stl files.
Exec=fstl %F
Categories=Graphics;
Icon=fstl.png
The png is something someone must export from the ico file or convert the original file.
"Surface Angle" as seen on github/gist stl previews makes it easier for me to figure out/make out features of 3D model
If it is not too difficult, I would kindly ask the developers to add an option to hide the menu below the window title. This would save a little bit of screen space when one needs to open multiple STLs side-to-side.
I was working on a fix for a cmake warning with this commit: mboerwinkle@7a1e638
This commit modified my existing pull request on mkeeter/fstl. A few minutes later, @mkeeter merged the pull request, inadvertently including my untested (it works for me, but I hadn't submitted it for review yet) modification to CMakeLists.txt.
I wanted to make sure this did not go unnoticed and cause problems for someone.
Martin
I would like to use FSTL on my Debian installation working on a PowerPC CPU and a 64bit linux environment.
If I try to load any STL file, FSTL does exactly nothing, it does not show any object, nor provided an alert of any kind that something went wrong. I tried recompiling from source code the current version from this repository, but again FSTL seems to ignore any STL file I select.
I might be probably wrong, but it seems to me that STL files I am trying to load with FSTL are encoded as little endian and the FSTL loader is not able to detect that it is running on a big endian system.
libqt5opengl5-dev installed,
zippo:/files/programming/src/fstl/fstl/build# make -j8
g++ -c -pipe -O3 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I../qt -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4 -I/usr/X11R6/include -I. -I../qt -I. -o app.o ../src/app.cpp
.
.
.
compilation terminated.
digging turns out that even with qt4 removed, system was trying to use it.
so
zippo:/files/programming/src/fstl/fstl/build# /usr/lib/i386-linux-gnu/qt5/bin/qmake ../qt/fstl.pro
Info: creating stash file /files/programming/src/fstl/fstl/build/.qmake.stash
zippo:/files/programming/src/fstl/fstl/build# ls
Makefile
zippo:/files/programming/src/fstl/fstl/build# make -j8
.
.
.
(happyness)
I dont know if this was caused by something in my build env. or by the fstl.pro
thanks for watching!
Just to share my finding that moving to QOpenGLWidget, from QGLWidget. The changes is quite straight forward (by replacing QGLWidget --> QOpenGLWidget, ..).
To make it work, the tricky part is to replace paintEvent with paintGL to avoid issue with display. The complete change is in fork out code in my github.
Hi
Would be great to add support for ASCII STL, mainly because it's what OpenSCAD generates.
thanks
D
It would be great if we could be able to switch ("Invert", left does what right does now and opposite) the behavior of the right and left mouse click hold. Coming from another 3D tool, the current setup is quite discouraging to use.
If you open an libfivepy generated stl file with fstl and set it to auto-reload; every time you regenerate the stl (with libfivepy) fstl say it is corrupted. Which is strange because it display the stl fine and it doesn't occur when you load the file manually.
This is probably a libfivepy issue but here is a post anyway.
Link to the thread on libfivepy: https://gitlab.com/rcmz0/libfivepy/issues/4
I loaded this model with color and it appears without color.
I opened it at https://www.viewstl.com/ and it comes out with color.
With an image viewer, I can press Space to go to the next photo and Backspace to go to the previous.
It would be great to have a similar functionality in a directory full of STLs.
Hello,
make -j8 command fails after %46 of build on Raspberry pi 3. What can be the reason?
Thank you.
I'm currently trying to package fstl for Debian. Is the custom license intentional or is it supposed to be MIT?
All my models are upside down. I wish I had an option to change the default orientation as upside down.
The newest Qt libs seem to require fmt.setSamples(4)
to get rid of the blank screen and error messages. With Qt 5.11.x fstl
worked perfectly for me, but now it doesn't any more ๐ข.
Could you please implement it and release a new version?
Hello,
I've installed Qt 5.11.2 on Windows 10.
Then I got linking error for glPolygonMode.
If I comment out the three instances of glPolygonMode in canvas.cpp it compiles and run.
Error:
canvas.obj : error LNK2019: unresolved external symbol __imp_glPolygonMode referenced in function "private: void __cdecl Canvas::draw_mesh(void)" (?draw_mesh@Canvas@@AEAAXXZ)
release\fstl.exe : fatal error LNK1120: 1 unresolved externals
Compilation errors running "make" on system. Installed qt4-dev-tools, using gcc 4.8.4 stock install on Ubuntu 14.04LTS. Output attached.
errs.txt
Flatpak is a universal package format that can be used in any Linux distro.
I would like to ask to package fstl using Flatpak (you can read it more here: https://docs.flatpak.org/en/latest/first-build.html) and add it to Flathub: https://flathub.org
Every time I open a STL file generated by solidworks, fstl
pops up a pointless warning dialog:
Warning:
This .stl
file begins with solid
but appears to be a binary file.fstl
loaded it, but other programs may be confused by this file.
I've used solidworks to generate hundreds of STLs for use with probably dozens of other pieces of software, and never had issues (aside from the usual mm/inch confusion). Furthermore, this dialog is modal and cannot be prevented from popping up.
From the original STL specification, the first 80 bytes are specified as "Header. No special significance". If there's software out there that's making assumptions about the contents of the file based on the first 80 bytes, and not using further heuristics to validate that assumption, that other piece of software is broken. It shouldn't be something fstl
bothers me about.
I am using fstl to display designs for 3D printing that are frequently modified and regenerated. The default-enabled autoreload feature has some drawbacks in that use case.
First, fstl frequently crashes while the .stl is being regenerated. This is because in Loader::read_stl_ascii(), the size of the vector returned by split() is not checked before using the elements. When a vertex row has not yet been completely written, fstl crashes.
Additionally it would be really neat if fstl either waited before autoreloading until the file size does not change any more, or if it reloaded again without an error pop-up in that case. Otherwise I have had to click away several message dialogs from the same reload.
Finally the focus stealing on autoreload is a pain when one does not want to switch to fstl despite regenerating the .stl.
#67 Broke the ability to build on Ubuntu 20.04 LTS since it ships with Qt 5.12. It's your decision how soon you want to leave behind users, but personally I think it's reasonable to support the current LTS of one of the most popular distros.
In my fork I've reverted that commit, and fstl builds and runs fine (no deprecation warnings are issued under 5.12). I can open a PR if you want.
It may not a simple task, but how can I improve the program to accept multiple objects and display them? I understand that the code utilizes QGLBuffer for faster rendering, but don't know how. Can I know rough algorithm for this? Thanks for a nice code.
Debian packaging is currently not fully functional. We need to specify the dependent packages and ensure we follow Debian packaging guidelines. Comments from this thread are relevant to this issue as well.
i've downloaded version 0.9.4 but when selecting it in the Finder no version number is visible:
both the CFBundleVersion and the CFBundleShortVersionString entries are missing from your Info.plist file. both should be set to 0.9.4. all macOS apps are supposed to have version information.
furthermore, the Info.plist contains the 'CFBundleGetInfoString' entry which has been deprecated for more than 10 years and would prevent the display of version infomation in the 'Get Info' window even if it was present. this needs to be removed.
The very first thing I always do after running fstl
is to maximize the window.
In window.cpp
, immediately after the opening curly brace on line 17 (before the call to setWindowTitle("fstl");
), I added this:
setWindowState(Qt::WindowMaximized);
and now it behaves like I want. Since this is such a simple change, I didn't write a PR.
Feel free to close if you don't think this is useful, but I really like it.
Thank you for fstl
!!!
So when saving the stl, fstl will autoreload it before the file finished being written which will result in an error, so an option to disable error messages would be great as always closing those windows is annoying and pressing F5 each time isn't as conveniant as if it would always auto reload ^
I'v never yet had a qt project compile without issues....
Maybe this is something simple.
zippo:/files/programming/src/fstl/fstl/build# qmake ../qt/fstl.pro
zippo:/files/programming/src/fstl/fstl/build# make -j8
g++ -c -pipe -O3 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I../qt -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4 -I/usr/X11R6/include -I. -I../qt -I. -o app.o ../src/app.cpp
g++ -c -pipe -O3 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I../qt -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4 -I/usr/X11R6/include -I. -I../qt -I. -o main.o ../src/main.cpp
g++ -c -pipe -O3 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I../qt -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4 -I/usr/X11R6/include -I. -I../qt -I. -o canvas.o ../src/canvas.cpp
g++ -c -pipe -O3 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I../qt -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4 -I/usr/X11R6/include -I. -I../qt -I. -o mesh.o ../src/mesh.cpp
g++ -c -pipe -O3 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I../qt -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4 -I/usr/X11R6/include -I. -I../qt -I. -o glmesh.o ../src/glmesh.cpp
g++ -c -pipe -O3 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I../qt -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4 -I/usr/X11R6/include -I. -I../qt -I. -o loader.o ../src/loader.cpp
g++ -c -pipe -O3 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I../qt -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4 -I/usr/X11R6/include -I. -I../qt -I. -o window.o ../src/window.cpp
g++ -c -pipe -O3 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I../qt -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4 -I/usr/X11R6/include -I. -I../qt -I. -o backdrop.o ../src/backdrop.cpp
In file included from /usr/include/c++/4.7/future:35:0,
from ../src/loader.cpp:1:
/usr/include/c++/4.7/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
/usr/lib/i386-linux-gnu/qt4/bin/moc -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I../qt -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4 -I/usr/X11R6/include -I. -I../qt -I. ../src/app.h -o moc_app.cpp
/usr/lib/i386-linux-gnu/qt4/bin/moc -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I../qt -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4 -I/usr/X11R6/include -I. -I../qt -I. ../src/canvas.h -o moc_canvas.cpp
../src/canvas.h:64: Warning: Property declaration perspective has no READ accessor function. The property will be invalid.
/usr/lib/i386-linux-gnu/qt4/bin/moc -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I../qt -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4 -I/usr/X11R6/include -I. -I../qt -I. ../src/loader.h -o moc_loader.cpp
/usr/lib/i386-linux-gnu/qt4/bin/moc -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I../qt -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4 -I/usr/X11R6/include -I. -I../qt -I. ../src/window.h -o moc_window.cpp
/usr/lib/i386-linux-gnu/qt4/bin/rcc -name qt ../qt/qt.qrc -o qrc_qt.cpp
/usr/lib/i386-linux-gnu/qt4/bin/rcc -name gl ../gl/gl.qrc -o qrc_gl.cpp
g++ -c -pipe -O3 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I../qt -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4 -I/usr/X11R6/include -I. -I../qt -I. -o moc_app.o moc_app.cpp
g++ -c -pipe -O3 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I../qt -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4 -I/usr/X11R6/include -I. -I../qt -I. -o moc_canvas.o moc_canvas.cpp
g++ -c -pipe -O3 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I../qt -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4 -I/usr/X11R6/include -I. -I../qt -I. -o moc_loader.o moc_loader.cpp
g++ -c -pipe -O3 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I../qt -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4 -I/usr/X11R6/include -I. -I../qt -I. -o moc_window.o moc_window.cpp
g++ -c -pipe -O3 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I../qt -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4 -I/usr/X11R6/include -I. -I../qt -I. -o qrc_qt.o qrc_qt.cpp
g++ -c -pipe -O3 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I../qt -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4 -I/usr/X11R6/include -I. -I../qt -I. -o qrc_gl.o qrc_gl.cpp
In file included from ../src/loader.h:6:0,
from ../src/window.cpp:7:
../src/mesh.h:12:30: error: expected ',' or '...' before '&&' token
In file included from /usr/include/qt4/QtCore/QFileSystemWatcher:1:0,
from ../src/window.h:6,
from ../src/window.cpp:5:
/usr/include/qt4/QtCore/qfilesystemwatcher.h: In constructor 'Window::Window(QWidget*)':
/usr/include/qt4/QtCore/qfilesystemwatcher.h:76:10: error: 'void QFileSystemWatcher::fileChanged(const QString&)' is protected
../src/window.cpp:36:52: error: within this context
../src/window.cpp:37:54: error: no matching function for call to 'Window::connect(QFileSystemWatcher*&, void (QFileSystemWatcher::)(const QString&), Window const, void (Window::)(const QString&))'
../src/window.cpp:37:54: note: candidates are:
In file included from /usr/include/qt4/QtGui/qwidget.h:47:0,
from /usr/include/qt4/QtGui/qmenu.h:45,
from /usr/include/qt4/QtGui/qmenubar.h:45,
from /usr/include/qt4/QtGui/QMenuBar:1,
from ../src/window.cpp:1:
/usr/include/qt4/QtCore/qobject.h:204:17: note: static bool QObject::connect(const QObject, const char*, const QObject*, const char*, Qt::ConnectionType)
/usr/include/qt4/QtCore/qobject.h:204:17: note: no known conversion for argument 2 from 'void (QFileSystemWatcher::)(const QString&)' to 'const char'
/usr/include/qt4/QtCore/qobject.h:217:17: note: static bool QObject::connect(const QObject*, const QMetaMethod&, const QObject*, const QMetaMethod&, Qt::ConnectionType)
/usr/include/qt4/QtCore/qobject.h:217:17: note: no known conversion for argument 2 from 'void (QFileSystemWatcher::)(const QString&)' to 'const QMetaMethod&'
/usr/include/qt4/QtCore/qobject.h:337:13: note: bool QObject::connect(const QObject, const char*, const char*, Qt::ConnectionType) const
/usr/include/qt4/QtCore/qobject.h:337:13: note: no known conversion for argument 2 from 'void (QFileSystemWatcher::)(const QString&)' to 'const char'
In file included from /usr/include/qt4/QtGui/qmenu.h:48:0,
from /usr/include/qt4/QtGui/qmenubar.h:45,
from /usr/include/qt4/QtGui/QMenuBar:1,
from ../src/window.cpp:1:
/usr/include/qt4/QtGui/qaction.h:228:10: error: 'void QAction::triggered(bool)' is protected
../src/window.cpp:40:45: error: within this context
../src/window.cpp:41:44: error: no matching function for call to 'Window::connect(QAction* const&, void (QAction::)(bool), Window const, void (Window::)())'
../src/window.cpp:41:44: note: candidates are:
In file included from /usr/include/qt4/QtGui/qwidget.h:47:0,
from /usr/include/qt4/QtGui/qmenu.h:45,
from /usr/include/qt4/QtGui/qmenubar.h:45,
from /usr/include/qt4/QtGui/QMenuBar:1,
from ../src/window.cpp:1:
/usr/include/qt4/QtCore/qobject.h:204:17: note: static bool QObject::connect(const QObject, const char*, const QObject*, const char*, Qt::ConnectionType)
/usr/include/qt4/QtCore/qobject.h:204:17: note: no known conversion for argument 2 from 'void (QAction::)(bool)' to 'const char'
/usr/include/qt4/QtCore/qobject.h:217:17: note: static bool QObject::connect(const QObject*, const QMetaMethod&, const QObject*, const QMetaMethod&, Qt::ConnectionType)
/usr/include/qt4/QtCore/qobject.h:217:17: note: no known conversion for argument 2 from 'void (QAction::)(bool)' to 'const QMetaMethod&'
/usr/include/qt4/QtCore/qobject.h:337:13: note: bool QObject::connect(const QObject, const char*, const char*, Qt::ConnectionType) const
/usr/include/qt4/QtCore/qobject.h:337:13: note: no known conversion for argument 2 from 'void (QAction::)(bool)' to 'const char'
In file included from /usr/include/qt4/QtGui/qmenu.h:48:0,
from /usr/include/qt4/QtGui/qmenubar.h:45,
from /usr/include/qt4/QtGui/QMenuBar:1,
from ../src/window.cpp:1:
/usr/include/qt4/QtGui/qaction.h:228:10: error: 'void QAction::triggered(bool)' is protected
../src/window.cpp:44:45: error: within this context
../src/window.cpp:45:42: error: no matching function for call to 'Window::connect(QAction* const&, void (QAction::)(bool), Window const, bool (QWidget::)())'
../src/window.cpp:45:42: note: candidates are:
In file included from /usr/include/qt4/QtGui/qwidget.h:47:0,
from /usr/include/qt4/QtGui/qmenu.h:45,
from /usr/include/qt4/QtGui/qmenubar.h:45,
from /usr/include/qt4/QtGui/QMenuBar:1,
from ../src/window.cpp:1:
/usr/include/qt4/QtCore/qobject.h:204:17: note: static bool QObject::connect(const QObject, const char*, const QObject*, const char*, Qt::ConnectionType)
/usr/include/qt4/QtCore/qobject.h:204:17: note: no known conversion for argument 2 from 'void (QAction::)(bool)' to 'const char'
/usr/include/qt4/QtCore/qobject.h:217:17: note: static bool QObject::connect(const QObject*, const QMetaMethod&, const QObject*, const QMetaMethod&, Qt::ConnectionType)
/usr/include/qt4/QtCore/qobject.h:217:17: note: no known conversion for argument 2 from 'void (QAction::)(bool)' to 'const QMetaMethod&'
/usr/include/qt4/QtCore/qobject.h:337:13: note: bool QObject::connect(const QObject, const char*, const char*, Qt::ConnectionType) const
/usr/include/qt4/QtCore/qobject.h:337:13: note: no known conversion for argument 2 from 'void (QAction::)(bool)' to 'const char'
In file included from /usr/include/qt4/QtGui/qmenu.h:48:0,
from /usr/include/qt4/QtGui/qmenubar.h:45,
from /usr/include/qt4/QtGui/QMenuBar:1,
from ../src/window.cpp:1:
/usr/include/qt4/QtGui/qaction.h:228:10: error: 'void QAction::triggered(bool)' is protected
../src/window.cpp:50:51: error: within this context
../src/window.cpp:51:51: error: no matching function for call to 'Window::connect(QAction* const&, void (QAction::)(bool), Window const, void (Window::)(bool))'
../src/window.cpp:51:51: note: candidates are:
In file included from /usr/include/qt4/QtGui/qwidget.h:47:0,
from /usr/include/qt4/QtGui/qmenu.h:45,
from /usr/include/qt4/QtGui/qmenubar.h:45,
from /usr/include/qt4/QtGui/QMenuBar:1,
from ../src/window.cpp:1:
/usr/include/qt4/QtCore/qobject.h:204:17: note: static bool QObject::connect(const QObject, const char*, const QObject*, const char*, Qt::ConnectionType)
/usr/include/qt4/QtCore/qobject.h:204:17: note: no known conversion for argument 2 from 'void (QAction::)(bool)' to 'const char'
/usr/include/qt4/QtCore/qobject.h:217:17: note: static bool QObject::connect(const QObject*, const QMetaMethod&, const QObject*, const QMetaMethod&, Qt::ConnectionType)
/usr/include/qt4/QtCore/qobject.h:217:17: note: no known conversion for argument 2 from 'void (QAction::)(bool)' to 'const QMetaMethod&'
/usr/include/qt4/QtCore/qobject.h:337:13: note: bool QObject::connect(const QObject, const char*, const char*, Qt::ConnectionType) const
/usr/include/qt4/QtCore/qobject.h:337:13: note: no known conversion for argument 2 from 'void (QAction::)(bool)' to 'const char'
In file included from /usr/include/qt4/QtGui/qmenu.h:48:0,
from /usr/include/qt4/QtGui/qmenubar.h:45,
from /usr/include/qt4/QtGui/QMenuBar:1,
from ../src/window.cpp:1:
/usr/include/qt4/QtGui/qaction.h:228:10: error: 'void QAction::triggered(bool)' is protected
../src/window.cpp:55:47: error: within this context
../src/window.cpp:56:46: error: no matching function for call to 'Window::connect(QAction* const&, void (QAction::)(bool), Window const, void (Window::)())'
../src/window.cpp:56:46: note: candidates are:
In file included from /usr/include/qt4/QtGui/qwidget.h:47:0,
from /usr/include/qt4/QtGui/qmenu.h:45,
from /usr/include/qt4/QtGui/qmenubar.h:45,
from /usr/include/qt4/QtGui/QMenuBar:1,
from ../src/window.cpp:1:
/usr/include/qt4/QtCore/qobject.h:204:17: note: static bool QObject::connect(const QObject, const char*, const QObject*, const char*, Qt::ConnectionType)
/usr/include/qt4/QtCore/qobject.h:204:17: note: no known conversion for argument 2 from 'void (QAction::)(bool)' to 'const char'
/usr/include/qt4/QtCore/qobject.h:217:17: note: static bool QObject::connect(const QObject*, const QMetaMethod&, const QObject*, const QMetaMethod&, Qt::ConnectionType)
/usr/include/qt4/QtCore/qobject.h:217:17: note: no known conversion for argument 2 from 'void (QAction::)(bool)' to 'const QMetaMethod&'
/usr/include/qt4/QtCore/qobject.h:337:13: note: bool QObject::connect(const QObject, const char*, const char*, Qt::ConnectionType) const
/usr/include/qt4/QtCore/qobject.h:337:13: note: no known conversion for argument 2 from 'void (QAction::)(bool)' to 'const char'
In file included from /usr/include/qt4/QtGui/qmenu.h:48:0,
from /usr/include/qt4/QtGui/qmenubar.h:45,
from /usr/include/qt4/QtGui/QMenuBar:1,
from ../src/window.cpp:1:
/usr/include/qt4/QtGui/qaction.h:228:10: error: 'void QAction::triggered(bool)' is protected
../src/window.cpp:58:46: error: within this context
../src/window.cpp:59:45: error: no matching function for call to 'Window::connect(QAction* const&, void (QAction::)(bool), Window const, void (Window::)())'
../src/window.cpp:59:45: note: candidates are:
In file included from /usr/include/qt4/QtGui/qwidget.h:47:0,
from /usr/include/qt4/QtGui/qmenu.h:45,
from /usr/include/qt4/QtGui/qmenubar.h:45,
from /usr/include/qt4/QtGui/QMenuBar:1,
from ../src/window.cpp:1:
/usr/include/qt4/QtCore/qobject.h:204:17: note: static bool QObject::connect(const QObject, const char*, const QObject*, const char*, Qt::ConnectionType)
/usr/include/qt4/QtCore/qobject.h:204:17: note: no known conversion for argument 2 from 'void (QAction::)(bool)' to 'const char'
/usr/include/qt4/QtCore/qobject.h:217:17: note: static bool QObject::connect(const QObject*, const QMetaMethod&, const QObject*, const QMetaMethod&, Qt::ConnectionType)
/usr/include/qt4/QtCore/qobject.h:217:17: note: no known conversion for argument 2 from 'void (QAction::)(bool)' to 'const QMetaMethod&'
/usr/include/qt4/QtCore/qobject.h:337:13: note: bool QObject::connect(const QObject, const char*, const char*, Qt::ConnectionType) const
/usr/include/qt4/QtCore/qobject.h:337:13: note: no known conversion for argument 2 from 'void (QAction::)(bool)' to 'const char'
In file included from /usr/include/qt4/QtGui/qmenu.h:48:0,
from /usr/include/qt4/QtGui/qmenubar.h:45,
from /usr/include/qt4/QtGui/QMenuBar:1,
from ../src/window.cpp:1:
/usr/include/qt4/QtGui/qaction.h:228:10: error: 'void QAction::triggered(bool)' is protected
../src/window.cpp:61:59: error: within this context
../src/window.cpp:62:52: error: no matching function for call to 'Window::connect(QAction* const&, void (QAction::)(bool), Window const, void (Window::)())'
../src/window.cpp:62:52: note: candidates are:
In file included from /usr/include/qt4/QtGui/qwidget.h:47:0,
from /usr/include/qt4/QtGui/qmenu.h:45,
from /usr/include/qt4/QtGui/qmenubar.h:45,
from /usr/include/qt4/QtGui/QMenuBar:1,
from ../src/window.cpp:1:
/usr/include/qt4/QtCore/qobject.h:204:17: note: static bool QObject::connect(const QObject, const char*, const QObject*, const char*, Qt::ConnectionType)
/usr/include/qt4/QtCore/qobject.h:204:17: note: no known conversion for argument 2 from 'void (QAction::)(bool)' to 'const char'
/usr/include/qt4/QtCore/qobject.h:217:17: note: static bool QObject::connect(const QObject*, const QMetaMethod&, const QObject*, const QMetaMethod&, Qt::ConnectionType)
/usr/include/qt4/QtCore/qobject.h:217:17: note: no known conversion for argument 2 from 'void (QAction::)(bool)' to 'const QMetaMethod&'
/usr/include/qt4/QtCore/qobject.h:337:13: note: bool QObject::connect(const QObject, const char*, const char*, Qt::ConnectionType) const
/usr/include/qt4/QtCore/qobject.h:337:13: note: no known conversion for argument 2 from 'void (QAction::)(bool)' to 'const char'
In file included from /usr/include/qt4/QtGui/qaction.h:255:0,
from /usr/include/qt4/QtGui/qmenu.h:48,
from /usr/include/qt4/QtGui/qmenubar.h:45,
from /usr/include/qt4/QtGui/QMenuBar:1,
from ../src/window.cpp:1:
/usr/include/qt4/QtGui/qactiongroup.h:95:10: error: 'void QActionGroup::triggered(QAction*)' is protected
../src/window.cpp:63:57: error: within this context
../src/window.cpp:64:51: error: no matching function for call to 'Window::connect(QActionGroup* const&, void (QActionGroup::)(QAction), Window* const, void (Window::)(QAction))'
../src/window.cpp:64:51: note: candidates are:
In file included from /usr/include/qt4/QtGui/qwidget.h:47:0,
from /usr/include/qt4/QtGui/qmenu.h:45,
from /usr/include/qt4/QtGui/qmenubar.h:45,
from /usr/include/qt4/QtGui/QMenuBar:1,
from ../src/window.cpp:1:
/usr/include/qt4/QtCore/qobject.h:204:17: note: static bool QObject::connect(const QObject*, const char*, const QObject*, const char*, Qt::ConnectionType)
/usr/include/qt4/QtCore/qobject.h:204:17: note: no known conversion for argument 2 from 'void (QActionGroup::)(QAction)' to 'const char*'
/usr/include/qt4/QtCore/qobject.h:217:17: note: static bool QObject::connect(const QObject*, const QMetaMethod&, const QObject*, const QMetaMethod&, Qt::ConnectionType)
/usr/include/qt4/QtCore/qobject.h:217:17: note: no known conversion for argument 2 from 'void (QActionGroup::)(QAction)' to 'const QMetaMethod&'
/usr/include/qt4/QtCore/qobject.h:337:13: note: bool QObject::connect(const QObject*, const char*, const char*, Qt::ConnectionType) const
/usr/include/qt4/QtCore/qobject.h:337:13: note: no known conversion for argument 2 from 'void (QActionGroup::)(QAction)' to 'const char*'
../src/window.cpp:68:5: warning: 'auto' changes meaning in C++11; please remove it [-Wc++0x-compat]
../src/window.cpp:68:10: error: 'file_menu' does not name a type
../src/window.cpp:69:5: error: 'file_menu' was not declared in this scope
../src/window.cpp:76:5: warning: 'auto' changes meaning in C++11; please remove it [-Wc++0x-compat]
../src/window.cpp:76:10: error: 'view_menu' does not name a type
../src/window.cpp:77:5: warning: 'auto' changes meaning in C++11; please remove it [-Wc++0x-compat]
../src/window.cpp:77:10: error: 'projection_menu' does not name a type
../src/window.cpp:78:5: error: 'projection_menu' was not declared in this scope
../src/window.cpp:80:5: warning: 'auto' changes meaning in C++11; please remove it [-Wc++0x-compat]
../src/window.cpp:80:10: error: 'projections' does not name a type
../src/window.cpp:81:10: warning: 'auto' changes meaning in C++11; please remove it [-Wc++0x-compat]
../src/window.cpp:81:15: error: 'p' does not name a type
../src/window.cpp:81:58: error: expected ';' before ')' token
../src/window.cpp:81:58: error: expected primary-expression before ')' token
../src/window.cpp:81:58: error: expected ';' before ')' token
../src/window.cpp:83:9: error: 'projections' was not declared in this scope
../src/window.cpp:83:32: error: 'p' was not declared in this scope
../src/window.cpp:87:5: error: 'projections' was not declared in this scope
In file included from /usr/include/qt4/QtGui/qaction.h:255:0,
from /usr/include/qt4/QtGui/qmenu.h:48,
from /usr/include/qt4/QtGui/qmenubar.h:45,
from /usr/include/qt4/QtGui/QMenuBar:1,
from ../src/window.cpp:1:
/usr/include/qt4/QtGui/qactiongroup.h:95:10: error: 'void QActionGroup::triggered(QAction*)' is protected
../src/window.cpp:88:50: error: within this context
../src/window.cpp:91:5: warning: 'auto' changes meaning in C++11; please remove it [-Wc++0x-compat]
../src/window.cpp:91:10: error: 'help_menu' does not name a type
../src/window.cpp:92:5: error: 'help_menu' was not declared in this scope
../src/window.cpp: In member function 'void Window::set_watched(const QString&)':
../src/window.cpp:161:11: warning: 'auto' changes meaning in C++11; please remove it [-Wc++0x-compat]
../src/window.cpp:161:16: error: 'files' does not name a type
../src/window.cpp:162:9: error: 'files' was not declared in this scope
../src/window.cpp:169:5: warning: 'auto' changes meaning in C++11; please remove it [-Wc++0x-compat]
../src/window.cpp:169:10: error: 'recent' does not name a type
../src/window.cpp:170:11: warning: 'auto' changes meaning in C++11; please remove it [-Wc++0x-compat]
../src/window.cpp:170:16: error: 'f' does not name a type
../src/window.cpp:171:5: error: 'recent' was not declared in this scope
../src/window.cpp:171:22: error: 'f' was not declared in this scope
../src/window.cpp: In member function 'void Window::rebuild_recent_files()':
../src/window.cpp:226:11: warning: 'auto' changes meaning in C++11; please remove it [-Wc++0x-compat]
../src/window.cpp:226:16: error: 'actions' does not name a type
../src/window.cpp:227:10: warning: 'auto' changes meaning in C++11; please remove it [-Wc++0x-compat]
../src/window.cpp:227:15: error: 'a' does not name a type
../src/window.cpp:231:5: error: expected ';' before 'recent_files'
../src/window.cpp:231:25: error: could not convert '((QMenu*)((Window*)this)->Window::recent_files)->QMenu::clear()' from 'void' to 'bool'
../src/window.cpp:233:5: error: expected primary-expression before 'for'
../src/window.cpp:233:5: error: expected ')' before 'for'
../src/window.cpp:233:10: warning: 'auto' changes meaning in C++11; please remove it [-Wc++0x-compat]
../src/window.cpp:233:15: error: 'f' does not name a type
../src/window.cpp:240:5: error: expected ';' before 'if'
../src/window.cpp:240:5: error: expected primary-expression before 'if'
../src/window.cpp:240:5: error: expected ';' before 'if'
../src/window.cpp:240:5: error: expected primary-expression before 'if'
../src/window.cpp:240:5: error: expected ')' before 'if'
../src/window.cpp:242:9: warning: 'auto' changes meaning in C++11; please remove it [-Wc++0x-compat]
../src/window.cpp:242:14: error: 'a' does not name a type
../src/window.cpp:243:33: error: 'a' was not declared in this scope
../src/window.cpp: In member function 'void Window::on_reload()':
../src/window.cpp:252:5: warning: 'auto' changes meaning in C++11; please remove it [-Wc++0x-compat]
../src/window.cpp:252:10: error: 'fs' does not name a type
../src/window.cpp:253:9: error: 'fs' was not declared in this scope
In file included from /usr/include/qt4/QtCore/QThread:1:0,
from ../src/loader.h:4,
from ../src/window.cpp:7:
/usr/include/qt4/QtCore/qthread.h: In member function 'bool Window::load_stl(const QString&, bool)':
/usr/include/qt4/QtCore/qthread.h:105:10: error: 'void QThread::started()' is protected
../src/window.cpp:266:30: error: within this context
../src/window.cpp:267:42: error: no matching function for call to 'Window::connect(Loader*&, void (QThread::)(), Window const, void (Window::*)())'
../src/window.cpp:267:42: note: candidates are:
In file included from /usr/include/qt4/QtGui/qwidget.h:47:0,
from /usr/include/qt4/QtGui/qmenu.h:45,
from /usr/include/qt4/QtGui/qmenubar.h:45,
from /usr/include/qt4/QtGui/QMenuBar:1,
from ../src/window.cpp:1:
.
.
.
ok just tell me if you want more cause theres a lot of it.
I want to build the static standalone 32-bit exe of fstl.
I used Windows 8 64 bit for doing that work.
For build the static Qt I use the https://wiki.qt.io/Building_a_static_Qt_for_Windows_using_MinGW article.
There is few free space on C disk. So I had installed the dynamic Qt environment and 32 bit mingw compiler to D:\Qt directory.
The Qt Version is 5.7.
I run powershell and executed windows-build-qt-static.ps1 script as
.\windows-build-qt-static.ps1 -QtStaticDir D:\Qt\Static -MingwDir D:\Qt\Tools\mingw530_32 -NoPause
The static Qt had been built normally.
I placed the fstl code to F:\fstl-master directory. For the static fstl.exe build I created on the desktop build.cmd file with code:
@echo off
set Path=%Path%;D:\Qt\Static\5.7.0\bin;D:\Qt\Tools\mingw530_32\bin
pushd F:\fstl-master\release
qmake ..\qt\fstl.pro
mingw32-make -f Makefile.Release
echo Done.
pause
I executed the build.cmd and static fstl.exe had been built normally. But that fstl.exe does not work. I had checked on Windows 7/8.
It's strange: that fstl.exe works normally on old Windows XP 32 bit.
The dynamic fstl.exe works normally on Windows XP/7/8 but for build without errors the following line is needed in fstl.pro:
LIBS += -lopengl32
The dynamic fstl.exe need many dll files and it's not conveniently.
I attached the static fstl.exe and screenshot of error.
What I did wrong?
Are there other methods to build static exe for Qt program?
fstl.zip
Somehow, the rendered canvas doesn't scale to cover the entire window, instead it stays small at the corner:
I've compiled fstl as following:
mkdir build
cd build
qmake ../qt/fstl.pro
make
./fstl
QMake version 3.0
Using Qt version 5.4.1 in /usr/lib
(Loading the project with QtCreator and building it from there yields the same issue)
I've tried tinkering with the transform and view matrices with no results :(
Hey, just a quick question. Working on using this for a project, but I'm looking to take snapshots of models, not have them rotating in a program. Does this produce snapshots of models? The renderings look great.
Edit: seems like a model viewer. Any thoughts of building in a snapshot tool? I may be working on one.
Hey there! This is a pretty cool piece of software, and it also looks extremely good. I'd really like to package it for Void Linux, but unfortunately the latest release is quite a bit buggy (I had to compile master to actually get it to work).
Do you think it would be possible to make a release? If you need any help, I can try to aid you.
My main issue is that the program does not remember all of the settings: window size and position, shading type, autoreload, and projection type. Somehow, it remembers the inverted zoom being checked, but that's literally the only thing.
My operating system is Fedora 24 64 bit. Videocard is Nvidia NVS 5200M. I use the proprietary nvidia driver.
Qt version is 5.6.1.
Qt5:
I compiled the fstl normally by qmake-qt5 and make commands. But fstl does not run.
vovk@dell:/mnt/datadisk1/Work/fstl-master/release$ ./fstl
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
With qt4 the fstl does not compile. I attached the log.
Would be nice to update all uses of QGL*
classes to use instead QOpenGL*
classes.
#64 fixes the linux build instructions, but the mac build instructions still rely on qmake.
I am on a Debian SID PPC64 big endian and installed fstl from Debian repo (http://ftp.ports.debian.org/debian-ports/pool-ppc64/main/f/fstl/) as well as a freshly compiled version with sources downloaded from git.
While trying to load a file, the GUI in the version installed from Debian (version 0.9.4-1) only show stl files with a lower case extension, whereas the freshly compiled version (version 0.9.5-snapshot) only shows those with an upper case extension.
See image below, on the left the version installed from Debian, on the right the freshly compiled version.
On the bottom of the image a list of the two files contained in the currently selected folder by both fstl versions, one with a lower case extension, and one with an upper case extension.
If I click on the "*.stl" on the left, or on "STL files" on the right in the lower-right corner of the file dialog no other options shows up.
Hi
I'm using fstl almost every day, and each time I'm surprised by the way the zoom has been decided: mouse wheel to up zoom out.
In (almost ?) every 2D and 3D softwares (Inkscape, Gimp, Blender, Onshape, etc) I'm using, the mouse wheel is used the other way (and I'm used to it):
Could you add an option to invert this default behavior ? (command line option is fine)
Thanks a lot !
Debian/Linux
Given several features have been implemented since the 0.9.4 release, maybe it's time to add a milestone for 0.9.5 and decide which issues should be completed for it.
A nice feature to have: to be able to safe the viewed image as a graphics png file.
right mouse button, save as, stl_filename.png or something like that.
thanks
This seems like a nice little utilty to batch produce STL thumbnails, how hard could it be to make it receive
And run as a console app, writing the resulting png in the output file, with the specified dimensions?
Following the instruction to building on MacOS,
qmake ../qt/fstl.pro
I get this error:
Cannot find file: ../qt/fstl.pro.
Thanks!
https://github.com/mkeeter/fstl/blob/d021118ee2f162c2e487c5454f51589d1797fdc1/src/loader.cpp#L120
At least OpenSCAD and FreeCAD (and probably other applications capable of producing ASCII STL) do not place space after the word solid when it's not followed by name.
(The only article saying that the space should always follow the word solid is the one on Wikipedia and I haven't yet found such information in any of the cited sources.)
When configuring on windows 10 using the latest version of CMake (3.10.2
) a warning is thrown because of the having CMAKE_AUTOMOC
and CMAKE_AUTOUIC
to on without explicitly setting the CMake policy CMP0071
:
We can fix this multiple ways:
CMP0071
CMAKE_AUTOMOC
and CMAKE_AUTOUIC
off and instead use qt5_wrap_cpp
and qt5_wrap_ui
.@mkeeter What are your thoughts?
I find the current zooming method (scroll down for zoom in) highly disturbing. ๐
By that, I mean, if the extension is uppercase, fstl refuses to open the file. Same thing for the "File open" menu; it won't show files with uppercase extensions.
I hate uppercase extensions as much as the next guy, but this is inconvenient when you download a git repo with .STL files.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.