明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: tm20038175

【求助】如何得到线上的点?

  [复制链接]
 楼主| 发表于 2011-6-11 21:39:49 | 显示全部楼层
没有人编过吗?
 楼主| 发表于 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)

)
 楼主| 发表于 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" ) (princ  num)
    ;(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)

)
发表于 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" ) (princ  num)
    ;(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)

)
 楼主| 发表于 2011-6-13 12:09:52 | 显示全部楼层
回复 198526 的帖子

哈哈,高手,十分感谢……………
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-6-10 09:42 , Processed in 0.184911 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表