不打开CAD,如何查看DWG文件版本?(python实现)

不打开CAD,如何查看DWG文件版本?(python实现)

基本原理

可以把dwg文件当做文本文件,然后直接用记事本打开dwg文件,看开头的几个字,AC1032,这个是AutoCAD的图形格式版本代号,

image

这里我用记事本打开的文件,开头的部分显示AC1032,就说明这个dwg文件是是cad2018格式,同样其它文件也都可以这样查看。

图形版本代号对应软件版本关系如下:

图形版本代号 软件版本代号
MC0.0 DWG Release 1.1
AC1.2 DWG R1.2
AC1.4 DWG R1.4
AC1.50 DWG Release 2.0
AC2.10 DWG Release 2.10
AC1002 DWG Release 2.5
AC1003 DWG R2.6
AC1004 DWG R9
AC1006 DWG R10
AC1009 DWG R11/12(LT R1/R2)
AC1012 DWG R13(LT95)
AC1014 DWG R14、14.01(LT97/LT98)
AC1015 DWG AutoCAD 2000/2000i/2002
AC1018 DWG AutoCAD 2004/2005/2006
AC1021 DWG AutoCAD 2007/2008/2009
AC1024 DWG AutoCAD 2010/2011/2012
AC1027 DWG AutoCAD 2013/2014/2015/2016/2017
AC1032 DWG AutoCAD 2018/2019/2020/2021/2022/2023/2024

表格信息参考:https://www.autodesk.com.cn/support/technical/article/caas/sfdcarticles/sfdcarticles/CHS/drawing-version-codes-for-autocad.html

即是说,要查看DWG文件的版本,只需要把dwg文件当文本文件,打开查看开头的图形代码,根据这个关系表,就可以知道dwg文件的版本。

代码练习

OK,原理知道了,那我们现在假设出一个需求,然后尝试用代码去实现

需求:现在我有一套图纸,已经按各个专业分类好,放在不同的文件夹里面了。

  1. 1. 我想知道套图纸里面的每个dwg文件都是什么版本的,并且在dwg文件名后面加上文件的版本号,文件所在的目录结构不要变。

  2. 2. 统计一下这套图纸使用的文件版本都有哪些

这个需求很简单,这里先展示python来实现一下查看一张图纸的代码。

一张图纸会查看了,那整个文件夹内的图纸,无非就是一直循环就好了,还有重命名,只是我随便假设的一个需求,核心只要拿到dwg文件的版本,那就可以根据自己的需要来进行下一步操作了。

?

查看单张dwg文件的代码如下:

import os
import sys

def GetVersion(file):
    \\\"\\\"\\\"
    读取一个dwg文件的版本号
    \\\"\\\"\\\"
    # 打开文件的时候,用utf-8,还需要忽略解码错误的部分errors=\\\'ignore\\\'
    # 因为dwg其实并不是文本文件,只是强行把它当文本文件看而已
    with open(file, \\\'r\\\', encoding=\\\'utf-8\\\', errors=\\\'ignore\\\') as f:
        # 这里读取一行就行,不用读太多
        firstRowContent = f.readline()

        # 然后就看这一行的开头部分是什么,对照表格就行
        if firstRowContent.startswith(\\\'AC1014\\\'):
            return \\\'vR14\\\'
        elif firstRowContent.startswith(\\\'AC1015\\\'):
            return \\\'V2000-2002\\\'
        elif firstRowContent.startswith(\\\'AC1018\\\'):
            return \\\'V2004-2006\\\'
        elif firstRowContent.startswith(\\\'AC1021\\\'):
            return \\\'V2007-2009\\\'
        elif firstRowContent.startswith(\\\'AC1024\\\'):
            return \\\'V2010-2012\\\'
        elif firstRowContent.startswith(\\\'AC1027\\\'):
            return \\\'V2013-2017\\\'
        elif firstRowContent.startswith(\\\'AC1032\\\'):
            return \\\'V2018-2024\\\'
        else:
            # 未知版本
            return \\\'unKnown\\\'

if __name__ == \\\"__main__\\\":
    # 这里修改成你电脑上的具体dwg文件路径
    file = r\\\'d:/test/test.dwg\\\'
    version = GetVersion(file)
    print(f\\\'该文件的版本为:{version}\\\')

就这个函数就行,我这里只识别了R14-2024版本的,再低的版本,自己根据对照的表格,再加上条件和返回值就行了。上面的代码可以复制粘贴,然后修改一下路径,就可以看到结果了

这个需求的具体实现我就不展开说了,因为这个是随便假设出来的,主要还是想说一下怎么从dwg文件中读到版本号,就是上面的代码。

案例结果

这个小需求,我自己简单的把它封装成控制台的程序,有兴趣的同学可以在【质子开发者】公众号后台回复【dwg版本查看源码】获取已经打包好的命令行程序、以及对应的源代码。

大家可以下载下来然后自己改造一下,因为我写的并不符合实际的需求,代码的质量也很低,尽管我已经尽量删除一些没有必要的代码,但每个人基础不一样,有些同学看的时候,可能还是会觉得很冗余复杂。

看不懂也没关系,因为我写的也比较差,你可以先尝试自己构思去写一下就好了,重点是上面解析dwg的代码要看懂,那个已经是最核心、最精简的代码了。

该程序实现了如下功能:

  1. 1. 查看单个dwg文件的版本

  2. 2. 批量给某个文件夹内的所有dwg文件添加版本后缀

    这个是递归批量命名的,即文件夹内有子文件夹,子文件夹里面的文件也会被重命名

  3. 3. 清空版本号,恢复原来的文件名。

    同样是递归恢复命名

1.查看单个dwg文件的版本号

.\\\\CheckDwgVersion.exe \\\"D:\\\\Test\\\\全套施工图归档\\\\建筑\\\\1-出岛综合楼\\\\目1-图纸目录2013.09.10修改.dwg\\\"

?

2.给文件夹所有的dwg文件添加版本号

?

未命名前:

不打开CAD,如何查看DWG文件版本?(python实现)

?

执行命令:

 .\\\\CheckDwgVersion.exe \\\"D:\\\\Test\\\\全套施工图归档\\\\建筑\\\\S-设计说明\\\\S-设计说明\\\"
不打开CAD,如何查看DWG文件版本?(python实现)

效果

不打开CAD,如何查看DWG文件版本?(python实现)

3.清空版本号,恢复文件名

 .\\\\CheckDwgVersion.exe \\\"D:\\\\Test\\\\全套施工图归档\\\\建筑\\\\S-设计说明\\\\S-设计说明\\\" r
不打开CAD,如何查看DWG文件版本?(python实现)

效果:

?

最近打算创建一个关于Revit二次开发、CAD二次开发、图形算法等相关话题的交流群,欢迎大家入群交流。

?

原创文章,作者:网络技术联盟站,如若转载,请注明出处:https://www.sudun.com/ask/49911.html

(0)
网络技术联盟站's avatar网络技术联盟站
上一篇 2024年5月9日 上午7:09
下一篇 2024年5月9日 上午7:11

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注