我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 78|回复: 4

[技术讨论] 请大神帮忙看下这是啥???

[复制链接]
  • TA的每日心情
    开心
    昨天 09:20
  • 签到天数: 184 天

    [LV.7]常住居民III

    3

    主题

    259

    回帖

    791

    积分

    二级逆天

    积分
    791

    终身成就奖

    发表于 2025-3-21 10:37:34 | 显示全部楼层 |阅读模式

    马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

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

    ×
    ;;; CHCD Skill Script for Checking Distances
    ;;; Version: 1.0
    ;;; Author: [Your Name]

    ;; 定义快捷键CHCD
    (axlDefineCommand 'CHCD "Check Distances" 'CheckDistances)

    ;; 检查间距的主函数
    (defun CheckDistances ()
      (let ((min-distance 0.1)) ;; 最小允许间距,单位:毫米
        ;; 获取所有对象
        (setq objects (get-all-objects))

        ;; 检查Assembly_top与Assembly_Top的间距
        (check-distance-between-layers 'Assembly_top 'Assembly_Top min-distance)

        ;; 检查Assembly_top与Silkscreen_Top的间距
        (check-distance-between-layers 'Assembly_top 'Silkscreen_Top min-distance)

        ;; 检查Silkscreen_Top与Silkscreen_Top的间距
        (check-distance-between-layers 'Silkscreen_Top 'Silkscreen_Top min-distance)

        ;; 检查Silkscreen_Top与Soldermask_Top的间距
        (check-distance-between-layers 'Silkscreen_Top 'Soldermask_Top min-distance)

        ;; 输出结果
        (message "检查完成!")
    ))

    ;; 检查两层之间间距的函数
    (defun check-distance-between-layers (layer1 layer2 min-distance)
      (let ((objects1 (get-objects-on-layer layer1))
            (objects2 (get-objects-on-layer layer2)))
        (foreach obj1 objects1
          (foreach obj2 objects2
            (if (and obj1 obj2)
                (let ((distance (calculate-distance obj1 obj2)))
                  (if (< distance min-distance)
                      (progn
                        (message (str "警告:层" layer1 "和层" layer2 "之间的间距过小,距离为" distance "毫米"))
                        ;; 可选:突出显示间距过小的对象
                        (highlight-objects obj1 obj2)))))))
    ))

    ;; 计算两个对象之间的距离
    (defun calculate-distance (obj1 obj2)
      ;; 实现具体的距离计算逻辑
      ;; 这里假设使用欧几里得距离
      (let ((x1 (get-object-x obj1))
            (y1 (get-object-y obj1))
            (x2 (get-object-x obj2))
            (y2 (get-object-y obj2)))
        (sqrt (+ (* (- x2 x1) (- x2 x1)) (* (- y2 y1) (- y2 y1))))))

    ;; 突出显示对象
    (defun highlight-objects (obj1 obj2)
      ;; 实现突出显示逻辑
      (change-object-color obj1 'red)
      (change-object-color obj2 'red))

    ;; 加载脚本
    (load "CHCD_Skill_script")

    回复

    使用道具 举报

  • TA的每日心情
    开心
    昨天 09:20
  • 签到天数: 184 天

    [LV.7]常住居民III

    3

    主题

    259

    回帖

    791

    积分

    二级逆天

    积分
    791

    终身成就奖

     楼主| 发表于 2025-3-21 10:38:38 | 显示全部楼层
    要怎样修改才能在Allegro 上运行呢
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2025-2-19 16:00
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    7061

    主题

    1万

    回帖

    13万

    积分

    管理员

    积分
    133217

    原创先锋奖终身成就奖优秀斑竹奖宣传大使奖社区居民社区明星社区劳模最爱沙发新人进步奖忠实会员金点子奖特殊贡献奖

    发表于 2025-3-21 19:31:08 | 显示全部楼层
    这是一个lisp 语言编写的 检查PCB设计中不同层之间对象间距的Skill脚本。
    大概看了一下。 你上面的   let  里面很多括号不匹配。建议你确认一下。 我估计就是这个造成语法错误,导致运行不了。自己可以检查调试看看。

    点评

    吴总,没想到被你翻牌了今晚能早睡了,嗯,感谢吴总,我试试看。  详情 回复 发表于 2025-3-24 10:04
    回复

    使用道具 举报

  • TA的每日心情
    开心
    昨天 09:20
  • 签到天数: 184 天

    [LV.7]常住居民III

    3

    主题

    259

    回帖

    791

    积分

    二级逆天

    积分
    791

    终身成就奖

     楼主| 发表于 2025-3-24 10:04:20 | 显示全部楼层
    老吴 发表于 2025-3-21 19:31
    这是一个lisp 语言编写的 检查PCB设计中不同层之间对象间距的Skill脚本。
    大概看了一下。 你上面的   let   ...

    吴总,没想到被你翻牌了今晚能早睡了,嗯,感谢吴总,我试试看。
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    昨天 08:41
  • 签到天数: 174 天

    [LV.7]常住居民III

    114

    主题

    5170

    回帖

    5048

    积分

    1元学习Allegro(1期)

    积分
    5048

    终身成就奖优秀斑竹奖特殊贡献奖原创先锋奖

    发表于 2025-3-25 08:34:17 | 显示全部楼层
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    每日签到,有金币领取。


    Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

    本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

    ( 闽ICP备2024076463号-1 ) 论坛技术支持QQ群171867948 ,论坛问题,充值问题请联系QQ1308068381

    平平安安
    TOP
    快速回复 返回顶部 返回列表