Python 打开dxf文件时,dxf_input.py返回ZeroDivisionError

Python 打开dxf文件时,dxf_input.py返回ZeroDivisionError,python,inkscape,dxf,Python,Inkscape,Dxf,我有从SolidWorks导出的。我想使用Inkscape打开它们,修改它们,并发送激光切割。但是,当我打开它们时,会出现以下错误: 然后 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 回溯(最近一次呼叫最

我有从SolidWorks导出的。我想使用Inkscape打开它们,修改它们,并发送激光切割。但是,当我打开它们时,会出现以下错误:

然后

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
回溯(最近一次呼叫最后一次):
文件“dxf_input.py”,第443行,在
w=90.0/25.4*VAL[组['370']][0]/00.0
ZeroDivisionError:浮点除以零
我用其他软件打开了这个文件,比如LibreCAD,它运行得很好。更奇怪的是,这些文件在macOS和其他Windows机器上可以正常打开。我多次尝试卸载和重新安装该软件,但也没有任何帮助

我的环境是:

  • Inkscape Inkscape 0.92.4(5DA689C3132019-01-14)通过巧克力安装
  • Windows10版本1809

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

我的第一个想法是,解析器没有考虑DXF组370的值为零的可能性(因为线宽为零是有效的),但是,在
DXF_input.py
中,有一个检查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
因此,这可能是预览版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
并在适当的代码编辑器(如记事本+)中打开文件来查看
dxf_input.py


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

问题在于dxf\U输入扩展的旧版本,包括
dxf\u输入.py
dxf\u输入.inx
安装在
%USERPROFILE%\AppData\Roaming\Inkscape\extensions
文件夹中。因此,无论我卸载和重新安装Inkscape多少次,错误仍然存在。李在另一个答案中提到的旧版本有这样一句话

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

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

如果这是真的,那就很奇怪了,因为我在四台不同的Windows电脑上用巧克力保存了完全相同的Inkscape版本。它们都是相同的版本,其中只有一个显示了此问题。我刚刚在我的个人Windows笔记本电脑上测试了这个功能,
dxf\u input.py
似乎很好。明天我会在工作电脑上测试它,然后告诉你。非常感谢您的帮助。感谢您的确认;不过,为了避免重复,这应该是对我答案的评论。@LeeMac我不太确定我是否应该编辑你的帖子,或者留下评论,或者在我的帖子中添加一个P.S。所以我发布了一个新的答案。谢谢你的支持,没问题;如果我的答案充分回答了您的问题,请将答案标记为解决方案,以便其他浏览该网站的人可以看到该问题已解决。如果不确定如何执行此操作,请参阅。谢谢
w = 90.0/25.4*vals[groups['370']][0]/100.0
w = 90.0/25.4*vals[groups['370']][0]/00.0