明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 569|回复: 5

[资源] 快速阵列,减少参数输入

[复制链接]
发表于 6 天前 | 显示全部楼层 |阅读模式
本帖最后由 清水白粥 于 2025-3-4 08:07 编辑

简单的阵列功能,减少复杂的参数输入



功能:阵列功能
快捷键:ar2

优势:阵列功能可以自由修改 数量和间距  

本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
183017064 + 1 很给力!

查看全部评分

回复

使用道具 举报

发表于 6 天前 | 显示全部楼层
感谢大佬分享
回复 支持 1 反对 0

使用道具 举报

发表于 6 天前 | 显示全部楼层
优化一下DS
  1. (defun c:ar2 (/ *error* ss rows cols rowSpacing colSpacing)
  2.   ;; 定义错误处理函数
  3.   (defun *error* (msg)
  4.     (if (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*"))
  5.       (princ (strcat "\n错误: " msg))
  6.     )
  7.     (princ)
  8.   )
  9.   
  10.   ;; 检查是否选中对象
  11.   (if (setq ss (ssget '((0 . "LINE,ARC,LWPOLYLINE,POLYLINE,CIRCLE,ELLIPSE,HATCH,INSERT,DIMENSION"))))
  12.     (progn
  13.       ;; 获取行数(正整数)
  14.       (setq rows 1) ; 默认值
  15.       (while
  16.         (progn
  17.           (setq input (getint "\n输入行数 <1>: "))
  18.           (cond
  19.             ((null input) nil) ; 用户回车,使用默认值
  20.             ((<= input 0)
  21.               (princ "行数必须大于0。")
  22.               t ; 继续循环
  23.             )
  24.             (t (setq rows input) nil) ; 有效输入,退出循环
  25.           )
  26.         )
  27.       )
  28.       
  29.       ;; 获取列数(正整数)
  30.       (setq cols 2) ; 默认值
  31.       (while
  32.         (progn
  33.           (setq input (getint "\n输入列数 <2>: "))
  34.           (cond
  35.             ((null input) nil)
  36.             ((<= input 0)
  37.               (princ "列数必须大于0。")
  38.               t
  39.             )
  40.             (t (setq cols input) nil)
  41.           )
  42.         )
  43.       )
  44.       
  45.       ;; 获取行间距(自动处理默认值)
  46.       (setq rowSpacing
  47.         (cond
  48.           ((= rows 1) 0.0) ; 单行时默认0间距
  49.           ((getdist (strcat "\n输入行间距 <" (rtos 100.0 2) ">: ")))
  50.           (t 100.0) ; 多行时默认100
  51.         )
  52.       )
  53.       
  54.       ;; 获取列间距(带默认值)
  55.       (setq colSpacing
  56.         (cond
  57.           ((getdist "\n输入列间距 <100.0>: "))
  58.           (t 100.0)
  59.         )
  60.       )
  61.       
  62.       ;; 执行阵列命令
  63.       (command "_.ARRAYRECT"
  64.         ss       ; 选择集
  65.         ""       ; 结束选择
  66.         ""       ; 接受默认基点
  67.         rows     ; 行数
  68.         cols     ; 列数
  69.         rowSpacing ; 行间距
  70.         colSpacing ; 列间距
  71.       )
  72.     )
  73.     (princ "\n未选择对象。") ; 用户取消选择提示
  74.   )
  75.   (princ)
  76. )
回复 支持 反对

使用道具 举报

 楼主| 发表于 6 天前 | 显示全部楼层

有缺陷,用不了
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层

_.ARRAYRECT  
此命令只有在高版才有,测2020可行。2008不可行
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
chslwj521 发表于 2025-3-7 09:18
_.ARRAYRECT  
此命令只有在高版才有,测2020可行。2008不可行

是高版本才可以的
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-3-10 16:05 , Processed in 0.165976 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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