站内搜索
发作品签到
希尔伯特曲线绘制插件
标准版

希尔伯特曲线绘制插件

工程标签

电路模块

1.2w
0
0
35

简介

希尔伯特曲线绘制插件

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

开源协议

Public Domain

创建时间:2023-07-21 17:22:11更新时间:2023-07-24 18:07:38

描述

背景

近来流行使用铝基板打样制作发热板,最常用的就是阵列放线条,再做微调,但是看到一些玩家做的铝基板很花哨,研究了一下,是用的希尔伯特曲线,说是能做到最大长度,这么牛逼那就整,咋整,手绘那不成呆瓜了。看有人用py绘制,生成json导入。记得立创eda之前说过支持插件,那就研究下插件生成。

PS:官方也太不重视插件了,专业版不能用,标准版插件说明。。。太简单

效果图

无标题.png

左边阵列摆放+手调,右边插件生成(半成品,暂时没用到)

> 一阶(迭代1次)

image.png

> 二阶

image.png

> 五阶

image.png

> 七阶(插件限制10阶,我破电脑最高跑到7,再高页面就崩了)

image.png

插件安装

工程附件压缩包下载-解压,得到三个文件

image.png

  1. 打开立创eda标准版立创eda标准版立创eda标准版重要的事情说三遍,目前专业版不支持插件,需要标准版生成后再迁移到专业版,目前测试的web版,exe暂时没测
  2. 高级--扩展--扩展配置

image.png

  1. 点击加载扩展-选择刚才压缩文件解压出来的三个文件,正常情况扩展id会自动生成,如果没生成就随便输入个id,再点加载扩展加载成功

image.png

  1. 加载成功的效果(只有PCB界面才有按钮,原理图页面没有按钮)

image.png

插件使用

  1. 打开一个PCB文件
  2. 点击菜单中的“希尔伯特曲线”按钮
  3. 在弹窗中输入线宽、线距、迭代次数,然后点击应用
  4. 插件执行,自动新增一个PCB文件,在顶层生成一个hc$9999网络的希尔伯特曲线
    **注:**线宽、线距看下图标注,迭代次数实际上就是函数递归次数,也就是希尔伯特曲线的阶,说人话就是图形总大小

image.png

image.png

简单模式

导入插件的方式,一次折腾,以后省心,但是装插件也是个麻烦事,嫌麻烦的就再换个更简单的方式,直接运行脚本

  1. 高级--扩展--运行脚本
  2. main.js文件中的代码段粘贴进去,取消三个参数的注释,按需要修改
  3. 点击运行按钮,自动生成曲线

注:

image.png
image.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曲线
插件开发问题联系了立创eda的微信客服,反馈的也比较及时,赞一个

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

3D模型

序号文件名称下载次数
暂无数据

附件

序号文件名称下载次数
1
希尔伯特曲线-立创eda插件.zip
351
2
希尔伯特曲线-立创eda插件-20230724001.zip
543
克隆工程
添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

底部导航