将 Allegro 坐标文件转为嘉立创坐标文件(CSV 格式)的工具

Allegro 坐标文件格式:

工具:

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>Allegro Placement File to Jialichuang File</title></head><body><input type="file" accept="*" /><script type="text/javascript">const LINE_BREAK = "\r\n";window.onload = (event) => {// console.log(event);main();}function main() {const inputFile = document.querySelector("input[type='file']");inputFile.onchange = inputFileOnChange;}function inputFileOnChange(event) {const files = event.target.files;if (files.length > 0) {const file = files[0];// console.log(file);const fileReader = new FileReader()fileReader.onload = (event) => {// console.log(event);const text = fileReader.result;console.log(text);/** 处理 place_txt.txt 文件*/const lines = text.split(LINE_BREAK); // 分割成行// console.log(lines.length, lines);for (let i = 0; i < lines.length; i++) {// console.log(lines[i]);// 使用 filter 方法对数组进行拷贝,删除空字符串元素,保留其他元素lines[i] = lines[i].split(" ").filter((element) => {return element !== "";});console.log(`${i}:`, lines[i]);}/** 删除不必要的行数*/if (lines[0].length === 3) {lines.splice(0, 1); // 删除首行:['UUNITS', '=', 'MILLIMETERS']}if (lines[lines.length - 1].length === 0) {lines.splice(lines.length - 1, 1); // 删除末行:[]}// console.log(lines);/** 将 "m" 替换为 "B",表示该元件位于底层(Bottom);其他插入 "T",表示该元件位于顶层(Top)*/for (let i = 0; i < lines.length; i++) {if (lines[i].length === 5) {lines[i].splice(lines[i].length - 1, 0, "T"); // 在最后一个元素之前插入一个 "T" 的元素} else if (lines[i].length === 6) {lines[i][lines[i].length - 2] = "B"; // 将倒数第二个元素("m")的内容替换为 "B"}console.log(`${i}:`, lines[i]);}/** 将 Allegro 文件的顺序改为嘉立创文件的顺序*/// const header = ["Designator", "Footprint", "Mid X", "Mid Y", "Layer", "Rotation"]; // 嘉立创坐标文件的顺序const header = ["Designator", "Mid X", "Mid Y", "Rotation", "Layer", "Footprint"]; // Allegro 坐标文件的顺序lines.unshift(header); // 添加到数组的最前面console.log(lines);const INDEX_OF_DESIGNATOR = 0;const INDEX_OF_MID_X = 1;const INDEX_OF_MID_Y = 2;const INDEX_OF_ROTATION = 3;const INDEX_OF_LAYER = 4;const INDEX_OF_FOOTPRINT = 5;// 按照嘉立创的顺序,将数组中的元素连接在 content 后面let content = "";for (let i = 0; i < lines.length; i++) {content += lines[i][INDEX_OF_DESIGNATOR] + ",";content += lines[i][INDEX_OF_FOOTPRINT] + ",";content += lines[i][INDEX_OF_MID_X] + ",";content += lines[i][INDEX_OF_MID_Y] + ",";content += lines[i][INDEX_OF_LAYER] + ",";content += lines[i][INDEX_OF_ROTATION] + ",";content += LINE_BREAK;}Tools_saveStringAsFile({filename: "place_txt.csv",type: "text/csv;charset=utf-8",content: content});}fileReader.readAsText(file, "GB2312");}}function Tools_saveStringAsFile(obj) {const blob = new Blob([ obj.content ], { type: obj.type });const objectURL = URL.createObjectURL(blob);const anchor = document.createElement("a");anchor.href = objectURL;anchor.download = obj.filename;anchor.click();URL.revokeObjectURL(objectURL);}</script></body>
</html>

运行效果:

下载文件之后,使用记事本打开 CSV 文件,其的内容如下:

使用 WPS 打开 CSV 文件,其的内容如下:

参考

Allegro PCB Design GXL (legacy) - 导出 PCB 中元件的坐标文件

JavaScript - 将特定格式的字符串保存为 CSV 文件

JavaScript - 将 Allegro 坐标文件转为嘉立创坐标文件(CSV 格式)的工具相关推荐

  1. kicad导出Gerber文件到嘉立创打板……

    kicad导出Gerber文件到嘉立创打板超级详细流程 先将画好的pcb导出为Gerber文件,这里需要用到kicad的插件~(Fabrication Toolkit) 我这里已经安装过了,所以显示的 ...

  2. Graphviz之DT:手把手教你使用可视化工具Graphviz将dot文件转为结构图的pdf文件

    Graphviz之DT:手把手教你使用可视化工具Graphviz将dot文件转为结构图的pdf文件 目录 Graphviz软件的下载 Graphviz将dot文件转为结构图的pdf文件 输出结果 Gr ...

  3. Graphviz之DT:手把手教你使用可视化工具Graphviz将dot文件转为结构图的png文件

    Graphviz之DT:手把手教你使用可视化工具Graphviz将dot文件转为结构图的png文件 目录 Graphviz软件的下载 Graphviz使用方法 Graphviz软件的下载 Graphv ...

  4. 轻松将CAD文件转为加密的PDF文件

    对于从事设计相关工作的朋友来说,CAD肯定再熟悉不过了.一些有特殊要求的CAD文件,需要将其转换成为PDF文件以方便保存.传输.打印,同时还得保证设计图稿的安全性,所以将CAD文件直接转为加密的PDF ...

  5. KiCAD 一键导出嘉立创生产文件 - 坐标,BOM,以及Gerber

    感谢作者开发了这样一个工具: xtoolbox/kicad_tools: Tools for kicad 1. 安装插件: Windows git clone https://github.com/x ...

  6. KICAD生成嘉立创SMT文件

    1 导出原理图BOOM 生成之后自己根据需要找出对应得原件,然后生成嘉立创格式的表 2  生成光绘 先放个坐标,放在左下角 默认点击绘制,再点生成钻孔 生成钻孔文件和映射文件 最终2层板得到13个文件 ...

  7. ad 导gerbera过孔层_嘉立创在线下单技术指导-AD输出Gerber文件步骤 - 嘉立创PCB业务推广网站...

    嘉立创在线下单技术指导---AD输出Gerber文件步骤 请各位布线工程师注意输出GERBER之前一定要先考虑到过孔(VIA)是开窗还是盖油.我不想看见在有客户反馈我下单系统明明选择过孔盖油,为何成品 ...

  8. ad 导gerbera过孔层_AD过孔盖油输出Gerber文件步骤!-嘉立创PCB打样专业工厂-线路板打样...

    请各位布线工程师注意输出GERBER之前一定要先考虑到过孔(VIA)是开窗还是盖油.我不想看见在有客户反馈我下单系统明明选择过孔盖油,为何成品板还是给我过孔开窗了. 下面介绍下过孔(VIA)盖油是如何 ...

  9. python 读取csv文件转成字符串,python实现csv格式文件转为asc格式文件的方法

    一.背景描述 csv格式文件是一种类似于excel的文件格式 asc格式文件是一种可以用text打开的文本文件 csv转asc本来可以用arcgis顺利完成,但由于csv数据量太大(744万行),ar ...

最新文章

  1. python selenium脚本_怎样开始写第一个基于python的selenium脚本
  2. 你训练的神经网络不对头的37个原因
  3. python 基础命令-python常用命令有哪些
  4. Objective C 中的nil,Nil,NULL和NSNull理解
  5. oracle 作业 断开原因,解惑 | Oracle JOB 异常中断原因分析
  6. helm3添加harbor仓库:带鉴权--username --password
  7. 在Ubuntu 18.04上实际安装OpenJDK 11
  8. myeclipse5.5注册码
  9. [vue] vue给组件绑定自定义事件无效怎么解决?
  10. 服务器搭建mutt邮件发送环境
  11. 最大回撤,最大回撤恢复时间与最大回撤持续期
  12. CentOS 6.5 yum安装mysql5.6或其他版本【默认yum只能安装mysql 5.1】 by jason
  13. Win10怎么进Bios Win10系统进入BIOS界面的方法图文详解
  14. 免费的PDF转换器有哪些?小圆象PDF转换器办公达人必备工具
  15. 有道云笔记客户端的下载和安装、使用(博主推荐)
  16. vue element 输入框出现英文提示怎样解决
  17. ArcGIS教程01:面重叠检查
  18. gcc/gdb/make/动/静态链接库介绍
  19. [文档+源码]SpringBoot+Mysql实现的宠物在线商城宠物交易平台宠物店源码
  20. 江南大学计算机考研招生人数,江南大学考研人数+调剂人数+录取人数+被刷人数+保研人数...

热门文章

  1. Ubuntu 下同局域网主机访问Tomcat 服务器
  2. linux下中文输入法的安装(解决菜单栏输入法图标消失问题)
  3. B. Shifting Sort (思维)
  4. DolphinDB智臾科技CEO周小华:《从反向控制的终极目标谈时序数据库的架构设计》
  5. 神秘的程序员头像包(附口罩版)第一发
  6. DNS域传送漏洞--vulhub复现
  7. 数据结构实验课_实验四 队列
  8. Java5、8、9章复习总结
  9. 安卓模拟器按键_超好用的网易MuMu安卓模拟器(兼容MacOS10.15系统)
  10. 音调识别 php,PHP 汉字转拼音工具