乐筑天下

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

[编程交流] 直线和圆弧的排序列表

[复制链接]

2

主题

11

帖子

10

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 19:23:01 | 显示全部楼层
谢谢你的建议,大卫。不过我只是在寻找一种排序算法。我目前正在努力使我的代码适应李·麦克的grouppoints命令,但目前没有多大成功。
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 19:27:25 | 显示全部楼层
有时最好让AutoCAD来完成这项工作。通过使用pedit创建多段线并将其分解,它会自动按端点对线段进行排序-大卫
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 19:32:34 | 显示全部楼层
我还没有检查输出,但这应该可以让您大致了解:
  1. ([color=BLUE]defun[/color] c:test ( [color=BLUE]/[/color] cen cnt ent enx ept idx lst rad sel spt )
  2.    ([color=BLUE]defun[/color] assocf ( x l f )
  3.        ([color=BLUE]vl-some[/color] '([color=BLUE]lambda[/color] ( a ) ([color=BLUE]if[/color] ([color=BLUE]equal[/color] x ([color=BLUE]car[/color] a) f) a)) l)
  4.    )
  5.    ([color=BLUE]defun[/color] grouppoints ( l [color=BLUE]/[/color] a r x x1 x2 )
  6.        ([color=BLUE]while[/color] ([color=BLUE]setq[/color] x ([color=BLUE]car[/color] l))
  7.            ([color=BLUE]setq[/color] x ([color=BLUE]list[/color] x)
  8.                  l ([color=BLUE]cdr[/color]  l)
  9.            )
  10.            ([color=BLUE]while[/color]
  11.                ([color=BLUE]cond[/color]
  12.                    (   ([color=BLUE]setq[/color] a (assocf ([color=BLUE]setq[/color] x1 ([color=BLUE]caar[/color] x)) l 1e-)
  13.                        ([color=BLUE]setq[/color] x ([color=BLUE]cons[/color] ([color=BLUE]reverse[/color] a) x)
  14.                              l ([color=BLUE]vl-remove[/color] a l)
  15.                        )
  16.                    )
  17.                    (   ([color=BLUE]setq[/color] a (assocf ([color=BLUE]setq[/color] x2 ([color=BLUE]last[/color] ([color=BLUE]last[/color] x))) l 1e-)
  18.                        ([color=BLUE]setq[/color] x ([color=BLUE]append[/color] x ([color=BLUE]list[/color] a))
  19.                              l ([color=BLUE]vl-remove[/color] a l)
  20.                        )
  21.                    )
  22.                    (   ([color=BLUE]setq[/color] a (assocf x1 ([color=BLUE]setq[/color] l ([color=BLUE]mapcar[/color] '[color=BLUE]reverse[/color] l)) 1e-)
  23.                        ([color=BLUE]setq[/color] x ([color=BLUE]cons[/color] ([color=BLUE]reverse[/color] a) x)
  24.                              l ([color=BLUE]vl-remove[/color] a l)
  25.                        )
  26.                    )
  27.                    (   ([color=BLUE]setq[/color] a (assocf x2 l 1e-)
  28.                        ([color=BLUE]setq[/color] x ([color=BLUE]append[/color] x ([color=BLUE]list[/color] a))
  29.                              l ([color=BLUE]vl-remove[/color] a l)
  30.                        )
  31.                    )
  32.                )
  33.            )
  34.            ([color=BLUE]setq[/color] r ([color=BLUE]cons[/color] x r))
  35.        )
  36.    )
  37.    ([color=BLUE]defun[/color] amid ( c s e [color=BLUE]/[/color] v x )
  38.        ([color=BLUE]setq[/color] v ([color=BLUE]mapcar[/color] '[color=BLUE]-[/color] e s)
  39.              x ([color=BLUE]trans[/color] c 0 v)
  40.        )
  41.        ([color=BLUE]trans[/color] ([color=BLUE]cons[/color] ([color=BLUE]-[/color] ([color=BLUE]car[/color] x) ([color=BLUE]distance[/color] c s)) ([color=BLUE]cdr[/color] x)) v 0)
  42.    )
  43.    ([color=BLUE]if[/color] ([color=BLUE]setq[/color] sel ([color=BLUE]ssget[/color] '((0 . [color=MAROON]"LINE,ARC"[/color]))))
  44.        ([color=BLUE]progn[/color]
  45.            ([color=BLUE]repeat[/color] ([color=BLUE]setq[/color] idx ([color=BLUE]sslength[/color] sel))
  46.                ([color=BLUE]setq[/color] ent ([color=BLUE]ssname[/color] sel ([color=BLUE]setq[/color] idx ([color=BLUE]1-[/color] idx)))
  47.                      enx ([color=BLUE]entget[/color] ent)
  48.                )
  49.                ([color=BLUE]if[/color] ([color=BLUE]=[/color] [color=MAROON]"LINE"[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 0 enx)))
  50.                    ([color=BLUE]progn[/color]
  51.                        ([color=BLUE]setq[/color] spt ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 10 enx))
  52.                              ept ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 11 enx))
  53.                        )
  54.                        ([color=BLUE]if[/color] ([color=BLUE]equal[/color] ([color=BLUE]caddr[/color] spt) ([color=BLUE]caddr[/color] ept) 1e-
  55.                            ([color=BLUE]setq[/color] lst ([color=BLUE]cons[/color] ([color=BLUE]list[/color] spt ept) lst))
  56.                        )
  57.                    )
  58.                    ([color=BLUE]setq[/color] cen ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 10 enx))
  59.                          rad ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 40 enx))
  60.                          spt ([color=BLUE]trans[/color] ([color=BLUE]polar[/color] cen ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 50 enx)) rad) ent 0)
  61.                          ept ([color=BLUE]trans[/color] ([color=BLUE]polar[/color] cen ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 51 enx)) rad) ent 0)
  62.                          lst ([color=BLUE]cons[/color]  ([color=BLUE]list[/color]  spt (amid ([color=BLUE]trans[/color] cen ent 0) spt ept) ept) lst)
  63.                    )
  64.                )
  65.            )
  66.            ([color=BLUE]setq[/color] cnt 0)
  67.            ([color=BLUE]mapcar[/color]
  68.                ([color=BLUE]function[/color]
  69.                    ([color=BLUE]lambda[/color] ( grp )
  70.                        ([color=BLUE]mapcar[/color]
  71.                            ([color=BLUE]function[/color]
  72.                                ([color=BLUE]lambda[/color] ( obj )
  73.                                    ([color=BLUE]cons[/color] ([color=BLUE]setq[/color] cnt ([color=BLUE]1+[/color] cnt))
  74.                                        ([color=BLUE]apply[/color] '[color=BLUE]append[/color] ([color=BLUE]apply[/color] '[color=BLUE]mapcar[/color] ([color=BLUE]cons[/color] '[color=BLUE]list[/color] obj)))
  75.                                    )
  76.                                )
  77.                            )
  78.                            grp
  79.                        )
  80.                    )
  81.                )
  82.                (grouppoints lst)
  83.            )
  84.        )
  85.    )
  86.    ([color=BLUE]princ[/color])
  87. )
回复

使用道具 举报

2

主题

11

帖子

10

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 19:34:06 | 显示全部楼层
经过一点修补,我成功地将您的排序解决方案实现到我的代码中。现在它就像一个魅力。它比我的旧代码快,并且它在我测试它的所有部分都做得很好。
 
谢谢你对李的所有帮助,不仅是在这个帖子中,而且还感谢你通过网络与社区分享的所有知识http://www.lee-mac.com/和你的多个论坛帖子。
在过去的几年里,您帮助我学习了很多关于AutoLisp的知识。我真的很感激。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 19:40:38 | 显示全部楼层
 
很高兴听到doaiena!
 
 
多谢你对我的感激之词,这意义重大。我很高兴这些年来在AutoLISP学习方面直接和间接地帮助了你们——非常欢迎你们。
回复

使用道具 举报

rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 19:41:18 | 显示全部楼层
 
Thanx Lee,你只是看了看你的代码就让我头疼了哈哈
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 19:47:02 | 显示全部楼层
........
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

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

© 2020-2025 乐筑天下

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