TA的每日心情 | 开心 昨天 09:20 |
---|
签到天数: 184 天 [LV.7]常住居民III
二级逆天
- 积分
- 791

|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
;;; 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")
|
|