乐筑天下

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

[编程交流] 选定矩形的自动编号

[复制链接]

1

主题

6

帖子

5

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 06:32:43 | 显示全部楼层 |阅读模式
你好,
我在这个论坛上看到了很多lisp自动编号的例子,这对我来说有点复杂。
但我只需要一个简单的lisp,它会自动将数字放在矩形的中心。在我选择了矩形之后。我想要。
例如,如果我选择10个矩形。我需要按顺序将rect编号为1到10。
顺便问一下,这也适用于六边形吗?
有人能帮忙吗?
谢谢
肯贝
回复

使用道具 举报

10

主题

8258

帖子

8335

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-6 06:41:45 | 显示全部楼层
你看过李的这套(递增编号套件)吗?
 
http://www.lee-mac.com/numinc.html
回复

使用道具 举报

1

主题

6

帖子

5

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 06:43:14 | 显示全部楼层
您好,备注,,
我看过李的帖子。
但这不是我想要的。。
我没有选择图形中已经存在的矩形(不是块)的选项。
给我贴标签。
谢谢
当做
肯贝
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 06:49:16 | 显示全部楼层
试试这个代码可能会有帮助
  1. (defun C:INR (/ *error* cpt dxf elist en ent emake_txt inc info midpt pfx pts
  2. sfx sset start tht)
  3. ;; increment numbering of rectangles
  4. (defun *error*  (msg)
  5.    (command "_undo"
  6. "_end")
  7.          (if (and msg
  8. (not (wcmatch (strcase msg)
  9. "*BREAK*,*CANCEL*,*QUIT*,")))
  10.      (princ (strcat
  11. "\nError: " msg)))
  12.      )
  13. ;;helpers:
  14. (defun dxf (key
  15. alist)
  16. (cdr (assoc key alist))
  17. )
  18. (defun
  19. midpt (p1 p2)
  20.    (mapcar '(lambda(x y)(* (+ x y) 0.5))p1
  21. p2)
  22.    )
  23. (defun emake_txt  (pt txt hgt)
  24. ;;  middle center  ;;
  25. (entmake (list '(0 .
  26. "TEXT")
  27.   '(100 . "AcDbEntity")
  28.   '(67 .
  29. 0)
  30.   '(8 . "0")
  31.   '(100 .
  32. "AcDbText")
  33.   (cons 10(list (- (car pt) (* hgt (strlen txt)
  34. 0.47))(- (cadr pt)(/ hgt 2.))(caddr pt)))
  35.   (cons 40
  36. hgt)
  37.   (cons 1 txt)
  38.   '(50 . 0)
  39.   '(41
  40. . 1)
  41.   '(51 . 0)
  42.   '(7 . "Standard"); change on your
  43. text style here
  44.   '(71 . 0)
  45.   '(72 .
  46. 1)
  47.   (cons 11 pt)
  48.   '(100 .
  49. "AcDbText")
  50.   '(73 . 2)))
  51. )
  52. ;;   main part   ;;
  53. (if
  54. (and
  55. (setq pfx   (getstring "\n Prefix:
  56. ")
  57.       sfx   (getstring
  58. "\n Suffix: ")
  59.       start (getint
  60. "\n Starting number: ")
  61.       step  
  62. (getint "\n Increment step: ")
  63.       tht
  64. (getreal "\n Text heigh: ")))
  65. (progn
  66.      (command "_undo" "_be")
  67.      (prompt "\n Select rectangles in the
  68. right order:")
  69.      (while
  70. (setq sset
  71. (ssget "_+.:S:L"
  72.     (list (cons 0
  73. "lwpolyline")
  74.    (cons 90
  75. 4)
  76.    (cons 70 1))))
  77. (setq en (ssname sset
  78. 0))
  79. (setq pts (vl-remove-if 'not (mapcar '(lambda(x)(if (= 10 (car
  80. x))(cdr x)))(entget en)))
  81.   cpt (trans (midpt (car pts)(caddr
  82. pts)) 1 0))
  83.   (emake_txt  cpt (strcat pfx (itoa start) sfx)
  84. tht)
  85. (setq start (+ start step))
  86. )
  87. )
  88.    )
  89. (*error* nil)
  90. (princ)
  91. ) ;_ end of defun
  92. (prompt
  93. "\n\t---\tType INR to execute  \t---")
  94. (prin1)
回复

使用道具 举报

1

主题

6

帖子

5

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 06:57:41 | 显示全部楼层
嗨,菲索,
我在运行程序时遇到这个错误(错误:坏DXF组:nil)。
我错过了什么吗。
此外,我希望能够在矩形上进行栅栏选择,而不是1乘1。
谢谢
当做
肯贝
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 06:59:45 | 显示全部楼层
然后通读代码,找到一行
程序失败了,否则我需要绘图来查看
问题不在于此
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 07:05:15 | 显示全部楼层
这行应该是这样的
 
  1.    '(7 . "Standard")[b]; change on your  text style here[/b]

 
我相信当你复制粘贴代码的时候。这条线不经意间就这样结束了
 
  1.    '(7 . "Standard"); change on your
  2. text style here

 
随便。下面是一个更新的短代码[演示代码]
  1. (defun c:NRI ( /  *IntGet1 sn ss i e sum verts ptList p )
  2. ;;        pBe 25May2013        ;;;
  3. [color="blue"](defun *IntGet1 (fn msg def)
  4. (setq type_ (vl-symbol-name (type def)))
  5.         (initget 6)
  6.         (setq val ((eval fn) (strcat msg " <" (vl-some '(lambda (x)
  7.                 (if (eq (Car x) type_)(eval (cadr x))))
  8.                 (list '("REAL" (rtos def 2 2))' ("INT" (itoa def)) '("STR" def))) ">: ")))
  9. (if (or (null val)
  10.                 (eq "" val))
  11.                  def val))
  12. (foreach Var '(("TxtHt" 1.0) ("sn" 1) ("pref" "X"))
  13.      (if (setq dflt (eval (read (car var))))
  14.                    dflt (set (read (car var)) (cadr var))
  15. ))
  16. (setq TxtHt   (*intget1 'getreal "\nEnter text height" TxtHt)
  17.      sn      (*intget1 'getint "\nEnter Start Number" sn)[/color]
  18.      pref    (strcase (*intget1 'getstring "\nEnter Start Number" pref)))
  19. (if (setq i -1 ss (ssget '((0 . "LWPOLYLINE"))))  
  20. (repeat (sslength ss)
  21.            (setq e     (ssname ss (setq i (1+ i)))
  22.                  sum   '(0 0)
  23.                  verts (cdr (assoc 90 (entget e))))
  24.            (setq ptList
  25.                       (mapcar 'cdr
  26.                               (vl-remove-if-not
  27.                                     '(lambda (x) (= (car x) 10))
  28.                                     (entget e))))
  29.            (foreach x ptList (setq sum (mapcar '+ x sum)))
  30.     (setq p (mapcar '/ sum (list verts  verts)))
  31.         (entmakex
  32.           (list
  33.             (cons 0 "TEXT")
  34.             (cons 10 p)
  35.             (cons 11 p)
  36.             (cons 40 TxtHt)
  37.             '(50 . 0.0)
  38.             '(72 . 4)
  39.             '(73 . 3)
  40.             (cons 1[color="blue"][b] (Strcat pref " " (itoa sn))[/b][/color]
  41.                   )
  42.             )
  43.           )
  44.                 (setq sn (1+ sn))
  45.         )
  46. )
  47. (princ)
  48. )

 
HTH公司
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 07:08:22 | 显示全部楼层
谢谢Patrick,你的演示代码比我的短得多,
但是没有看到他的样图,任何事情都只是猜测,
可能是重复的验证,或者矩形没有闭合
或者其他一些东西,谁知道呢?
干杯
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 07:17:37 | 显示全部楼层
 
你说得对。最近,根据最近的请求/请求ER,我们只做了这些
回复

使用道具 举报

1

主题

6

帖子

5

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 07:21:34 | 显示全部楼层
嗨,菲索,
我真诚地向你道歉。Patrick是对的,我在记事本上粘贴了带有文字扭曲的程序,没有注意到错误。
现在没有错误。
但是我仍然需要一个接一个地选择矩形,我在图形中有大约80到100个矩形要选择。
希望不要问太多,如果你可以修改它,这样我可以做一个栅栏选择。
谢谢
当做
肯贝
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 14:54 , Processed in 0.744542 second(s), 72 queries .

© 2020-2025 乐筑天下

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