明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

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

這個判斷式很有用,請版主幫忙寫寫吧.

  [复制链接]
发表于 2003-9-11 11:28 | 显示全部楼层
为什么不能阅读您的精华帖子帖子权限呀,能不能给我发一份
runkeji@163.com
 楼主| 发表于 2003-9-11 11:51 | 显示全部楼层
四樓的 LYY 你怎麼不公開那條程序了. 有很多哥們需要的. 謝謝啦.
发表于 2003-9-11 15:53 | 显示全部楼层
我也看不见,不知道为什么?问问版主吧!
 楼主| 发表于 2003-9-12 09:10 | 显示全部楼层
13樓你重新貼上來就得啦.這等小事不用煩我們的版主老大.我想他也很忙.
发表于 2003-9-12 11:46 | 显示全部楼层
初级用户看不了精华帖子,
我复制了一下:
;;试试看
(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 | 显示全部楼层
误区误区!!!!,既然是spline,那就不用求什么曲线长度.直接捕捉end就可以啦
  1. (setq el (entsel "\n选择样条曲线:"))
  2. (if (= "SPLINE" (cdr(assoc 0 (entget (car el)))))
  3.    (setq pt (osnap (cadr el) "end"))
  4.    (progn (princ "\n不是spline")nil)
  5. )
  6. ;;测试:
  7. (vl-cmdf ".line" pt pause "")
发表于 2004-9-29 08:26 | 显示全部楼层
那起点呢?你这里没有判断是起点还是终点,而直接使用了终点
发表于 2004-10-3 10:50 | 显示全部楼层
捕捉"end"是端点.靠近起点它就是起点,靠近终点它就是终点.



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





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


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



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


其实想说的是:端点捕捉,就可以抓到sp的起点和终点,不像lwpline,pline,会抓到中间的节点.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-17 12:19 , Processed in 0.306916 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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