陛下万年 发表于 2025-3-21 10:37

请大神帮忙看下这是啥???

;;; CHCD Skill Script for Checking Distances
;;; Version: 1.0
;;; Author:

;; 定义快捷键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")

陛下万年 发表于 2025-3-21 10:38

要怎样修改才能在Allegro 上运行呢

老吴 发表于 2025-3-21 19:31

这是一个lisp 语言编写的 检查PCB设计中不同层之间对象间距的Skill脚本。
大概看了一下。 你上面的   let里面很多括号不匹配。建议你确认一下。 我估计就是这个造成语法错误,导致运行不了。自己可以检查调试看看。

陛下万年 发表于 2025-3-24 10:04

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

吴总,没想到被你翻牌了:lol今晚能早睡了;P,嗯,感谢吴总,我试试看。

ilpuyi 发表于 2025-3-25 08:34

页: [1]
查看完整版本: 请大神帮忙看下这是啥???