明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 261|回复: 7

关于矩形阵列的问题?

[复制链接]
发表于 2024-3-13 01:32 | 显示全部楼层 |阅读模式
本帖最后由 zilong136 于 2024-3-13 03:45 编辑

  • 以下两个代码都存在列间距错误的问题,要求列间距是相领两列之间的距离,求大佬帮忙解决一下。
  • (defun c:qw1 ()
  •   (defun a( / P)
  •     (initget "Y N")
  •     (setq P (getkword "是否关联?[是(Y)/否(N)]<Y>:"))
  •     (if (= P nil) (setq P "Y"))
  •     P
  •   )
  •   (command "arrayrect" (ssget) "" "col" (getint "\n列数:") (getdist "\n每列间距:") "r" (getint "\n行数:") (getdist "\n每行间距:") 0 "AS" (a) "")
  • ) ;;;1.矩形阵列【qw1】
  • (defun c:qw2 (/ n)
  •   (command "arrayrect"  (ssget) "" "as" (cond ((initget "Y N"))((getkword "是否关联?[是(Y)/否(N)]<Y>:"))("Y")) "col" (setq n (getint "\n列数:")) (* n (getdist "\n列数间距:"))   "r" (getint "\n行数:") (getdist "\n行数间距:") ""  "")
  • )

发表于 2024-3-13 08:56 | 显示全部楼层
用command函数首先要对CAD命令执行顺序了解清楚,不同版本CAD命令操作可能有区别,这种自己尝试多几次应该就可以了。我CAD2012没有那个col的关键字
发表于 2024-3-13 09:49 | 显示全部楼层
本帖最后由 ssyfeng 于 2024-3-13 09:57 编辑

找了个CAD2022看了一下,lisp执行那个命令时操作顺序跟手动操作顺序不一样。
这个试试:
  1. (defun c:qw1 ()
  2.   (defun a( / P)
  3.     (initget "Y N")
  4.     (setq P (getkword "是否关联?[是(Y)/否(N)]<Y>:"))
  5.     (if (= P nil) (setq P "Y"))
  6.     P
  7.   )
  8.   (command "arrayrect" (ssget) "" "c" (getint "\n行数:") (getint "\n列数:") "s" (getdist "\n每行间距:") (getdist "\n每列间距:") "AS" (a) "")
  9. )

本帖子中包含更多资源

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

x
 楼主| 发表于 2024-3-13 09:55 | 显示全部楼层
ssyfeng 发表于 2024-3-13 08:56
用command函数首先要对CAD命令执行顺序了解清楚,不同版本CAD命令操作可能有区别,这种自己尝试多几次应该 ...
我2022CAD跟2024CAD都是同样问题:
两个代码就是列间距有问题,第一个默认是首尾列间距,第二个是相领列间距,但计算时又是首尾列间距/(列数-1),搞不懂它的机制,我就想要相领两列间距。有这么难吗?
发表于 2024-3-13 09:58 | 显示全部楼层
这种其实就是看命令行提示就可以了,看着来修改就行了
 楼主| 发表于 2024-3-13 10:12 | 显示全部楼层
ssyfeng 发表于 2024-3-13 09:49
找了个CAD2022看了一下,lisp执行那个命令时操作顺序跟手动操作顺序不一样。
这个试试:

2022CAD有个问题,就是这关联始终是关联的,不管是选Y或是N,其它的正常,2024CAD正常。
发表于 2024-3-13 10:18 | 显示全部楼层
本帖最后由 ssyfeng 于 2024-3-13 10:46 编辑

那个函数写的有问题,或者直接不要那个a函数

  1. (defun c:qw1 (/ a)
  2.   (defun a( / P)
  3.     (initget "Y N")
  4.     (setq P (getkword "是否关联?[是(Y)/否(N)]<Y>:"))
  5.     (if (or (equal p "Y") (= P nil)) (setq P "Y") (setq p "N"))
  6.   )
  7.   (command "arrayrect" (ssget) "" "c" (getint "\n行数:") (getint "\n列数:") "s" (getdist "\n每行间距:") (getdist "\n每列间距:") "AS" (a) "")
  8.   (princ)
  9. )
  1. (defun c:qw1 ()
  2.   (command "arrayrect" (ssget) "" "c" (getint "\n行数:") (getint "\n列数:") "s" (getdist "\n每行间距:") (getdist "\n每列间距:") "AS")
  3.   (princ)
  4. )

 楼主| 发表于 2024-3-13 10:44 | 显示全部楼层
本帖最后由 zilong136 于 2024-3-13 11:21 编辑
ssyfeng 发表于 2024-3-13 10:18
那个函数写的有问题,或者直接不要那个a函数

下面那个函数怎么改?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-8 14:49 , Processed in 0.161617 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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