【问题标题】:Removing superfluos layers from DXFwrite从 DXFwrite 中删除多余的层
【发布时间】:2017-11-06 09:07:21
【问题描述】:

我使用 python 包 DXFwrite 来构建太阳能电池网格。不幸的是,我的模拟程序被 DXFwrite 引入的附加层弄糊涂了。他们的名字是:

  • 尺寸
  • 表格内容
  • 表格网格
  • 桌面背景
  • 观景台

有没有一种简单的方法可以防止 DXFwrite 创建这些层?我还没有找到任何删除图层的命令。

最好的问候,

索斯滕·里索姆

【问题讨论】:

    标签: python cad dxf


    【解决方案1】:

    没有删除层的方法,你不能阻止 dxfwrite 创建这个层。

    备选方案 1:

    使用ezdxf(https://pypi.python.org/pypi/ezdxf/),但也有一些预定义的层(DEFPOINTS、VIEW_PORT),但可以从 层表:dwg.layers.remove('layername'),这仅删除层表条目,仅当没有实体引用该层时才删除层。而且可能会有一些意想不到的副作用。

    备选方案 2:

    使用 ezdxf.r12writer:这个模块可以在没有 ezdxf 包的情况下使用,只需将 r12writer.py 复制到你的项目中。该模块编写了非常基本的 DXF12 文件,请参阅文档:http://pythonhosted.org/ezdxf/r12writer.html

    • 支持的实体:LINE、CIRCLE、ARC、TEXT、POINT、SOLID、3DFACE 和 POLYLINE
    • 不支持块引用!
    • 附加优势:r12writer 速度非常快

    【讨论】:

      【解决方案2】:

      在浏览source 之后 - 有可能。

      DXFEngine.layers 是一个实习生 _Table 结构,它有一个 clear() 函数。 尚未测试不需要的副作用,但您可以执行以下操作:

      from dxfwrite import DXFEngine as mydxfwrite
      mydxfdrawing = mydxfwrite.drawing('Filename.dxf')
      mydxfdrawing.layers.clear() #clears the layers
      mydxfdrawing.add_layer("JUSTASINGLELAYER",color=1) #add your layer with for example a specific color
      mydxfdrawing.save()
      

      LibreCad 然而,除了“JUSTASINGLELAYER”层之外,仍然显示一个名为“0”的层。

      最好的祝愿, 马丁

      【讨论】:

      • 也可以。但是,它不会删除图层“VIEWPORTS”。最后,我在@mozman 的回答中遵循了第二种选择。感谢您的回复!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-31
      • 2020-11-19
      • 2020-07-23
      相关资源
      最近更新 更多