谢谢楼上指点,程序编出来了

- (VL-LOAD-COM)
- (setq AcadObject (vlax-get-acad-object))
- (setq AcadDocument (vla-get-ActiveDocument Acadobject))
- (setq mSpace (vla-get-ModelSpace Acaddocument)) ;_获得模型空间指针
- (defun c:brk_Line (/ lineObjNames lay-name
- lyspt1 i p1 p2
- linePointCol P3 p4
- p tmpEnt lineObjNames
- ) ;_主函数
- (while (null lay-name)
- (setq lay-name (entsel "\n选择打断图层:"))
- )
- (setq lay-name (entget (car lay-name)))
- (setq lay-name (cdr (assoc 8 lay-name)))
- (setq lyspt1 (getpoint "\n起点:"))
- (if lyspt1
- (setq lyspt2 (getpoint lyspt1 "\n第终点: "))
- )
- (if lyspt1
- (command "line" lyspt1 lyspt2 "")
- )
- (setq lyspt1 (list lyspt1
- lyspt2
- (list (nth 0 lyspt2) (1+ (nth 0 lyspt2)) 0)
- )
- )
- (setq lineObjNames
- (ssget "CP"
- lyspt1
- (list '(0 . "LINE") (cons 8 lay-name))
- )
- )
- (setq n (sslength lineObjNames))
- (setq p1 (nth 0 lyspt1))
- (setq p2 (nth 1 lyspt1))
- (setq i 0)
- (repeat n
- (setq next (ssname lineObjNames i))
- (setq p3 (vlax-curve-getStartPoint next))
- (setq p4 (vlax-curve-getEndPoint next)) ;_求开始点和结束点
- (setq p (inters p1 p2 p3 p4))
- (vl-cmdf "_.break" (ssadd next) P "@")
- (setq i (1+ i))
- )
- (princ)
- )
|