乐筑天下

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

[编程交流] 圆形的嵌套模式

[复制链接]

4

主题

27

帖子

23

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 00:03:10 | 显示全部楼层 |阅读模式
我有一个关于圆形零件嵌套模式的lisp,如下所示,代码的工作方式类似于第一个图,但我希望它类似于第二个图。我想知道如何更正这段代码?
 
 
(defun dtr(a)
(*pi(/a 180.0))
)
(defun gpuser()
(setq sp(getpoint“\n路径的起始点:”)
(setq ep(getpoint“\n路径的第二点:”)
(setq hwidth(getdist“\n路径的自宽度:”sp))
(setq trad(getdist“nRadius of tiles:”sp))
(setq-tspac(getdist“\n分片之间的间距:“sp”)
(setq pangle(角度sp ep))
(setq plength(距离sp ep))
(设置宽度(*2宽度))
(setq angp90(+pangle(dtr 90)));路径角度+90度
(setq angm90(-pangle(dtr 90)));路径角度-90度
)
(取消提款()
(命令“pline”
(setq p(极性sp angm90 hwidth))
(setq p(极性p pangle plength))
(setq p(极性p angp90宽度))
(极p(+pangle(dtr 180))正压)
“关闭”
))
(defun drow(pd偏移)
(setq pfirst(极性sp pangle pd))
(setq pctile(极轴pfirst angp90偏移)
(setq pltile pctile)
(虽然(
(命令“圆形”pltile trad)
(setq pltile)
(polar pltile angp90(+tspac trad)))
(setq pltile(极性pctile angm90(+tspac trad trad)))
(虽然(
(命令“圆形”pltile trad)
(setq pltile)
(polar pltile angm90(+tspac tradЮЮ)Ю)
(defun drawtiles()
(setq pdist(+trad tspac))
(setq off 0.0)
(虽然(
(drow pdist关闭)
(setq pdist
(+pdist(*(+tspac trad trad)(sin(dtr 60 107;)а)
(如果(=关0.0)
(抵消(*+tspac trad)(cos(dtr 60)))
(抵消0.0)))
(defun C:路径()
(gpuser)
(setq sblip(getvar“blipmode”))
(setq-scmde(getvar“cmdecho”))
(setvar“blipmode”0)
(setvar“cmdecho”0)
(提款)
(图纸)
(setvar“blipmode”sblip)
(setvar“cmdecho”scmde)
(普林斯)
)
 
010312edvcv5njrhceh4dj.png
 
 
 
010313tf2w2to6qanr2gza.png
 
 
 
 
提前感谢您的帮助
回复

使用道具 举报

4

主题

27

帖子

23

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 00:08:40 | 显示全部楼层
(defun c:路径()
 
我为这个错误道歉。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 00:12:00 | 显示全部楼层
Kaan,从这里快速阅读将代码包含在标记代码中。
 
这两个数字有什么不同?
回复

使用道具 举报

4

主题

27

帖子

23

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 00:17:56 | 显示全部楼层
  1. (defun dtr (a)
  2. (* pi (/ a 180.0))
  3. )
  4. (defun gpuser ()
  5. (setq sp (getpoint "\nStart point of path: "))
  6. (setq ep (getpoint "\nEnd point of path: "))
  7. (setq hwidth (getdist "\nHalf width of path: " sp))
  8. (setq trad (getdist "nRadius of tiles: " sp))
  9. (setq tspac (getdist "\nSpacing between tiles: " sp))
  10. (setq pangle (angle sp ep))
  11. (setq plength (distance sp ep))
  12. (setq width (* 2 hwidth))
  13. (setq angp90 (+ pangle (dtr 90))) ; Path angle + 90 deg
  14. (setq angm90 (- pangle (dtr 90))) ; Path angle - 90 deg
  15. )
  16. (defun drawout ()
  17.    (Command "pline"
  18.      (setq p (polar sp angm90 hwidth))
  19.      (setq p (polar p pangle plength))
  20.      (setq p (polar p angp90 width))
  21.      (polar p (+ pangle (dtr 180)) plength)
  22.      "close"
  23.      ))
  24. (defun drow (pd offset)
  25.    (setq pfirst (polar sp pangle pd))
  26.    (setq pctile (polar pfirst angp90 offset))
  27.    (setq pltile pctile)
  28.    (while (< (distance pfirst pltile) (- hwidth trad))
  29.      (Command "circle" pltile trad)
  30.      (setq pltile
  31.      (polar pltile angp90 (+ tspac trad trad))))
  32.    (setq pltile (polar pctile angm90 (+ tspac trad trad)))
  33.    (while (< (distance pfirst pltile) (- hwidth trad))
  34.      (Command "circle" pltile trad)
  35.      (setq pltile
  36.      (polar pltile angm90 (+ tspac trad trad)))))
  37.    (defun drawtiles ()
  38.      (setq pdist (+ trad tspac))
  39.      (setq off 0.0)
  40.      (while (<= pdist (- plength trad))
  41. (drow pdist off)
  42. (setq pdist
  43.        (+ pdist (* (+ tspac trad trad) (sin (dtr 60)))))
  44. (if (= off 0.0)
  45.   (setq off (* (+ tspac trad trad) (cos (dtr 60))))
  46.   (setq off 0.0))))
  47.    (defun C:PATH ()
  48.      (gpuser)
  49.      (setq sblip (getvar "blipmode"))
  50.      (setq scmde (getvar "cmdecho"))
  51.      (setvar "blipmode" 0)
  52.      (setvar "cmdecho" 0)
  53.      (drawout)
  54.      (drawtiles)
  55.      (setvar "blipmode" sblip)
  56.      (setvar "cmdecho" scmde)
  57.      (princ)
  58.      )
并启用正交(F8)
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-6 00:21:06 | 显示全部楼层
谢谢你的帮助,M.R。
回复

使用道具 举报

4

主题

27

帖子

23

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 00:22:52 | 显示全部楼层
我刚刚编写了这个快速代码,希望它能满足您的需要
 
这是矩形法。
 
 
  1. (defun gpuser ()
  2. (setq sp (getpoint "\nStart point of path: "))
  3. (setq ep (getpoint [highlight]sp[/highlight] "\nEnd point of path: "))
  4. ...
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 00:27:12 | 显示全部楼层
谢谢你的代码,我试过了,但没用。我认为这是一个关于维度的问题。我想知道你是否试过?
回复

使用道具 举报

4

主题

27

帖子

23

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 00:29:54 | 显示全部楼层
它应该可以工作,但我编写代码的方式与您之前发布的不同。
首先,你应该选择一个点,第二个点应该代表一个矩形,然后是圆的半径[平铺]和圆之间的空间。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 00:35:42 | 显示全部楼层
虽然圆的半径很小,但它会发出警报。
回复

使用道具 举报

4

主题

27

帖子

23

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 00:37:39 | 显示全部楼层
正确,小于运算符有一个小错误,现在我可以修复它了。
 
请再试一次
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 21:13 , Processed in 1.191208 second(s), 75 queries .

© 2020-2025 乐筑天下

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