这是我的代码,好像有错误,无法选择啊~~~
(defun c:gp ()
(setq $orr *error*)
(setq *error* #err) ;当程序出错时就会执行#err函数
(vl-load-com)
(setq oldmode (getvar "osmode") p1mode t)
(setvar "osmode" 0)
(setvar "CMDECHO" 0)
;(princ (strcat "\n<JNRD程序_得到曲线上所有点>:\n请选择曲线:"))
(setq curve (entsel (strcat "\n<JNRD程序_得到曲线上所有点>:\n请选择曲线:")))
(setq curve (car curve))
(setq ss (ssget "x" '((0 . "point"))))
(setq l(sslength ss))
(setq ss1 null)
(setq num 0)
(repeat l
(setq ty(ssname ss num))
(setq data (entget ty))
; (princ "\n") (princ data)
(setq data2(cdr (assoc 10 data)))
(if (equal point (vlax-curve-getClosestPointTo curve data2)10) (ssadd ty ss1))
(setq num(+ num 1))
)
(redraw)
(princ ss1)
(setvar "osmode" oldmode)
(setq *error* $orr)
(princ)
)
(defun #err (s)
;(princ "出错了")
(setvar "osmode" oldmode)
(setq *error* $orr)
) 回复 198526 的帖子
这样好像没有错误,但是没有选择中,奇怪了:
(defun c:gp ()
(setq $orr *error*)
(setq *error* #err) ;当程序出错时就会执行#err函数
(vl-load-com)
(setq oldmode (getvar "osmode") p1mode t)
(setvar "osmode" 0)
(setvar "CMDECHO" 0)
;(princ (strcat "\n<JNRD程序_得到曲线上所有点>:\n请选择曲线:"))
(setq curve (entsel (strcat "\n<JNRD程序_得到曲线上所有点>:\n请选择曲线:")))
(setq curve (car curve))
(setq ss (ssget "x" '((0 . "point"))))
(setq l(sslength ss))
(setq ss1 null)
(setq num 0)
(repeat l
(setq ty(ssname ss num))
(setq data (entget ty))
; (princ "\n") (princ data)
(setq data2(cdr (assoc 10 data)))
(if (equal data2 (vlax-curve-getClosestPointTo curve data2)10)
(progn
(command "Select" ty "")
(ssget "P")
(princ "\n" ) (princnum)
;(ssadd data ss1)
(setq ss1 (ssadd))
))
(setq num(+ num 1))
)
(redraw)
(princ ss1)
(setvar "osmode" oldmode)
(setq *error* $orr)
(princ)
)
(defun #err (s)
;(princ "出错了")
(setvar "osmode" oldmode)
(setq *error* $orr)
) (defun c:gp ()
(setq $orr *error*)
(setq *error* #err) ;当程序出错时就会执行#err函数
(vl-load-com)
(setq oldmode (getvar "osmode") p1mode t)
(setvar "osmode" 0)
(setvar "CMDECHO" 0)
;(princ (strcat "\n<JNRD程序_得到曲线上所有点>:\n请选择曲线:"))
(setq curve (entsel (strcat "\n<JNRD程序_得到曲线上所有点>:\n请选择曲线:")))
(setq curve (car curve))
(setq ss (ssget "x" '((0 . "point"))))
(setq l(sslength ss))
(setq ss1 (ssadd))
(setq num 0)
(repeat l
(setq ty(ssname ss num))
(setq data (entget ty))
; (princ "\n") (princ data)
(setq data2(cdr (assoc 10 data)))
(if (equal data2 (vlax-curve-getClosestPointTo curve data2)10)
(progn
; (command "Select" ty "")
;(ssget "P")
(princ "\n" ) (princnum)
;(ssadd data ss1)
(setq ss1 (ssadd ty ss1))
))
(setq num(+ num 1))
)
(redraw)
; (princ ss1)
(sssetfirst ss1 ss1)
(setvar "osmode" oldmode)
(setq *error* $orr)
(princ)
)
(defun #err (s)
;(princ "出错了")
(setvar "osmode" oldmode)
(setq *error* $orr)
) 回复 198526 的帖子
哈哈,高手,十分感谢……………
页:
1
[2]