3

IllegalArgumentException: negative width请问有人可以解释使用 Kabeja 包时引发异常的原因吗?

这是我得到的错误堆栈:

    java.lang.IllegalArgumentException: negative width
    at java.awt.BasicStroke.<init>(BasicStroke.java:181)
    at org.apache.batik.bridge.PaintServer.convertStroke(Unknown Source)
    at org.apache.batik.bridge.PaintServer.convertStrokePainter(Unknown Source)
    at org.apache.batik.bridge.SVGLineElementBridge.createFillStrokePainter(Unknown Source)
    at org.apache.batik.bridge.SVGDecoratedShapeElementBridge.createShapePainter(Unknown Source)
    at org.apache.batik.bridge.SVGShapeElementBridge.buildGraphicsNode(Unknown Source)
    at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(Unknown Source)
    at org.apache.batik.bridge.GVTBuilder.buildComposite(Unknown Source)
    at org.apache.batik.bridge.GVTBuilder.build(Unknown Source)
    at org.apache.batik.bridge.SVGUseElementBridge.buildCompositeGraphicsNode(Unknown Source)
    at org.apache.batik.bridge.SVGUseElementBridge.createGraphicsNode(Unknown Source)
    at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(Unknown Source)
    at org.apache.batik.bridge.GVTBuilder.buildComposite(Unknown Source)
    at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(Unknown Source)
    at org.apache.batik.bridge.GVTBuilder.buildComposite(Unknown Source)
    at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(Unknown Source)
    at org.apache.batik.bridge.GVTBuilder.buildComposite(Unknown Source)
    at org.apache.batik.bridge.GVTBuilder.build(Unknown Source)
    at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(Unknown Source)
    at org.apache.batik.transcoder.image.ImageTranscoder.transcode(Unknown Source)
    at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(Unknown Source)
    at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(Unknown Source)
    at org.kabeja.batik.tools.AbstractSAXSerializer.transcode(AbstractSAXSerializer.java:214)
    at org.kabeja.batik.tools.AbstractSAXSerializer.endDocument(AbstractSAXSerializer.java:156)
    at org.kabeja.svg.SVGGenerator.generateSAX(SVGGenerator.java:361)
    at org.kabeja.svg.SVGGenerator.generate(SVGGenerator.java:88)
    at org.kabeja.xml.AbstractSAXGenerator.generate(AbstractSAXGenerator.java:37)
    at BasicFunc.DXFFileLoad.parseFile(DXFFileLoad.java:54)
    at desktopapplication3.Foundation_details.jButton1ActionPerformed(Foundation_details.java:450)
    at desktopapplication3.Foundation_details.access$200(Foundation_details.java:12)
    at desktopapplication3.Foundation_details$3.actionPerformed(Foundation_details.java:147)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at java.awt.Component.processMouseEvent(Component.java:6263)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    at java.awt.Component.processEvent(Component.java:6028)
    at java.awt.Container.processEvent(Container.java:2041)
    at java.awt.Component.dispatchEventImpl(Component.java:4630)
    at java.awt.Container.dispatchEventImpl(Container.java:2099)
    at java.awt.Component.dispatchEvent(Component.java:4460)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
    at java.awt.Container.dispatchEventImpl(Container.java:2085)
    at java.awt.Window.dispatchEventImpl(Window.java:2475)
    at java.awt.Component.dispatchEvent(Component.java:4460)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

请问有人可以解释这个例外的原因吗?

4

2 回答 2

1

查看堆栈跟踪,似乎在尝试使用负宽度绘制形状的笔触时触发了错误。这当然是不正确的,因为不能有负宽度的笔画。SVG 规范甚至提到负宽度是错误的

我会说DXF输入文件是错误的。它在 Autodesk 中渲染得很好吗?你能找到笔画错误的元素,看看它是如何显示的吗?

解决方案是向 Kabeja 项目提交错误报告,请求修复。根据该元素在 Autodesk 中的显示方式,负笔划宽度可能是:

  1. 如果不应显示笔划,则设置为 0
  2. abs如果符号应该被忽略,则设置为olute 值,并且宽度-1mm应该与1mm.
于 2012-08-27T22:39:12.310 回答
0

在 AUTOCAD 中保存 .dxf 文件时,只需将数据帐户设置为两位(或三位)小数
设置截图

于 2019-09-28T16:22:42.483 回答