明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1443|回复: 10

[讨论] 使用LISP生成自动阵列指定间距并居中的程序

[复制链接]
发表于 2018-1-15 21:30 | 显示全部楼层 |阅读模式
1明经币
本帖最后由 airuyi 于 2018-1-15 21:31 编辑

想编写一个程序,实现以下功能:
1.输入一个间距数字(默认300)
2.图上任意选两个点的位置。
3.程序使用这两个点的距离(假设这两点的距离是1500吧),除于300,得到阵列的数量5个。
4.选择一个需要阵列的图形。
5.沿着刚刚选择的两个点的直线方向,阵列这个图形并且最后把阵列出来的图形居中摆放在这两个点之间。
因为阵列5个然后居中摆放,所以应该从(1500-300*(5-1))/2的位置,也就是选择的两个点建立的坐标系里面,从(150,0)开始摆放第一个要阵列的图形。这个位置要怎么得出来呢?

以下是我编的一个简单程序,存在很大问题,大家别见笑。我不知道怎么求第一个图形摆放位置的坐标,请高手帮忙解决。
因为不知道怎样可以点选一个图形作为我们要阵列的对象,所以我只好先复制一个图形,然后开始运行程序。
(defun c:ddd (/ ZLJJ ZLSL ptl_DIS)
(setq ZLJJ (getreal "\阵列间距: "))
   (setq PP1 (getpoint "\n第一点") PP2 (getpoint "\n第二点"))
   (setq DIS (distance pP1 pP2));求两点距离
   (setq ZLSL (RTOS (/ DIS (ATOF ZLJJ)) 2 0));距离除于间距得到数量ZLSL
   (command "ucs" "3" pp1 pp2 "");建立基于直线的坐标系
   (command "pasteclip" "0,0" "");;;;;;;;;;;;;;;;;因为不知道怎样求居中摆放的第一个图形位置,只好先粘贴图形到点0,0。
   (setq ptl(ENTLAST));设置最后一个图形
   (command "array" ptl "" "R" "1" ZLSL ZLJJ);(command "array阵列" pt "" "R" "1行" "ZLSL列" "间距ZLJJ0")
   (command "ucs" "p" "");回到原UCS
  (princ)
)

发表于 2018-1-15 21:44 | 显示全部楼层
回复

使用道具 举报

发表于 2018-1-15 21:45 | 显示全部楼层
稍微修改一下就可以实现
回复

使用道具 举报

 楼主| 发表于 2018-1-16 09:31 | 显示全部楼层
wudechao 发表于 2018-1-15 21:45
稍微修改一下就可以实现

首先是很感谢你的无私帮助,谢谢。
可是你的程序跟我的构思有点差距太大了,而且我其实也不是很懂程序,所以没有办法修改你的程序实现我的功能啊。
回复

使用道具 举报

 楼主| 发表于 2018-1-16 09:32 | 显示全部楼层
希望有高人帮忙
回复

使用道具 举报

发表于 2018-1-16 13:20 | 显示全部楼层
  1. (defun c:ddd ()
  2.   (setq d1 (getreal "\n阵列间距: ")
  3.         p1 (getpoint "\n第一点: ")
  4.         p2 (getpoint p1 "\n第二点: ")
  5.         nn (fix (/ (distance p1 p2) d1 1.))
  6.         rr (angle p1 p2)
  7.         pt '(0 0)
  8.         i  1
  9.   )
  10.   (if (setq s1 (car (entsel "\n选择: ")))
  11.     (repeat nn
  12.       (command "copy" s1 "" pt (polar pt rr (* d1 i)))
  13.       (setq i (1+ i))
  14.     )
  15.   )
  16.   (princ)
  17. )
回复

使用道具 举报

 楼主| 发表于 2018-1-16 13:40 | 显示全部楼层

版主的程序比我的明了得多。非常感谢。
同时我还是需要继续研究怎样使需要的图块按照指定的两点路径阵列之后然后居中摆放在这两点之间。

点评

与实体类型无关  发表于 2018-1-16 13:48
回复

使用道具 举报

 楼主| 发表于 2018-1-17 17:19 | 显示全部楼层
还是没有写出需要的程序,请问有人可以解决我的问题吗?
回复

使用道具 举报

 楼主| 发表于 2018-1-24 11:53 | 显示全部楼层
我已经自己写出来了,感谢各位帮助
回复

使用道具 举报

发表于 2020-1-24 20:20 | 显示全部楼层
airuyi 发表于 2018-1-24 11:53
我已经自己写出来了,感谢各位帮助

我也在研究这种,
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 09:30 , Processed in 0.357931 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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