diff --git a/README.md b/README.md index cde2d98..9c2bd12 100644 --- a/README.md +++ b/README.md @@ -1,53 +1,51 @@ -# FuckJLC - -将其他EDA软件的gerber转换为傻逼立创EDA格式的脚本 - -立创EDA狗都不用 - -# Usage - -首先查看`config.yaml`,修改工作目录等配置信息 - -然后查看`rule.yaml`,选择适合你的规则 - -然后运行脚本,在输出目录中查看处理完成的gerber - -最后复制钻孔文件 - -``` shell -# yum/apt/brew/scoop/winget install python -pip install pyyaml -python modify.py -``` -请手动替换脚本中header和工作目录为你自己的 -header获取方法:立创EDA导出gerber→随意打开一个gerber文件 - -# 文件结构 - -* `modify.py` 脚本主文件 -* `config.yaml` 通用配置信息 -* `rule.yaml` 针对不同软件gerber的正则识别规则 - -# 提示 - -目前仅对有限格式的gerber做适配,其他软件请发Issue并附带目录结构或者自力更生PR - -脚本并未严格测试,仅给各位提供一个绕过检测的思路,保险起见仍建议各位手动进行修改 - -由于钻孔文件格式千奇百怪,脚本**不处理钻孔文件**,脚本完成后你需要手动复制钻孔文件 - -作者并没有仔细研究嘉立创的判定规则,目前看来凑合能用,就这样吧 - -作者不为使用脚本造成的任何后果负责 - -欢迎一切 新功能/bug/建议/对线/改错字 Issue/PR - -# 工作原理 - -脚本将会将你的gerber重命名为立创EDA的命名格式,并在gerber文件的头部添加立创EDA的注释信息 - -除此之外,脚本不会做任何处理 - -**低调使用** - -**嘉立创舔狗什么时候死啊** +# FuckJLC + +将其他EDA软件的gerber转换为傻逼立创EDA格式的脚本 + +立创EDA狗都不用 + +# Usage + +首先查看`config.yaml`,修改工作目录等配置信息 + +然后查看`rule.yaml`,选择适合你的规则 + +然后运行脚本,在输出目录中查看处理完成的gerber + +最后复制钻孔文件 + +``` shell +# yum/apt/brew/scoop/winget install python +pip install pyyaml +python modify.py +``` + +# 文件结构 + +* `modify.py` 脚本主文件 +* `config.yaml` 通用配置信息 +* `rule.yaml` 针对不同软件gerber的正则识别规则 + +# 提示 + +目前仅对有限格式的gerber做适配,其他软件请发Issue并附带目录结构或者自力更生PR + +脚本并未严格测试,仅给各位提供一个绕过检测的思路,保险起见仍建议各位手动进行修改 + +由于钻孔文件格式千奇百怪,脚本**不处理钻孔文件**,脚本完成后你需要手动复制钻孔文件 + +作者并没有仔细研究嘉立创的判定规则,目前看来凑合能用,就这样吧 + +作者不为使用脚本造成的任何后果负责 + +欢迎一切 新功能/bug/建议/对线/改错字 Issue/PR + +# 工作原理 + +脚本将会将你的gerber重命名为立创EDA的命名格式,并在gerber文件的头部添加立创EDA的注释信息 + +除此之外,脚本不会做任何处理 + +**低调使用** + +**嘉立创舔狗什么时候死啊** diff --git a/config.yaml b/config.yaml index ec580c8..0036f54 100644 --- a/config.yaml +++ b/config.yaml @@ -1,15 +1,16 @@ # 此处存放文件头 文件名等配置信息 # 工作目录 -WorkDir: C:\Users\Public\Desktop +WorkDir: ../ # 输出目录,可留空 -DestDir: +DestDir: ../out Header: |- - G04 EasyEDA Pro v1.9.28, 2023-01-14 19:19:00* - G04 Gerber Generator version 0.3* - + G04 EasyEDA v6.5.23, 2023-02-21 20:00:12* + G04 79a7123266304c56a38f2e75c23f1545,85767ff9b60442ae9acdb7a1f8f5a820,10* + G04 Gerber Generator version 0.2* + TextFileName: PCB下单必读.txt TextFileContent: |- 如何进行PCB下单 diff --git a/modify.py b/modify.py index 9bfe3fd..d113ef4 100644 --- a/modify.py +++ b/modify.py @@ -1,3 +1,4 @@ +''' Warn = """\033[0;31;40m =======警告======= 此脚本仅包含有限的“自动重命名”功能,它: @@ -11,28 +12,53 @@ Warn = """\033[0;31;40m \033[0m""" print(Warn) raise Exception("READ THE WARNING") - -import yaml, os, re +''' +import yaml +import os +import re fconfig = open("config.yaml", "r", encoding="utf-8") frule = open("rule.yaml", "r", encoding="utf-8") Config = yaml.load(fconfig, Loader=yaml.FullLoader) Rule = yaml.load(frule, Loader=yaml.FullLoader) + +def rand_str(size): + chars = b"0123456789abcdef" + data = bytearray(size) + for i in range(size): + ri = int.from_bytes(os.urandom(4), "big") % len(chars) + ch = chars[ri] + data[i] = ch + return data.decode("utf-8") + + +def rand_head_line_2(): + r1 = rand_str(32) + r2 = rand_str(32) + return f"G04 {r1},{r2},10*" + + +# random generate header line 2 +headers = Config["Header"].split("\n") +if len(headers) >= 2: + headers[1] = rand_head_line_2() +Config["Header"] = "\n".join(headers) + WorkDir = Config["WorkDir"] DestDir = Config["DestDir"] WorkDirFiles = os.listdir(WorkDir) if not DestDir: - DestDir=os.path.join(WorkDir,'output') + DestDir = os.path.join(WorkDir, "output") if not os.path.exists(DestDir): os.mkdir(DestDir) -#创建PCB下单必读文档 +# 创建PCB下单必读文档 with open(os.path.join(DestDir, Config["TextFileName"]), "w") as textFile: textFile.write(Config["TextFileContent"]) -#检验文件是否齐全/重复匹配 +# 检验文件是否齐全/重复匹配 for key, value in Rule.items(): matchFile = [] rePattern = re.compile(pattern=value) @@ -48,7 +74,7 @@ for key, value in Rule.items(): else: print(key + " -> " + matchFile[0]) -#改名和加头操作 +# 改名和加头操作 for key, value in Rule.items(): matchFile = "" rePattern = re.compile(pattern=value) @@ -65,4 +91,4 @@ for key, value in Rule.items(): fconfig.close() frule.close() -exit() \ No newline at end of file +exit()