runkeji 发表于 2003-9-11 11:28:00

为什么不能阅读您的精华帖子帖子权限呀,能不能给我发一份
runkeji@163.com

BDYCAD 发表于 2003-9-11 11:51:00

四樓的 LYY 你怎麼不公開那條程序了. 有很多哥們需要的. 謝謝啦.

lyy 发表于 2003-9-11 15:53:00

我也看不见,不知道为什么?问问版主吧!

BDYCAD 发表于 2003-9-12 09:10:00

13樓你重新貼上來就得啦.這等小事不用煩我們的版主老大.我想他也很忙.

meflying 发表于 2003-9-12 11:46:00

初级用户看不了精华帖子,
我复制了一下:
;;试试看
(defun c:test(/ e ent pt dis len)
(setq e T)
(while (and e (setq ent (entsel "\n请点选spline线:")))
    (if (= (cdr (assoc 0 (entget (car ent)))) "SPLINE")
      (progn
      (setq e nil
            pt (cadr ent)
            ent (vlax-ename->vla-object (car ent))
            pt (vlax-curve-getClosestPointTo ent pt)
            dis (vlax-curve-getDistAtPoint ent pt)
            len (vlax-curve-getDistAtParam ent (vlax-curve-getEndParam ent))
            pt (if (< dis (- len dis)) (vlax-curve-getStartPoint ent) (vlax-curve-getEndPoint ent))
      )
      (princ pt)
      )
      (prompt "\n不是spline线!")
    )
)
(princ)
)

无痕 发表于 2004-9-29 06:55:00

误区误区!!!!,既然是spline,那就不用求什么曲线长度.直接捕捉end就可以啦(setq el (entsel "\n选择样条曲线:"))
(if (= "SPLINE" (cdr(assoc 0 (entget (car el)))))
   (setq pt (osnap (cadr el) "end"))
   (progn (princ "\n不是spline")nil)
)
;;测试:
(vl-cmdf ".line" pt pause "")

meflying 发表于 2004-9-29 08:26:00

那起点呢?你这里没有判断是起点还是终点,而直接使用了终点

无痕 发表于 2004-10-3 10:50:00

捕捉"end"是端点.靠近起点它就是起点,靠近终点它就是终点.



对不闭合的sp,是否是起点可以用





(equal (vlax-curve-getstartpoint (car el)) pt)


判断一下,不过,这个方法对闭合的sp就不灵了:).只好求出param进行判断.



不过话说回来,前面各位的帖子也只是对pt赋起点or终点值,没有进行是否是起点,终点的区分.所以我前一个帖子的功能已经达到同样的效果.


其实想说的是:端点捕捉,就可以抓到sp的起点和终点,不像lwpline,pline,会抓到中间的节点.
页: 1 [2]
查看完整版本: 這個判斷式很有用,請版主幫忙寫寫吧.