乐筑天下

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

[编程交流] 如何编写

[复制链接]

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 06:28:22 | 显示全部楼层 |阅读模式
我是一个完全的新手,因此我需要您在AutoLisp中编写函数方面的指导。
 
我该如何编写通过单击绘制这些特定图形的函数 072827dfl7oolfwlv7uhtl.jpg
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-6 06:42:41 | 显示全部楼层
看看是否可以:
 
  1. (defun c:smiley ( / makecircle p r c1 c2 c3 c4 p1 p2 ll ur )
  2. (setq p (getpoint "\nPick center point : "))
  3. (setq r (getdist p "\nSpecify radius : "))
  4. (defun makecircle ( c r )
  5.    (entmakex
  6.      (list
  7.       '(0 . "CIRCLE")
  8.       '(100 . "AcDbEntity")
  9.       '(100 . "AcDbCircle")
  10.        (cons 10 (trans c 1 (trans '(0.0 0.0 1.0) 1 0 t)))
  11.        (cons 40 r)
  12.        (cons 210 (trans '(0.0 0.0 1.0) 1 0 t))
  13.      )
  14.    )
  15. )
  16. (setq c1 (makecircle p r))
  17. (setq c2 (makecircle p (* r 0.9)))
  18. (vl-cmdf "_.-hatch" "S" (ssadd c1 (ssadd c2 (ssadd))) "" "P" "S" "")
  19. (setq c3 (makecircle (polar p (* 3.0 (/ pi 4.0)) (* r 0.5)) (* r 0.15)))
  20. (setq c4 (makecircle (polar p (* 1.0 (/ pi 4.0)) (* r 0.5)) (* r 0.15)))
  21. (vl-cmdf "_.-hatch" "S" c3 "" "P" "S" "")
  22. (vl-cmdf "_.-hatch" "S" c4 "" "P" "S" "")
  23. (setq p1 (polar (polar p (* 3.0 (/ pi 2.0)) (* r 0.4)) pi (* r 0.6)))
  24. (setq p2 (polar (polar p (* 3.0 (/ pi 2.0)) (* r 0.4)) 0.0 (* r 0.6)))
  25. (setq ll (polar p1 (* 3.0 (/ pi 2.0)) (* r 0.05)))
  26. (setq ur (polar p2 (/ pi 2.0) (* r 0.05)))
  27. (vl-cmdf "_.rectangle" ll ur)
  28. (vl-cmdf "_.-hatch" "S" (entlast) "" "P" "S" "")
  29. (princ)
  30. )
  1. (defun c:wheel ( / makecircle p r c1 c2 c3 ch3 c4 ch4 c5 ch5 c6 ch6 ss )
  2. (setq p (getpoint "\nPick center point : "))
  3. (setq r (getdist p "\nSpecify radius : "))
  4. (defun makecircle ( c r )
  5.    (entmakex
  6.      (list
  7.       '(0 . "CIRCLE")
  8.       '(100 . "AcDbEntity")
  9.       '(100 . "AcDbCircle")
  10.        (cons 10 (trans c 1 (trans '(0.0 0.0 1.0) 1 0 t)))
  11.        (cons 40 r)
  12.        (cons 210 (trans '(0.0 0.0 1.0) 1 0 t))
  13.      )
  14.    )
  15. )
  16. (setq c1 (makecircle p r))
  17. (setq c2 (makecircle p (* r 0.))
  18. (vl-cmdf "_.-hatch" "S" (ssadd c1 (ssadd c2 (ssadd))) "" "P" "S" "")
  19. (setq c3 (makecircle (polar p 0.0 (* r 0.3)) (* r 0.1)))
  20. (setq c4 (makecircle (polar p 0.0 (* r 0.5)) (* r 0.1)))
  21. (setq c5 (makecircle (polar p 0.0 (* r 0.7)) (* r 0.1)))
  22. (setq c6 (makecircle (polar p 0.0 (* r 1.1)) (* r 0.1)))
  23. (vl-cmdf "_.-hatch" "S" c3 "" "P" "S" "")
  24. (setq ch3 (entlast))
  25. (vl-cmdf "_.-hatch" "S" c4 "" "P" "S" "")
  26. (setq ch4 (entlast))
  27. (vl-cmdf "_.-hatch" "S" c5 "" "P" "S" "")
  28. (setq ch5 (entlast))
  29. (vl-cmdf "_.-hatch" "S" c6 "" "P" "S" "")
  30. (setq ch6 (entlast))
  31. (setq ss (ssadd))
  32. (ssadd c3 ss)
  33. (ssadd c4 ss)
  34. (ssadd c5 ss)
  35. (ssadd c6 ss)
  36. (ssadd ch3 ss)
  37. (ssadd ch4 ss)
  38. (ssadd ch5 ss)
  39. (ssadd ch6 ss)
  40. (vl-cmdf "_.-array" ss "" "P" p 8 "" "")
  41. (princ)
  42. )
M.R。
回复

使用道具 举报

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 06:48:29 | 显示全部楼层
你太棒了。非常感谢。
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-6 07:02:40 | 显示全部楼层
或者,如果您喜欢将其用作块:
 
  1. (defun c:smiley ( / makecircle p r c1 c2 c3 c4 p1 p2 ll ur sss )
  2. (setq p (getpoint "\nPick center point : "))
  3. (setq r (getdist p "\nSpecify radius : "))
  4. (setq sss (ssadd))
  5. (defun makecircle ( c r )
  6.    (entmakex
  7.      (list
  8.       '(0 . "CIRCLE")
  9.       '(100 . "AcDbEntity")
  10.       '(100 . "AcDbCircle")
  11.        (cons 10 (trans c 1 (trans '(0.0 0.0 1.0) 1 0 t)))
  12.        (cons 40 r)
  13.        (cons 210 (trans '(0.0 0.0 1.0) 1 0 t))
  14.      )
  15.    )
  16. )
  17. (setq c1 (makecircle p r))
  18. (setq c2 (makecircle p (* r 0.9)))
  19. (ssadd c1 sss)
  20. (ssadd c2 sss)
  21. (vl-cmdf "_.-hatch" "S" (ssadd c1 (ssadd c2 (ssadd))) "" "P" "S" "")
  22. (ssadd (entlast) sss)
  23. (setq c3 (makecircle (polar p (* 3.0 (/ pi 4.0)) (* r 0.5)) (* r 0.15)))
  24. (setq c4 (makecircle (polar p (* 1.0 (/ pi 4.0)) (* r 0.5)) (* r 0.15)))
  25. (ssadd c3 sss)
  26. (ssadd c4 sss)
  27. (vl-cmdf "_.-hatch" "S" c3 "" "P" "S" "")
  28. (ssadd (entlast) sss)
  29. (vl-cmdf "_.-hatch" "S" c4 "" "P" "S" "")
  30. (ssadd (entlast) sss)
  31. (setq p1 (polar (polar p (* 3.0 (/ pi 2.0)) (* r 0.4)) pi (* r 0.6)))
  32. (setq p2 (polar (polar p (* 3.0 (/ pi 2.0)) (* r 0.4)) 0.0 (* r 0.6)))
  33. (setq ll (polar p1 (* 3.0 (/ pi 2.0)) (* r 0.05)))
  34. (setq ur (polar p2 (/ pi 2.0) (* r 0.05)))
  35. (vl-cmdf "_.rectangle" ll ur)
  36. (ssadd (entlast) sss)
  37. (vl-cmdf "_.-hatch" "S" (entlast) "" "P" "S" "")
  38. (ssadd (entlast) sss)
  39. (vl-cmdf "_.copybase" p sss "")
  40. (vl-cmdf "_.erase" sss "")
  41. (vl-cmdf "_.pasteblock" p)
  42. (princ)
  43. )
  1. (defun c:wheel ( / makecircle p r c1 c2 c3 ch3 c4 ch4 c5 ch5 c6 ch6 ss sss e )
  2. (setq p (getpoint "\nPick center point : "))
  3. (setq r (getdist p "\nSpecify radius : "))
  4. (setq sss (ssadd))
  5. (defun makecircle ( c r )
  6.    (entmakex
  7.      (list
  8.       '(0 . "CIRCLE")
  9.       '(100 . "AcDbEntity")
  10.       '(100 . "AcDbCircle")
  11.        (cons 10 (trans c 1 (trans '(0.0 0.0 1.0) 1 0 t)))
  12.        (cons 40 r)
  13.        (cons 210 (trans '(0.0 0.0 1.0) 1 0 t))
  14.      )
  15.    )
  16. )
  17. (setq c1 (makecircle p r))
  18. (setq c2 (makecircle p (* r 0.))
  19. (ssadd c1 sss)
  20. (ssadd c2 sss)
  21. (vl-cmdf "_.-hatch" "S" (ssadd c1 (ssadd c2 (ssadd))) "" "P" "S" "")
  22. (ssadd (entlast) sss)
  23. (setq c3 (makecircle (polar p 0.0 (* r 0.3)) (* r 0.1)))
  24. (ssadd c3 sss)
  25. (setq c4 (makecircle (polar p 0.0 (* r 0.5)) (* r 0.1)))
  26. (ssadd c4 sss)
  27. (setq c5 (makecircle (polar p 0.0 (* r 0.7)) (* r 0.1)))
  28. (ssadd c5 sss)
  29. (setq c6 (makecircle (polar p 0.0 (* r 1.1)) (* r 0.1)))
  30. (ssadd c6 sss)
  31. (vl-cmdf "_.-hatch" "S" c3 "" "P" "S" "")
  32. (setq ch3 (entlast))
  33. (ssadd ch3 sss)
  34. (vl-cmdf "_.-hatch" "S" c4 "" "P" "S" "")
  35. (setq ch4 (entlast))
  36. (ssadd ch4 sss)
  37. (vl-cmdf "_.-hatch" "S" c5 "" "P" "S" "")
  38. (setq ch5 (entlast))
  39. (ssadd ch5 sss)
  40. (vl-cmdf "_.-hatch" "S" c6 "" "P" "S" "")
  41. (setq ch6 (entlast))
  42. (ssadd ch6 sss)
  43. (setq ss (ssadd))
  44. (ssadd c3 ss)
  45. (ssadd c4 ss)
  46. (ssadd c5 ss)
  47. (ssadd c6 ss)
  48. (ssadd ch3 ss)
  49. (ssadd ch4 ss)
  50. (ssadd ch5 ss)
  51. (ssadd ch6 ss)
  52. (setq e ch6)
  53. (vl-cmdf "_.-array" ss "" "P" p 8 "" "")
  54. (while (setq e (entnext e))
  55.    (ssadd e sss)
  56. )
  57. (vl-cmdf "_.copybase" p sss "")
  58. (vl-cmdf "_.erase" sss "")
  59. (vl-cmdf "_.pasteblock" p)
  60. (princ)
  61. )
M.R。
回复

使用道具 举报

2

主题

389

帖子

387

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 07:05:09 | 显示全部楼层
伙计们,做得很好。不过,我确实有一个问题。对于一个完全的新手来说,创建块,然后使用一个非常简单的例程插入块,不管它是什么,不是更好吗?这样,当他想出更多符号时,他只需创建另一个块,然后复制并编辑新符号的例程。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 07:17:06 | 显示全部楼层
 
我想不出所要求的程序有什么实际用途。可能是学校的家庭作业。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 07:28:26 | 显示全部楼层
播放时间:
 
  1. (Defun c:wheel  (/ LWPoly p pt r r2 x donuts)
  2.      (defun LWPoly  (lst)
  3.            (entmakex
  4.                  (append (list (cons 0 "LWPOLYLINE")
  5.                                (cons 100 "AcDbEntity")
  6.                                (cons 100 "AcDbPolyline")
  7.                                (cons 90 (length lst))
  8.                                (cons 70 1))
  9.                          (mapcar (function (lambda (p) (cons 10 p)))
  10.                                  lst))))
  11.      (setq p  (getpoint "\nPick center point : ")
  12.            pt p)
  13.      (setq r  (getdist p "\nSpecify radius : ")
  14.            r2 r)
  15.      (setq donuts (ssadd))
  16.      (setq r (/ r 4.0))
  17.      (repeat 5
  18.            (setq p (polar p 0 r))
  19.            (setq pl   (LWPoly (list (polar p 0 (setq x (/ r 4.0)))
  20.                                     (polar p 0 (* x 3)))))
  21.            (ssadd pl donuts)
  22.            (vla-setbulge (setq pl (vlax-ename->vla-object pl)) 0 1.0)
  23.            (vla-setbulge pl 1 1.0)
  24.            (vla-put-ConstantWidth pl r)
  25.            )
  26.      (entdel (ssname donuts 3))
  27.      (ssdel (ssname donuts 3) donuts)
  28.      (setq pl (LWPoly (list (polar p pi (* r 0.5))
  29.                             (polar pt pi (+ (* r 0.5) r2)))))
  30.      (vla-setbulge (setq pl (vlax-ename->vla-object pl)) 0 1.0)
  31.      (vla-setbulge pl 1 1.0)
  32.      (vla-put-ConstantWidth pl r)
  33.      (command "_-array" donuts "" "_polar" pt 8 360 "_yes")
  34.      (princ)
  35.      )
回复

使用道具 举报

2

主题

389

帖子

387

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 07:32:33 | 显示全部楼层
是的,我也不能,所以HW/Test/Exam很可能。坦率地说,这听起来像是AutoCAD的新手。单击一次是不现实的,因为您通常希望在调用例程后至少选择一个插入点。我很感兴趣的是,这样的查询得到的回复是“在你展示你已经做过的事情之前,我不会帮你”,在这里,让我完全为你做,而无需进一步输入”,在这种情况下,提供了两个版本!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 15:31 , Processed in 0.564862 second(s), 82 queries .

© 2020-2025 乐筑天下

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