乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 91|回复: 5

[编程交流] Autolisp例程问题

[复制链接]

2

主题

3

帖子

1

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 18:51:32 | 显示全部楼层 |阅读模式
嗨,伙计们
 
如您所见,这是通过输入rec的长度来执行矩形例程的编码。。问题是,
 
我想把圆放在矩形中的一行中,我需要指定我想要多少圆。。
 
圆圈之间的长度必须为109.00英寸
 
 
 
(定义c:SREC(/pt h)
 
(“矩形”原理)
 
(if(and(setq pt(getpoint“\n指定矩形起点:”))
 
(setq h(getreal“\n输入矩形长度:”))
 
(命令“_rectang”pt“_dimensions”(+0 h)h pt)
 
(提示“\n**无效输入**”))
 
(普林斯)
 
 
 
:示例随附:
 
 
 
我非常感谢那些愿意帮助我的人:):D
2750 , 109.图纸
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 19:05:38 | 显示全部楼层
正如你已经开始在这里是一些建议,而不是代码,希望它是有意义的,如果你的帖子再次卡住,一个学习lisp的好例子。我想你们可以从这里学习,而不是别人只是张贴代码的答案。
 
你可以用几种方法来做,但是看看数学
长度=L
偏移=109.0
Num=除以L/109(设置Num(/L偏移))
余数(*L(-num(fix num)))
Pt x(car Pt)Pt y(cadr Pt)
余数>2*圆周直径(如果(>(*2.0直径…如果是,则继续,如果否num=num-1,则圆接近边缘(setq num(-num 1))
现在计算出第一个圆的位置(设置q newpt(polar pt…(polar pt…)X穿过y向上一个双极
然后跨复制并重复num次(重复(修复num)。。。。
对于最上面的行,您可以使用array,而不是copy或circle命令
回复

使用道具 举报

17

主题

1274

帖子

25

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
260
发表于 2022-7-5 19:25:11 | 显示全部楼层
假设高度恒定,长度变化,可以创建一个动态块,根据长度添加或删除圆。这也可以很容易地用lisp完成,只是一个建议,以防你用这种方式做起来更舒服。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 19:37:50 | 显示全部楼层
好主意,因为间距是在动态块中定义的,如果更改此值,它会立即更新。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 19:43:05 | 显示全部楼层
你好
 
根据tombu的建议,动态块是这个技巧的最佳选择,但如果你不想使用动态块选项,这里是我的lisp程序。
 
  1. (defun c:Test (/ _C rad spc len pt r p d)
  2. ;;    Tharwat 04.07.2015    ;;
  3. (setq rad 3.5 spc 109.0 )
  4. (if
  5.    (and (setq len (getdist "\nSpecify Length of Rectangle :"))
  6.         (if (< 109 len)
  7.           t
  8.           (progn (princ "\nLength of rectangle is smaller than 109.0 !") nil )
  9.         )
  10.         (setq pt (getpoint "\nSpecify Rectangle Base point :"))
  11.    )
  12.     (progn
  13.       (defun _C (n _p)
  14.         (repeat n
  15.           (entmakex (list '(0 . "CIRCLE") (cons 10 _p) (cons 40 rad)))
  16.           (setq _p (polar _p 0. spc))
  17.         )
  18.       )
  19.       (setq r (1+ (fix (/ len 109.0)))
  20.             p (polar (polar pt 0. (setq d (/ (- len (* (fix r) 109.)) 2.))) (* pi 1.5) 12. )
  21.       )
  22.       (command "_.rectang" "_none" pt "_none" (polar (polar pt 0. len) (* pi 1.5) len))
  23.       (_C r p)
  24.       (_C r (setq p (polar (polar pt (* pi 1.5) (- len 12.)) 0. d))
  25.       )
  26.     )
  27. )
  28. (princ)
  29. )
回复

使用道具 举报

12

主题

152

帖子

140

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-5 19:55:15 | 显示全部楼层
2750 , 109.图纸
 
我喜欢动态积木。。。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-12 13:52 , Processed in 0.778812 second(s), 64 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表