ljpnb
发表于 2006-3-28 19:46:00
本帖最后由 作者 于 2006-4-12 22:00:39 编辑
(defun c:test ()
(setvar "cmdecho" 0)
(setq dd (getdist (strcat "\n请输入要断开的长度<"
(rtos (getvar "userr1"))
">:"
)
)
)
(if dd
(setvar "userr1" dd)
(setq dd (getvar "userr1"))
)
(if (setq ent (car (entsel "\n请一条基准线:")))
(progn
(setq dxf (entget ent))
(setq p1 (cdr (assoc 10 dxf))
p2 (cdr (assoc 11 dxf))
)
(grdraw p1 p2 1)
(princ "\n选择要被打断的多条直线:")
(if (setq ss (ssget '((0 . "LINE"))))
(progn
(setq i -1)
(command "undo" "be")
(while (setq ent1 (ssname ss (setq i (1+ i))))
(setq dxf1 (entget ent1))
(setq p3(cdr (assoc 10 dxf1))
p4(cdr (assoc 11 dxf1))
ang (angle p3 p4)
)
(if (setq inter-p (inters p1 p2 p3 p4))
(progn
(setq p5 (polar inter-p ang (/ dd 2.0))
p6 (polar inter-p (+ ang pi) (/ dd 2.0))
)
(command "break" ent1 "none" p5 "none" p6)
)
)
)
)
)
(grdraw p1 p2 0)
(command "undo" "E")
)
(princ "\n没有选择基准线,请重新选择!")
)
(setvar "cmdecho" 1)
(princ)
)
醒玉
发表于 2006-4-12 17:05:00
<P>楼上的大哥,好像上面的程序使用出现了点问题,显示如下:</P>
<P>命令: BR<BR>请输入要断开的长度<3>:<BR>请一条基准线:<BR>选择要被打断的多条直线:<BR>选择对象:<BR>undo 输入要放弃的操作数目或 [自动(A)/控制(C)/开始(BE)/结束(E)/标记(M)/后退(B)] <BR><1>: be<BR>命令: ; 错误: 参数类型错误: lselsetp nil</P>
ljpnb
发表于 2006-4-12 22:01:00
那是空选的关系,11楼的程序已经修改过了,再试试
yshf
发表于 2006-4-13 08:31:00
即然是“许多条线与单条线a相交”,单条线a的两端点就是栏选的第一个点和第二点,选中单条线a,就没有什么必要再出现“F”选项了,根据你的要求,将程序调整为如下即可:
;;请试用以下程序
;;by yshf
(defun c:cc ()
(setq cm (getvar "cmdecho") om (getvar "osmode"))
(setvar "osmode" 0)
(command "_undo" "be")
(setqdd (getdist (strcat "\n请输入要断开的长度<"
(rtos (getvar "userr1")) ">:"
)
)
)
(if dd (setvar "userr1" dd)(setq dd (getvar "userr1")))
(while (setq ent (car (entsel "\n请一条基准线:")))
(setq dxf (entget ent)
p1(cdr (assoc 10 dxf))
p2(cdr (assoc 11 dxf))
)
(if (setq ssa (ssdel ent (ssget "f" (list p1 p2) '((0 . "LINE")))))
(progn
(setq i 0n (sslength ssa))
(repeat n
(setq en2 (ssname ssa i)
dxf (entget en2)
p3(cdr (assoc 10 dxf))
p4(cdr (assoc 11 dxf))
pt(inters p1 p2 p3 p4)
)
(command "_circle" pt (/ dd 2.0))(setq en1 (entlast))
(command "_trim" (entlast) "" (list en2 pt) "")
(entdel en1)
(setq i (1+ i))
)
)
)
)
(command "_undo" "e")
(setvar "osmode" om)(setvar "cmdecho" cm)(princ)
)其实上次程序中已给了主要算法,本次仅是增加了选择集,并对选择集中的图元按已给算法进行处理。
醒玉
发表于 2006-4-13 09:41:00
唉,高手实在太多,只叹小弟手太嫰,提不动刀啊!!!
醒玉
发表于 2006-4-15 08:35:00
好像几个程序在使用过程中和对象捕捉有冲突的地方,不知道用过的朋友有没有同感……
wei209
发表于 2006-11-3 19:56:00
; 错误: 参数类型错误: 二维/三维点: nil
adison
发表于 2007-1-17 17:12:00
请问如果是PLINE线该如何处理?
adison
发表于 2007-1-19 21:17:00
我已经能用PLINE线打断了,但没有实现打断选中的线。高手请不吝赐教!
madaochun
发表于 2010-2-6 13:33:00
哪有单点断线的程序和外挂????