RF-tools-KiCAD icon indicating copy to clipboard operation
RF-tools-KiCAD copied to clipboard

Taper tool error occurred in kicad 9.0

Open chen70854022 opened this issue 10 months ago • 14 comments

Taper tool error occurred in kicad 9.0

Image

chen70854022 avatar Feb 26 '25 00:02 chen70854022

I haven't been able to use this feature of the plugin at all since 9.0 dropped.

Farmbot26 avatar Mar 10 '25 06:03 Farmbot26

I wonder guys if anyone tried the Kicad "built in" teardrop option? That makes not such a nice connection but a bit similar

zodoczi avatar Mar 12 '25 08:03 zodoczi

Same issue, I either get the same message as above or Kicad just quits with no message.

brendanm250 avatar Apr 06 '25 00:04 brendanm250

me too, the same issue

kodizhuk avatar Apr 17 '25 10:04 kodizhuk

Same error here on Win11, KiCad 9.0.1.

  1. An unhandled exception occured. Press "Abort" to terminate the program, "Retry" to exit the program normally and "Ignore" to try to continue. (Retry just closes the app, no warnings)
  2. Hitting "Abort" produces KiCad Error: Unhandled exception class: class std::bad_optional_access what: Bad optional access. Then the app quits.

Please fix.

pr0mixe avatar Apr 26 '25 20:04 pr0mixe

I've fixed the taper wizard for V9. You can check it out in my fork or the pull requests.

MarwanOSayed avatar May 16 '25 23:05 MarwanOSayed

I've fixed the taper tool for V9. You can check it out in my fork or the pull requests.

I tried your pull request and the issue persists at least on macOS.

Cocoader avatar May 17 '25 14:05 Cocoader

I've fixed the taper tool for V9. You can check it out in my fork or the pull requests.

I tried your pull request and the issue persists at least on macOS.

I meant the taper wizard. Will edit my answer to correct it. I will see what could be the problem with the taper tool. In the meantime, as a workaround, you can use the wizard in the footprint editor to manually generate the taper you want and then use it in the PCB.

MarwanOSayed avatar May 17 '25 14:05 MarwanOSayed

I've fixed the taper tool for V9. You can check it out in my fork or the pull requests.

I tried your pull request and the issue persists at least on macOS.

I meant the taper wizard. Will edit my answer to correct it. I will see what could be the problem with the taper tool. In the meantime, as a workaround, you can use the wizard in the footprint editor to manually generate the taper you want and then use it in the PCB.

No worries about the name — we all know what’s meant. Thanks for checking what might still be causing it on macOS. 👍 I'm more than happy to test any potential fix. Unfortunately, the workaround isn’t an option for me since I use the tool in a similar way to what’s shown in the .gif in the README. https://raw.githubusercontent.com/easyw/RF-tools-KiCAD/refs/heads/master/resources/pcbnew-taper-plugin.gif

Cocoader avatar May 17 '25 15:05 Cocoader

Ok I've just uploaded a quick fix on a new branch in my fork here: https://github.com/MarwanOSayed/RF-tools-KiCAD/tree/TaperTool-Dev

IMPORTANT: For now the taper's clearance value has to be set manually after taper zone creation. Otherwise, it will remain at zero.

I'll create a pull request if I come up with a more elegant fix that doesn't require manual clearance setup.

MarwanOSayed avatar May 17 '25 16:05 MarwanOSayed

Ok I've just uploaded a quick fix on a new branch in my fork here: https://github.com/MarwanOSayed/RF-tools-KiCAD/tree/TaperTool-Dev

IMPORTANT: For now the taper's clearance value has to be set manually after taper zone creation. Otherwise, it will remain at zero.

I'll create a pull request if I come up with a more elegant fix that doesn't require manual clearance setup.

Your quick fix works perfectly — no more crashes on macOS and works as intended. 👍 https://github.com/MarwanOSayed/RF-tools-KiCAD/commit/54444c455c25df85ad14d7f72f30e961c31716c6#diff-a6a11504dc76d81b74ea756b836d07bf0a7b5d0c4dd43b906596c3ef4a1866d5R54

I don't see any apparent issues with setting the clearance to 0. As far as I understand it the clearance defined in the net classes will be favoured in this case and override it anyway. Let's say you have a situation with different net classes and clearances around that area:

Image

I would rather have this predictable somewhat ugly behaviour where the net classes are applied properly than having one global clearance that might lead to an unnoticed DRC error or to unnecessary large clearances. This can easily be fixed before getting the board that might have manufacturing defects.

Just out of curiosity (my python skills are pretty limited) are the changes in rf_tools_wizards/uwTaper_wizard.py, which you did in your pull request https://github.com/easyw/RF-tools-KiCAD/pull/76/commits/5bb2f1eb8d280e7943d820a2d99f0dd1fb3252df, still the cause of the problem, or was the real issue only the z.SetLocalClearance(0) in taper_fz/taper.py?

Thanks a lot — I really appreciate your contribution.

Cocoader avatar May 18 '25 14:05 Cocoader

Ok I've just uploaded a quick fix on a new branch in my fork here: https://github.com/MarwanOSayed/RF-tools-KiCAD/tree/TaperTool-Dev IMPORTANT: For now the taper's clearance value has to be set manually after taper zone creation. Otherwise, it will remain at zero. I'll create a pull request if I come up with a more elegant fix that doesn't require manual clearance setup.

Your quick fix works perfectly — no more crashes on macOS and works as intended. 👍 MarwanOSayed@54444c4#diff-a6a11504dc76d81b74ea756b836d07bf0a7b5d0c4dd43b906596c3ef4a1866d5R54

I don't see any apparent issues with setting the clearance to 0. As far as I understand it the clearance defined in the net classes will be favoured in this case and override it anyway. Let's say you have a situation with different net classes and clearances around that area:

Image

I would rather have this predictable somewhat ugly behaviour where the net classes are applied properly than having one global clearance that might lead to an unnoticed DRC error or to unnecessary large clearances. This can easily be fixed before getting the board that might have manufacturing defects.

Just out of curiosity (my python skills are pretty limited) are the changes in rf_tools_wizards/uwTaper_wizard.py, which you did in your pull request 5bb2f1e, still the cause of the problem, or was the real issue only the z.SetLocalClearance(0) in taper_fz/taper.py?

Thanks a lot — I really appreciate your contribution.

The real issue is that there was no standard API but rather the C++ source code of KiCAD is wrapped and interfaced to python through a wrapper called SWIG. This means that each time the KiCAD's C++ source code changes, the python function calls in the plugin have to be amended as well to reflect this change. The changes can be anything between changes in functions' signatures (the parameters it accepts as input), functions' returns and their types, or that functions have been removed altogether and some things have to be achieved in a totally new way. Hence, for each incompatibility issue, the code has to be traced to pin down which function call/s is/are causing the problem. The specific function call in taper_fz/taper.py that caused the problem is not the same as the ones in rf_tools_wizards/uwTaper_wizard.py.

MarwanOSayed avatar May 18 '25 14:05 MarwanOSayed

The real issue is that there was no standard API but rather the C++ source code of KiCAD is wrapped and interfaced to python through a wrapper called SWIG. This means that each time the KiCAD's C++ source code changes, the python function calls in the plugin have to be amended as well to reflect this change. The changes can be anything between changes in functions' signatures (the parameters it accepts as input), functions' returns and their types, or that functions have been removed altogether and some things have to be achieved in a totally new way. Hence, for each incompatibility issue, the code has to be traced to pin down which function call/s is/are causing the problem. The specific function call in taper_fz/taper.py that caused the problem is not the same as the ones in rf_tools_wizards/uwTaper_wizard.py.

Thank you for the detailed answer.

Cocoader avatar May 18 '25 16:05 Cocoader

I took in @MarwanOSayed latest update but get a division by zero error. I even tried messing with track widths, placement, units, etc and had no luck either. Happens for call to SetTaper_Zone and ends at the weaken calculation below.

taper_fz/taper.py, line 151 in __ ComputeCurvedTracks weaken = (vpercent/100.0 ........

ZeroDivisionError: float division by zero

StayWavy1 avatar Jul 29 '25 18:07 StayWavy1