You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AutoCAD中通过AutoLISP按文件名坐标批量附着图片的实现

AutoCAD批量插入带坐标文件名图片的解决方案

1. 从文件名提取坐标的逻辑

针对文件名格式(如0053-0068.jpg对应X=53000、Y=68000),可通过以下步骤提取坐标:

  • 提取不含路径和后缀的纯文件名
    使用AutoLISP的vl-filename-base函数剥离路径与后缀:
    (setq full-path "C:\\Images\\0053-0068.jpg")
    (setq filename (vl-filename-base full-path)) ; 得到 "0053-0068"
    
  • 分割坐标字符串
    用strsplit按-分割提取坐标段:
    (setq coord-parts (strsplit filename "-")) ; 得到 '("0053" "0068")
    
  • 转换为实际坐标值
    将字符串转整数后乘以1000,匹配示例中的坐标缩放规则:
    (setq x (* (atoi (nth 0 coord-parts)) 1000)) ; 计算得53000
    (setq y (* (atoi (nth 1 coord-parts)) 1000)) ; 计算得68000
    

2. AutoLISP批量附着图片的完整代码

将坐标提取逻辑整合到批量处理流程中,遍历文件名列表完成插入:

(defun c:BatchInsertImages (/ file-list full-path filename coord-parts x y)
  ;; 假设file-list为已获取的含路径文件名列表,格式如 '("C:\\Images\\0053-0068.jpg" ...)
  (foreach full-path file-list
    ;; 提取纯文件名
    (setq filename (vl-filename-base full-path))
    ;; 分割坐标段
    (setq coord-parts (strsplit filename "-"))
    ;; 计算实际插入坐标
    (setq x (* (atoi (nth 0 coord-parts)) 1000))
    (setq y (* (atoi (nth 1 coord-parts)) 1000))
    ;; 执行图片附着命令(可调整缩放比例、旋转角度)
    (command "_.IMAGEATTACH" full-path "_S" 1 "_R" 0 (list x y))
  )
  (princ) ; 静默结束命令
)
  • 代码说明:
    • _.IMAGEATTACH:使用带下划线的命令名,确保在非中文AutoCAD环境下正常执行
    • _S 1:设置图片缩放比例为1,可根据实际需求修改数值
    • _R 0:设置图片旋转角度为0,如需旋转可调整为对应角度值
    • (list x y):指定图片插入的基点坐标

内容的提问来源于stack exchange,提问作者otto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 13:50:47