明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 774|回复: 5

[讨论] 指定了行间距和列间距,为啥矩阵还是挤在一起?有源码,求修改

[复制链接]
发表于 2025-10-23 14:47:32 | 显示全部楼层 |阅读模式
(defun c:DrawProjectedArray (/ width height angle projected_height insert_pt rect_obj rows cols row_spacing col_spacing)
    ; 获取用户输入的矩形尺寸(提供默认值)
    (setq width (getreal (strcat "\n请输入矩形宽度 <" (rtos 1303.0) ">: ")))
    (if (not width) (setq width 1303.0))

    (setq height (getreal (strcat "\n请输入矩形高度 <" (rtos 2465.0) ">: ")))
    (if (not height) (setq height 2465.0))

    ; 获取用户输入的倾斜角度(提供默认值)
    (setq angle (getreal "\n请输入倾斜角度 <5.0>: "))
    (if (not angle) (setq angle 5.0))

    ; 计算投影后的高度
    (setq projected_height (* height (cos (* angle (/ pi 180.0)))))

    ; 获取阵列参数
    (setq rows (getint "\n请输入行数 <8>: "))
    (if (not rows) (setq rows 8))

    (setq cols (getint "\n请输入列数 <7>: "))
    (if (not cols) (setq cols 7))

    ; 获取用户输入的行间距和列间距
    (setq row_spacing (getreal (strcat "\n请输入行间距 <" (rtos (+ projected_height 6.0)) ">: ")))
    (if (not row_spacing) (setq row_spacing (+ projected_height 6.0)))

    (setq col_spacing (getreal (strcat "\n请输入列间距 <" (rtos (+ width 6.0)) ">: ")))
    (if (not col_spacing) (setq col_spacing (+ width 6.0)))

    ; 显示计算结果
    (princ (strcat "\n原始尺寸: " (rtos width) " * " (rtos height) " mm"))
    (princ (strcat "\n投影尺寸: " (rtos width) " * " (rtos projected_height 2 0) " mm"))
    (princ (strcat "\n阵列设置: " (itoa rows) "行 * " (itoa cols) "列"))
    (princ (strcat "\n行间距: " (rtos row_spacing) "mm"))
    (princ (strcat "\n列间距: " (rtos col_spacing) "mm"))

    ; 获取用户输入的插入点
    (setq insert_pt (getpoint "\n指定插入点: "))

    (if insert_pt
        (progn
            ; 绘制投影矩形
            (command "_.rectang"
                     insert_pt
                     (list (+ (car insert_pt) width)
                           (+ (cadr insert_pt) projected_height)))

            ; 选择刚刚绘制的矩形
            (setq rect_obj (entlast))

            ; 使用ARRAYRECT命令创建关联矩形阵列
            ; 明确指定阵列的方向
            (command "_.arrayrect"
                     rect_obj
                     ""
                     ; 列方向
                     "_Columns" cols
                     "_Spacing" col_spacing
                     "_Axis" "X" ; 明确指定列方向为X轴
                     ; 行方向  
                     "_Rows" rows
                     "_Spacing" row_spacing
                     "_Axis" "Y" ; 明确指定行方向为Y轴
                     ; 层方向
                     "_Levels" 1
                     "_Spacing" 1
                     ; 完成阵列
                     ""
            )

            (princ "\n关联矩形阵列创建完成!")
            (princ "\n提示:您可以通过夹点动态修改行数、列数和间距。")
        )
        (princ "\n未指定插入点,操作取消。")
    )

    (princ)
)

(princ "\n输入 DrawProjectedArray 开始绘制投影矩形阵列")
(princ)

"觉得好,就打赏"
还没有人打赏,支持一下
回复

使用道具 举报

发表于 2025-10-23 15:00:54 | 显示全部楼层
手动执行一下ArrayRect,看看输入各种数据的顺序。然后按照那个顺序改代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-10-23 15:13:01 | 显示全部楼层
kozmosovia 发表于 2025-10-23 15:00
手动执行一下ArrayRect,看看输入各种数据的顺序。然后按照那个顺序改代码

手动执行看了,我感觉是对的,所以找不出问题,求助大神
回复 支持 反对

使用道具 举报

发表于 2025-10-23 15:39:55 | 显示全部楼层
你用的是假ACAD吗?指定完列数量不需要即刻设置间距还需要用spacing关键字指定?

本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 金钱 +5 收起 理由
zsw23 + 1 + 5 很给力!

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2025-10-24 20:15:48 | 显示全部楼层
关闭捕捉,测试一下。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-10-25 13:16:22 | 显示全部楼层
hhh454 发表于 2025-10-24 20:15
关闭捕捉,测试一下。

应该是我的程序有问题,暂时改不了了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-12 07:00 , Processed in 0.187480 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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