tm20038175 发表于 2011-6-11 21:39:49

没有人编过吗?

tm20038175 发表于 2011-6-12 01:45:12

回复 caoyin 的帖子

这是我的代码,好像有错误,无法选择啊~~~



(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)

)

tm20038175 发表于 2011-6-12 01:58:39

回复 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)

)

198526 发表于 2011-6-13 08:32:07

(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)

)

tm20038175 发表于 2011-6-13 12:09:52

回复 198526 的帖子

哈哈,高手,十分感谢……………
页: 1 [2]
查看完整版本: 【求助】如何得到线上的点?