找回密码
 注册
关于网站域名变更的通知
查看: 421|回复: 55
打印 上一主题 下一主题

[SKILL分享]Draw Drill Hole钻孔内径绘制工具(源码)

  [复制链接]
  • TA的每日心情
    奋斗
    2025-7-7 15:38
  • 签到天数: 83 天

    [LV.6]常住居民II

    跳转到指定楼层
    1#
     楼主| 发表于 2025-7-14 11:09 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    本帖最后由 db-_- 于 2025-7-14 11:09 编辑

    根据以下帖子的框架重写了大部分函数。
    https://bbs.eda365.com/forum.php?mod=viewthread&tid=134053&highlight=drill%2Bhole

    并解决了上述帖子的几个问题。
    1、椭圆形焊盘只有当h>=w时才可以用,h<w则不行的问题。
    2、17.2及以后版本不识别椭圆的问题。
    3、旋转坐标部分可读性差的问题。

    旋转坐标公式基础:
    x' = x*cosθ - y*sinθ
    y' = x*sinθ + y*cosθ

    绘制椭圆的原理:
    找到两个半圆的四个顶点,依次绘制直线、曲线、直线、曲线即可。见以下示意图,慢慢理解。



    源码回复后可见。

    游客,如果您要查看本帖隐藏内容请回复






    评分

    参与人数 3威望 -1 收起 理由
    a5103294 + 2 感谢分享!
    fang123 + 2 赞一个!
    zfd552487261 -5 赞一个!

    查看全部评分

  • TA的每日心情
    开心
    2024-9-6 15:29
  • 签到天数: 1 天

    [LV.1]初来乍到

    推荐
    发表于 2025-7-14 15:32 | 只看该作者
    大佬,请教1个问题,我想要写1个等距离创建过孔的skill,如何点选1个过孔,然后按上下左右以等距离创建过孔?下面是我的代码,但是这个代码只能运行后再点选才能创建过孔,而且无法连续创建,怎么样先点选过孔,再创建
    1. defun( CopyViaBySameDimension (x_offset y_offset)
    2.     let((ViaDbid)
    3.         axlSetFindFilter(?enabled (list "noall" "VIAS") ?onButtons (list "VIAS"))
    4.         axlClearSelSet()
    5.         axlMsgPut("Select a via as reference...")
    6.         selectedVia = axlSingleSelectPoint()
    7.         ViaDbid = axlGetSelSet(selectedVia)                        ;获取选择对象的DBID
    8.                 ;unless(axlOKToProceed() axlShell("done"))
    9.                 when(ViaDbid
    10.                 padstackName = car(ViaDbid)->name      ;获取焊盘名称
    11.             ViaNet = car(ViaDbid)->net->name       ;获取当前选择过孔的网络名称
    12.                 ViaXY  = car(ViaDbid)->xy              ;获取当前选择过孔的坐标
    13.                 ViaRotation  = car(ViaDbid)->via->rotation  ;获取旋转角度
    14.                 ViaMirror  = car(ViaDbid)->via->mirrored  ;获取旋转角度

    15.                 x = xCoord(ViaXY)  ; 获取x坐标
    16.                 y = yCoord(ViaXY)  ; 获取y坐标
    17.                         ;点击左右则x变化,y不变
    18.                 x = x + x_offset
    19.                 ;点击上下则y变化,X不变
    20.                 y = y + y_offset
    21.                         ;unless(axlOKToProceed() axlShell("done"))
    22.                 newVia = axlDBCreateVia(padstackName , x:y , ViaNet, ViaMirror , ViaRotation , nil) ;创建过孔
    23.                         );end while
    24.                 when(newVia
    25.                         NewViaDbid = list(car(newVia))
    26.                     axlHighlightObject(NewViaDbid t)
    27.                 );end when
    28.                     
    29.     );end let   
    30. );end defun       
    复制代码

    点评

    Q:但是这个代码只能运行后再点选才能创建过孔 A:没明白你的意思,代码不都是运行后点选再创建过孔的吗? Q:而且无法连续创建 A:连续创建需要加一个while循环函数。随便找一个类似的支持循环点击的功能源码看看  详情 回复 发表于 2025-7-14 17:39
  • TA的每日心情
    奋斗
    2025-7-7 15:38
  • 签到天数: 83 天

    [LV.6]常住居民II

    推荐
     楼主| 发表于 2025-7-14 17:39 | 只看该作者
    学无止境``` 发表于 2025-7-14 15:32
    大佬,请教1个问题,我想要写1个等距离创建过孔的skill,如何点选1个过孔,然后按上下左右以等距离创建过孔 ...

    Q:但是这个代码只能运行后再点选才能创建过孔
    A:没明白你的意思,代码不都是运行后点选再创建过孔的吗?

    Q:而且无法连续创建
    A:连续创建需要加一个while循环函数。随便找一个类似的支持循环点击的功能源码看看就知道了

    点评

    这个支持循环点击是什么意思  详情 回复 发表于 2025-7-15 09:52
    这部分代码在form中Up Down Left Right这几个按钮的field下面调用的,是上下左右,点击Up按钮以后,才能点选VIA,创建过孔;无法先点选via,再点击Up按钮,创建VIA  详情 回复 发表于 2025-7-14 18:07
  • TA的每日心情
    开心
    2024-9-6 15:29
  • 签到天数: 1 天

    [LV.1]初来乍到

    推荐
    发表于 2025-7-14 18:07 | 只看该作者
    db-_- 发表于 2025-7-14 17:39
    Q:但是这个代码只能运行后再点选才能创建过孔
    A:没明白你的意思,代码不都是运行后点选再创建过孔的吗? ...

    这部分代码在form中Up Down Left Right这几个按钮的field下面调用的,是上下左右,点击Up按钮以后,才能点选VIA,创建过孔;无法先点选via,再点击Up按钮,创建VIA

    点评

    你把获取器件信息放到主函数里,把创建via的函数放到上下左右按钮对应的回调函数里就行了。  详情 回复 发表于 2025-7-14 18:20
  • TA的每日心情
    开心
    2025-7-17 15:12
  • 签到天数: 47 天

    [LV.5]常住居民I

    6#
    发表于 2025-7-14 11:28 | 只看该作者
    大佬威武,围观看看
  • TA的每日心情
    擦汗
    2024-4-3 15:24
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    7#
    发表于 2025-7-14 11:29 | 只看该作者
    围观大佬 ,感谢分享

    该用户从未签到

    8#
    发表于 2025-7-14 11:40 | 只看该作者
    大佬威武,围观看看

    该用户从未签到

    9#
    发表于 2025-7-14 11:53 | 只看该作者
    16.6调用失败

    点评

    请描述一下失败现象。 [*];;独立使用,使用以下命令: [*];; skill dbDrawDrillHoles("BOARD GEOMETRY/DRILLHOLE") 运行完会在BOARD GEOMETRY/DRILLHOLE层生成钻孔的shape  详情 回复 发表于 2025-7-14 12:09
  • TA的每日心情
    奋斗
    2025-7-7 15:38
  • 签到天数: 83 天

    [LV.6]常住居民II

    10#
     楼主| 发表于 2025-7-14 12:09 | 只看该作者

    请描述一下失败现象。
    • ;;独立使用,使用以下命令:
    • ;;  skill dbDrawDrillHoles("BOARD GEOMETRY/DRILLHOLE")


    运行完会在BOARD GEOMETRY/DRILLHOLE层生成钻孔的shape

    该用户从未签到

    11#
    发表于 2025-7-14 12:32 | 只看该作者
    大佬威武,围观看看

    该用户从未签到

    13#
    发表于 2025-7-14 13:58 | 只看该作者
    厉害,学习学习
  • TA的每日心情

    2025-7-14 15:27
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    15#
    发表于 2025-7-14 14:12 | 只看该作者
    大佬  学习一下

    该用户从未签到

    16#
    发表于 2025-7-14 14:20 | 只看该作者
    学习学习学习学习
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-7-19 10:42 , Processed in 0.140625 second(s), 30 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表