【问题标题】:dxf_input.py returns ZeroDivisionError when opening dxf filedxf_input.py 在打开 dxf 文件时返回 ZeroDivisionError
【发布时间】:2019-06-13 15:34:21
【问题描述】:

我有从 SolidWorks 导出的 a dxf file。我想用 Inkscape 打开它们,修改它们并发送激光切割。但是,当我打开它们时,我收到了这个错误:

Inkscape has received additional data from the
script executed. The script did not return an error,
but this may indicate the result will not be as expected

然后

Traceback (most recent call last):
File "dxf_input.py", line 443, in <module>
w = 90.0/25.4*vals[groups['370']][0]/00.0
ZeroDivisionError: float division by zero

我在 LibreCAD 等其他软件中打开了该文件,它运行良好。更奇怪的是,文件在 macOS 和其他 Windows 机器上打开得很好。我尝试多次卸载并重新安装该软件,但它也没有帮助。

我的环境是:

  • 通过 Chocolatey 安装的 Inkscape Inkscape 0.92.4(5da689c313,2019-01-14)
  • Windows 10 版本 1809

如果您能帮助我了解问题所在以及如何解决,我将不胜感激。

【问题讨论】:

    标签: python inkscape dxf


    【解决方案1】:

    我的第一个想法是解析器没有考虑到 DXF 组 370 的值为零的可能性(因为线宽为零是有效的)但是,在 dxf_input.pythis version 中有一个检查DXF 组 370(线宽)在分割前是否为零:

    if vals[groups['370']]:                 # Common Lineweight
        if vals[groups['370']][0] > 0:      # <-------------------- HERE
            w = 96.0/25.4*vals[groups['370']][0]/100.0
            if w < 0.5:
                w = 0.5
    

    所以我不认为这是问题所在。

    然后我观察到,上面的 100.0 的值在您的回溯中显示为 0.00,这很奇怪:

    Traceback (most recent call last):
    File "dxf_input.py", line 443, in <module>
    w = 90.0/25.4*vals[groups['370']][0]/00.0 # <-------------------- This is 100.0 in the code
    ZeroDivisionError: float division by zero
    

    因此,这可能是预览版 v0.92.4 中引入的拼写错误,如 dxf_input.py 的 v0.91 中我可以确认此行显示为:

    w = 90.0/25.4*vals[groups['370']][0]/100.0
    

    要验证这是否是错误的原因,您可以通过转到C:\Program Files\Inkscape\share\extensions 并在适当的代码编辑器(例如 Notepad++)中打开文件来查看dxf_input.py 的源代码。

    在源代码中搜索w = 90.0/25.4,检查除法是100.0,而不是00.0

    【讨论】:

    • 如果这是真的,那会很奇怪,因为我在四台不同的 Windows 计算机上使用 Chocolatey 保存完全相同版本的 Inkscape。它们都是相同的版本,只有其中一个显示了这个问题。我刚刚在我的个人 Windows 笔记本电脑上对此进行了测试,dxf_input.py 似乎还不错。我明天将在工作计算机上对其进行测试,然后通知您。非常感谢您的帮助。
    【解决方案2】:

    问题是旧版本的 dxf_input 扩展,包括 dxf_input.pydxf_input.inx 安装在 %USERPROFILE%\AppData\Roaming\Inkscape\extensions 文件夹中。结果,无论我卸载并重新安装 Inkscape 多少次,错误仍然存​​在。 Lee 在此处的另一个答案中指出的旧版本有一行

    w = 90.0/25.4*vals[groups['370']][0]/00.0
    

    删除这些文件解决了这个问题。我不记得我是从何时何地安装这些文件的,否则我会去报告问题或提交 PR 来修复此错误。

    【讨论】:

    • 感谢您的确认;不过,这确实应该是对我的回答的评论,以避免重复。
    • @LeeMac 我不太确定是否应该编辑您的帖子、发表评论或添加 P.S.到我的帖子。所以我还是发布了一个新的答案。感谢您的支持。
    • 没问题;如果我的回答充分回答了您的问题,请将答案标记为解决方案,以便其他浏览该网站的人看到该问题已解决。如果您不确定如何执行此操作,请参阅this article。谢谢。
    猜你喜欢
    • 2017-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多