上传文件至 ''

update version 1.1
This commit is contained in:
SheikahWolf 2024-01-26 01:12:54 +08:00
parent 0a17b59162
commit 0997febdf9
3 changed files with 90 additions and 65 deletions

104
README.md
View File

@ -1,53 +1,51 @@
# FuckJLC # FuckJLC
将其他EDA软件的gerber转换为傻逼立创EDA格式的脚本 将其他EDA软件的gerber转换为傻逼立创EDA格式的脚本
立创EDA狗都不用 立创EDA狗都不用
# Usage # Usage
首先查看`config.yaml`,修改工作目录等配置信息 首先查看`config.yaml`,修改工作目录等配置信息
然后查看`rule.yaml`,选择适合你的规则 然后查看`rule.yaml`,选择适合你的规则
然后运行脚本在输出目录中查看处理完成的gerber 然后运行脚本在输出目录中查看处理完成的gerber
最后复制钻孔文件 最后复制钻孔文件
``` shell ``` shell
# yum/apt/brew/scoop/winget install python # yum/apt/brew/scoop/winget install python
pip install pyyaml pip install pyyaml
python modify.py python modify.py
``` ```
请手动替换脚本中header和工作目录为你自己的
header获取方法立创EDA导出gerber→随意打开一个gerber文件 # 文件结构
# 文件结构 * `modify.py` 脚本主文件
* `config.yaml` 通用配置信息
* `modify.py` 脚本主文件 * `rule.yaml` 针对不同软件gerber的正则识别规则
* `config.yaml` 通用配置信息
* `rule.yaml` 针对不同软件gerber的正则识别规则 # 提示
# 提示 目前仅对有限格式的gerber做适配其他软件请发Issue并附带目录结构或者自力更生PR
目前仅对有限格式的gerber做适配其他软件请发Issue并附带目录结构或者自力更生PR 脚本并未严格测试,仅给各位提供一个绕过检测的思路,保险起见仍建议各位手动进行修改
脚本并未严格测试,仅给各位提供一个绕过检测的思路,保险起见仍建议各位手动进行修改 由于钻孔文件格式千奇百怪,脚本**不处理钻孔文件**,脚本完成后你需要手动复制钻孔文件
由于钻孔文件格式千奇百怪,脚本**不处理钻孔文件**,脚本完成后你需要手动复制钻孔文件 作者并没有仔细研究嘉立创的判定规则,目前看来凑合能用,就这样吧
作者并没有仔细研究嘉立创的判定规则,目前看来凑合能用,就这样吧 作者不为使用脚本造成的任何后果负责
作者不为使用脚本造成的任何后果负责 欢迎一切 新功能/bug/建议/对线/改错字 Issue/PR
欢迎一切 新功能/bug/建议/对线/改错字 Issue/PR # 工作原理
# 工作原理 脚本将会将你的gerber重命名为立创EDA的命名格式并在gerber文件的头部添加立创EDA的注释信息
脚本将会将你的gerber重命名为立创EDA的命名格式并在gerber文件的头部添加立创EDA的注释信息 除此之外,脚本不会做任何处理
除此之外,脚本不会做任何处理 **低调使用**
**低调使用** **嘉立创舔狗什么时候死啊**
**嘉立创舔狗什么时候死啊**

View File

@ -1,15 +1,16 @@
# 此处存放文件头 文件名等配置信息 # 此处存放文件头 文件名等配置信息
# 工作目录 # 工作目录
WorkDir: C:\Users\Public\Desktop WorkDir: ../
# 输出目录,可留空 # 输出目录,可留空
DestDir: DestDir: ../out
Header: |- Header: |-
G04 EasyEDA Pro v1.9.28, 2023-01-14 19:19:00* G04 EasyEDA v6.5.23, 2023-02-21 20:00:12*
G04 Gerber Generator version 0.3* G04 79a7123266304c56a38f2e75c23f1545,85767ff9b60442ae9acdb7a1f8f5a820,10*
G04 Gerber Generator version 0.2*
TextFileName: PCB下单必读.txt TextFileName: PCB下单必读.txt
TextFileContent: |- TextFileContent: |-
如何进行PCB下单 如何进行PCB下单

View File

@ -1,3 +1,4 @@
'''
Warn = """\033[0;31;40m Warn = """\033[0;31;40m
=======警告======= =======警告=======
此脚本仅包含有限的自动重命名功能 此脚本仅包含有限的自动重命名功能
@ -11,28 +12,53 @@ Warn = """\033[0;31;40m
\033[0m""" \033[0m"""
print(Warn) print(Warn)
raise Exception("READ THE WARNING") raise Exception("READ THE WARNING")
'''
import yaml, os, re import yaml
import os
import re
fconfig = open("config.yaml", "r", encoding="utf-8") fconfig = open("config.yaml", "r", encoding="utf-8")
frule = open("rule.yaml", "r", encoding="utf-8") frule = open("rule.yaml", "r", encoding="utf-8")
Config = yaml.load(fconfig, Loader=yaml.FullLoader) Config = yaml.load(fconfig, Loader=yaml.FullLoader)
Rule = yaml.load(frule, 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"] WorkDir = Config["WorkDir"]
DestDir = Config["DestDir"] DestDir = Config["DestDir"]
WorkDirFiles = os.listdir(WorkDir) WorkDirFiles = os.listdir(WorkDir)
if not DestDir: if not DestDir:
DestDir=os.path.join(WorkDir,'output') DestDir = os.path.join(WorkDir, "output")
if not os.path.exists(DestDir): if not os.path.exists(DestDir):
os.mkdir(DestDir) os.mkdir(DestDir)
#创建PCB下单必读文档 # 创建PCB下单必读文档
with open(os.path.join(DestDir, Config["TextFileName"]), "w") as textFile: with open(os.path.join(DestDir, Config["TextFileName"]), "w") as textFile:
textFile.write(Config["TextFileContent"]) textFile.write(Config["TextFileContent"])
#检验文件是否齐全/重复匹配 # 检验文件是否齐全/重复匹配
for key, value in Rule.items(): for key, value in Rule.items():
matchFile = [] matchFile = []
rePattern = re.compile(pattern=value) rePattern = re.compile(pattern=value)
@ -48,7 +74,7 @@ for key, value in Rule.items():
else: else:
print(key + " -> " + matchFile[0]) print(key + " -> " + matchFile[0])
#改名和加头操作 # 改名和加头操作
for key, value in Rule.items(): for key, value in Rule.items():
matchFile = "" matchFile = ""
rePattern = re.compile(pattern=value) rePattern = re.compile(pattern=value)
@ -65,4 +91,4 @@ for key, value in Rule.items():
fconfig.close() fconfig.close()
frule.close() frule.close()
exit() exit()