
- (defun c:plve ( / os en entl pt ptend)
- (princ "\n plve====lwpolyline vert edit,增加/删除pl线顶点--vb1.0--------lxx.2001.7")
- (setvar "modemacro" "plve.多义线顶点增删程序--梁雄啸.2001")
- (setvar "cmdecho" 0)
- (setvar "osmode" 551)
- (princ "\n当取点为 pl 线的顶点时---删除/否---增加顶点")
- (setq os (getvar "osmode")
- en (entsel "\n选择要增/删顶点的多义线:")
- ent (car en)
- )
- (initget 128)
- (princ "\n!!!取点为 pl 线的顶点时==>删除 / 否==>增加顶点!!!")
- (while
- (setq pt (getpoint "\n自动识别增&删--取点/enter-退出:")) ;enter--重新选择pl线
- (setq entl (entget ent))
- (setvar "modemacro" "")
- (if
- (and (setq ptend (osnap pt "_end"))
- (member (cons 10 (list (car ptend)(cadr ptend))) entl)
- )
- (if (equal pt ptend)
- (eplv);删除顶点
- (aplv);增加顶点
- )
- );endif
- ); end while
- (setvar "osmode" os)
- (princ)
- )
- ;;;;删除顶点
- (defun eplv ( / ptl entl2)
- (princ "\nok")
- (setq ptl (cons 10 (list (car pt) (cadr pt) ));点对
- entl2 '()
- )
- (foreach n entl
- (if (not(equal n ptl))
- (setq entl2 (cons n entl2))
- )
- )
- (setq entl (reverse entl2))
- (entmod entl)
- )
- ;;;;增加顶点
- (defun aplv ()
- (initget 129)
- (setq npt (getpoint pt "\n 新的定位点/X-不做变动/<enter--原选择点>:"))
- (if
- (= (type pt) 'LIST)
- (progn
- (print "\nok")
- (command "_.break" ent pt "@" ^c
- "_.pedit" ent "j" (entlast) "" ^c
- ); 打断
- (print "\n brk")
- (while (= (type npt) 'LIST) ;新的定位点
- (print "enter")
- (setq entl (entget ent) ; 更新
- ptl (cons 10 (list (car pt)(cadr pt)))
- nptl (cons 10 (list (car npt)(cadr npt)))
- entl2 '())
- (foreach n entl
- (if (equal n ptl)
- (setq entl2 (cons nptl entl2))
- (setq entl2 (cons n entl2))
- )
- ) ; 表项替换
- (setq entl (reverse entl2)
- npt nil)
- (entmod entl)
- ); end while
- ); end progn
- ); end cond
- )
|