明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 196|回复: 4

[源码] 合并图纸lsp,不能多选,麻烦大佬们帮忙看看

[复制链接]
发表于 昨天 08:41 | 显示全部楼层 |阅读模式

  1. (defun c:CD (/ *error* filelst cols colgap rowgap i x y pmax pmin dx dy cdy rows)
  2.   (vl-load-com)
  3.   
  4.   (defun *error* (msg)
  5.     (if (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*"))
  6.       (princ (strcat "\n错误: " msg))
  7.     )
  8.     (setvar "CMDECHO" 1)
  9.     (setvar "OSMODE" 0)
  10.     (princ)
  11.   )

  12.   (defun GetSingleFile (/ fname)
  13.     (setvar "FILEDIA" 1)
  14.     (setq fname (getfiled "选择要合并的图纸" "" "dwg;dxf" 1)) ; 0表示单选模式
  15.     (if fname (list fname))
  16.   )

  17.   (setvar "CMDECHO" 0)
  18.   (command "._UNDO" "_BEGIN")
  19.   
  20.   (if (setq filelst (GetSingleFile))
  21.     (progn
  22.       (initget 7)
  23.       (setq cols (getint "\n请输入列数: "))
  24.       
  25.       (initget 6)
  26.       (setq colgap (getdist "\n列间距<10000>: "))
  27.       (if (not colgap) (setq colgap 10000))
  28.       
  29.       (initget 6)
  30.       (setq rowgap (getdist "\n行间距<10000>: "))
  31.       (if (not rowgap) (setq rowgap 10000))
  32.       
  33.       (setq i 0 x 0 y 0 cdy 0
  34.             rows (fix (1+ (/ (length filelst) cols)))
  35.       )
  36.       
  37.       (foreach file filelst
  38.         (if (and (< i (* cols rows)) (findfile file))
  39.           (progn
  40.             (princ (strcat "\n正在插入: " (vl-filename-base file)))
  41.             (command "_.INSERT" file (list x y) "" "" "")
  42.             
  43.             (if (entlast)
  44.               (progn
  45.                 (vla-getboundingbox (vlax-ename->vla-object (entlast)) 'mi 'ma)
  46.                 (setq pmax (vlax-safearray->list ma)
  47.                       pmin (vlax-safearray->list mi)
  48.                       dx (- (car pmax) (car pmin))
  49.                       dy (- (cadr pmax) (cadr pmin))
  50.                 )
  51.                 (if (> dy cdy) (setq cdy dy))
  52.                
  53.                 (setq i (1+ i))
  54.                 (if (= (rem i cols) 0)
  55.                   (setq x 0 y (- y cdy rowgap) cdy 0)
  56.                   (setq x (+ x dx colgap))
  57.                 )
  58.               )
  59.             )
  60.           )
  61.         )
  62.       )
  63.       (princ (strcat "\n成功插入 " (itoa i) " 个文件"))
  64.     )
  65.     (princ "\n取消文件选择")
  66.   )
  67.   
  68.   (command "._UNDO" "_END")
  69.   (princ)
  70. )
ai生成得,有大佬帮忙看下不 哪里的问题 现在选择文件只能单选无法多选。谢谢
回复

使用道具 举报

发表于 昨天 09:00 | 显示全部楼层
lisp原生不支持多选
回复 支持 反对

使用道具 举报

发表于 昨天 09:21 | 显示全部楼层
可以用opendcl的选择框,大海哥等大神都分享过多选对话框,可以自行搜索。
回复 支持 反对

使用道具 举报

发表于 昨天 09:50 | 显示全部楼层
帮你找ai的错误?
回复 支持 反对

使用道具 举报

发表于 昨天 17:22 | 显示全部楼层
借力Doslib--->dos_getfilem

Example
Command: (dos_getfilem "Select a file" "C:\\Program Files\\Autocad 2010\\" "Drawing files (*.dwg)|*.dwg|All files (*.*)|*.*||")

("C:\\Program Files\\AutoCAD 2010\\Sample\\" "A-01.dwg" "A-02.dwg" "A-03.dwg" "A-04.dwg" "A-05.dwg")
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-23 02:31 , Processed in 0.180749 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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