zoukankan      html  css  js  c++  java
  • python 处理CAD文件

     注意:如下的两个脚本都是我自己亲自试过的,可以运行得到结果!可以直接运行!可以直接运行!

    网上的中文api能找到的不够全,工作中有用到部分功能,自己从中文英文资料里面找到一些,这里做一些总结。

    画图api:这里保存的文件是dxf类型。

    
    
    """
    可以直接运行,前提是你把模块安装好
    ezdxf模块生成dxf文件画线、圆、多边形、填充颜色
    """
    import ezdxf # 画图的基本功能,这个库会比较容易找到api,用起来还比较方便。生成的dxf文件的2000版本
    import uuid
    import os

    save_file_path = r"D:logs"


    def apply_colour():
    """
    写字,填充功能,画圆,画线,画多边形
    :return:
    """
    doc = ezdxf.new('R2000') # ezdxf 这个模块目前能处理的cad文件是2000版本
    msp = doc.modelspace()
    msp.add_text(
    'code change the world',
    dxfattribs={
    'layer': 'TEXTLAYER'
    }).set_pos((0, 0.2), align='CENTER') # 写字

    msp.add_line(
    (153.0, 34.0),
    (173.0, 127.0),
    dxfattribs={'color': 150, 'lineweight': 60}
    ) # 画线 color 数值范围1-255

    # 设置4边形4个点坐标
    rect_points_outer = [(1.0, 1.0), (8.0, 1.0), (8.0, 8.0), (1.0, 8.0)]
    msp.add_lwpolyline(
    rect_points_outer,
    dxfattribs={"closed": True}
    ) # 画多边形。这里画的是4边形,如果需要画多边形,把坐标设置好排列出来即可。

    msp.add_circle(
    (10, 20),
    1.5
    ) # 画圆

    hatch = msp.add_hatch(color=2) # 填充功能,颜色设置的rgb值
    hatch.paths.add_polyline_path(
    [
    (0, 0), (10, 10), (0, 10)
    ],
    is_closed=1,
    flags=16
    ) # 设置3边形,并填充颜色
    hatch.paths.add_polyline_path(
    [
    (0, 0), (0, 5), (5, 5), (5, 0)
    ],
    is_closed=1,
    flags=0
    ) # 设置4边形并填充颜色

    random_str = str(uuid.uuid4()) # 设置随机数命名新文件
    new_file = os.path.join(
    save_file_path, "{}.dxf".format(random_str)
    )
    print(new_file)
    doc.saveas(new_file)


    apply_colour()

    把dxf类型转变成dwg格式:值得注意的是,因为Autocad会调用cad内核,所以,建议在运行脚本之前,先在跟脚本同一电脑上打开cad软件,否则,脚本运行时间过长,或者会阻塞。

    """
    可以直接run,打开一个dxf文件转换成dwg文件
    """
    from pyautocad import Autocad
    import uuid
    import os
    import time
    
    
    def turn_dxf_to_dwg_file(dxf_file_path):
        """
        could open dxf file save as dwg file and after you save you can close 
        the current file
        :param dxf_file_path: 
        :return: 
        """
        # todo not yet apply different color
        acad = Autocad(create_if_not_exists=True)
        # open CAD file
        acad.ActiveDocument.Application.Documents.open(dxf_file_path)
        random_str = str(uuid.uuid4()).replace("-", "")
        dwg_saved_arg = 8  # 这里的参数很重要,在网上找了很多,不是随便的数字都能成功转换的,不信的话,大可一试。
    
        save_path = r"C:UsersAdministratorDesktopdwg-完成"
        if not os.path.exists(save_path):
            os.mkdir(save_path)
            time.sleep(0.2)
        saved_done = os.path.join(save_path, random_str)
        acad.doc.SaveAs(saved_done, dwg_saved_arg)
        print(saved_done)
        # close current file
        # acad.ActiveDocument.Close()
    
    
    pth = r"C:UsersAdministratorDesktopcad-项目相关文件cad-test-files86b9test-turn-dwg-format.dxf"
    turn_dxf_to_dwg_file(pth)

    注意:我自己安装的2007版本的Autocad软件,可以直接打开转换成dwg格式的文件。Autocad软件我也不熟,不知道转换格式后是哪个版本的dwg。 

    备份参数:

    dwt_dwl = [14, 26]  # 这里会生成dwt和dwl两个文件
    dwg_dwl = [8, 12, 24, 14, 26] # 其中:14、26有dwt格式,但是用autoCAD打开,确实是dwg,
    内部有转换可能。
    dxf_ = [1, 13, 25, 37] # 这里是单纯生成一个dxf文件的参数
  • 相关阅读:
    Microsoft Enterprise Library 5.0 系列(二) Cryptography Application Block (初级)
    Microsoft Enterprise Library 5.0 系列(五) Data Access Application Block
    Microsoft Enterprise Library 5.0 系列(八) Unity Dependency Injection and Interception
    Microsoft Enterprise Library 5.0 系列(九) Policy Injection Application Block
    Microsoft Enterprise Library 5.0 系列(三) Validation Application Block (高级)
    软件研发打油诗祝大家节日快乐
    从挖井的故事中想到开发管理中最容易忽视的几个简单道理
    ITIL管理思想的执行工具发布
    管理类软件设计“渔”之演化
    20070926日下午工作流与ITILQQ群 事件管理 讨论聊天记录
  • 原文地址:https://www.cnblogs.com/2012-dream/p/14686578.html
Copyright © 2011-2022 走看看