broncos15 发表于 2022-7-5 17:46:14

选择刚断开的对象

我知道我犯了一个愚蠢的错误,但我想知道为什么我在break命令后选择刚创建的对象的代码不起作用。我曾尝试将entget与entlast结合使用,但似乎不起作用。我的代码是:
(setq ent1 (entget (entlast)));;;I have also tried (car (entget (entlast))) and (entget (car (entlast))) but it doesn't work either.
      (vl-cmdf "._join" ent ent1 "")其中ent是我运行break命令时选择的对象。这是一个更大的惯例的一部分,这就是为什么我试图打破,然后重新加入普林。

Grrr 发表于 2022-7-5 17:50:55

在我看来,除了这个问题:
“ent”表达式的引号是什么它有入口吗?

BIGAL 发表于 2022-7-5 17:57:12

您需要在第一次选择时保存对象ID,然后do break entlast将成为新对象。

broncos15 发表于 2022-7-5 18:02:00

所以ent被分配给
这也不正确吗?

Grrr 发表于 2022-7-5 18:08:55

我不确定,但你可以试试:
(vl-cmdf "._join" (entget ent ) ent1 "")
哪里:
(setq ent1 (entget (car (entlast))))

broncos15 发表于 2022-7-5 18:10:08

所以我试过了,但仍然不起作用。我想知道是否可能更改了对象id,使原始对象不再存在,而是有两个新id。

Grrr 发表于 2022-7-5 18:17:00

我认为join命令可能适用于选择集,所以可能构建一个空的ss,在其中两者都被添加到其中。

Tharwat 发表于 2022-7-5 18:22:19

如果可以的话。为什么不使用命令Pedit呢?
 
正如您在第一篇文章中所述,您选择了一条多段线并运行命令break,然后使用entlast函数分割多段线,这还不足以获得新创建的曲线对象。
 
当您第一次选择要打断的多段线时,在运行命令break并完成后,只需使用while函数和entnext编写代码即可检索新创建的对象。
 
祝你好运

broncos15 发表于 2022-7-5 18:24:04

我没有使用PEDIT,因为这是涉及要素线的更大例程的一部分,这些要素线将被打断,然后使用相同的技术重新连接,而不是使用命令插入PI,因为它可能会弄乱要素线的坡度。我没有想过使用entnext函数来实现这一点。我会处理好它,看看我能做些什么。谢谢你的帮助和建议!

broncos15 发表于 2022-7-5 18:32:07

Tharwat,所以我试着使用你的方法,但它说我有一个空的选择集,这看起来很奇怪,因为至少应该有一个新的实体。我的代码是:
(setq lastent (entlast))
      (command "._AeccBreakFeatures" ent "_f")
      (princ "\nPick break point: ")
      (command pause "@")
      (while (setq lastEnt (entnext lastEnt))
      (ssadd lastEnt ss)
      )
页: [1] 2
查看完整版本: 选择刚断开的对象