找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 777|回复: 3

[求助] [求助]:怎么判断多义线是否光滑

[复制链接]
发表于 2006-9-26 21:50:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
如提
组代码是多少啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-9-27 11:32:45 | 显示全部楼层
没有这样的组码,只能通过程序实现你说的功能。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-10-3 11:03:15 | 显示全部楼层
那请问如何用程序实现?谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-10-4 08:48:02 | 显示全部楼层
好久沒有來曉東交流啦,偶爾也只是來灌下水。。。。
呵呵。。。
不知道樓主的所謂"光滑“是什么意思。。。猜應該是指復線在某個頂點處平滑過度吧。。在所有頂點都平滑過度那么這復線就"光滑"咯?
以前有寫過這樣一段不知是否符合樓主的意思。。

  1. (defun hy_pointissharp(pline point / obj param deriv-1 deriv);;;判斷復線上的頂點是否為尖點
  2.   (defun count(o num)
  3.     (cond ((< o 0) (+ num o))
  4.           ((> o num) (- o num))
  5.           (t o)
  6.      )
  7.     )
  8.   (setq obj (vlax-ename->vla-object pline)
  9.         param (vlax-curve-getparamatpoint obj point)
  10.         numo (cdr (assoc 90 (entget pline)))
  11.         )
  12.   
  13.   (if(vlax-curve-isclosed pline)
  14.      (progn
  15.      (setq deriv-1 (vlax-curve-getfirstderiv obj (count (- param 1e-10) numo))
  16.            deriv (vlax-curve-getfirstderiv obj param)
  17.         )
  18.      (cond ((and (not (equal (car deriv-1) 0 1e-8)) (not (equal (car deriv) 0 1e-8)))
  19.             (if (equal (/ (cadr deriv-1) (car deriv-1))
  20.              (/ (cadr deriv) (car deriv))
  21.              1e-3)
  22.              t
  23.              nil
  24.             ))
  25.            ((and (equal (car deriv-1) 0 1e-8) (equal (car deriv) 0 1e-8)) t)
  26.            (t nil)
  27.            )
  28.   )
  29.      (if (and (/= param (vlax-curve-getstartparam obj))
  30.               (/= param (vlax-curve-getendparam obj))
  31.               )
  32.        (progn (setq deriv-1 (vlax-curve-getfirstderiv obj (count (- param 1e-10) numo))
  33.                     deriv (vlax-curve-getfirstderiv obj param)
  34.                     )
  35.               (cond ((and (not (equal (car deriv-1) 0 1e-8)) (not (equal (car deriv) 0 1e-8)))
  36.             (if (equal (/ (cadr deriv-1) (car deriv-1))
  37.              (/ (cadr deriv) (car deriv))
  38.              1e-3)
  39.              t
  40.              nil
  41.             ))
  42.            ((and (equal (car deriv-1) 0 1e-8) (equal (car deriv) 0 1e-8)) t)
  43.            (t nil)
  44.            )
  45.           )
  46.        nil)
  47.     )
  48.   )

程序說明:pline 是復線  point 是復線上的一頂點 如果程序返回T說明在該點處 不"平滑"反之則"平滑"..
主要思路:取得距離該點處很近前后各一點,判斷各自的切線斜率,如果很接近(其中會有一個很小的誤差值存在)那末表示該點平滑否則則為尖點 (利用一階導數)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-21 06:14 , Processed in 0.404226 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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