View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0002891 | Sketcher | Bug | public | 2017-02-06 16:49 | 2017-04-28 12:21 |
| Reporter | rm. | Assigned To | wmayer | ||
| Priority | normal | Severity | minor | Reproducibility | always |
| Status | closed | Resolution | fixed | ||
| Platform | x86_64 | OS | Debian | OS Version | 9 (stretch) |
| Product Version | 0.16 | ||||
| Fixed in Version | 0.17 | ||||
| Summary | 0002891: Sketching impossible, Type.Error Exception | ||||
| Description | OS: Debian GNU/Linux 9.0 (stretch) Word size of OS: 64-bit Word size of FreeCAD: 64-bit Version: 0.16. Build type: None Python version: 2.7.13 Qt version: 4.8.7 Coin version: 4.0.0a OCC version: 6.8.0.oce-0.17 Kernel: Linux 4.9.2-2-amd64 Installed via: apt-get install freecad If i click on "Create a new sketch", i receive everytime the following error message: Traceback (most recent call last): File "<string>", line 1, in <module> <type 'exceptions.TypeError'>: Either three floats, tuple or Vector expected and i can't create anything in the sketcher. For example, if i wan't to draw a line it put's the error message: Failed to add line: Either three floats, tuple or Vector expected Failed to add line: ('invalid token', ('<string>', 1, 99, 'App.ActiveDocument.Sketch.addGeometry(Part.Line(App.Vector(0,000000,0,000000,0),App.Vector(2,003810,1,106270,0)),False)\n')) or the error message if i wan't to draw a circle: Failed to add circle: Either three floats, tuple or Vector expected | ||||
| Steps To Reproduce | 1) Start FreeCAD 2) Start Sketcher 3) Click on "Create new sketch" <---the "typeError"-Exception appears 4) Click on "Line" or "Circle" 5) Draw a "Line" or "Circle" <---the "Failed to add"-Error message appears | ||||
| Tags | locale | ||||
| FreeCAD Information | |||||
| has duplicate | 0002899 | closed | kkremitzki | FreeCAD | Sketcher and Part design - decimal point values ignored |
| related to | 0001852 | closed | shoogen | FreeCAD | The python interpreter does not recognize the posix locale settings |
|
|
FreeCAD.log (9,518 bytes)
Msg: FreeCAD 0.16, Libs: 0.16R
© Juergen Riegel, Werner Mayer, Yorik van Havre 2001-2015
##### #### ### ####
# # # # # #
# ## #### #### # # # # #
#### # # # # # # # ##### # #
# # #### #### # # # # #
# # # # # # # # # ## ## ##
# # #### #### ### # # #### ## ## ##
Log: Time = Mon Feb 6 17:50:19 2017
Log: AppDataSkipVendor = true
Log: AppHomePath = /usr/lib/freecad/
Log: AppIcon = freecad
Log: AppTempPath = /tmp/
Log: BinPath = /usr/lib/freecad/bin/
Log: BuildRepositoryURL = https://code.launchpad.net/~vcs-imports/freecad/trunk
Log: BuildRevision =
Log: BuildRevisionDate = 2017/01/20 19:32:28
Log: BuildVersionMajor = 0
Log: BuildVersionMinor = 16
Log: CopyrightInfo = © Juergen Riegel, Werner Mayer, Yorik van Havre 2001-2015
##### #### ### ####
# # # # # #
# ## #### #### # # # # #
#### # # # # # # # ##### # #
# # #### #### # # # # #
# # # # # # # # # ## ## ##
# # #### #### ### # # #### ## ## ##
Log: Debug = 0
Log: DocPath = /usr/lib/freecad/doc/
Log: ExeName = FreeCAD
Log: ExeVendor = FreeCAD
Log: ExeVersion = 0.16
Log: LoggingFile = 1
Log: LoggingFileName = /home/rm/.FreeCAD/FreeCAD.log
Log: MaintainerUrl = http://www.freecadweb.org/wiki/index.php?title=Main_Page
Log: PATH = /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/local/bin:/usr/bin:/bin:/usr/local/java/bin:/home/rm/skripte:/usr/local/ApacheDirectoryStudio
Log: PYTHONPATH =
Log: PythonSearchPath = :/usr/bin/../lib/python2.7:/usr/bin/../lib/python2.7/plat-x86_64-linux-gnu:/usr/bin/../lib/python2.7/lib-tk:/usr/bin/../lib/python2.7/lib-old:/usr/bin/../lib/python2.7/lib-dynload
Log: RunMode = Gui
Log: SplashAlignment = Bottom|Left
Log: SplashInfoColor = #c8c8c8
Log: SplashScreen = freecadsplash
Log: SplashTextColor = #ffffff
Log: StartWorkbench = StartWorkbench
Log: SystemParameter = /home/rm/.FreeCAD/system.cfg
Log: UserAppData = /home/rm/.FreeCAD/
Log: UserHomePath = /home/rm
Log: UserParameter = /home/rm/.FreeCAD/user.cfg
Log: Verbose =
Log: Create Application
Log: Run App init script
Log: Init: starting App::FreeCADInit.py
Log: Log: Init: Searching for modules...
Log: Init: Initializing /usr/lib/freecad/Mod/Sketcher... done
Log: Init: Initializing /usr/lib/freecad/Mod/ReverseEngineering... done
Log: Init: Initializing /usr/lib/freecad/Mod/Image... done
Log: Init: Initializing /usr/lib/freecad/Mod/PartDesign... done
Log: Init: Initializing /usr/lib/freecad/Mod/Ship(Init.py not found)... ignore
Log: Init: Initializing /usr/lib/freecad/Mod/Plot(Init.py not found)... ignore
Log: Init: Initializing /usr/lib/freecad/Mod/MeshPart... done
Log: Init: Initializing /usr/lib/freecad/Mod/OpenSCAD... done
Log: Init: Initializing /usr/lib/freecad/Mod/Fem... done
Log: Init: Initializing /usr/lib/freecad/Mod/Spreadsheet... done
Log: Init: Initializing /usr/lib/freecad/Mod/Start... done
Log: Init: Initializing /usr/lib/freecad/Mod/Points... done
Log: Init: Initializing /usr/lib/freecad/Mod/Draft... done
Log: Init: Initializing /usr/lib/freecad/Mod/Test... done
Log: Init: Initializing /usr/lib/freecad/Mod/Import... done
Log: Init: Initializing /usr/lib/freecad/Mod/Complete... done
Log: Init: Initializing /usr/lib/freecad/Mod/Web... done
Log: Init: Initializing /usr/lib/freecad/Mod/Material... done
Log: Init: Initializing /usr/lib/freecad/Mod/Raytracing... done
Log: Init: Initializing /usr/lib/freecad/Mod/Mesh... done
Log: Init: Initializing /usr/lib/freecad/Mod/Path... done
Log: Init: Initializing /usr/lib/freecad/Mod/Arch... done
Log: Init: Initializing /usr/lib/freecad/Mod/Robot... done
Log: Init: Initializing /usr/lib/freecad/Mod/Part... done
Log: Init: Initializing /usr/lib/freecad/Mod/Idf... done
Log: Init: Initializing /usr/lib/freecad/Mod/Inspection... done
Log: Init: Initializing /usr/lib/freecad/Mod/Drawing... done
Log: Using /usr/lib/freecad/Mod as module path!
Log: Using /usr/lib/freecad/Mod as module path!
Log: System path after init:
Log: /usr/lib/freecad/bin
Log: /usr/lib/freecad/Mod/Sketcher
Log: /usr/lib/freecad/Mod/ReverseEngineering
Log: /usr/lib/freecad/Mod/Image
Log: /usr/lib/freecad/Mod/PartDesign
Log: /usr/lib/freecad/Mod/Ship
Log: /usr/lib/freecad/Mod/Plot
Log: /usr/lib/freecad/Mod/MeshPart
Log: /usr/lib/freecad/Mod/OpenSCAD
Log: /usr/lib/freecad/Mod/Fem
Log: /usr/lib/freecad/Mod/Spreadsheet
Log: /usr/lib/freecad/Mod/Start
Log: /usr/lib/freecad/Mod/Points
Log: /usr/lib/freecad/Mod/Draft
Log: /usr/lib/freecad/Mod/Test
Log: /usr/lib/freecad/Mod/Import
Log: /usr/lib/freecad/Mod/Complete
Log: /usr/lib/freecad/Mod/Web
Log: /usr/lib/freecad/Mod/Material
Log: /usr/lib/freecad/Mod/Raytracing
Log: /usr/lib/freecad/Mod/Mesh
Log: /usr/lib/freecad/Mod/Path
Log: /usr/lib/freecad/Mod/Arch
Log: /usr/lib/freecad/Mod/Robot
Log: /usr/lib/freecad/Mod/Part
Log: /usr/lib/freecad/Mod/Idf
Log: /usr/lib/freecad/Mod/Inspection
Log: /usr/lib/freecad/Mod/Drawing
Log: /usr/local/bin
Log: /usr/bin
Log: /bin
Log: /usr/local/games
Log: /usr/games
Log: /usr/local/bin
Log: /usr/bin
Log: /bin
Log: /usr/local/java/bin
Log: /home/rm/skripte
Log: /usr/local/ApacheDirectoryStudio
Log: Init: App::FreeCADInit.py done
Log: Init: Creating Gui::Application and QApplication
Log: Local server 'FreeCAD' started
Log: OpenGL version 3.0 or higher is present
Log: Run Gui init script
Log: Init: Running FreeCADGuiInit.py start script...
Log: Init: Searching modules...
Log: Init: Initializing /usr/lib/freecad/Mod/Sketcher... done
Log: Init: Initializing /usr/lib/freecad/Mod/ReverseEngineering... done
Log: Init: Initializing /usr/lib/freecad/Mod/Image... done
Log: Init: Initializing /usr/lib/freecad/Mod/PartDesign... done
Log: Init: Initializing /usr/lib/freecad/Mod/Ship... done
Log: Init: Initializing /usr/lib/freecad/Mod/Plot... done
Log: Init: Initializing /usr/lib/freecad/Mod/MeshPart... done
Log: Init: Initializing /usr/lib/freecad/Mod/OpenSCAD... done
Log: Init: Initializing /usr/lib/freecad/Mod/Fem... done
Log: Init: Initializing /usr/lib/freecad/Mod/Spreadsheet... done
Log: Init: Initializing /usr/lib/freecad/Mod/Start... done
Log: Init: Initializing /usr/lib/freecad/Mod/Points... done
Log: Init: Initializing /usr/lib/freecad/Mod/Draft... done
Log: Init: Initializing /usr/lib/freecad/Mod/Test... done
Log: Init: Initializing /usr/lib/freecad/Mod/Import... done
Log: Init: Initializing /usr/lib/freecad/Mod/Complete... done
Log: Init: Initializing /usr/lib/freecad/Mod/Web... done
Log: Init: Initializing /usr/lib/freecad/Mod/Material... done
Log: Init: Initializing /usr/lib/freecad/Mod/Raytracing... done
Log: Init: Initializing /usr/lib/freecad/Mod/Mesh... done
Log: Init: Initializing /usr/lib/freecad/Mod/Path... done
Log: Init: Initializing /usr/lib/freecad/Mod/Arch... done
Log: Init: Initializing /usr/lib/freecad/Mod/Robot... done
Log: Init: Initializing /usr/lib/freecad/Mod/Part... done
Log: Init: Initializing /usr/lib/freecad/Mod/Idf(InitGui.py not found)... ignore
Log: Init: Initializing /usr/lib/freecad/Mod/Inspection... done
Log: Init: Initializing /usr/lib/freecad/Mod/Drawing... done
Log: Init: Loading FreeCAD GUI
Log: Init: Running FreeCADGuiInit.py start script... done
Log: Init: Activating default workbench StartWorkbench
Log: Loading GUI of Web module... done
Log: Loading GUI of Start module... done
Log: Loading Start module... done
Log: Init: Showing main window
Log: Main window restored
Log: Show main window
Log: Toolbars restored
Log: Couldn't connect to spacenav daemon
Log: Init: Entering event loop
Log: Init: Processing command line files
Log: Active view is Unnamed : 1[*] (at 0x561c01beb5a0)
Log: Active document is Unnamed (at 0x561c01ee9650)
Log: Module: Part
Log: Loading Part module... done
Log: Loading GUI of Part module... done
Log: Loading Sketcher module... done
Log: Loading GUI of Sketcher module... done
Err: Traceback (most recent call last):
File "<string>", line 1, in <module>
<type 'exceptions.TypeError'>: Either three floats, tuple or Vector expected
Log: Active view is Unnamed : 1[*] (at 0x561c01beb5a0)
Log: Active view is Unnamed : 1[*] (at 0x561c01beb5a0)
Log: Sel : Clear selection
Log: Sketcher::setUpSketch()-T:0
Log: Sketcher::Solve()-DogLeg-T:0
Err: Failed to add line: ('invalid token', ('<string>', 1, 68, 'App.ActiveDocument.Sketch.addGeometry(Part.Line(App.Vector(-2,013087,1,291808,0),App.Vector(1,001905,0,572848,0)),False)\n'))
Err: Failed to add circle: Either three floats, tuple or Vector expected
Log: Sel : Clear selection
Log: Sel : Add Selection "Unnamed.Sketch.(null)(0,000000,0,000000,0,000000)"
Log: Sel : Clear selection
Log: No active document
Log: Hide main window
Log: Active view is Start page (at 0x561c01db7860)
Log: Finish: Event loop left
Log: Destruct Gui::Application
Log: Couldn't disconnect from spacenav daemon
Log: FreeCAD terminating...
Log: Saving system parameter...
Log: Saving system parameter...done
Log: Saving user parameter...
Log: Saving user parameter...done
|
|
|
Can't reproduce on OS: "Manjaro Linux" Word size of OS: 64-bit Word size of FreeCAD: 64-bit Version: 0.16.Unknown Build type: Release Python version: 2.7.13 Qt version: 4.8.7 Coin version: 3.1.3 OCC version: 6.9.1 |
|
|
Op please post to a forum thread and bidirectionally link ticket <=> thread |
|
|
The relevant line is this:
where an App.Vector is created with
When you look closely you will realize that it also uses a comma for the decimal separator. This explains the Python exception because from Python point of view it looks like 5 floats.What are your locale settings? |
|
|
The relevant calls are: DrawSketchHandlerLine::releaseButton: https://github.com/FreeCAD/FreeCAD/blob/releases/FreeCAD-0-16/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp#L245 Command::doCommand: https://github.com/FreeCAD/FreeCAD/blob/releases/FreeCAD-0-16/src/Gui/Command.cpp#L434 Hard to say in which of these two functions the decimal separator is converted to a comma. |
|
|
Based on http://stackoverflow.com/questions/1449805/how-to-format-a-number-from-1123456789-to-1-123-456-789-in-c I found a simple example to demonstrate the problem. This example works correctly independent of the environment variable LANG because it's set to C by the program.
If "putenv" is removed then the behaviour depends on the value of LANG. If it's set to a language that uses comma as decimal separator as e.g. German (i.e. LANG=de_DE.UTF-8)
then it creates the output App.Vector(12,450000,1,650000,0)It looks like this change is causing the regression https://github.com/FreeCAD/FreeCAD/commit/f32caef40c6eb0a1a634906244f3389c77d2f5ab A workaround is to write a simple bash script that sets LANG to C and then starts FreeCAD. It could look like this:
Then do "chmod u+x freecad.sh" to make it executable. As a last step you should change your starter icon to point to the bash script. |
|
|
Won't change the code but a workaround is offered. |
|
|
i tried the script-workaround, but i get the same problem. #locale -a C C.UTF-8 de_DE.utf8 POSIX #locale LANG=C LANGUAGE=de_DE@euro.ISO-8859-1 LC_CTYPE="de_DE.UTF-8" LC_NUMERIC="de_DE.UTF-8" LC_TIME="de_DE.UTF-8" LC_COLLATE="de_DE.UTF-8" LC_MONETARY="de_DE.UTF-8" LC_MESSAGES="de_DE.UTF-8" LC_PAPER="de_DE.UTF-8" LC_NAME="de_DE.UTF-8" LC_ADDRESS="de_DE.UTF-8" LC_TELEPHONE="de_DE.UTF-8" LC_MEASUREMENT="de_DE.UTF-8" LC_IDENTIFICATION="de_DE.UTF-8" LC_ALL=de_DE.UTF-8 #cat ./freecad.sh #!/bin/bash export LANG=C freecad $1 $2 $3 $4 $5 #chmod 0700 freecad.sh #./freecad.sh FreeCAD 0.16, Libs: 0.16R © Juergen Riegel, Werner Mayer, Yorik van Havre 2001-2015 ##### #### ### #### # # # # # # # ## #### #### # # # # # #### # # # # # # # ##### # # # # #### #### # # # # # # # # # # # # # # ## ## ## # # #### #### ### # # #### ## ## ## Traceback (most recent call last): File "<string>", line 1, in <module> <type 'exceptions.TypeError'>: Either three floats, tuple or Vector expected Failed to add point: Either three floats, tuple or Vector expected Failed to add point: Either three floats, tuple or Vector expected Failed to add arc: ('invalid token', ('<string>', 1, 147, 'App.ActiveDocument.Sketch.addGeometry(Part.ArcOfCircle(Part.Circle(App.Vector(-1,799719,0,990309,0),App.Vector(0,0,1),0,742978),-0,494364,-0,038740),False)\n')) Failed to add circle: ('invalid token', ('<string>', 1, 109, 'App.ActiveDocument.Sketch.addGeometry(Part.Circle(App.Vector(-1,618819,0,994948,0),App.Vector(0,0,1),1,038443),False)\n')) |
|
|
OK, it seems that you only have to set LC_ALL=C Then LANG doesn't need to be changed any more because LC_ALL will overwrite the handling with numbers. Inside our main() function we only explicitly set LC_NUMERIC=C but apparently this is not sufficient if LC_ALL is set to de_DE.UTF-8 |
|
|
I found the reason: http://pubs.opengroup.org/onlinepubs/7908799/xbd/envvar.html The point is that LC_ALL overwrites the LC_NUMERIC value so it's not sufficient to only reset the latter if the former is already set. So, this means you have two options: 1. set LC_ALL=C 2. set LC_ALL= and LC_NUMERIC=C |
|
|
solved. It was the locale problem (point vs. comma) workaround-script, to start freeCAD: #!/bin/bash export LC_ALL=C freecad $1 $2 $3 $4 $5 |
|
|
Changed status from 'no change required' to 'fixed' |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2017-02-06 16:49 | rm. | New Issue | |
| 2017-02-06 16:54 | rm. | File Added: FreeCAD.log | |
| 2017-02-06 18:24 | Kunda1 | Tag Attached: exception | |
| 2017-02-07 02:18 | Kunda1 | Note Added: 0008227 | |
| 2017-02-07 18:09 | Kunda1 | Note Added: 0008233 | |
| 2017-02-07 18:09 | Kunda1 | Status | new => feedback |
| 2017-02-08 12:23 | wmayer | Note Added: 0008236 | |
| 2017-02-08 12:39 | wmayer | Note Added: 0008237 | |
| 2017-02-08 18:05 | wmayer | Note Added: 0008242 | |
| 2017-02-08 18:07 | wmayer | Note Added: 0008243 | |
| 2017-02-08 18:07 | wmayer | Status | feedback => resolved |
| 2017-02-08 18:07 | wmayer | Resolution | open => won't fix |
| 2017-02-08 18:07 | wmayer | Assigned To | => wmayer |
| 2017-02-08 18:51 | rm. | Note Added: 0008245 | |
| 2017-02-08 18:51 | rm. | Status | resolved => feedback |
| 2017-02-08 18:51 | rm. | Resolution | won't fix => reopened |
| 2017-02-08 18:52 | rm. | Note Edited: 0008245 | |
| 2017-02-08 20:22 | wmayer | Note Added: 0008246 | |
| 2017-02-08 20:34 | wmayer | Note Added: 0008247 | |
| 2017-02-08 23:53 | rm. | Note Added: 0008248 | |
| 2017-02-08 23:53 | rm. | Status | feedback => assigned |
| 2017-02-08 23:53 | rm. | Note Edited: 0008248 | |
| 2017-02-08 23:54 | rm. | Note Edited: 0008248 | |
| 2017-02-09 03:35 | Kunda1 | Tag Attached: locale | |
| 2017-02-09 03:35 | Kunda1 | Tag Detached: exception | |
| 2017-02-09 08:31 | wmayer | Status | assigned => closed |
| 2017-02-09 08:31 | wmayer | Resolution | reopened => no change required |
| 2017-02-09 11:47 | wmayer | Changeset attached | => FreeCAD Master master 6c2a7b47 |
| 2017-02-10 10:04 | wmayer | Relationship added | related to 0001852 |
| 2017-02-15 02:34 | Kunda1 | Relationship added | has duplicate 0002899 |
| 2017-04-28 12:21 | Kunda1 | Resolution | no change required => fixed |
| 2017-04-28 12:21 | Kunda1 | Fixed in Version | => 0.17 |
| 2017-04-28 12:21 | Kunda1 | Note Added: 0008796 |
FreeCAD