我有一个包含一个或多个块的 dxf 文件。如何ezdxf
读取此 dxf 并将块复制到另一个 dxf 文件?
此代码未按预期工作:
\n\ndxf = ezdxf.readfile("blocks.dxf")\nblock_test = dxf.blocks.get(\'b_test\')\ndxf_test = ezdxf.readfile("arc.dxf")\nmsp_test = dxf_test.modelspace()\nflag = dxf_test.blocks.new(name=\'FLAG\')\nflag.add_lwpolyline([(0, 0), (0, 5), (4, 3), (0, 3)])\nflag.add_circle((0, 0), .4, dxfattribs={\'color\': 2}) \nmsp_test.add_blockref(block_test, (10.1, 10.1), dxfattribs={\n\'xscale\': 1,\n\'yscale\': 1,\n\'rotation\': 0\n})\n\nmsp_test.add_blockref(\'flag\', (0.1, 0.1), dxfattribs={\n\'xscale\': 5.1,\n\'yscale\': 5.1,\n\'rotation\': 115\n})\n\ndxf_test.saveas("blockref_tutorial.dxf")\nexit()\n
Run Code Online (Sandbox Code Playgroud)\n\n上面的代码示例没有按预期工作。也就是说,\xc2\xb4block_test`不在保存的文件中......
\n由于 DXF 格式的复杂可扩展性以及除实体描述之外缺乏足够的内部结构文档,因此在 DXF 文件内复制实体或移动它们并不容易,当然在不同的 DXF 文档之间也更是如此。
为了完成此类任务,ezdxf有一个导入器插件,它可以将一些资源、实体和块定义从源文档导入到目标文档中,但不要期望完美的结果,请阅读文档。
以下代码将块定义'b_test'
从源 DXF 文件'blocks.dxf'
导入到目标 DXF 文件中'arc.dxf'
,导入完成后,您可以将块引用添加'b_test'
到目标 DXF 文件的模型空间中。
import ezdxf
from ezdxf.addons import Importer
source_dxf = ezdxf.readfile("blocks.dxf")
if 'b_test' not in source_dxf.blocks:
print("Block 'b_test' not defined.")
exit()
target_dxf = ezdxf.readfile("arc.dxf")
importer = Importer(source_dxf, target_dxf)
importer.import_block('b_test')
importer.finalize()
msp = target_dxf.modelspace()
msp.add_blockref('b_test', insert=(10, 10))
target_dxf.saveas("blockref_tutorial.dxf")
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2158 次 |
最近记录: |