乐筑天下

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

[编程交流] 按clic对实体排序和编号

[复制链接]

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 19:00:45 | 显示全部楼层
Daveacad这个想法就像你发布的图像一样,你在物体上画一条交叉的路径,这决定了它们的切割顺序,你可以走到物体外面,然后再回来,等等,以便于拾取。文本示例是这样的,我可以看到它是否有效,因为我可以看到拾取对象的顺序。我现在必须做一些重要的事情(去钓鱼),但很可能会下雨,所以我会再去一次,挑选200个等不会是一个问题。我需要进一步研究李的代码,我意识到它是按顺序删除和重新创建的。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 19:06:46 | 显示全部楼层
Daveacad你能试试这个吗?我的代码在李的下面,只要画一个普林线,根据需要经常开始和停止。
 
  1. ;; OE (Order Entities)  -  Lee Mac
  2. (defun LEEoe ( ent / cnt  enx new sbx sub )
  3.    (setq cnt 1)
  4.    ;(while
  5.        (progn
  6.            (setvar 'errno 0)
  7.            ;(setq ent (car (entsel (strcat "\nSelect object " (itoa cnt) " <done>: "))))
  8.            (cond
  9.                (   (= 7 (getvar 'errno))
  10.                    (princ "\nMissed, try again.")
  11.                )
  12.                (   (null ent)
  13.                    nil
  14.                )
  15.                (   (= 4 (logand 4 (cdr (assoc 70 (tblsearch "layer" (cdr (assoc 8 (setq enx (entget ent)))))))))
  16.                    (princ "\nSelected object is on a locked layer.")
  17.                )
  18.                (   (and
  19.                        (setq new (entmakex enx))
  20.                        (or (/= 1 (cdr (assoc 66 enx)))
  21.                            (progn
  22.                                (setq sub (entnext ent)
  23.                                      sbx (entget  sub)
  24.                                )
  25.                                (while (/= "SEQEND" (cdr (assoc 0 sbx)))
  26.                                    (entmake sbx)
  27.                                    (setq sub (entnext sub)
  28.                                          sbx (entget  sub)
  29.                                    )
  30.                                )
  31.                                (entmake sbx)
  32.                            )
  33.                        )
  34.                    )
  35.                    (entdel ent)
  36.                    (redraw new 3)
  37.                    (setq   cnt (1+ cnt))
  38.                )
  39.                (   (princ "\nUnable to reorder selected object."))
  40.            )
  41.        )
  42. ;    ) ; while
  43.    
  44.    (princ)
  45. )
  46. ; pline co-ords example
  47. ; By Alan H
  48. (defun getcoords (ent)
  49. (vlax-safearray->list
  50.    (vlax-variant-value
  51.      (vlax-get-property
  52.    (vlax-ename->vla-object ent)
  53.    "Coordinates"
  54.      )
  55.    )
  56. )
  57. )
  58. (defun co-ords2xy ()
  59. ; convert now to a list of xy as co-ords are x y x y x y if 3d x y z x y z
  60. (setq len (length co-ords))
  61. (setq numb (/ len 2)) ; even and odd check required
  62. (setq I 0)
  63. (repeat numb
  64. (setq xy (list (nth i co-ords)(nth (+ I 1) co-ords) ))
  65. ; odd (setq xy (list (nth i co-ords)(nth (+ I 1) co-ords)(nth (+ I 2) co-ords) ))
  66. (setq co-ordsxy (cons xy co-ordsxy))
  67. (setq I (+ I 2))
  68. )
  69. )
  70. ; program starts here
  71. (defun c:OE( / ss x)
  72. (command "_pline")
  73. (while (= (getvar "cmdactive") 1 ) (command pause)
  74. )
  75. (setq co-ords (getcoords (entlast)))
  76. (co-ords2xy) ; list of 2d points making pline
  77. (entdel (entlast))
  78. (setq ss (ssget "F" co-ordsxy))
  79. (setq x (sslength ss))
  80. (repeat (sslength ss)
  81. (setq ent (ssname ss (setq x ( - x 1))))
  82. (if (= (vla-get-ObjectName (setq obj (vlax-ename->vla-object ent))) "AcDbCircle")
  83. (progn
  84. (setq pt (vlax-safearray->list (vlax-variant-value (vla-get-center obj))) )
  85. (setq ts (cdr (assoc 40 (tblsearch "STYLE" (getvar "TEXTSTYLE")))))
  86. (if (zerop ts)
  87.      (command "TEXT" pt "3.5" "0" (rtos x 2 0))
  88.      (command "TEXT" pt "0" (rtos x 2 0))
  89.   )      
  90. ) ; progn
  91. ) ; if
  92. (LEEoe ent)
  93. (princ "\n")
  94. )
  95. (command "_.regen")
  96. )
回复

使用道具 举报

3

主题

10

帖子

7

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 19:11:04 | 显示全部楼层
嗨,比格尔,
你安排的Lisp程序不能正常工作。请看图片。
每次你使用Lisp时,数字都会写出来。如果他们写一次,第二次使用Lisp时,他们会再次写:如果你擅长AutoCAD,这不是什么大问题
 
最大的问题是选择选项:我需要正常的选择,否则很难使用Lisp。
 
在最后一张图中,您可以看到每次使用Lisp时生成的项目编号,同一实体的值不同。
 
有时Lisp不能正常工作(无消息)。
 
希望我的回复会有帮助!
 
非常感谢。
D
191950v6vm3syysv3ggs6m.jpg
191952m5amm6au5z1wddd1.jpg
191954aolqpgbhblmpcpdc.jpg
191956jdi6grc6621btsds.jpg
191957ekmpqonqqlg7pkws.jpg
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 19:13:11 | 显示全部楼层
你能贴几张样品图纸吗,外面不是一条连续的线吗?
回复

使用道具 举报

3

主题

10

帖子

7

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 19:18:31 | 显示全部楼层
早上好
 
见图纸。
 
再见,
D
OE(订单实体)r0的NMRT。图纸
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 19:19:44 | 显示全部楼层
我不确定你想要什么,画一些随机的物体,然后用一些简单的方法来选择它们,有点像选择激光的路径,代码只在一天结束时把数字放在圆圈上,我们免费做这件事。如果不重置cnt,它将继续编号。您应该能够多次运行它,因为您可能无法只选择一条路径。如果你想要相反的顺序,那可以做到。
 
191959fof3ofovnxx5mkku.jpg
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 20:34 , Processed in 0.780662 second(s), 64 queries .

© 2020-2025 乐筑天下

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