乐筑天下

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

[编程交流] 用so画线和圆

[复制链接]

44

主题

139

帖子

95

银币

后起之秀

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

铜币
221
发表于 2022-7-5 15:16:21 | 显示全部楼层 |阅读模式
大家好!
 
我写这个lisp是为了快速绘制这些圆+线。
 
正如你所见,垂直边缘为30cm时效果不太好,但如果我放置60cm,效果会很好。。
 
 
该程序询问我以下问题:
1、线路数量
2、每条线的圈数
3.2点绘制位置
4、我刚才用2分画的边线
 
如何处理非垂直/水平线?
 
我怎么也能在角落里画画?

                               
登录/注册后可看大图

 
 
谢谢
 
丹尼斯
161629w8l3s22i2d3x55xs.png
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 15:32:33 | 显示全部楼层
使用极函数计算点的位置,使用角度函数计算两个给定点之间的角度。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 15:43:22 | 显示全部楼层
在你的代码中有一个建议,你重复entmake多次,这可能存在两行,圈,因为你可以使用defun传递变量,这是编程中的一种标准类型,不能重复写代码位。
 
  1. (defun ML:Makeline (lay pt1 pt2 /  )
  2.    (entmake (list (cons 0 "LINE")
  3.       (Cons 8 Lay)
  4.       (cons 10 pt1)
  5.       (cons 11 pt2)
  6.       (cons 62 3)
  7.    )
  8. )
  9. )
  10. ; put at start
  11. (setq clay "SCHÖCK_BOLE")
  12. ; example
  13. (setq p1 (list  (+ (nth 0 p1) dist1) (+ (nth 1 p1) (* j dist)) (nth 2 p1)))
  14. (setq p2 (list (+ (nth 0 p1) (* j dist)) (+ (nth 1 p1) dist1 (* (- i 1) passo)) (nth 2 p1)))
  15. (ML:Makeline clay p1 p2)
回复

使用道具 举报

44

主题

139

帖子

95

银币

后起之秀

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

铜币
221
发表于 2022-7-5 15:47:39 | 显示全部楼层
谢谢你们的帮助!
是的,我应该学会更好地编写代码。我的代码看起来总是一团糟。。
 
我会设法解决它!
 
期待很快与您见面!
丹尼斯
 
丹尼斯
回复

使用道具 举报

44

主题

139

帖子

95

银币

后起之秀

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

铜币
221
发表于 2022-7-5 16:03:24 | 显示全部楼层
大家好!!
 
今天我有时间继续这个项目!
 
我完全重写了代码:
我对此感到非常自豪
 
你能给我一个提示吗?
 
开头有一个参考点。。我想用这一点来表示我的圆+线的方向,而不是外部总是逆时针,内部总是顺时针。。我怎么检查?INV使用“-1”或“+1”来考虑这一点。
 
你认为我需要写一个新函数来绘制45°方向的边缘吗?
 
谢谢你的帮助
丹尼斯

                               
登录/注册后可看大图

 
编辑:也许是这样,但我不太喜欢。。最初的想法是将90度分成两半(一条线+45°的圆)和三部分(2条线+30°的圆)。有什么建议吗?
  1. (defun legatura_diagonale (a / j k)
  2. (setq j 1
  3.        k 1)
  4. (repeat n2 ;direzione Y
  5.   ; J=1;3;5 etc
  6. (setq pnt (polar p1 (+ ang (* inv a)) (* j dist_y) ))
  7. (Entmake (list (cons 0 "CIRCLE")
  8.                      (cons 8 "SCHÖCK_BOLE")
  9.                      (cons 10 pnt)
  10.                      (cons 40 diam)
  11.                      (cons 62 3)
  12.                      )
  13.                    )
  14. (setq j (+ j 2))
  15. )
  16. (ML:Makeline  "SCHÖCK_BOLE"
  17.            (polar p1 (+ ang (* inv a)) (* 1 dist_y))
  18.                (polar p1 (+ ang (* inv a)) (* (- (* n2 2) 1) dist_y))
  19.               )
  20. )
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 16:07:24 | 显示全部楼层
你好
我尽量不改变你的编码方式,希望你能从中吸取教训。
 
  1. 4
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:18:22 | 显示全部楼层
也许下一个版本,如果矩形是普林线,那么你只需要暗示内部或外部或没有。不需要选择点。看这个,它有角点的坐标,所以可以进行pt1-pt2等
 
  1. 5
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 13:04 , Processed in 0.719906 second(s), 70 queries .

© 2020-2025 乐筑天下

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