乐筑天下

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

[编程交流] lisp用于顺序编号

[复制链接]

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:46:34 | 显示全部楼层
您没有应用排序列表(我提供的代码)。对选择集排序后,您将再次单步执行它(您的代码)。
 
  1. (defun c:SortY (/ ss lst ent)
  2. ((lambda (n)
  3.     (if (setq ss (ssget "_:L" '((0 . "TEXT"))))
  4.       (foreach x
  5.                (vl-sort
  6.                  ((lambda (i)
  7.                     (while (setq e (ssname ss (setq i (1+ i))))
  8.                       (setq lst (cons e lst))
  9.                     )
  10.                   )
  11.                    -1
  12.                  )
  13.                  (function
  14.                    (lambda (a b) (> (caddr (assoc 10 (entget a))) (caddr (assoc 10 (entget b)))))
  15.                  )
  16.                )
  17.         (setq ent (entget x))
  18.         (entmod (subst (cons 1 (strcat "'" (itoa (setq n (1+ n))))) (assoc 1 ent) ent))
  19.       )
  20.     )
  21.   )
  22.    0
  23. )
  24. (princ)
  25. )
回复

使用道具 举报

34

主题

123

帖子

90

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
175
发表于 2022-7-6 11:49:16 | 显示全部楼层
非常感谢你。太棒了。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:52:21 | 显示全部楼层
 
不客气,但你懂代码吗?
回复

使用道具 举报

34

主题

123

帖子

90

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
175
发表于 2022-7-6 11:54:10 | 显示全部楼层
这就是我现在使用它的方式。仅更改了选择标准。
 
再次感谢。
 
  1. (defun c:SortY (/ ss lst ent)
  2. ((lambda (n)
  3.     (if (setq ss (ssget [color=Red](list (cons 0 "TEXT,MTEXT")
  4.                   (cons 1 "'*"))))[/color]
  5.       (foreach x
  6.                (vl-sort
  7.                  ((lambda (i)
  8.                     (while (setq e (ssname ss (setq i (1+ i))))
  9.                       (setq lst (cons e lst))
  10.                     )
  11.                   )
  12.                    -1
  13.                  )
  14.                  (function
  15.                    (lambda (a b) (> (caddr (assoc 10 (entget a))) (caddr (assoc 10 (entget b)))))
  16.                  )
  17.                )
  18.         (setq ent (entget x))
  19.         (entmod (subst (cons 1 (strcat "'" (itoa (setq n (1+ n))))) (assoc 1 ent) ent))
  20.       )
  21.     )
  22.   )
  23.    0
  24. )
  25. (princ)
  26. )
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:58:16 | 显示全部楼层
但是你知道它是怎么工作的吗?
 
此外,您不应该从ssget中删除“_:L”(过滤器锁定层),因为如果单步执行锁定层上的文本对象,例程将失败。
 
使用:
  1. (setq ss (ssget "_:L" (list (cons 0 "TEXT,MTEXT") (cons 1 "'*"))))
回复

使用道具 举报

34

主题

123

帖子

90

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
175
发表于 2022-7-6 12:01:50 | 显示全部楼层
我很害怕说我明白,但现在你已经写好了,嗯,让我们说,我正在经历它。
 
我是这样开始的:
-选择
-订单
-更换(entmod)
 
所以我把代码分成了几个部分。显然你的代码做得很好。
 
我已经按照您的建议更正了代码,也感谢您的解释。我以为我是
我试图掌握lamda(n)和lamda(I)的工作原理
. 我在调试模式下使用了动画功能。
谢谢
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 12:07:03 | 显示全部楼层
SSGet信息:
  1. 6
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 12:08:44 | 显示全部楼层
lambda i和n部分只是将数字应用于匿名函数。在这种情况下,它阻止我将i定义为-1,将n定义为0。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 11:40 , Processed in 0.574335 second(s), 77 queries .

© 2020-2025 乐筑天下

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