All Projects

IDProjectCategory  ascTask TypeSeveritySummaryStatusOpened by
 886 QCAD BugtrackerBookBug ReportLow Wrong coordinates in the Orthographic Projections hands ...ClosedTamas TEVESZ Task Description

I have the book dating about a year back, with the following metadata (no other version information in there):

Producer:       FPDF 1.7
CreationDate:   Fri Aug 24 15:10:36 2012

I believe there is a slight error in the Orthographic Projections hands-on (it may not be there in current versions of the book, but since my download timeframe is long over, I can not check that – should that be the case, sorry for the noise).

On page 219, step 1 of the exercise (drawing the front view), it is said

Set the first corner of the rectangle at the origin of the drawing (1)
and the other corner at 30,20 (2).

On pages 225-226, steps 7 and 8, drawing a 45-degree auxiliary line for the right-side view, it is said

Set the position of the line at the origin of the drawing (coordinate 0/0).

0/0 is the “bottom left” corner of the top view. The correct coordinates for the auxiliary line’s position are 0/30, the “bottom left” corner of the front view.

(I had not realized the bug tracker had a Book category as well – hence this is a duplicate of an e-mail report I have sent to info@.)

 888 QCAD BugtrackerBookBug ReportLow Wrong pictures in hands-on ClosedTamas TEVESZ Task Description

In the “Drawing a Shape Using Absolute Polar Coordinates” hands-on, step 3, there are two toolbar pictures, each with a caption. The pictures don’t match the captions; ie. the pictures should be swapped.

 1040 QCAD BugtrackerDocumentationBug ReportLow Break out Manual on Circle/Ellipse does not respect Rem ...ClosedTamas TEVESZ Task Description

3.4.7 trial as well as community Git 9d3979

  • Draw a circle
  • B2
  • Make sure “Remove segment” is ticked
  • Select circle, then select two points to break out in between

Expected:

  • Segment gets removed (not really, but read on)

Actual:

  • Segment does not get removed, but circle is indeed broken into two arcs

Same for an ellipse.

I can see that by selecting two points on a closed circular shape it’s nigh impossible to tell which segment the user actually wants to remove :)

The documentation doesn’t mention this corner case. For clarity, a note detailing this effect a bit should be added to the docs.

On a slightly related note, I do not see why the feature couldn’t work on Polyline objects as well (with the same corner case restriction if it’s a closed polyline).

Very useful feature btw, thanks for it.

 875 QCAD BugtrackerQCAD (main)Bug ReportMedium malloc.h is deprecated ClosedTamas TEVESZ Task Description

This concerns the third-party openNURBS project and should probably be reported there, but I failed to find a bug tracker or anything of the sort, so here it goes.

malloc.h is deprecated (it has not been required since at least SUSv2, ratified in 1997). Apparently FreeBSD takes a more explicit stance against the use of it than other systems. The attached patch does away with it in openNURBS (conservatively leaving it in on Linux, but that should not really be neccessary either).

This makes the openNURBS component buildable on FreeBSD (9).

 876 QCAD BugtrackerQCAD (main)Bug ReportLow libexecinfo is needed on FreeBSD ClosedTamas TEVESZ Task Description

backtrace() and backtrace_symbols() need devel/libexecinfo on FreeBSD. The attached patch solves this, making QCAD fully buildable on FreeBSD (9).

Please note that I am by no means a qmake expert, this is likely to be a sub-standard way of attacking the problem at hand. Tweak as needed.

 885 QCAD BugtrackerQCAD (main)Bug ReportLow Xcode Clang wrongly reported as GCC ClosedTamas TEVESZ Task Description

src/core/RSettings.cpp:RSettings::getCompilerVersion() doesn’t account for Clang, used in Xcode. Instead of reporting the appropriate Clang version number, it reports the GCC compatibility level. The following patch addresses the issue.

diff --git a/src/core/RSettings.cpp b/src/core/RSettings.cpp
index 46dc6df..d6fbe63 100644
--- a/src/core/RSettings.cpp
+++ b/src/core/RSettings.cpp
@@ -363,7 +363,9 @@ QString RSettings::getQtVersion() {
 }
 
 QString RSettings::getCompilerVersion() {
-#if defined(Q_CC_GNU)
+#if defined(Q_CC_CLANG)
+    return QString("Clang %1.%2.%3").arg(__clang_major__).arg(__clang_minor__).arg(__clang_patchlevel__);
+#elif defined(Q_CC_GNU)
     return QString("gcc %1.%2.%3").arg(__GNUC__).arg(__GNUC_MINOR__).arg(__GNUC_PATCHLEVEL__);
 #elif defined(Q_CC_MSVC)
 #   if _MSC_VER==1310
 890 QCAD BugtrackerQCAD (main)Bug ReportVery Low Relative zero point mark artifact on print preview ClosedTamas TEVESZ Task Description

The relative zero point mark appears on the print preview screen. I don’t know, if it also gets printed (my printer setup appears to be broken at the moment), but it does not get exported to PDF, so I guess it is only on the print preview.

On a side note, I think that the reset command (qq) should also clear this. The manual states:

The Neutral State of QCAD
Menu:    Edit - Reset
Keycode: QQ

After the start, QCAD is in its neutral state. That means that no special tool is active and QCAD waits for you to click a menu or tool button to start a tool and start doing something.

As there is no relative zero point just after startup, I think it should also not persist a qq.

 892 QCAD BugtrackerQCAD (main)Bug ReportLow DXF compatibility issues when saved as DXF R15 / dxflib ClosedTamas TEVESZ Task Description

This report concerns QCAD 3.2.1 when used without the Teigha plugin for DXF / DWG support:

While playing around, I created a simple drawing with QCAD 3.2.0 with just some lines and dimensions.

QCAD 3.2.0 renders it as shown in dim-qcad320.png.

QCAD 2.0.5.0-community renders it as shown in dim-qcad2050free.png.

DraftSight V1R3.2 pops up a window upon loading that says “Drawing file requires recovery. Do you want to proceed?”. If I choose recovery, it renders it as shown in dim-draftsightv1r32.png (if I choose not to recover, it quits). If now I save the recovered drawing in “R2000-2002 ASCII drawing (*.dxf)” format (which looks closest to what QCAD 3.2 offers to save as by default), both QCAD 2 and QCAD 3.2 render this repaired drawing as intended (ie. as in dim-qcad320.png).

 897 QCAD BugtrackerQCAD (main)Feature RequestVery Low New arc tool ClosedTamas TEVESZ Task Description

While constructing around the lack of “Line tangent to a circle, perpendicular to a line” ( FS#881 ) which I hereby second :)), it struck me that it might be useful to have a tool that finds the center point of an existing circle/ellipse, or possibly more generally, the center point of an existing circular/elliptical arc.

 898 QCAD BugtrackerQCAD (main)Bug ReportLow Circle tool regression in git ec746571 ClosedTamas TEVESZ Task Description

Git ec746571 introduced the following artifact:

  • Start circle tool, center and radius
  • Click on point to select radius
  • Circle appears, along with a line to the coordinate system origin; also circle is not closed at around where this ghost line hits the circle entity
  • Happens with any circle tool, in slightly different manners
  • Doesn’t happen with any other tool, as far as I can tell

100% reproducible, doesn’t happen on git 6171094d.

This ghost line is also added to existing circles; ie. opening a drawing that has circles, a ghost line is attached to each of them. Not always pointing to the origin, but seems kind of random (changes with zoom level etc.)

It doesn’t seem to be a part of the drawing as such, as in ZA will not zoom so that all these ghost lines are fully visible, but the visual artifact remains.

If relevant: Linux/amd64 (Ubuntu 12.04), Qt 4.8.1, GCC 4.6.3, and as said, QCAD git ec746571.

Lines on attached illustration were not actually drawn in any way, shape or form; also they behave as if a particular line and its corresponding circle were a block, except one end of the line is firmly attached to origin.

 902 QCAD BugtrackerQCAD (main)Bug ReportLow Reduced font selection not working as expected ClosedTamas TEVESZ Task Description

QCAD GPL Git reba26f7a, completely new configuration (seemingly important); also happens with the binary QCAD 3.2.2 download.

I wanted to use the Standard CAD font and the Standard CAD font only. To achieve that, in Application Preferences→Draw→Text, I ticked “Use reduced selection of fonts” and hit “Uncheck all”.

My expectation is that in this case the Text tool lists only the Standard font.

What actually happens is that the “Standard” font stays disabled, is deselected, and the Text tool lists every font I have installed on my system (system-wide fonts only, TTF and whatever else), and none of the CAD fonts bundled with QCAD in fonts/ (not even Standard).

There seems to be some inconsistency in the handling of “Standard” – it is apparently meant to be selected no matter what, and its checkbox disabled so the end user isn’t even able to de-select it. What actually happens is that the Text preferences “Check all”/”Uncheck all” buttons do affect its selected state.

At this time, the saved configuration (in ~/.config/QCAD3) contains the following entries:

[Text]
ReducedFontList=@Invalid()
UseReducedFontList=true

Note that at this point the Text preferences screen indicates that the Standard entry is disabled and not selected, see fontsel-1.png

So I did the following as an experiment:

--- a/scripts/Edit/AppPreferences/TextPreferences/TextPreferences.js
+++ b/scripts/Edit/AppPreferences/TextPreferences/TextPreferences.js
@@ -58,7 +58,7 @@ TextPreferences.initPreferences = function(pageWidget, calledByPrefDialog, docum
         // always check 'standard':
         if (item.text().toLowerCase()==="standard") {
             item.setCheckState(Qt.Checked);
-            flags = new Qt.ItemFlags(item.flags() & ~Qt.ItemIsEnabled);
+            // flags = new Qt.ItemFlags(item.flags() & ~Qt.ItemIsEnabled);
         }
         if (list.contains(item.text())) {
             item.setCheckState(Qt.Checked);

At this point, the Text preferences screen has the “Standard” font enabled and still not selected, see fontsel-2.png

The saved configuration file still contains an invalid entry for the font list:

[Text]
ReducedFontList=@Invalid()
UseReducedFontList=true

(This is probably is as intended, since the list is not supposed to be empty, but it really is now.)

Now let’s select “Standard” in the Text preferences screen, Apply, and undo the above change to TextPreferences.js.

At this point, the configuration file contains what seems correct:

[Text]
ReducedFontList=@Variant(\0\0\0\t\0\0\0\x1\0\0\0\n\0\0\0\x10\0S\0t\0\x61\0n\0\x64\0\x61\0r\0\x64)
UseReducedFontList=true

The font list on the Text preferences screen has changed as seen on fontsel-3.png.

Note that now the “Standard” font is again disabled, but now it is selected.

At this point, the Text tool behaves as expected: there is only one entry, the “Standard” CAD font.

Summary: I see two related issues:

  • If I tick “Use reduced selection of fonts” for the first time, “Standard” starts as being unselected, and it can not as such be selected by ticking its checkbox, because it is disabled
  • “Check all” does select it, but then “Uncheck all” also unselects it, whereas it should be immutable to these operations (and be selected in the first place).

What *can* be done is “Check all”, then manually unselect every other font one by one, but this is probably not how it was intended to work.

 905 QCAD BugtrackerQCAD (main)Bug ReportMedium Text tool regression ClosedTamas TEVESZ Task Description

Happened somewhere between ab3e02 (works) and 67516a (doesn’t work).

In 67516a (current HEAD), when I attempt to launch the Text tool, the following is printed on stderr:

Warning:  Script Exception:
 "ReferenceError: Can't find variable: RTextBasedData" 
Warning:  "<anonymous>()@/tmp/qcad/scripts/Draw/Text/TextDialog/TextDialog.js:838"          

The Tool options toolbar does appear and it can be interacted with. The Text tool does not appear at all (and text input in the Toolbar can not be placed either).

In ab3e02, the Text tool works as usual.

Hope I got it right this time – several clean builds have been made to double-check results.

 907 QCAD BugtrackerQCAD (main)Bug ReportLow I, M file dialog doesn't work as intended (with fix) ClosedTamas TEVESZ Task Description

In scripts/Draw/Image/Image.js, while building the filter for the file dialog, constructs like this are used:

var formats = QImageReader.supportedImageFormats();

for (var i=0; i<formats.length; ++i) {
    var format = formats[i];

        if (format==="jpg" ||
            format==="tif") {
            continue;
        }

=== also checks for type equality, and since format is actually an object, it will never match. The result is that duplicates are not filtered from the list as the code suggests they were intended to be filtered, nor are formats that are not intended to be there.

The following patch fixes this:

diff --git a/scripts/Draw/Image/Image.js b/scripts/Draw/Image/Image.js
index 0a6400e..cc58c98 100644
--- a/scripts/Draw/Image/Image.js
+++ b/scripts/Draw/Image/Image.js
@@ -91,23 +91,23 @@ Image.prototype.getFileName = function() {
         var formatAlt = "";
 
         // ignore format aliases:
-        if (format==="jpg" ||
-            format==="tif") {
+        if (format=="jpg" ||
+            format=="tif") {
             continue;
         }
 
         // ignore unsupported formats:
-        if (format==="ico" || format==="mng" ||
-            format==="pbm" || format==="pgm" || format==="ppm" ||
-            format==="svg" || format==="svgz" ||
-            format==="xbm" || format==="xpm") {
+        if (format=="ico" || format=="mng" ||
+            format=="pbm" || format=="pgm" || format=="ppm" ||
+            format=="svg" || format=="svgz" ||
+            format=="xbm" || format=="xpm") {
             continue;
         }
 
-        if (format==="jpeg") {
+        if (format=="jpeg") {
             formatAlt = "jpg";
         }
-        else if (format==="tiff") {
+        else if (format=="tiff") {
             formatAlt = "tif";
         }
 
 941 QCAD BugtrackerQCAD (main)Bug ReportLow New old build error (on FreeBSD now) ClosedTamas TEVESZ Task Description

This seems to have somehow surfaced once again, this time on FreeBSD (that is, Linux builds are unaffected).

This diff, based on the suggestion from the forum post, seems to fix it:

--- a/src/3rdparty/qt-labs-qtscriptgenerator-4.8.5/qtbindings/qtbindings.pro
+++ b/src/3rdparty/qt-labs-qtscriptgenerator-4.8.5/qtbindings/qtbindings.pro
@@ -13,3 +13,7 @@ SUBDIRS = qtscript_core \
          qtscript_uitools
 
          #qs_eval
+
+freebsd* {
+       SUBDIRS -= qtscript_phonon
+}

Somehow (especially in light of the forum post) it doesn’t seem a very robust solution, though.

QCAD community, Git rev 3ff487, FreeBSD 9.2, Qt 4.8.5.

 944 QCAD BugtrackerQCAD (main)Bug ReportLow Build system: some dependencies are not rebuilt when ne ...ClosedTamas TEVESZ Task Description

As came up towards the end of  FS#892 .

What happens is a change in src/3rdparty/dxflib/src/dl_dxf.cpp does trigger a rebuild of release/libdxflib.a, but this does not, in turn, trigger a re-link of plugins/libqcaddxf.so, a (the?) consumer of libdxflib.a.

This causes partial rebuilds to be broken (I think I got puzzled by this earlier too).

How to reproduce: on a fully built tree, `touch src/3rdparty/dxflib/src/dl_dxf.cpp’ then `make’. Nothing but libdxflib.a gets rebuilt.

 946 QCAD BugtrackerQCAD (main)Bug ReportLow a79f70 broke examples/mainwindow/ ClosedTamas TEVESZ Task Description

I suspect it was a79f70, that’s when setCustomProperty() and friends changed.

(slightly reformatted so it doesn’t completely break preformatted display)

g++ -c -m64 -pipe -O2 -Wall -W -D_REENTRANT -DQT_WEBKIT -DQCAD_DLL -DPTHREADS
    -DHAVE_PTHREAD_H -DQT_NO_DEBUG -DQT_WEBKIT_LIB -DQT_SCRIPT_LIB
    -DQT_SCRIPTTOOLS_LIB -DQT_SVG_LIB -DQT_SQL_LIB -DQT_XMLPATTERNS_LIB -DQT_XML_LIB
    -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED
    -I/usr/share/qt4/mkspecs/linux-g++-64 -I. -I/usr/include/qt4/QtHelp
    -I/usr/include/qt4/QtDesigner -I/usr/include/qt4/QtUiTools
    -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtNetwork -I/usr/include/qt4/QtGui
    -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4/QtXml
    -I/usr/include/qt4/QtXmlPatterns -I/usr/include/qt4/QtSql
    -I/usr/include/qt4/QtSvg -I/usr/include/qt4/QtScriptTools
    -I/usr/include/qt4/QtScript -I/usr/include/qt4/QtWebKit -I/usr/include/qt4
    -I../../../src/core -I../../../src/core/math -I../../../src/grid
    -I../../../src/snap -I../../../src/gui -I../../../src/entity
    -I../../../src/operations -I../../../src/scripting -I../../../src/stemmer
    -I../../../src/scripting/ecmaapi -I../../../src/scripting/ecmaapi/generated
    -I../../../src/scripting/ecmaapi/adapters -I../../../src/io/dxf
    -I../../../src/spatialindex -I../../../src/3rdparty -I/usr/X11R6/include
    -Irelease -o release/MainWindow.o MainWindow.cpp
In file included from MainWindow.cpp:13:0:
../../../src/spatialindex/RSpatialIndexNavel.h: In member function ‘virtual void
    RSpatialIndexNavel::Visitor::visitData(std::vector<const SpatialIndex::IData*>&)’:
../../../src/spatialindex/RSpatialIndexNavel.h:191:77: warning: format ‘%Ld’
    expects argument of type ‘long long int’, but argument 2 has type
    ‘SpatialIndex::id_type {aka long int}’ [-Wformat]
MainWindow.cpp: In constructor ‘MainWindow::MainWindow(QWidget*)’:
MainWindow.cpp:79:54: error: no matching function for call to
    ‘RLineEntity::setCustomProperty(const char [14], int)’
MainWindow.cpp:79:54: note: candidate is:
../../../src/core/RObject.h:165:10: note:
    void RObject::setCustomProperty(const QString&, const QString&, const QVariant&)
../../../src/core/RObject.h:165:10: note:   candidate expects 3 arguments, 2 provided
MainWindow.cpp:80:66: error: no matching function for call to
    ‘RLineEntity::setCustomProperty(const char [17], const char [10])’
MainWindow.cpp:80:66: note: candidate is:
../../../src/core/RObject.h:165:10: note:
    void RObject::setCustomProperty(const QString&, const QString&, const QVariant&)
../../../src/core/RObject.h:165:10: note:   candidate expects 3 arguments, 2 provided
make[4]: *** [release/MainWindow.o] Error 1

Linux, Qt 4.8.1, GCC 4.6.4

 947 QCAD BugtrackerQCAD (main)Bug ReportLow Debug builds failing (Linux/FreeBSD) ClosedTamas TEVESZ Task Description

6a5c66 on both FreeBSD and Linux (particular example on FreeBSD). The following diff is present, but it should be a no-op in this regard:

--- a/shared.pri
+++ b/shared.pri
@@ -11,6 +11,7 @@ DEFINES += QCAD_DLL
 # output directory:
 CONFIG(debug, debug|release) {
     ROUTDIR = debug
+    QMAKE_CXXFLAGS_DEBUG += -ggdb3
 } else {
     ROUTDIR = release
 }
qmake-qt4 qcad.pro CONFIG=debug

Goes on a while, then bombs off at

g++ -c -pipe -g -ggdb3 -Wall -W -fPIC -DQCAD_DLL -DPTHREADS -DHAVE_PTHREAD_H
    -I/usr/local/share/qt4/mkspecs/freebsd-g++
    -I.
    -I/usr/local/include/qt4/QtHelp
    -I/usr/local/include/qt4/QtDesigner
    -I/usr/local/include/qt4/QtUiTools
    -I../../../../core
    -I../../../../core/math
    -I../../../../grid
    -I../../../../snap
    -I../../../../gui
    -I../../../../entity
    -I../../../../operations
    -I../../../../scripting
    -I../../../../stemmer
    -I../../../../scripting/ecmaapi
    -I../../../../scripting/ecmaapi/generated
    -I../../../../scripting/ecmaapi/adapters
    -I../../../../io/dxf
    -I../../../../spatialindex
    -I../../../../3rdparty
    -I.
    -I/usr/local/include/qt4
    -I/usr/local/include
    -o debug/qtscript_Global.o
    ../../generated_cpp/com_trolltech_qt_core/qtscript_Global.cpp

../../generated_cpp/com_trolltech_qt_core/qtscript_Global.cpp:6:25: error: qmetaobject.h: No such file or directory
../../generated_cpp/com_trolltech_qt_core/qtscript_Global.cpp:8:20: error: QVariant: No such file or directory
../../generated_cpp/com_trolltech_qt_core/qtscript_Global.cpp:10:21: error: qglobal.h: No such file or directory

The corresponding good release compile line is:

g++ -c -pipe -O2 -Wall -W -pthread -D_THREAD_SAFE -fPIC -DQCAD_DLL
    -DPTHREADS -DHAVE_PTHREAD_H -DQT_NO_DEBUG -DQT_WEBKIT_LIB
    -DQT_SCRIPT_LIB -DQT_SCRIPTTOOLS_LIB -DQT_SVG_LIB -DQT_SQL_LIB
    -DQT_XMLPATTERNS_LIB -DQT_XML_LIB -DQT_OPENGL_LIB -DQT_GUI_LIB
    -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED
    -I/usr/local/share/qt4/mkspecs/freebsd-g++
    -I.
    -I/usr/local/include/qt4/QtHelp
    -I/usr/local/include/qt4/QtDesigner
    -I/usr/local/include/qt4/QtUiTools
    -I/usr/local/include/qt4/QtCore
    -I/usr/local/include/qt4/QtNetwork
    -I/usr/local/include/qt4/QtGui
    -I/usr/local/include/qt4/QtOpenGL
    -I/usr/local/include/qt4/QtXml
    -I/usr/local/include/qt4/QtXmlPatterns
    -I/usr/local/include/qt4/QtSql
    -I/usr/local/include/qt4/QtSvg
    -I/usr/local/include/qt4/QtScriptTools
    -I/usr/local/include/qt4/QtScript
    -I/usr/local/include/qt4/QtWebKit
    -I/usr/local/include/qt4
    -I../../../../core
    -I../../../../core/math
    -I../../../../grid
    -I../../../../snap
    -I../../../../gui
    -I../../../../entity
    -I../../../../operations
    -I../../../../scripting
    -I../../../../stemmer
    -I../../../../scripting/ecmaapi
    -I../../../../scripting/ecmaapi/generated
    -I../../../../scripting/ecmaapi/adapters
    -I../../../../io/dxf
    -I../../../../spatialindex
    -I../../../../3rdparty
    -I.
    -I/usr/local/include
    -Irelease
    -I/usr/local/include/qt4
    -I/usr/local/include
    -o release/qtscript_Global.o
    ../../generated_cpp/com_trolltech_qt_core/qtscript_Global.cpp

The diff between them is suspiciously big (unique items only):

includes-wise:

--- incbad      2013-10-20 11:45:37.302711863 +0200
+++ incgood     2013-10-20 11:45:31.899711566 +0200
@@ -16,7 +16,19 @@
 -I../../../../stemmer
 -I/usr/local/include
 -I/usr/local/include/qt4
+-I/usr/local/include/qt4/QtCore
 -I/usr/local/include/qt4/QtDesigner
+-I/usr/local/include/qt4/QtGui
 -I/usr/local/include/qt4/QtHelp
+-I/usr/local/include/qt4/QtNetwork
+-I/usr/local/include/qt4/QtOpenGL
+-I/usr/local/include/qt4/QtScript
+-I/usr/local/include/qt4/QtScriptTools
+-I/usr/local/include/qt4/QtSql
+-I/usr/local/include/qt4/QtSvg
 -I/usr/local/include/qt4/QtUiTools
+-I/usr/local/include/qt4/QtWebKit
+-I/usr/local/include/qt4/QtXml
+-I/usr/local/include/qt4/QtXmlPatterns
 -I/usr/local/share/qt4/mkspecs/freebsd-g++
+-Irelease

Defines-wise:

--- defbad      2013-10-20 11:51:22.405716122 +0200
+++ defgood     2013-10-20 11:52:05.362693170 +0200
@@ -1,3 +1,17 @@
 -DHAVE_PTHREAD_H
 -DPTHREADS
 -DQCAD_DLL
+-DQT_CORE_LIB
+-DQT_GUI_LIB
+-DQT_NETWORK_LIB
+-DQT_NO_DEBUG
+-DQT_OPENGL_LIB
+-DQT_SCRIPTTOOLS_LIB
+-DQT_SCRIPT_LIB
+-DQT_SHARED
+-DQT_SQL_LIB
+-DQT_SVG_LIB
+-DQT_WEBKIT_LIB
+-DQT_XMLPATTERNS_LIB
+-DQT_XML_LIB
+-D_THREAD_SAFE

qmetaobject.h is on Qt/ and QtCore/, both of which is missing from the debug include path.

On Linux, it’s complaining about QtScript/QScriptExtensionPlugin (which is in /usr/include/qt4), diffs between includes:

--- incbad      2013-10-20 12:04:32.612710645 +0200
+++ incgood     2013-10-20 12:04:58.129714235 +0200
@@ -14,7 +14,21 @@
 -I../../../../snap
 -I../../../../spatialindex
 -I../../../../stemmer
+-I/usr/X11R6/include
+-I/usr/include/qt4
+-I/usr/include/qt4/QtCore
 -I/usr/include/qt4/QtDesigner
+-I/usr/include/qt4/QtGui
 -I/usr/include/qt4/QtHelp
+-I/usr/include/qt4/QtNetwork
+-I/usr/include/qt4/QtOpenGL
+-I/usr/include/qt4/QtScript
+-I/usr/include/qt4/QtScriptTools
+-I/usr/include/qt4/QtSql
+-I/usr/include/qt4/QtSvg
 -I/usr/include/qt4/QtUiTools
+-I/usr/include/qt4/QtWebKit
+-I/usr/include/qt4/QtXml
+-I/usr/include/qt4/QtXmlPatterns
 -I/usr/share/qt4/mkspecs/linux-g++-64
+-Irelease

Defines:

--- defbad      2013-10-20 12:07:16.961712166 +0200
+++ defgood     2013-10-20 12:07:38.831670098 +0200
@@ -1,4 +1,18 @@
 -DHAVE_PTHREAD_H
 -DPTHREADS
 -DQCAD_DLL
+-DQT_CORE_LIB
+-DQT_GUI_LIB
+-DQT_NETWORK_LIB
+-DQT_NO_DEBUG
+-DQT_OPENGL_LIB
+-DQT_SCRIPTTOOLS_LIB
+-DQT_SCRIPT_LIB
+-DQT_SHARED
+-DQT_SQL_LIB
+-DQT_SVG_LIB
 -DQT_WEBKIT
+-DQT_WEBKIT_LIB
+-DQT_XMLPATTERNS_LIB
+-DQT_XML_LIB
+-D_REENTRANT
948QCAD BugtrackerQCAD (main)Bug ReportLowmainwindow example segfaultsAssignedTamas TEVESZ Task Description

As far as I can tell, it never worked.

#0  0x0000000000490527 in QFormInternal::domPropertyToVariant ()
No symbol table info available.
#1  0x000000000042aea9 in QFormInternal::QAbstractFormBuilder::toVariant ()
No symbol table info available.
#2  0x00000000004498a6 in QFormInternal::QFormBuilder::applyProperties ()
No symbol table info available.
#3  0x000000000042475f in QFormInternal::FormBuilderPrivate::applyProperties ()
No symbol table info available.
#4  0x000000000042e83b in QFormInternal::QAbstractFormBuilder::create ()
No symbol table info available.
#5  0x00000000004493c0 in QFormInternal::QFormBuilder::create ()
No symbol table info available.
#6  0x000000000042182e in QFormInternal::FormBuilderPrivate::create ()
No symbol table info available.
#7  0x000000000042fa37 in QFormInternal::QAbstractFormBuilder::create ()
No symbol table info available.
#8  0x00000000004225a2 in QFormInternal::FormBuilderPrivate::create ()
No symbol table info available.
#9  0x0000000815eed3d7 in QFormInternal::QAbstractFormBuilder::load ()
   from /usr/home/ice/w/qcad/qcad/plugins/script/libqtscript_uitools.so.1.0.0
No symbol table info available.
#10 0x0000000815ededad in QUiLoader::load () from /usr/home/ice/w/qcad/qcad/plugins/script/libqtscript_uitools.so.1.0.0
No symbol table info available.
#11 0x0000000815eda326 in qtscript_QUiLoader_prototype_call (context=0x813262240)
    at ../../generated_cpp/com_trolltech_qt_uitools/qtscript_QUiLoader.cpp:282
        _q_arg0 = (QIODevice *) 0x813fe5610
        _q_arg1 = (QWidget *) 0x813ffdcd0
        _q_result = (QWidget *) 0x8006e2c00
        _id = <value optimized out>
        _q_self = (QUiLoader *) 0x813f08d40
#12 0x0000000805fc9f78 in QScript::FunctionWrapper::proxyCall () from /usr/local/lib/qt4/libQtScript.so.4
No symbol table info available.
#13 0x0000000805ee418f in QTJSC::NativeFuncWrapper::operator() () from /usr/local/lib/qt4/libQtScript.so.4
No symbol table info available.
#14 0x0000000805eb93ee in QTJSC::Interpreter::privateExecute () from /usr/local/lib/qt4/libQtScript.so.4
No symbol table info available.
#15 0x0000000805ec1ccd in QTJSC::Interpreter::execute () from /usr/local/lib/qt4/libQtScript.so.4
No symbol table info available.
#16 0x0000000805ec1ff9 in QTJSC::Interpreter::execute () from /usr/local/lib/qt4/libQtScript.so.4
No symbol table info available.
#17 0x0000000805fa9743 in QScriptEnginePrivate::evaluateHelper () from /usr/local/lib/qt4/libQtScript.so.4
No symbol table info available.
#18 0x0000000805faabc6 in QScriptEngine::evaluate () from /usr/local/lib/qt4/libQtScript.so.4
No symbol table info available.
#19 0x0000000800ac5aae in RScriptHandlerEcma::eval (this=0x811f435e0, script=<value optimized out>, 
    fileName=<value optimized out>) at RScriptHandlerEcma.cpp:855
        err = {d_ptr = {d = 0x7fffffffcf50}}
#20 0x0000000800ac65c5 in RScriptHandlerEcma::doScript (this=0x811f435e0, scriptFile=@0x7fffffffd2f0, 
    arguments=<value optimized out>) at RScriptHandlerEcma.cpp:851
        fi = {d_ptr = {d = 0x813f94700}}
        globalObject = {d_ptr = {d = 0x813ff1240}}
        contents = {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 3936}, alloc = 0, size = 0, 
    data = 0x809bb387a, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, 
  static shared_empty = {ref = {_q_value = 19}, alloc = 0, size = 0, data = 0x809bb389a, clean = 0, simpletext = 0, 
    righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, d = 0x811c11800, static codecForCStrings = 0x0}
#21 0x0000000000417d13 in MainWindow (this=0x7fffffffd4b0, parent=<value optimized out>) at MainWindow.cpp:99
No locals.
#22 0x0000000000416ad9 in main (argc=1, argv=<value optimized out>) at main.cpp:35
        app = <value optimized out>
        window = {<QMainWindow> = {<QWidget> = {<QObject> = {_vptr$QObject = 0x4992b0, static staticMetaObject = {d = {
            superdata = 0x0, stringdata = 0x809933ae0 "QObject", data = 0x809933b80, extradata = 0x809ba94c0}}, 
        static staticMetaObjectExtraData = {objects = 0x0, 
          static_metacall = 0x80985cd80 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>}, d_ptr = {
          d = 0x811d28600}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x80993cc40 "Qt", 
            data = 0x809940560, extradata = 0x0}}}, <QPaintDevice> = {_vptr$QPaintDevice = 0x499478, painters = 0}, 
      static staticMetaObject = {d = {superdata = 0x809ba94e0, stringdata = 0x808e66be0 "QWidget", data = 0x808e670c0, 
          extradata = 0x809282360}}, static staticMetaObjectExtraData = {objects = 0x0, 
        static_metacall = 0x8087899a0 <QWidget::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>}, 
      data = 0x811d28748}, static staticMetaObject = {d = {superdata = 0x809282380, stringdata = 0x808ec04c0 "QMainWindow", 
        data = 0x808ec0660, extradata = 0x8092abc60}}, static staticMetaObjectExtraData = {objects = 0x8092d1880, 
      static_metacall = 0x808e5aaf0 <QMainWindow::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>}}, 
  documentInterface = 0x811d31600}
        ret = <value optimized out>
952QCAD BugtrackerQCAD (main)Feature RequestLowDimensions: manually control arrow positionAssigned3Tamas TEVESZ Task Description

See drawing: I can’t seem to be able to manually change to the “To” variants – that is, override the decision of the label/arrow placement engine.

The circle in the attachment is a borderline example of when even just in this form I would more like it on the outside. If the drawing is crowded in that area, it would be even more useful to have it the other way around.

 960 QCAD BugtrackerQCAD (main)Bug ReportLow Pinch gesture support bindings broke FreeBSD build ClosedTamas TEVESZ Task Description
g++ -c -pipe -O2 -Wall -W -pthread -D_THREAD_SAFE -fPIC -DQCAD_DLL -DPTHREADS 
  -DHAVE_PTHREAD_H -DQT_NO_DEBUG -DQT_WEBKIT_LIB -DQT_SCRIPT_LIB
  -DQT_SCRIPTTOOLS_LIB -DQT_SVG_LIB -DQT_SQL_LIB -DQT_XMLPATTERNS_LIB -DQT_XML_LIB
  -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED
  -I/usr/local/share/qt4/mkspecs/freebsd-g++ -I. -I/usr/local/include/qt4/QtHelp
  -I/usr/local/include/qt4/QtDesigner -I/usr/local/include/qt4/QtUiTools
  -I/usr/local/include/qt4/QtCore -I/usr/local/include/qt4/QtNetwork
  -I/usr/local/include/qt4/QtGui -I/usr/local/include/qt4/QtOpenGL
  -I/usr/local/include/qt4/QtXml -I/usr/local/include/qt4/QtXmlPatterns
  -I/usr/local/include/qt4/QtSql -I/usr/local/include/qt4/QtSvg
  -I/usr/local/include/qt4/QtScriptTools -I/usr/local/include/qt4/QtScript
  -I/usr/local/include/qt4/QtWebKit -I/usr/local/include/qt4 -I../../../../core
  -I../../../../core/math -I../../../../grid -I../../../../snap -I../../../../gui
  -I../../../../entity -I../../../../operations -I../../../../scripting
  -I../../../../stemmer -I../../../../scripting/ecmaapi
  -I../../../../scripting/ecmaapi/generated
  -I../../../../scripting/ecmaapi/adapters -I../../../../io/dxf
  -I../../../../spatialindex -I../../../../3rdparty -I. -I/usr/local/include
  -Irelease -I/usr/local/include/qt4 -I/usr/local/include -o
  release/qtscript_QPinchGesture.o
  ../../generated_cpp/com_trolltech_qt_gui/qtscript_QPinchGesture.cpp
../../generated_cpp/com_trolltech_qt_gui/qtscript_QPinchGesture.cpp:53: error: 
  redefinition of 'struct QMetaTypeId<QFlags<QPinchGesture::ChangeFlag> >'
/usr/local/include/qt4/QtGui/qgesture.h:202: error: previous definition of 
  'struct QMetaTypeId<QFlags<QPinchGesture::ChangeFlag> >'
../../generated_cpp/com_trolltech_qt_gui/qtscript_QPinchGesture.cpp:240: 
  warning: 'QScriptValue qtscript_QPinchGesture_prototype_call(QScriptContext*,
  QScriptEngine*)' defined but not used
*** [release/qtscript_QPinchGesture.o] Error code 1
$ sed '202!d' /usr/local/include/qt4/QtGui/qgesture.h
Q_DECLARE_METATYPE(QPinchGesture::ChangeFlags)
$ sed '53!d' <...>/qt-labs-qtscriptgenerator-4.8.5/<...>/qtscript_QPinchGesture.cpp
Q_DECLARE_METATYPE(QFlags<QPinchGesture::ChangeFlag>)

Using Qt version 4.8.5 in /usr/local/lib/qt4.

 978 QCAD BugtrackerQCAD (main)Feature RequestLow "Frequently used" items for text ClosedTamas TEVESZ Task Description

Just floating an idea, recently I’ve had to use the diameter symbol many times in texts. At this moment it’s a chore, as that usually means browser, look for a page with symbol in it, copy, paste.

I wonder if the text entry could have some sort of a box for “frequently used” characters (or even phrases, or whatnot, but I presume a handful special characters that everyone can tailor to their needs would already be a huge plus)? Like, a 3×3 to 5×5 matrix below the Alignment panel or something along these lines.

 1000 QCAD BugtrackerQCAD (main)Bug ReportLow Drawing prefs/Printing/Colors behaves oddly ClosedTamas TEVESZ Task Description

Both community and Git head, on Linux and FreeBSD.

Not sure how to describe the odd behaviour... Draw something with a couple of colors, turn on Print preview, then modify Drawing prefs/Print/Colors/Color mode several times, setting it to a different mode than what it is currently, Apply, OK.

What happens is sometimes it doesn’t change (that is, the next time this preference is opened, it is still at Full Color even if I have just clicked, applied and OK’d Grayscale etc.).

Further, it seems that the selection is not reflected at the print preview view, or rather, it is off by one – if I finally manage to switch to Grayscale, it stays Full Color. Then if I somehow manage to switch to Black/white, the print preview changes to Grayscale etc.

I can try to make a screen movie if necessary.

 1001 QCAD BugtrackerQCAD (main)Bug ReportLow PDF export fails silently ClosedTamas TEVESZ Task Description

I only have Git head operational now (am on FreeBSD ATM), but looking at the respective scripts in the downloadable Pro trial, it is affected too. Also, only FreeBSD at the moment to try, but the nature of the bug makes me say all systems are affected.

PDF export fails silently if a file name for which no parent directory exists or that parent directory is not writeable by the current user.

How to reproduce: XD, then in the Save As dialog, manually specify a nonexistent directory + a file name (eg. “/nonexistent/out.pdf” on POSIX, whatever on Windows) or, if you will, browse to a directory for which you have no write permission, specify any file name, then hit Save (case in point: it is not limited to the probably rare-ish cases when the end user browses to the destination directory as opposed to just quickly typing in the full file path).

Result is “Export complete” on the status line. It obviously didn’t complete.

The cause is insufficient checking of the return value of QPainter::begin() in scripts/File/Print/Print.js:

 149     var painter = new QPainter();
 150     painter.begin(printer);

This will actually return false if the output format is PdfFormat and it can not create OutputFileName (cf. Print.js:70-71).

I am not sure how (if at all) it can fail if printing is done to an actual printer.

Setting to medium since in some sense it is silent data loss.

1008QCAD BugtrackerQCAD (main)Bug ReportLowDXF (dxflib) compat issuesAssignedTamas TEVESZ Task Description

Git head as well as 3.4.5 (trial), both with dxflib 3.3.4.0.

Start up QCAD, (with existing or new configuration, doesn’t seem to matter), “Save as” the completely empty drawing, choose “R15 (dxflib)” on Pro (only this one is available on community), save drawing.

Fire up AutoCAD 2000, try to load the empty drawing just saved.

Result:

DXF read error
Error in APPID Table
DXF read error on line 941.
Invalid or incomplete DXF input -- drawing discarded.

Problem not present when a completely empty drawing saved using Teigha in R15 format is opened (ie. it just results in an empty drawing in AutoCAD 2000). Problem is also not present when saving an existing drawing with Pro (trial) with Teigha and opening it in AutoCAD 2000. Problem does present when trying to open a dxflib-saved drawing in AutoCAD 2000.

Empty drawings created with both dxflib 3.3.4.0 in QCAD Pro 3.4.5 trial and Teigha whatever in QCAD Pro trial 3.4.5 are attached. (Community Git 135fd0 is identical to Pro - same dxflib version.)

1046QCAD BugtrackerQCAD (main)Feature RequestLowPlease add script bindings for Qt 4.8.6 and 5.2.1AssignedTamas TEVESZ Task Description

These are the versions Ubuntu 14.04 comes with, and since it’s an LTS version, it will linger around a while.

(Despite the fact that the Qt4 packages are versioned 4.8.5, qmake –version says 4.8.6, so it doesn’t find the 4.8.5 bindings.)

Thanks,

 1050 QCAD BugtrackerQCAD (main)Bug ReportLow Compilation error under Linux / X11 (c60189 build failu ...ClosedTamas TEVESZ Task Description

This has been in for a couple of revisions now

RS.cpp: In static member function ‘static bool RS::compare(const QVariant&, const QVariant&)’:
RS.cpp:204:30: error: expected unqualified-id before ‘int’
     if (v1.type()==QVariant::Bool && v2.type()==QVariant::Bool) {
                              ^
RS.cpp:204:30: error: expected ‘)’ before ‘int’

g++ 4.8.1, Qt 4.8.4, Ubuntu 12.10.

 1054 QCAD BugtrackerQCAD (main)Bug ReportLow About box ceased to work ClosedTamas TEVESZ Task Description

e51f274, Linux x64, Qt 4.8.4, g++ 4.8.1, with the following diff present as per  FS#1050  for tests:

--- a/src/core/RS.cpp
+++ b/src/core/RS.cpp
@@ -36,6 +36,7 @@
 
 #if defined(Q_WS_X11)
 #include <X11/Xlib.h>
+#include "/.old.linux/usr/include/fixx11h.h"
 #endif
 
 const double RS::PointTolerance = 1.0e-9;

The Help→About dialog ceased to pop up or otherwise work; instead, there’s this debug message printed to the console:

Warning:  "QFormBuilder was unable to create a custom widget of the class 'QWebView'; defaulting to base class 'QWidget'." 
Warning:  "QFormBuilder was unable to create a custom widget of the class 'QWebView'; defaulting to base class 'QWidget'." 
Warning:  "QFormBuilder was unable to create a custom widget of the class 'QWebView'; defaulting to base class 'QWidget'." 
Warning:  "QFormBuilder was unable to create a custom widget of the class 'QWebView'; defaulting to base class 'QWidget'." 

This also pops up one time at application startup, as far as I can tell, just before the main window starts to get mapped.

 1056 QCAD BugtrackerQCAD (main)RefactoringVery Low Dead and wrong code in RSPlatform.cpp ClosedTamas TEVESZ Task Description

I am considering pushing the following diff:

--- a/src/core/RSPlatform.cpp
+++ b/src/core/RSPlatform.cpp
@@ -205,25 +205,6 @@ int RS::getCpuCores() {
     cores = sysinfo.dwNumberOfProcessors;
 #elif defined(Q_OS_UNIX)
     cores = sysconf( _SC_NPROCESSORS_ONLN );
-#elif defined (Q_OS_MAC) || defined (Q_OS_BSD4) || [...]
-    nt mib[4];
-    size_t len;
-
-    /* set the mib for hw.ncpu */
-    mib[0] = CTL_HW;
-    mib[1] = HW_AVAILCPU; // alternatively, try HW_NCPU;
-
-    /* get the number of CPUs from the system */
-    sysctl(mib, 2, &cores, &len, NULL, 0);
-
-    if (cores < 1) {
-        mib[1] = HW_NCPU;
-        sysctl( mib, 2, &cores, &len, NULL, 0 );
-    }
-#elif defined(Q_OS_HPUX)
-    cores = mpctl(MPC_GETNUMSPUS, NULL, NULL);
-#elif defined(Q_OS_IRIX)
-    cores = sysconf( _SC_NPROC_ONLN );
 #endif

(truncated list to manage size)

I see that most of this was put in there as a kind of a note-to-self originally, however _SC_NPROCESSORS_ONLN is implemented by every realistically possible targets anyway, so for all practical purposes, this is dead weight.

A couple of questions remain, though:

  • #ifdef Q_OS_WIN32 should probably be Q_OS_WIN, so as to include win64 as well.
  • Assuming the real purpose for this function is to determine how many parts a particular task is to be split into in the future, if and when QCAD gets the need to split expensive tasks among multiple CPUS, “core” probably shouldn’t be static - CPUs are hot-pluggable today, and while one probably doesn’t do that on a laptop, it’s not unfeasible in, say, a VDI environment.

Thoughts?

 1063 QCAD BugtrackerQCAD (main)Bug ReportLow File dialogs stopped working ClosedTamas TEVESZ Task Description

Git 4738fe, Linux/FreeBSD, Qt 4.8

Start QCAD, File→Open, nothing happens. Draw something, File→Save, nothing happens. File→Save As, nothing happens. File→Quit, it asks if unsaved changes need to be saved, click Save, the following is printed in the console:

Warning:  Script Exception:
 "ReferenceError: Can't find variable: qcadInitFileDialog" 
Warning:  "<anonymous>()@[...]/qcad/scripts/File/SaveAs/SaveAs.js:116" 

Autosave does work, it creates a seemingly good DXF (only simple case tested).

 1065 QCAD BugtrackerQCAD (main)Bug ReportLow Display artifact with Ray/XLine ClosedTamas TEVESZ Task Description

Git d0eaf0, Linux/FreeBSD, Qt 4.8

Start up QCAD, *do not pan or change zoom level*. Draw a Ray or an XLine so that it (its extension, in case of Ray) goes through (0,0) and is 45 degrees (ie. draw y = x).

In this case and this case only, the Ray/XLine will be reduced to a line segment exactly between its start- and end points. It seems that this is only a visual artifact: if you pan or zoom now, the segment will be restored to what it’s supposed to be.

If you change zoom/pan back to what it was at startup, the artifact re-manifests itself.

Some flashes indicate that there are some other positions, not just the initial view, that also bring this up (ie. if you pan to a specific position, artifact appears again; it’s probably deterministic, too, but I can’t seem to be able to stop at that exact point while panning so I could count or something).

 1071 QCAD BugtrackerQCAD (main)Feature RequestVery Low (Bitmap) scaling convenience option Closed1Tamas TEVESZ Task Description

This can be done as is in QCAD today, but a quick convenience UI bit would be much appreciated.

Suppose you are working off a bitmap image (transcribing old scan, or you got your apartment’s floor plan like this, because, uh, what tenant needs DXF). It has dimensions markers and everything, but fat chance it’ll be to actual CAD scale after importing.

So, to bring it to scale, you measure between two tick marks on the scale, compute ratio based on measurement and what’s written on the dimension line, and do a scale operation (you can also have QCAD compute the ratio by using math expression, whatever).

That works fine.

A purely just for convenience function to do that would be much appreciated: pick two points, enter what the actual distance between them is, poof bam, appropriate scaling operation is applied.

As a twist, there could be some other bitmap skewing options, like “the points I’ve selected are on a horizontal/vertical line/at an angle of X degrees, then the bitmap would also be applied this transform.

 1113 QCAD BugtrackerQCAD (main)TaskLow Updating spatialindex? ClosedTamas TEVESZ Task Description

Prompted by d9beb4 - this is actually fixed in current upstream sources (by killing bzero in favor of memset, which is the right thing to do).

It might worth considering to update the spatialindex component.

 1200 QCAD BugtrackerQCAD (main)Feature RequestLow Embed fonts in exported PDF ClosedTamas TEVESZ Task Description

This is not the same as  FS#782 .

Is it possible to have referenced fonts embedded in the exported PDF files somehow? Sort of like producing PDF/A (not really, but at least with the fonts referenced being included)?

I have played around a little with QPrinter::setFontEmbedding(), but it didn’t really produce any results (pro or con). I am not sure it can even be done, as looking around there are numerous references (rather questions and RFEs) for creating PDF/A-3 format PDFs with Qt, but I am yet to bump into a resolution. I almost have a feeling that generating PDF/A-1 files is possible, but I have not found any definite guidelines or ways to that either.

The use case is obvously when you don’t have a particular font installed on the system you are printing your designs on, for example.

1473QCAD BugtrackerQCAD (main)Feature RequestLow"Partial" circular/radial dimensionsAssigned2Tamas TEVESZ Task Description

This is kind of related to FS#952, or rather a superset of it.

Consider the situation in the attached image. There is a perfectly good, albeit really shallow arc, making the radius somewhere in the vicinity of 600 millimeters, and the radial dimension being drawn accordingly.

Considering the other dimensions of the part, this is completely unusable, even to work with, really, but definitely so when it needs to be put on paper.

It would be nice to have some sort of “partial” (for my lack of a better word) radial/diametric dimensions where the dimension length can be adjusted.

Considering that this can be done with Leader, maybe a better (more generic) solution would be for Leader type dimensions to have options so they could automatically generate labels for various dimensions of a selected entity – sort of like having the Prefix/Tolerance/Scale options the other dimensions have, and have some additional fields there for selected entity and maybe dimension type (for example, radial or diametric for an arc-type entity).

 1474 QCAD BugtrackerQCAD (main)Bug ReportLow Dimension > Leader: changing options breaks tool ClosedTamas TEVESZ Task Description

Community 3.15.5.3 (Git 9c49f08b), FreeBSD 10.3, Qt 5.5.1

Start the Dimension Leader tool, click a point. While the rubber line is active, click the “Arrow head” option to toggle it (the effect is seen on the rubber line immediately). Now click it again to toggle. The entire dimension disappears with no appreciable trace left anywhere. The DL tool stays active.

Expected outcome would be for the dimension to just toggle the arrow head style.

This only seems to happen if this double-toggling is done as long as no segment is actually created yet (i.e. once at least one segment is actually set, the repeated toggling works as expected).

 1477 QCAD BugtrackerQCAD (main)Bug ReportLow exception in Viewport.js: sprintf not defined ClosedTamas TEVESZ Task Description

Git 21d95c48, Linux x64, Qt5

Starting QCAD causes it to crash:

QCAD version  3.15.5.4
02:17:30: Debug:    RDxfPlugin::init
02:17:30: Debug:    RExamplePlugin::init
02:17:30: Debug:    TransactionListenerPlugin::init
02:17:31: Debug:    TIMER:  187000000 ns ( 187 ms )  -  "loading add-ons"
02:17:33: Debug:    TIMER:  1492000000 ns ( 1492 ms )  -  "initializing add-ons"
02:17:35: Debug:    TransactionListenerPlugin::postInit
02:17:35: Debug:    got transaction
Warning:  RScriptHandlerEcma::eval: script engine exception:  "ReferenceError: Can't find variable: sprintf"
Warning:  "<anonymous>(widget = RMdiChildQt(0x4e90100), documentInterface = RDocumentInterface(0x4e934e0)) \
        at /home/ice/w/qcad/qcad/scripts/Widgets/Viewport/Viewport.js:52\n<anonymous>() at \
        /home/ice/w/qcad/qcad/scripts/File/OpenFile/../NewFile/NewFile.js:224\n<anonymous>() at \
        /home/ice/w/qcad/qcad/scripts/File/OpenFile/../NewFile/NewFile.js:87\n<eval>() at 1\nslotTrigger() at \
        -1\nopenFiles(args = , createNew = true) at scripts/autostart.js:204\nmain() \
        at scripts/autostart.js:743\n<global>() at scripts/autostart.js:780"
Warning:  RScriptHandlerEcma::eval: script engine exception:  "ReferenceError: Can't find variable: sprintf"
Warning:  "<anonymous>(widget = RMdiChildQt(0x4e90100), documentInterface = RDocumentInterface(0x4e934e0)) \
        at /home/ice/w/qcad/qcad/scripts/Widgets/Viewport/Viewport.js:52\n<anonymous>() \
        at /home/ice/w/qcad/qcad/scripts/File/OpenFile/../NewFile/NewFile.js:224\n<anonymous>() \
        at /home/ice/w/qcad/qcad/scripts/File/OpenFile/../NewFile/NewFile.js:87\n<eval>() at 1\nslotTrigger() \
        at -1\nopenFiles(args = , createNew = true) at scripts/autostart.js:204\nmain() \
        at scripts/autostart.js:743\n<global>() at scripts/autostart.js:780"
Warning:  At least one uncaught exception:
Warning:  "<anonymous>(widget = RMdiChildQt(0x4e90100), documentInterface = RDocumentInterface(0x4e934e0)) at \
        /home/ice/w/qcad/qcad/scripts/Widgets/Viewport/Viewport.js:52\n<anonymous>() at \
        /home/ice/w/qcad/qcad/scripts/File/OpenFile/../NewFile/NewFile.js:224\n<anonymous>() at \
        /home/ice/w/qcad/qcad/scripts/File/OpenFile/../NewFile/NewFile.js:87\n<eval>() at 1\nslotTrigger() at \
        -1\nopenFiles(args = , createNew = true) at scripts/autostart.js:204\nmain() at \
        scripts/autostart.js:743\n<global>() at scripts/autostart.js:780"
02:17:35: Debug:    "<global>() at 52"

Seems to be a fallout following a1941e2 (removal of sprintf.js from library includes).

Fix:

diff --git a/scripts/Widgets/Viewport/Viewport.js b/scripts/Widgets/Viewport/Viewport.js
index d9bc286..10b9b18 100644
--- a/scripts/Widgets/Viewport/Viewport.js
+++ b/scripts/Widgets/Viewport/Viewport.js
@@ -17,6 +17,8 @@
  * along with QCAD.
  */
 
+include("scripts/sprintf.js");
+
 if (new QFileInfo(autoPath("scripts/Navigation/DefaultNavigation/DefaultNavigation.js")).exists()) {
     include("scripts/Navigation/DefaultNavigation/DefaultNavigation.js");
 }
 1482 QCAD BugtrackerQCAD (main)Bug ReportLow FTBFS on FreeBSD ClosedTamas TEVESZ Task Description

Git 3ed32041, FreeBSD 10.3, amd64

Qt had been updated from 5.5.1 to 5.6.1 just recently. This resulted in two FTBFSs:

- Missing script bindings for 5.6.1:

--- /dev/null
+++ b/src/3rdparty/qt-labs-qtscriptgenerator-5.6.1/qt-labs-qtscriptgenerator-5.6.1.pro
@@ -0,0 +1,4 @@
+include( ../../../shared.pri )
+
+SUBDIRS = ../qt-labs-qtscriptgenerator-5.5.0/qtbindings
+TEMPLATE = subdirs

After this,

- Project ERROR: Unknown module(s) in QT: webenginewidgets

--- a/shared.pri
+++ b/shared.pri
@@ -46,8 +46,8 @@ macx-ios-* {
 
 !r_mobile {
     greaterThan(QT_MAJOR_VERSION, 4) {
-        greaterThan(QT_MINOR_VERSION, 5) {
-            # Qt >= 5.6
+        greaterThan(QT_MINOR_VERSION, 6) {
+            # Qt >= 5.7
             QT += webenginewidgets
         }
         else {
 1499 QCAD BugtrackerQCAD (main)SuggestionLow Add script generator for Qt 5.6.2 ClosedTamas TEVESZ Task Description

As it says on the tin - please add script generator for Qt 5.6.2.

 1500 QCAD BugtrackerQCAD (main)Bug ReportVery Low Some plugins not built right in debug mode ClosedTamas TEVESZ Task Description

Building current HEAD (5468b69) with:

/usr/local/lib/qt5/bin/qmake \
        QMAKE_CXXFLAGS="-g -ggdb3 -I/usr/local/include" \
        QMAKE_LIBS="-lcxxrt -L/usr/local/lib" \
        -r
make debug
tinky:~/w/qcad/qcad$ ../qcad.sh
Launching QCAD debug
QCAD version  3.15.5.7
RPluginLoader.cpp:67, static QStringList RPluginLoader::getPluginFiles():
11:25:06: Debug:    Ignoring release plugin built in debug mode:  "libqcadexample.so"
RPluginLoader.cpp:67, static QStringList RPluginLoader::getPluginFiles():
11:25:06: Debug:    Ignoring release plugin built in debug mode:  "libtransactionlistener.so"
RDxfPlugin.cpp:9, virtual bool RDxfPlugin::init():
11:25:06: Debug:    RDxfPlugin::init
RDebug.cpp:81, static int RDebug::stopTimer(int, const QString &, int):
11:25:15: Debug:    TIMER:  1038000000 ns ( 1038 ms )  -  "loading add-ons"
RDebug.cpp:81, static int RDebug::stopTimer(int, const QString &, int):
11:25:19: Debug:    TIMER:  18446744073365584320 ns ( 18446744073365 ms )  -  "initializing add-ons"
RScriptHandlerEcma.cpp:1468, static QScriptValue RScriptHandlerEcma::ecmaMessageHandler(QScriptContext *, QScriptEngine *, RS::MessageType):

For whatever reason, libqcadexample.so and libtransactionlistener.so don’t get named _debug.so (which seems to be the cause for the message), while libqcaddxf_debug.so seems to be OK.

The following diff sorts this out, with no apparent ill effect:

diff --git a/support/examples/exampleplugin/exampleplugin.pro b/support/examples/exampleplugin/exampleplugin.pro
index 0c58c56..d72a866 100644
--- a/support/examples/exampleplugin/exampleplugin.pro
+++ b/support/examples/exampleplugin/exampleplugin.pro
@@ -1,7 +1,8 @@
-include(../../../shared.pri)
 CONFIG      += plugin
 TARGET      = $${RLIBNAME}example
 
+include(../../../shared.pri)
+
 TEMPLATE    = lib
 HEADERS     = RExamplePlugin.h
 SOURCES     = RExamplePlugin.cpp
diff --git a/support/examples/transactionlistener/transactionlistener.pro b/support/examples/transactionlistener/transactionlistener.pro
index ed6c84d..7ee9bef 100644
--- a/support/examples/transactionlistener/transactionlistener.pro
+++ b/support/examples/transactionlistener/transactionlistener.pro
@@ -1,7 +1,8 @@
-include(../../../shared.pri)
 CONFIG      += plugin
 TARGET      = transactionlistener
 
+include(../../../shared.pri)
+
 TEMPLATE    = lib
 HEADERS     = TransactionListenerPlugin.h
 SOURCES     = TransactionListenerPlugin.cpp
 1728 QCAD BugtrackerQCAD (main)SuggestionLow Script bindings for Qt 5.9.4 ClosedTamas TEVESZ Task Description

Please add script bindings for Qt 5.9.4, thank you.

 1854 QCAD BugtrackerQCAD (main)Bug ReportLow Build failure due to missing RZip.h ClosedTamas TEVESZ Task Description

Linux, gcc:

make[4]: Entering directory '/home/ice/w/qcad/qcad/src/scripting/ecmaapi'
g++ -c -include release/qcadecmaapi -pipe -O2 -w -D_REENTRANT -fPIC -DQT_DISABLE_DEPRECATED_BEFORE=0x000000 -DQCAD_DLL -DQCADECMAAPI_LIBRARY -DQT_NO_DEBUG -DQT_PLUGIN -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -DQT_OPENGL_LIB -DQT_HELP_LIB -DQT_UITOOLS_LIB -DQT_DESIGNER_LIB -DQT_UIPLUGIN_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_SCRIPT_LIB -DQT_SCRIPTTOOLS_LIB -DQT_SQL_LIB -DQT_XMLPATTERNS_LIB -DQT_NETWORK_LIB -DQT_XML_LIB -DQT_CORE_LIB -DQDESIGNER_EXPORT_WIDGETS -I. -I../../core -I../../core/math -I../../grid -I../../snap -I../../gui -I../../entity -I../../operations -I../../scripting -I../../stemmer -I. -Igenerated -Iadapters -I../../io/dxf -I../../spatialindex -I../../3rdparty -I/home/ice/w/qcad/qcad/src/zip -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -isystem /usr/include/x86_64-linux-gnu/qt5/QtSvg -isystem /usr/include/x86_64-linux-gnu/qt5/QtOpenGL -isystem /usr/include/x86_64-linux-gnu/qt5/QtHelp -isystem /usr/include/x86_64-linux-gnu/qt5/QtUiTools -isystem /usr/include/x86_64-linux-gnu/qt5/QtDesigner -isystem /usr/include/x86_64-linux-gnu/qt5/QtUiPlugin -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtScript -isystem /usr/include/x86_64-linux-gnu/qt5/QtScriptTools -isystem /usr/include/x86_64-linux-gnu/qt5/QtSql -isystem /usr/include/x86_64-linux-gnu/qt5/QtXmlPatterns -isystem /usr/include/x86_64-linux-gnu/qt5/QtNetwork -isystem /usr/include/x86_64-linux-gnu/qt5/QtXml -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -Irelease -isystem /usr/include/libdrm -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o release/RScriptHandlerEcma.o RScriptHandlerEcma.cpp
In file included from RScriptHandlerEcma.cpp:372:0:
generated/REcmaZip.h:15:26: fatal error: RZip.h: No such file or directory
                 #include "RZip.h"
                          ^~~~~~~~
compilation terminated.
Makefile.Release:3622: recipe for target 'release/RScriptHandlerEcma.o' failed
make[4]: *** [release/RScriptHandlerEcma.o] Error 1

Seems to have been introduced in 854baacb, it seems.

 1869 QCAD BugtrackerQCAD (main)Bug ReportLow QCAD Community startup failure on Linux/Qt 5.10.1 ClosedTamas TEVESZ Task Description

QCAD Community, built from Git HEAD (bf30371), Linux (Ubuntu 18.04 x64), Qt 5.10.1, fresh build on a completely clean, new checkout.

Warning:  QApplication: invalid style override passed, ignoring it.
17:00:05: Debug:    RDxfPlugin::init
17:00:05: Debug:    RScriptsPlugin::init
Warning:  Cannot load translation: "qtbase_en"
Warning:  Cannot load translation: "qt_en"
Warning:  Cannot load translation: "assistant_en"
Warning:  Cannot load translation: "qt_help_en"
Warning:  Qt WebEngine seems to be initialized from a plugin. Please set Qt::AA_ShareOpenGLContexts using QCoreApplication::setAttribute before constructing QGuiApplication.
Warning:  action not found: "Scheme"
Warning:  RScriptHandlerEcma::eval: script engine exception:  "TypeError: Result of expression 'global[defaultActionClass].init' [undefined] is not a function."
Warning:  "<anonymous>() at /home/ice/w/qcad/qcad/scripts/File/OpenFile/../NewFile/NewFile.js:522\n<anonymous>(documentInterface = RDocumentInterface(0x55651e9299c0)) at /home/ice/w/qcad/qcad/scripts/File/OpenFile/../NewFile/NewFile.js:472\n<anonymous>() at /home/ice/w/qcad/qcad/scripts/File/OpenFile/../NewFile/NewFile.js:251\n<anonymous>() at /home/ice/w/qcad/qcad/scripts/File/OpenFile/../NewFile/NewFile.js:109\n<eval>() at 1\nslotTrigger() at -1\nopenFiles(args = , createNew = true) at scripts/autostart.js:209\nmain() at scripts/autostart.js:794\n<global>() at scripts/autostart.js:832"
Warning:  RScriptHandlerEcma::eval: script engine exception:  "TypeError: Result of expression 'global[defaultActionClass].init' [undefined] is not a function."
Warning:  "<anonymous>() at /home/ice/w/qcad/qcad/scripts/File/OpenFile/../NewFile/NewFile.js:522\n<anonymous>(documentInterface = RDocumentInterface(0x55651e9299c0)) at /home/ice/w/qcad/qcad/scripts/File/OpenFile/../NewFile/NewFile.js:472\n<anonymous>() at /home/ice/w/qcad/qcad/scripts/File/OpenFile/../NewFile/NewFile.js:251\n<anonymous>() at /home/ice/w/qcad/qcad/scripts/File/OpenFile/../NewFile/NewFile.js:109\n<eval>() at 1\nslotTrigger() at -1\nopenFiles(args = , createNew = true) at scripts/autostart.js:209\nmain() at scripts/autostart.js:794\n<global>() at scripts/autostart.js:832"
Warning:  At least one uncaught exception:
Warning:  "<anonymous>() at /home/ice/w/qcad/qcad/scripts/File/OpenFile/../NewFile/NewFile.js:522\n<anonymous>(documentInterface = RDocumentInterface(0x55651e9299c0)) at /home/ice/w/qcad/qcad/scripts/File/OpenFile/../NewFile/NewFile.js:472\n<anonymous>() at /home/ice/w/qcad/qcad/scripts/File/OpenFile/../NewFile/NewFile.js:251\n<anonymous>() at /home/ice/w/qcad/qcad/scripts/File/OpenFile/../NewFile/NewFile.js:109\n<eval>() at 1\nslotTrigger() at -1\nopenFiles(args = , createNew = true) at scripts/autostart.js:209\nmain() at scripts/autostart.js:794\n<global>() at scripts/autostart.js:832"
17:00:07: Debug:    "<global>() at 522"

My best guess is this was introduced sometime during last week or thereabouts (i.e. before that, Git HEAD used to work fine).

 1947 QCAD BugtrackerQCAD (main)Bug ReportLow Startup failure ClosedTamas TEVESZ Task Description

QCAD community, Git ba68e28d3d (current HEAD), fresh clean compile on Ubuntu 18.04/x64 (gcc 7.4.0, Qt 5.9.5)

QCAD version  3.23.0.2
Warning:  QApplication: invalid style override passed, ignoring it.
Warning:  Qt WebEngine seems to be initialized from a plugin. Please set Qt::AA_ShareOpenGLContexts using QCoreApplication::setAttribute before constructing QGuiApplication.
Warning:  action not found: "Scheme"
Warning:  RScriptHandlerEcma::eval: script engine exception:  "TypeError: Result of expression 'RS.getIdealThreadCount' [undefined] is not a function."
Warning:  "<anonymous>(uiFile = 'scripts/Widgets/ViewportWidget/ViewportWidgetQt.ui', graphicsSceneClass = undefined) at /home/ice/w/qcad/qcad/scripts/Widgets/ViewportWidget/ViewportWidget.js:172\n<anonymous>(viewports = [object Object], uiFile = undefined, graphicsSceneClass = undefined) at /home/ice/w/qcad/qcad/scripts/Widgets/ViewportWidget/ViewportWidget.js:75\n<anonymous>() at /home/ice/w/qcad/qcad/scripts/File/OpenFile/../NewFile/NewFile.js:248\n<anonymous>() at /home/ice/w/qcad/qcad/scripts/File/OpenFile/../NewFile/NewFile.js:109\n<eval>() at 1\nslotTrigger() at -1\nopenFiles(args = , createNew = true) at scripts/autostart.js:209\nmain() at scripts/autostart.js:796\n<global>() at scripts/autostart.js:834"
Warning:  RScriptHandlerEcma::eval: script engine exception:  "TypeError: Result of expression 'RS.getIdealThreadCount' [undefined] is not a function."
Warning:  "<anonymous>(uiFile = 'scripts/Widgets/ViewportWidget/ViewportWidgetQt.ui', graphicsSceneClass = undefined) at /home/ice/w/qcad/qcad/scripts/Widgets/ViewportWidget/ViewportWidget.js:172\n<anonymous>(viewports = [object Object], uiFile = undefined, graphicsSceneClass = undefined) at /home/ice/w/qcad/qcad/scripts/Widgets/ViewportWidget/ViewportWidget.js:75\n<anonymous>() at /home/ice/w/qcad/qcad/scripts/File/OpenFile/../NewFile/NewFile.js:248\n<anonymous>() at /home/ice/w/qcad/qcad/scripts/File/OpenFile/../NewFile/NewFile.js:109\n<eval>() at 1\nslotTrigger() at -1\nopenFiles(args = , createNew = true) at scripts/autostart.js:209\nmain() at scripts/autostart.js:796\n<global>() at scripts/autostart.js:834"
Warning:  At least one uncaught exception:
Warning:  "<anonymous>(uiFile = 'scripts/Widgets/ViewportWidget/ViewportWidgetQt.ui', graphicsSceneClass = undefined) at /home/ice/w/qcad/qcad/scripts/Widgets/ViewportWidget/ViewportWidget.js:172\n<anonymous>(viewports = [object Object], uiFile = undefined, graphicsSceneClass = undefined) at /home/ice/w/qcad/qcad/scripts/Widgets/ViewportWidget/ViewportWidget.js:75\n<anonymous>() at /home/ice/w/qcad/qcad/scripts/File/OpenFile/../NewFile/NewFile.js:248\n<anonymous>() at /home/ice/w/qcad/qcad/scripts/File/OpenFile/../NewFile/NewFile.js:109\n<eval>() at 1\nslotTrigger() at -1\nopenFiles(args = , createNew = true) at scripts/autostart.js:209\nmain() at scripts/autostart.js:796\n<global>() at scripts/autostart.js:834"
17:14:39: Debug:    "<global>() at 172"

Then QCAD exits (does not start). As far as I remember, 3.23.0.2 release was fine.

 2105 QCAD BugtrackerQCAD (main)Bug ReportLow File > Print / PDF export: Selected entities are printe ...ClosedTamas TEVESZ Task Description

QCAD community 3.25.0.0, Qt 5.15.0, FreeBSD 12.1p8

Take any random drawing (as far as I can tell), select (at least) one object, then export to PDF. The “highlight attribute” (for lack of a better word) of the object will unexpectedly be exported.

 1003 QCAD BugtrackerQCAD/CAMFeature RequestLow QCAD Community Edition: add unicode support for layer n ...ClosedTamas TEVESZ Task Description

Community version (still on FBSD only), so dxflib. I suspect the culprit is dxflib.

I have created layers and blocks and whatnot with (hungarian) accented characters in their names.
Apparently (according to the Internet, as evidenced probably most glaringly by usa.autodesk.com /adsk/servlet/ps/dl/item?siteID=123112&id=7586582&linkID=9240617) the R15 DXF version assumes single-byte character sets being used. Quick grepping the DXF2000 mentions “String (255-character maximum; less for Unicode strings)” (Group Code Value types), so it may be a false track...

Anyway, the DXF file written does have strings converted to single-byte encoding, but it seems it’s always ANSI-1252. When the output encoder encounters a character that is not representable in this one, it will use a literal question mark.

Actual case, I have a block with the name

106 egypólusú váltókapcsoló jelzőfénnyel

Of this, “ő” (U+0151) is not representable in ANSI-1252, so what gets written to the dxf is (non-ASCII shown in hex)

106 egyp<f3>lus<fa> v<e1>lt<f3>kapcsol<f3> jelz?f<e9>nnyel

Note the literal question mark.

Now the problem is this is an irreversible operation but the result is perfectly valid ANSI-1252, so upon opening the file again, I will get a block named

106 egypólusú váltókapcsoló jelz?fénnyel

IMHO the ideal resolution is to

  1. Have a preference for the export code page (and use it, too, circumstances permitting)
  2. Iff this is not set (or set to a default “Use system locale to determine” or something), use a look-up table to take a good guess (like old QCAD2 qcadlib/src/engine/rs_system.cpp:QCString RS_System::localeToISO())
  3. If the output encoder encounters a character that is not representable in the target code page, throw an error with an option to ignore the error (and keep using question marks, but then this must have been acknowledged by the user so not silent problem anymore), pick a new output code page, whatever else

This all assuming the R15 doesn’t actually depends hardly on ANSI-1252 and ANSI-1252 only. In that case, option #3 would still be nice.

Most Western European languages (and English) are not affected by this as ANSI-1252 has most of them covered, but a little to the east, a little to the south, a little to the north, and it does make a bit of a difference :)

Showing tasks 1 - 45 of 45 Page 1 of 1

Available keyboard shortcuts

Tasklist

Task Details

Task Editing