[PR - Bug Fix] ArchWall / DraftGeomUtils - offsetWire(), connect(), precision()

A forum dedicated to the Draft, Arch and BIM workbenches development.
paullee
Posts: 2017
Joined: Wed May 04, 2016 3:58 pm

[PR - Bug Fix] ArchWall / DraftGeomUtils - offsetWire(), connect(), precision()

Postby paullee » Wed Feb 27, 2019 5:42 pm

Hi I have long (11.5.2017) annoyed by a problem in ArchWall creation... https://forum.freecadweb.org/viewtopic. ... =3&t=22379

I think I may have found a bug which stop a wire with curve properly build an offsetWire.

ScreenCapture 1 - ArchWall return

Code: Select all

DraftGeomUtils.connect: unable to connect edges
...
DraftGeomUtils: unable to bind wires
Error: Invalid base object
ScreenCapture 2 - ArchWall Created Succesfully - Fix applied

Possible Problem - Edges are 'offset' in wrong direction when 1st edge happen to be curve after sortEdge(), see below which shows edges of a 'slot' are not offset correctly

Code: Select all

('debug: DraftGeomUtils.connect prev - prev: ', Vector (-4100.0, -3000.0, 0.0), Vector (3900.0, -3000.0000000000005, 0.0))
('debug: DraftGeomUtils.connect prev - curr: ', Vector (3999.9999999999995, -3100.0000000000005, 0.0), Vector (4000.000000000001, 3099.9999999999986, 0.0))
('debug: DraftGeomUtils.connect prev - intersection: ', [Vector (4781.024967590664, -3000.0000000000005, 0.0), Vector (3218.9750324093357, -3000.0000000000005, 0.0)])
('debug: DraftGeomUtils.connect prev - prev: ', Vector (3999.9999999999995, -3100.0000000000005, 0.0), Vector (4000.000000000001, 3099.9999999999986, 0.0))
('debug: DraftGeomUtils.connect prev - curr: ', Vector (4100.000000000001, 2999.9999999999986, 0.0), Vector (-3900.0, 3000.0, 0.0))
('debug: DraftGeomUtils.connect prev - intersection: ', [Vector (3218.975032409336, 2999.9999999999986, 0.0), Vector (4781.024967590664, 2999.9999999999986, 0.0)])
('debug: DraftGeomUtils.connect prev - prev: ', Vector (4100.000000000001, 2999.9999999999986, 0.0), Vector (-3900.0, 3000.0, 0.0))
('debug: DraftGeomUtils.connect prev - curr: ', Vector (-4000.0, 3001.6662039607268, 0.0), Vector (-4000.0000000000005, -3001.6662039607268, 0.0))
('debug: DraftGeomUtils.connect prev - intersection: ', [Vector (-4099.999999999999, 3000.0, 0.0), Vector (-3899.999999999999, 3000.0, 0.0)])
('debug: DraftGeomUtils.connect prev - prev: ', Vector (-4000.0, 3001.6662039607268, 0.0), Vector (-4000.0000000000005, -3001.6662039607268, 0.0))
('debug: DraftGeomUtils.connect prev - curr: ', Vector (-4100.0, -3000.0, 0.0), Vector (3900.0, -3000.0000000000005, 0.0))
('debug: DraftGeomUtils.connect prev - intersection: ', [Vector (-3900.0, -3000.0, 0.0), Vector (-4100.0, -3000.0, 0.0)])
('debug: DraftGeomUtils.connect prev - prev: ', Vector (-3900.0000000000005, -3000.0, 0.0), Vector (4100.0, -3000.0000000000005, 0.0))
('debug: DraftGeomUtils.connect prev - curr: ', Vector (3999.9999999999995, -2900.0000000000005, 0.0), Vector (4000.000000000001, 2899.9999999999986, 0.0))
('debug: DraftGeomUtils.connect prev - intersection: ', [])
('debug: DraftGeomUtils.connect prev - prev: ', Vector (3999.9999999999995, -2900.0000000000005, 0.0), Vector (4000.000000000001, 2899.9999999999986, 0.0))
('debug: DraftGeomUtils.connect prev - curr: ', Vector (3900.000000000001, 2999.9999999999986, 0.0), Vector (-4100.0, 3000.0, 0.0))
('debug: DraftGeomUtils.connect prev - intersection: ', [])
('debug: DraftGeomUtils.connect prev - prev: ', Vector (3900.000000000001, 2999.9999999999986, 0.0), Vector (-4100.0, 3000.0, 0.0))
('debug: DraftGeomUtils.connect prev - curr: ', Vector (-4000.0, 3001.6662039607268, 0.0), Vector (-4000.0000000000005, -3001.6662039607268, 0.0))
('debug: DraftGeomUtils.connect prev - intersection: ', [Vector (-4099.999999999999, 3000.0, 0.0), Vector (-3899.999999999999, 3000.0, 0.0)])
('debug: DraftGeomUtils.connect prev - prev: ', Vector (-4000.0, 3001.6662039607268, 0.0), Vector (-4000.0000000000005, -3001.6662039607268, 0.0))
('debug: DraftGeomUtils.connect prev - curr: ', Vector (-3900.0000000000005, -3000.0, 0.0), Vector (4100.0, -3000.0000000000005, 0.0))
('debug: DraftGeomUtils.connect prev - intersection: ', [Vector (-3900.0, -3000.0, 0.0), Vector (-4100.0, -3000.0, 0.0)])
DraftGeomUtils.connect: unable to connect edges
(Circle (Radius : 2900, Position : (4000, -1.02318e-12, 0), Direction : (0, -0, 1)), ' ', Vector (3999.9999999999995, -2900.000000000001, 0.0), ' ', Vector (4000.0000000000014, 2899.999999999999, 0.0))
(<Line object>, ' ', Vector (3900.000000000001, 2999.9999999999986, 0.0), ' ', Vector (-4099.999999999999, 3000.0, 0.0))
(Circle (Radius : 3001.67, Position : (-4000, -2.27374e-13, 0), Direction : (0, 0, 1)), ' ', Vector (-4099.999999999999, 3000.0, 0.0), ' ', Vector (-4100.000000000001, -3000.0, 0.0))
(<Line object>, ' ', Vector (-3900.0, -3000.0, 0.0), ' ', Vector (4100.0, -3000.0000000000005, 0.0))
DraftGeomUtils: unable to bind wires
Error: Invalid base object
Proposed PR - DraftGeomUtils.py / OffsetWire()

Code: Select all

...
    ## Added
    e = edges[0]
    if isinstance(e.Curve,Part.Circle):
        firstVec = e.tangentAt(e.FirstParameter)
    else:
        firstVec = vec(e)
    ## Added

    for i in range(len(edges)):
        curredge = edges[i]
        delta = dvec
        if i != 0:
            if isinstance(curredge.Curve,Part.Circle):
                v = curredge.tangentAt(curredge.FirstParameter)
            else:
                v = vec(curredge)

            ## Revised
            #angle = DraftVecUtils.angle(vec(edges[0]),v,norm)
            angle = DraftVecUtils.angle(firstVec,v,norm)
...            
Any volunteers want to test?
Thanks.

Screenshot from 2019-02-28 01-17-32.png
Screenshot from 2019-02-28 01-17-32.png (216.56 KiB) Viewed 683 times
Screenshot from 2019-02-28 01-18-57.png
Screenshot from 2019-02-28 01-18-57.png (268.15 KiB) Viewed 683 times
Attachments
Test _ Arch Wall _ bug question__ 41_ Fixed.fcstd
(8.78 KiB) Downloaded 13 times
Test _ Arch Wall _ bug question__ 41.fcstd
(7.05 KiB) Downloaded 10 times
DraftGeomUtils.py
(109.19 KiB) Downloaded 11 times
Last edited by paullee on Sun Mar 17, 2019 6:25 pm, edited 3 times in total.
Syres
Posts: 439
Joined: Thu Aug 09, 2018 11:14 am

Re: [PR] ArchWall / DraftGeomUtils - offsetWire

Postby Syres » Wed Feb 27, 2019 7:12 pm

Tested successfully on these two builds:

OS: Windows 7
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.18.15841 (Git)
Build type: Release
Branch: (HEAD detached at FETCH_HEAD)
Hash: 362441873b984a4f169fd430f989aee1016a337e
Python version: 2.7.14
Qt version: 4.8.7
Coin version: 4.0.0a
OCC version: 7.2.0
Locale: English/UnitedKingdom (en_GB)


OS: Windows 7
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.18.15969 (Git)
Build type: Release
Branch: master
Hash: 4765b7e2fe6d3609e9fbf3e3eb6648d7af1dd526
Python version: 3.6.6
Qt version: 5.6.2
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: English/UnitedKingdom (en_GB)
Syres
Posts: 439
Joined: Thu Aug 09, 2018 11:14 am

Re: [PR] ArchWall / DraftGeomUtils - offsetWire

Postby Syres » Wed Feb 27, 2019 7:53 pm

Might of spoke too soon, were you expecting a triangle with rounded corners to work (a strange request for Arch I know), it fails with 'Wall has invalid shape' in Report Vew? The only way I could get that to work was to use DrafttoSketch and then Upgrade x2 as per attached file which I believe does not make it parametric.
Attachments
TriangleRadiusedCorners.FCStd
(15.77 KiB) Downloaded 9 times
paullee
Posts: 2017
Joined: Wed May 04, 2016 3:58 pm

Re: [PR] ArchWall / DraftGeomUtils - offsetWire

Postby paullee » Wed Feb 27, 2019 11:55 pm

Syres wrote:
Wed Feb 27, 2019 7:53 pm
Might of spoke too soon, were you expecting a triangle with rounded corners to work (a strange request for Arch I know), it fails with 'Wall has invalid shape' in Report Vew? The only way I could get that to work was to use DrafttoSketch and then Upgrade x2 as per attached file which I believe does not make it parametric.
Thanks for testing a reasonable layout not uncommon in magazine :)

OK on my side, can you post what is in your Report output ?

- may use my file with your original Sketch on top I build w/o error a Wall "Wall001 _ on Orgiginal Sketch _ OK"
- please Clear the Report View
- Mark to Recompute the Sketch
- Control R to recompuete the doc
- Copy the output in Report View

Before I find the 'offset vec' of the 'first edge' is not calculated correctly for an arc above, I originally suspected it may be due to connect() / findIntersection() did not find an intersection when an Arc is tangent with a LineSgement... seem still the case ('2nd bug' ?) but 'happen' to be OK in my test :)

Code: Select all

cluster in Part.getSortedClusters(obj.Base.Shape.Edges) 
[<Edge object at 0x6fecfc0>, <Edge object at 0x6e95670>, <Edge object at 0x6fb48c0>, <Edge object at 0x70c2450>, <Edge object at 0x74717a0>, <Edge object at 0x73f06b0>]
 c in Part.sortEdges(cluster) 
[<Edge object at 0x752a770>, <Edge object at 0x6d62800>, <Edge object at 0x368e210>, <Edge object at 0x74bf8f0>, <Edge object at 0x6a89e80>, <Edge object at 0x7099c20>]
('debug: DraftGeomUtils.connect prev - prev: ', Vector (-1519.6152422706632, -33.31248477241758, 0.0), Vector (-1000.0000000000002, -933.3124847724176, 0.0))
('debug: DraftGeomUtils.connect prev - curr: ', Vector (-1000.0000000000002, -933.3124847724177, 0.0), Vector (1000.0000000000002, -933.3124847724177, 0.0))
('debug: DraftGeomUtils.connect prev - intersection: ', [])
('debug: DraftGeomUtils.connect prev - prev: ', Vector (-1000.0000000000002, -933.3124847724177, 0.0), Vector (1000.0000000000002, -933.3124847724177, 0.0))
('debug: DraftGeomUtils.connect prev - curr: ', Vector (1000.0000000000003, -933.3124847724177, 0.0), Vector (1519.6152422706632, -33.31248477241775, 0.0))
('debug: DraftGeomUtils.connect prev - intersection: ', [Vector (999.9999999999999, -933.3124847724177, 0.0)])
('debug: DraftGeomUtils.connect prev - prev: ', Vector (1000.0000000000003, -933.3124847724177, 0.0), Vector (1519.6152422706632, -33.31248477241775, 0.0))
('debug: DraftGeomUtils.connect prev - curr: ', Vector (1519.615242270663, -33.31248477241777, 0.0), Vector (519.6152422706633, 1698.7383227964597, 0.0))
('debug: DraftGeomUtils.connect prev - intersection: ', [Vector (1519.6152368758667, -33.312475428356095, 0.0), Vector (1519.6152476654597, -33.31249411647974, 0.0)])
('debug: DraftGeomUtils.connect prev - prev: ', Vector (1519.615242270663, -33.31248477241777, 0.0), Vector (519.6152422706633, 1698.7383227964597, 0.0))
('debug: DraftGeomUtils.connect prev - curr: ', Vector (519.6152422706632, 1698.7383227964597, 0.0), Vector (-519.6152422706631, 1698.73832279646, 0.0))
('debug: DraftGeomUtils.connect prev - intersection: ', [])
('debug: DraftGeomUtils.connect prev - prev: ', Vector (519.6152422706632, 1698.7383227964597, 0.0), Vector (-519.6152422706631, 1698.73832279646, 0.0))
('debug: DraftGeomUtils.connect prev - curr: ', Vector (-519.6152422706632, 1698.7383227964597, 0.0), Vector (-1519.6152422706632, -33.31248477241775, 0.0))
('debug: DraftGeomUtils.connect prev - intersection: ', [Vector (-519.6152422706632, 1698.7383227964597, 0.0)])
('debug: DraftGeomUtils.connect prev - prev: ', Vector (-519.6152422706632, 1698.7383227964597, 0.0), Vector (-1519.6152422706632, -33.31248477241775, 0.0))
('debug: DraftGeomUtils.connect prev - curr: ', Vector (-1519.6152422706632, -33.31248477241758, 0.0), Vector (-1000.0000000000002, -933.3124847724176, 0.0))
('debug: DraftGeomUtils.connect prev - intersection: ', [Vector (-1519.6152422706632, -33.31248477241752, 0.0)])
('debug: DraftGeomUtils.connect prev - prev: ', Vector (-1346.4101615137756, -133.3124847724176, 0.0), Vector (-1000.0000000000002, -733.3124847724177, 0.0))
('debug: DraftGeomUtils.connect prev - curr: ', Vector (-1000.0000000000002, -733.3124847724177, 0.0), Vector (1000.0000000000002, -733.3124847724177, 0.0))
('debug: DraftGeomUtils.connect prev - intersection: ', [Vector (-1000.0000000000002, -733.3124847724177, 0.0)])
('debug: DraftGeomUtils.connect prev - prev: ', Vector (-1000.0000000000002, -733.3124847724177, 0.0), Vector (1000.0000000000002, -733.3124847724177, 0.0))
('debug: DraftGeomUtils.connect prev - curr: ', Vector (1000.0000000000001, -733.3124847724177, 0.0), Vector (1346.4101615137754, -133.31248477241775, 0.0))
('debug: DraftGeomUtils.connect prev - intersection: ', [Vector (999.9999999999999, -733.3124847724177, 0.0)])
('debug: DraftGeomUtils.connect prev - prev: ', Vector (1000.0000000000001, -733.3124847724177, 0.0), Vector (1346.4101615137754, -133.31248477241775, 0.0))
('debug: DraftGeomUtils.connect prev - curr: ', Vector (1346.4101615137754, -133.31248477241772, 0.0), Vector (346.4101615137755, 1598.7383227964597, 0.0))
('debug: DraftGeomUtils.connect prev - intersection: ', [])
('debug: DraftGeomUtils.connect prev - prev: ', Vector (1346.4101615137754, -133.31248477241772, 0.0), Vector (346.4101615137755, 1598.7383227964597, 0.0))
('debug: DraftGeomUtils.connect prev - curr: ', Vector (346.4101615137755, 1598.7383227964597, 0.0), Vector (-346.41016151377545, 1598.73832279646, 0.0))
('debug: DraftGeomUtils.connect prev - intersection: ', [Vector (346.4101615137755, 1598.7383227964597, 0.0)])
('debug: DraftGeomUtils.connect prev - prev: ', Vector (346.4101615137755, 1598.7383227964597, 0.0), Vector (-346.41016151377545, 1598.73832279646, 0.0))
('debug: DraftGeomUtils.connect prev - curr: ', Vector (-346.4101615137755, 1598.7383227964597, 0.0), Vector (-1346.4101615137756, -133.31248477241775, 0.0))
('debug: DraftGeomUtils.connect prev - intersection: ', [Vector (-346.4101615137755, 1598.7383227964597, 0.0)])
('debug: DraftGeomUtils.connect prev - prev: ', Vector (-346.4101615137755, 1598.7383227964597, 0.0), Vector (-1346.4101615137756, -133.31248477241775, 0.0))
('debug: DraftGeomUtils.connect prev - curr: ', Vector (-1346.4101615137756, -133.3124847724176, 0.0), Vector (-1000.0000000000002, -733.3124847724177, 0.0))
Thanks.
Screenshot from 2019-02-28 07-35-43.png
Screenshot from 2019-02-28 07-35-43.png (258.89 KiB) Viewed 638 times
TriangleRadiusedCorners.FCStd
(14.87 KiB) Downloaded 9 times
ArchWall.py
(46.56 KiB) Downloaded 10 times
paullee
Posts: 2017
Joined: Wed May 04, 2016 3:58 pm

Re: [PR] ArchWall / DraftGeomUtils - offsetWire

Postby paullee » Thu Feb 28, 2019 1:13 am

I am not able to test it ... suspect that

'edges = Part.__sortEdges__(wire.Edges)"

under def offsetWire() (sort edge again) make the dvec not matching the 'sorted order'

Someone like to try remark it out to test?

Thanks.
User avatar
regis
Posts: 656
Joined: Sun Jul 12, 2015 8:17 am
Contact:

Re: [PR] ArchWall / DraftGeomUtils - offsetWire

Postby regis » Thu Feb 28, 2019 1:16 am

i'm not exactly sure what you are after, but i download your file and it gave me a base error when i tried to create a wall with it. However when i created my own sketch it generated a wall. So not entirely certain where the issue might be residing.
Attachments
Screenshot from 2019-02-27 20-14-52.png
Screenshot from 2019-02-27 20-14-52.png (71.45 KiB) Viewed 628 times
paullee
Posts: 2017
Joined: Wed May 04, 2016 3:58 pm

Re: [PR] ArchWall / DraftGeomUtils - offsetWire

Postby paullee » Thu Feb 28, 2019 5:23 am

regis wrote:
Thu Feb 28, 2019 1:16 am
i'm not exactly sure what you are after, but i download your file and it gave me a base error when i tried to create a wall with it. However when i created my own sketch it generated a wall. So not entirely certain where the issue might be residing.
Yes. With original file + original DraftGeomUtils.py, i suspect it fails likely - seem you have same result.

With the revised DraftGeomUtils.py, I hope it overcome the problem - original py calculate a vector wrongly when 1st edge OCC algorithm return happen to be an arc out of the whole wire.

In other words, it doesnot mean any sketch with arc will fail - just 'happen'.

Can you try the revised DraftGeomUtils.py with the original 'slot' file to see if it fix the '1st bug' ? - Syres seems point out another bug (have 2 ideas about where it come from...)
Syres
Posts: 439
Joined: Thu Aug 09, 2018 11:14 am

Re: [PR] ArchWall / DraftGeomUtils - offsetWire

Postby Syres » Thu Feb 28, 2019 9:23 am

paullee wrote:
Wed Feb 27, 2019 11:55 pm
- may use my file with your original Sketch on top I build w/o error a Wall "Wall001 _ on Orgiginal Sketch _ OK"
- please Clear the Report View
- Mark to Recompute the Sketch
- Control R to recompuete the doc
- Copy the output in Report View
Following your instructions using my triangular sketch the wall is correctly displayed producing this output in Report View:

Code: Select all

Sketcher::RedundantSolving-DogLeg-
Sketcher Redundant solving: 1 redundants
Sketcher::setUpSketch()-T:0.036
Sketcher::Solve()-DogLeg-T:0.001
Hope this helps.
paullee
Posts: 2017
Joined: Wed May 04, 2016 3:58 pm

Re: [PR] ArchWall / DraftGeomUtils - offsetWire

Postby paullee » Thu Feb 28, 2019 12:47 pm

Syres wrote:
Thu Feb 28, 2019 9:23 am
paullee wrote:
Wed Feb 27, 2019 11:55 pm
- may use my file with your original Sketch on top I build w/o error a Wall "Wall001 _ on Orgiginal Sketch _ OK"
- please Clear the Report View
- Mark to Recompute the Sketch
- Control R to recompuete the doc
- Copy the output in Report View
Following your instructions using my triangular sketch the wall is correctly displayed producing this output in Report View:

Code: Select all

Sketcher::RedundantSolving-DogLeg-
Sketcher Redundant solving: 1 redundants
Sketcher::setUpSketch()-T:0.036
Sketcher::Solve()-DogLeg-T:0.001
Hope this helps.
Hi, can you clarify if you have remarked that line out to make the Arch Wall built?


'edges = Part.__sortEdges__(wire.Edges)"
Syres
Posts: 439
Joined: Thu Aug 09, 2018 11:14 am

Re: [PR] ArchWall / DraftGeomUtils - offsetWire

Postby Syres » Thu Feb 28, 2019 2:24 pm

paullee wrote:
Thu Feb 28, 2019 12:47 pm


Hi, can you clarify if you have remarked that line out to make the Arch Wall built?


'edges = Part.__sortEdges__(wire.Edges)"
Apologies I was in a rush this morning and did not give the entire thread my full attention. Commenting out the 'edges = Part.__sortEdges__(wire.Edges)' line gives an error as follows:

Code: Select all

cluster in Part.getSortedClusters(obj.Base.Shape.Edges) 
[<Edge object at 00000000563BEC60>, <Edge object at 00000000563BF5A0>, <Edge object at 00000000563B9960>, <Edge object at 00000000563BEC20>, <Edge object at 00000000563BF560>, <Edge object at 00000000563BDB20>]
 c in Part.sortEdges(cluster) 
[<Edge object at 00000000563C38A0>, <Edge object at 00000000563C1BA0>, <Edge object at 00000000563C2120>, <Edge object at 00000000563B6FA0>, <Edge object at 00000000563C2160>, <Edge object at 00000000563BCB20>]
Traceback (most recent call last):
  File "E:\Data\My Downloads\FreeCAD_0.18.15991_Conda_Py3QT5-WinVS2015_x64\FreeCAD_0.18.15991_Conda_Py3QT5-WinVS2015_x64\Mod\Arch\ArchWall.py", line 561, in execute
    extdata = self.getExtrusionData(obj)
  File "E:\Data\My Downloads\FreeCAD_0.18.15991_Conda_Py3QT5-WinVS2015_x64\FreeCAD_0.18.15991_Conda_Py3QT5-WinVS2015_x64\Mod\Arch\ArchWall.py", line 880, in getExtrusionData
    w1 = DraftGeomUtils.offsetWire(wire,dvec)
  File "E:\Data\My Downloads\FreeCAD_0.18.15991_Conda_Py3QT5-WinVS2015_x64\FreeCAD_0.18.15991_Conda_Py3QT5-WinVS2015_x64\Mod\Draft\DraftGeomUtils.py", line 1190, in offsetWire
    e = edges[0]
<class 'NameError'>: name 'edges' is not defined
Therefore, re-instating the 'edges' line, ignoring my 09:23 post and starting from fresh. The following output is from selecting the Sketch, clicking the Create Wall icon, setting the Sketch to Recompute and activating the Recompute:

Code: Select all

cluster in Part.getSortedClusters(obj.Base.Shape.Edges) 
[<Edge object at 00000000559A7AF0>, <Edge object at 00000000559A79F0>, <Edge object at 00000000559A7E30>, <Edge object at 00000000559A76B0>, <Edge object at 00000000559A7AB0>, <Edge object at 00000000559A70F0>]
 c in Part.sortEdges(cluster) 
[<Edge object at 00000000559A7BF0>, <Edge object at 00000000559A80B0>, <Edge object at 00000000559A7EF0>, <Edge object at 00000000559A7C70>, <Edge object at 00000000559A7B70>, <Edge object at 00000000559A7EB0>]
debug: DraftGeomUtils.connect prev - prev:  Vector (-1519.6152422706632, -33.30999999999983, 0.0) Vector (-1000.0000000000003, -933.31, 0.0)
debug: DraftGeomUtils.connect prev - curr:  Vector (-1000.0000000000003, -933.31, 0.0) Vector (999.9999999999997, -933.31, 0.0)
debug: DraftGeomUtils.connect prev - intersection:  [Vector (-1000.0000000000003, -933.31, 0.0)]
debug: DraftGeomUtils.connect prev - prev:  Vector (-1000.0000000000003, -933.31, 0.0) Vector (999.9999999999997, -933.31, 0.0)
debug: DraftGeomUtils.connect prev - curr:  Vector (999.9999999999997, -933.31, 0.0) Vector (1519.615242270663, -33.31, 0.0)
debug: DraftGeomUtils.connect prev - intersection:  [Vector (999.9999999999997, -933.31, 0.0)]
debug: DraftGeomUtils.connect prev - prev:  Vector (999.9999999999997, -933.31, 0.0) Vector (1519.615242270663, -33.31, 0.0)
debug: DraftGeomUtils.connect prev - curr:  Vector (1519.6152422706627, -33.31000000000008, 0.0) Vector (519.6152422706631, 1698.7408075688777, 0.0)
debug: DraftGeomUtils.connect prev - intersection:  [Vector (1519.6152337407405, -33.30998522574125, 0.0), Vector (1519.615250800585, -33.31001477425921, 0.0)]
debug: DraftGeomUtils.connect prev - prev:  Vector (1519.6152422706627, -33.31000000000008, 0.0) Vector (519.6152422706631, 1698.7408075688777, 0.0)
debug: DraftGeomUtils.connect prev - curr:  Vector (519.6152422706632, 1698.7408075688775, 0.0) Vector (-519.6152422706631, 1698.7408075688777, 0.0)
debug: DraftGeomUtils.connect prev - intersection:  [Vector (519.6152422706632, 1698.7408075688775, 0.0)]
debug: DraftGeomUtils.connect prev - prev:  Vector (519.6152422706632, 1698.7408075688775, 0.0) Vector (-519.6152422706631, 1698.7408075688777, 0.0)
debug: DraftGeomUtils.connect prev - curr:  Vector (-519.6152422706632, 1698.7408075688775, 0.0) Vector (-1519.6152422706632, -33.309999999999945, 0.0)
debug: DraftGeomUtils.connect prev - intersection:  [Vector (-519.6152422706632, 1698.7408075688775, 0.0)]
debug: DraftGeomUtils.connect prev - prev:  Vector (-519.6152422706632, 1698.7408075688775, 0.0) Vector (-1519.6152422706632, -33.309999999999945, 0.0)
debug: DraftGeomUtils.connect prev - curr:  Vector (-1519.6152422706632, -33.30999999999983, 0.0) Vector (-1000.0000000000003, -933.31, 0.0)
debug: DraftGeomUtils.connect prev - intersection:  [Vector (-1519.6152488779128, -33.31001144409157, 0.0), Vector (-1519.6152356634136, -33.30998855590798, 0.0)]
debug: DraftGeomUtils.connect prev - prev:  Vector (-1346.4101615137754, -133.30999999999995, 0.0) Vector (-1000.0000000000003, -733.3099999999998, 0.0)
debug: DraftGeomUtils.connect prev - curr:  Vector (-1000.0000000000003, -733.31, 0.0) Vector (999.9999999999997, -733.31, 0.0)
debug: DraftGeomUtils.connect prev - intersection:  [Vector (-1000.0000000000002, -733.31, 0.0)]
debug: DraftGeomUtils.connect prev - prev:  Vector (-1000.0000000000003, -733.31, 0.0) Vector (999.9999999999997, -733.31, 0.0)
debug: DraftGeomUtils.connect prev - curr:  Vector (999.9999999999997, -733.31, 0.0) Vector (1346.4101615137752, -133.31000000000003, 0.0)
debug: DraftGeomUtils.connect prev - intersection:  [Vector (999.9999999999997, -733.31, 0.0)]
debug: DraftGeomUtils.connect prev - prev:  Vector (999.9999999999997, -733.31, 0.0) Vector (1346.4101615137752, -133.31000000000003, 0.0)
debug: DraftGeomUtils.connect prev - curr:  Vector (1346.4101615137752, -133.31000000000003, 0.0) Vector (346.4101615137753, 1598.7408075688777, 0.0)
debug: DraftGeomUtils.connect prev - intersection:  [Vector (1346.4101615137752, -133.31000000000003, 0.0)]
debug: DraftGeomUtils.connect prev - prev:  Vector (1346.4101615137752, -133.31000000000003, 0.0) Vector (346.4101615137753, 1598.7408075688777, 0.0)
debug: DraftGeomUtils.connect prev - curr:  Vector (346.41016151377545, 1598.7408075688775, 0.0) Vector (-346.4101615137754, 1598.7408075688777, 0.0)
debug: DraftGeomUtils.connect prev - intersection:  [Vector (346.4101576990781, 1598.740814176127, 0.0), Vector (346.41016532847266, 1598.7408009616279, 0.0)]
debug: DraftGeomUtils.connect prev - prev:  Vector (346.41016151377545, 1598.7408075688775, 0.0) Vector (-346.4101615137754, 1598.7408075688777, 0.0)
debug: DraftGeomUtils.connect prev - curr:  Vector (-346.4101615137755, 1598.7408075688775, 0.0) Vector (-1346.4101615137756, -133.30999999999995, 0.0)
debug: DraftGeomUtils.connect prev - intersection:  [Vector (-346.4101615137755, 1598.7408075688775, 0.0)]
debug: DraftGeomUtils.connect prev - prev:  Vector (-346.4101615137755, 1598.7408075688775, 0.0) Vector (-1346.4101615137756, -133.30999999999995, 0.0)
debug: DraftGeomUtils.connect prev - curr:  Vector (-1346.4101615137754, -133.30999999999995, 0.0) Vector (-1000.0000000000003, -733.3099999999998, 0.0)
debug: DraftGeomUtils.connect prev - intersection:  [Vector (-1346.4101615137756, -133.31, 0.0)]
Wall has an invalid shape
Sketcher::RedundantSolving-DogLeg-
Sketcher Redundant solving: 1 redundants
Sketcher::setUpSketch()-T:0.001
Sketcher::Solve()-DogLeg-T:0.001
cluster in Part.getSortedClusters(obj.Base.Shape.Edges) 
[<Edge object at 000000005599BDB0>, <Edge object at 000000005598B930>, <Edge object at 000000005599D630>, <Edge object at 000000005598B7F0>, <Edge object at 000000005598BA30>, <Edge object at 00000000559A76B0>]
 c in Part.sortEdges(cluster) 
[<Edge object at 0000000055989E30>, <Edge object at 0000000055999570>, <Edge object at 00000000559A80B0>, <Edge object at 00000000559A7BB0>, <Edge object at 0000000055992730>, <Edge object at 00000000559A7930>]
debug: DraftGeomUtils.connect prev - prev:  Vector (-1519.6152422706637, -33.309999999999945, 0.0) Vector (-1000.0000000000003, -933.3100000000001, 0.0)
debug: DraftGeomUtils.connect prev - curr:  Vector (-1000.0000000000003, -933.31, 0.0) Vector (999.9999999999997, -933.31, 0.0)
debug: DraftGeomUtils.connect prev - intersection:  [Vector (-999.999989210407, -933.31, 0.0), Vector (-1000.0000107895935, -933.31, 0.0)]
debug: DraftGeomUtils.connect prev - prev:  Vector (-1000.0000000000003, -933.31, 0.0) Vector (999.9999999999997, -933.31, 0.0)
debug: DraftGeomUtils.connect prev - curr:  Vector (999.9999999999997, -933.31, 0.0) Vector (1519.615242270663, -33.309999999999945, 0.0)
debug: DraftGeomUtils.connect prev - intersection:  [Vector (999.9999999999997, -933.31, 0.0)]
debug: DraftGeomUtils.connect prev - prev:  Vector (999.9999999999997, -933.31, 0.0) Vector (1519.615242270663, -33.309999999999945, 0.0)
debug: DraftGeomUtils.connect prev - curr:  Vector (1519.6152422706627, -33.309999999999995, 0.0) Vector (519.6152422706631, 1698.7408075688777, 0.0)
debug: DraftGeomUtils.connect prev - intersection:  [Vector (1519.6152337407405, -33.309985225741194, 0.0), Vector (1519.615250800585, -33.31001477425915, 0.0)]
debug: DraftGeomUtils.connect prev - prev:  Vector (1519.6152422706627, -33.309999999999995, 0.0) Vector (519.6152422706631, 1698.7408075688777, 0.0)
debug: DraftGeomUtils.connect prev - curr:  Vector (519.6152422706631, 1698.7408075688777, 0.0) Vector (-519.6152422706632, 1698.7408075688775, 0.0)
debug: DraftGeomUtils.connect prev - intersection:  [Vector (519.6152422706631, 1698.7408075688777, 0.0)]
debug: DraftGeomUtils.connect prev - prev:  Vector (519.6152422706631, 1698.7408075688777, 0.0) Vector (-519.6152422706632, 1698.7408075688775, 0.0)
debug: DraftGeomUtils.connect prev - curr:  Vector (-519.6152422706632, 1698.7408075688775, 0.0) Vector (-1519.6152422706637, -33.309999999999945, 0.0)
debug: DraftGeomUtils.connect prev - intersection:  [Vector (-519.6152422706632, 1698.7408075688775, 0.0)]
debug: DraftGeomUtils.connect prev - prev:  Vector (-519.6152422706632, 1698.7408075688775, 0.0) Vector (-1519.6152422706637, -33.309999999999945, 0.0)
debug: DraftGeomUtils.connect prev - curr:  Vector (-1519.6152422706637, -33.309999999999945, 0.0) Vector (-1000.0000000000003, -933.3100000000001, 0.0)
debug: DraftGeomUtils.connect prev - intersection:  [Vector (-1519.6152422706637, -33.309999999999945, 0.0)]
debug: DraftGeomUtils.connect prev - prev:  Vector (-1346.4101615137756, -133.30999999999995, 0.0) Vector (-1000.0000000000003, -733.31, 0.0)
debug: DraftGeomUtils.connect prev - curr:  Vector (-1000.0000000000003, -733.31, 0.0) Vector (999.9999999999997, -733.31, 0.0)
debug: DraftGeomUtils.connect prev - intersection:  [Vector (-1000.0000000000003, -733.31, 0.0)]
debug: DraftGeomUtils.connect prev - prev:  Vector (-1000.0000000000003, -733.31, 0.0) Vector (999.9999999999997, -733.31, 0.0)
debug: DraftGeomUtils.connect prev - curr:  Vector (999.9999999999997, -733.31, 0.0) Vector (1346.4101615137752, -133.30999999999995, 0.0)
debug: DraftGeomUtils.connect prev - intersection:  [Vector (999.9999999999997, -733.31, 0.0)]
debug: DraftGeomUtils.connect prev - prev:  Vector (999.9999999999997, -733.31, 0.0) Vector (1346.4101615137752, -133.30999999999995, 0.0)
debug: DraftGeomUtils.connect prev - curr:  Vector (1346.4101615137752, -133.30999999999995, 0.0) Vector (346.4101615137753, 1598.7408075688777, 0.0)
debug: DraftGeomUtils.connect prev - intersection:  [Vector (1346.4101615137752, -133.30999999999995, 0.0)]
debug: DraftGeomUtils.connect prev - prev:  Vector (1346.4101615137752, -133.30999999999995, 0.0) Vector (346.4101615137753, 1598.7408075688777, 0.0)
debug: DraftGeomUtils.connect prev - curr:  Vector (346.4101615137754, 1598.7408075688775, 0.0) Vector (-346.4101615137755, 1598.7408075688775, 0.0)
debug: DraftGeomUtils.connect prev - intersection:  [Vector (346.4101576990781, 1598.740814176127, 0.0), Vector (346.41016532847266, 1598.7408009616279, 0.0)]
debug: DraftGeomUtils.connect prev - prev:  Vector (346.4101615137754, 1598.7408075688775, 0.0) Vector (-346.4101615137755, 1598.7408075688775, 0.0)
debug: DraftGeomUtils.connect prev - curr:  Vector (-346.4101615137755, 1598.7408075688775, 0.0) Vector (-1346.4101615137758, -133.30999999999995, 0.0)
debug: DraftGeomUtils.connect prev - intersection:  [Vector (-346.4101615137755, 1598.7408075688775, 0.0)]
debug: DraftGeomUtils.connect prev - prev:  Vector (-346.4101615137755, 1598.7408075688775, 0.0) Vector (-1346.4101615137758, -133.30999999999995, 0.0)
debug: DraftGeomUtils.connect prev - curr:  Vector (-1346.4101615137756, -133.30999999999995, 0.0) Vector (-1000.0000000000003, -733.31, 0.0)
debug: DraftGeomUtils.connect prev - intersection:  [Vector (-1346.4101615137758, -133.30999999999995, 0.0)]

And to make sure there's no confusion I've attached the specific python files and FreeCAD file (a fully constrained Sketch though that shouldn't be necessary) I used to perform the test.
Attachments
TriangleRadiusedCorners2.FCStd
(8.61 KiB) Downloaded 10 times
DraftGeomUtils.py
(109.19 KiB) Downloaded 11 times
ArchWall.py
(46.56 KiB) Downloaded 11 times