(defun C:TEST (/)
(setq ent (entsel "\n Select line..."))
(setq enta (entnext))
(prompt "\n Select break point...")
(setq p1 (getpoint))
(command "break" ent "f" p1 p1 "")
(setq entb (entnext enta))
(command "erase" enta "")
(command "erase" entb "")
)
我知道它不起作用。但为什么不。。。? 一旦break将线条一分为二,您将拥有一个新对象,而不是两个。您的ent将是第一个对象,您可以使用(entlast)获得第二个对象。
看看这个:
(if (and (setq pnt (getpoint "\nSpecify point at which to break line: "))
(setq ss (ssget pnt '((0 . "LINE"))))
)
(progn (setq ent (ssname ss 0))
(command "_.break" ent "_F" "_non" pnt "_non" pnt)
(setq ent2 (entlast))
)
) 嗨,艾伦,
很抱歉让这件事继续下去,但是。。
1、为什么使用Progn?是因为ssname吗?如果将0设置为1会怎么样?
2.如何创建包含ENT和ENT2的新列表?我有一个加长的例程正在工作,我想在这两行的新列表上运行它。
3.Lengthen命令在LISP中工作的唯一方式是向其传递实体名称。所以我需要使用SETQ为ENT和ENT2命名。
迈克
因为,如果if(带有getpoint和ssget的有效点选择一条线)的两个参数都满足,那么我需要它评估那里的所有内容,而不仅仅是一件事。PROGN将所有内容包装在一起,因此我可以在一个IF语句中使用它。
2&3. 如果要将这两行输入LENGTHEN命令,则必须执行两次LENGTHEN。每个变量(ent和ent2)一次。
不要担心这些问题。每个人都在这里学习和/或帮助。 艾伦,
有没有办法在Break命令之前设置某种标记,然后捕获添加到dwg数据库的下(2)两个实体(ENT和ENT2)?
迈克
你不必那么做。使用break命令拆分对象时,两个图元中的一个相同(只是较短),另一个是图形中最新创建的对象(entlast)。没有必要再往前走了。我上面的代码将打断并换行,并为您提供这两部分(ent和ent2)。 下午好,艾伦,
这是我最好的尝试。我想我有点不对劲。你怎么认为?
5) 做得好!取出entsel线。你不需要它。Ssget使用xy from getpoint选择直线。
我在离开办公室之前写了这封信,但想让你自己试试。数字可能不正确,但您可以更改它。我星期一回来。实际上,我是在路上用手机发帖的。
6 你好,艾伦,
我已经完成了我的“加长”代码,但仍停留在另一个例程上。
它运行良好,但接近尾声时,我得到了这个。。。
椽布局起点:
要运行的角椽:未知命令“CLNGIT”。按F1键获取帮助。
未知命令“CLNGIT”。按F1键获取帮助。
未知命令“CLNGIT”。按F1键获取帮助。
无
我不知道回报来自哪里。
这是完整的代码。尽量不要哭。我知道它远没有你的编码能力那么复杂
让我知道你的想法。
再次感谢您的专业知识。
Mike在BigD
页:
1
[2]