希尔伯特曲线绘制插件 - 嘉立创EDA开源硬件平台

编辑器版本 ×
标准版 Standard

1、简单易用,可快速上手

2、流畅支持300个器件或1000个焊盘以下的设计规模

3、支持简单的电路仿真

4、面向学生、老师、创客

专业版 professional

1、全新的交互和界面

2、流畅支持超过3w器件或10w焊盘的设计规模,支持面板和外壳设计

3、更严谨的设计约束,更规范的流程

4、面向企业、更专业的用户

标准版 希尔伯特曲线绘制插件

  • 5.8k
  • 19
  • 111

简介:希尔伯特曲线绘制插件

开源协议: Public Domain

(未经作者授权,禁止转载)

创建时间: 2023-07-21 17:22:11
更新时间: 2024-02-05 01:35:14
描述
# 背景 近来流行使用铝基板打样制作发热板,最常用的就是阵列放线条,再做微调,但是看到一些玩家做的铝基板很花哨,研究了一下,是用的希尔伯特曲线,说是能做到最大长度,这么牛逼那就整,咋整,手绘那不成呆瓜了。看有人用py绘制,生成json导入。记得立创eda之前说过支持插件,那就研究下插件生成。 PS:官方也太不重视插件了,专业版不能用,标准版插件说明。。。太简单 # 效果图 ![无标题.png](//image.lceda.cn/pullimage/QscHYsnmsii3DdS9ltQ4LcyFZZ8XYFWHqfhJg6dR.png) 左边阵列摆放+手调,右边插件生成(半成品,暂时没用到) > 一阶(迭代1次) ![image.png](//image.lceda.cn/pullimage/9pmZnaDSQSjYoJUfwcEWmGEHChvyZ6ZdQa0xNPNa.png) > 二阶 ![image.png](//image.lceda.cn/pullimage/6KqmSEMijnfa4FKOHfGR8SAslfELFc8kCILfDhJG.png) > 五阶 ![image.png](//image.lceda.cn/pullimage/fwNIujETfP5wENZ8E4r3wZqoCcMX6weguDaNW37e.png) > 七阶(插件限制10阶,我破电脑最高跑到7,再高页面就崩了) ![image.png](//image.lceda.cn/pullimage/2YlhSoDsQoKWYdJndRHLrU4jtVAlQhKKkZrvnetN.png) # 插件安装 工程附件压缩包下载-解压,得到三个文件 ![image.png](//image.lceda.cn/pullimage/HuBWhqqaUYkQD405juToSZ2qCPwl0P5vgPeMaxQ6.png) 1. 打开**立创eda标准版**、**立创eda标准版**、**立创eda标准版**重要的事情说三遍,目前专业版不支持插件,需要标准版生成后再迁移到专业版,目前测试的web版,exe暂时没测 2. 高级--扩展--扩展配置 ![image.png](//image.lceda.cn/pullimage/eU12cp9QD3P9x7iL03kLTvZ3duWDmUREYtd0ft3n.png) 3. 点击加载扩展-选择刚才压缩文件解压出来的三个文件,正常情况扩展id会自动生成,如果没生成就随便输入个id,再点加载扩展加载成功 ![image.png](//image.lceda.cn/pullimage/WxiCfpCdnO5QSq0PJ7ASishu6ewM4W7eO84VKbZ3.png) 4. 加载成功的效果(只有PCB界面才有按钮,原理图页面没有按钮) ![image.png](//image.lceda.cn/pullimage/QNhDYMbMPnaKz2TSpcsRy5yNspQe5094wFnOoy4B.png) # 插件使用 1. 打开一个PCB文件 2. 点击菜单中的“希尔伯特曲线”按钮 2. 在弹窗中输入线宽、线距、迭代次数,然后点击应用 3. 插件执行,自动新增一个PCB文件,在顶层生成一个hc$9999网络的希尔伯特曲线 **注:**线宽、线距看下图标注,迭代次数实际上就是函数递归次数,也就是希尔伯特曲线的阶,说人话就是图形总大小 ![image.png](//image.lceda.cn/pullimage/ei0XIVQDmGWIHqTErJZ65uxQowkIjEv7M44RRx1c.png) ![image.png](//image.lceda.cn/pullimage/YzpX7GpxUon94Wkj0GJCvC5wOrxnZvrFEJluNm41.png) # 简单模式 导入插件的方式,一次折腾,以后省心,但是装插件也是个麻烦事,嫌麻烦的就再换个更简单的方式,直接运行脚本 1. 高级--扩展--运行脚本 2. main.js文件中的代码段粘贴进去,取消三个参数的注释,按需要修改 3. 点击运行按钮,自动生成曲线 4. **注:** ![image.png](//image.lceda.cn/pullimage/xUvrWCASBRdqSQWVXJIyKw61EVvxwxnQ0NmNhljY.png) ![image.png](//image.lceda.cn/pullimage/zhtaX4svoXzLHpzylYSV32PDTiG2fU46uYYeUOl1.png) ``` /*************************************可独立运行脚本**************************************/ let width=1;//线宽 let spacing=2;//间距 let iterations=4;//迭代次数 //单位转换 let pixelWidth = api('unitConvert', { type: 'mm2pixel', value: width }); let pixelSpacing = api('unitConvert', { type: 'mm2pixel', value: spacing }) let x = 0, y = 0; let h = pixelSpacing; let maxGid = 1111; var TRACK = {}; //图形迭代 function line(x1, y1, x2, y2) { gid = "gge" + maxGid++; TRACK[gid] = { "gId": gid, "layerid": "1", "net": "hc$9999", "pointArr": [{ "x": x1, "y": y1 }, { "x": x2, "y": y2 } ], "strokeWidth": pixelWidth } } function One(n) // 方式(1)的递归调用 { if (n > 0) { Two(n - 1); line(x, y, x, y += h); One(n - 1); line(x, y, x += h, y); One(n - 1); line(x, y, x, y -= h); Four(n - 1); } } function Two(n) // 方式(2)的递归调用 { if (n > 0) { One(n - 1); line(x, y, x += h, y); Two(n - 1); line(x, y, x, y += h); Two(n - 1); line(x, y, x -= h, y); Three(n - 1); } } function Three(n) // 方式(3)的递归调用 { if (n > 0) { Four(n - 1); line(x, y, x, y -= h); Three(n - 1); line(x, y, x -= h, y); Three(n - 1); line(x, y, x, y += h); Two(n - 1); } } function Four(n) // 方式(4)的递归调用 { if (n > 0) { Three(n - 1); line(x, y, x -= h, y); Four(n - 1); line(x, y, x, y -= h); Four(n - 1); line(x, y, x += h, y); One(n - 1); } } var json = api('getSource', { type: 'json' }); One(iterations); //线长 let length=spacing*Object.keys(TRACK).length; console.log(`总线长:${length}mm`); /*铜的电阻率: ρ=0.0175Ωmm2/m 走线长度: L 走线宽度: W PCB铜厚度: D=0.035mm(加工消耗,采用0.03mm) PCB走线电阻:R=(ρL)/(1000×WD) R=(ρL)/(1000×WD)*/ let R=0.0175*length/1000/0.03/width; console.log(`总阻值:${R}Ω`); json = { "DRCRULE": json.DRCRULE, "preference": json.preference, "SIGNALS": {}, "netColors": {}, "itemOrder": [], "canvas": json.canvas, "layers": json.layers, "objectMap": json.objectMap, "netRuleMap": {}, "head": json.head, "BBox": json.BBox, "importFlag": 0, "PAD": {}, "TRACK": TRACK } api('applySource', { source: json, createNew: true }); ``` # 尾声 希尔伯特曲线生成代码直接参考的网友的,在此感谢:[JavaScript图形实例:Hilbert曲线](https://www.cnblogs.com/cs-whut/p/13257224.html) 插件开发问题联系了立创eda的微信客服,反馈的也比较及时,赞一个
设计图
原理图
1 /
PCB
1 /
未生成预览图,请在编辑器重新保存一次
工程视频/附件
工程成员
侵权投诉
相关工程
换一批
加载中...
添加到专辑 ×

加载中...

温馨提示 ×

是否需要添加此工程到专辑?

温馨提示
动态内容涉嫌违规
内容:
  • 153 6159 2675

服务时间

周一至周五 9:00~18:00
  • 技术支持

support
  • 开源平台公众号

MP