乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 146|回复: 9

请教各位大侠,曲线测量问题

[复制链接]

19

主题

79

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2003-10-23 17:15:00 | 显示全部楼层 |阅读模式
看罢曲线测量函数,有一个问题一直没搞清楚,特请教如下:
做一函数,输入点pt1及曲线,返回曲线上的点pt2, pt1与pt2的连线应与曲线在pt2点处的切线垂直。
最好是加载函数后,在屏幕上选定曲线,然后移动光标,即动态显示光标所在位置到pt2点的连线,随着光标移动,pt2点及连线随之移动。
[em00][em00][em00][em00][em00]
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2003-10-23 17:39:00 | 显示全部楼层
(defun c:test( / ent entl pt pt_close)
  (setq ent (car (entsel)))
  (setq ent (vlax-ename->vla-object ent))
  (command "_.line" '(0 0) '(1 0) "")
  (setq entl (entget (entlast)))
  (while (= (car (setq pt (grread 2 4))) 5)
    (setq pt (cadr pt))
    (setq pt_close (vlax-curve-getClosestPointTo ent pt))
    (setq entl (subst (cons 10 pt_close) (assoc 10 entl) entl))
    (setq entl (subst (cons 11 pt) (assoc 11 entl) entl))
    (entmod entl)
  )
  (princ)
)
回复

使用道具 举报

29

主题

1152

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1268
发表于 2003-10-24 08:35:00 | 显示全部楼层
這個好!以後很多地方會用得著,當然不會是這樣,可能改為虛線移動用於指定距離、指定點、指定方向。
回复

使用道具 举报

36

主题

201

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
345
发表于 2003-10-24 08:57:00 | 显示全部楼层
飞哥,你好历害!
小弟我真的佩服!
我对grread函数不太懂,我先去看看书,不懂再来向你请教,嘿嘿。:)
回复

使用道具 举报

19

主题

79

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2003-10-24 16:39:00 | 显示全部楼层
飞哥当然厉害!
我的问题有一多半都是飞哥帮助解答的!
不过您的程序好像不支持延长线,能在改进一下就更好了!
谢谢!
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2003-10-24 16:59:00 | 显示全部楼层
这样即可,不过不支持SPLINE,因为SPLINE的延长线本身就不好确定。
而且程序也不会将曲线(好象只有圆弧)延长
[CODE](defun c:test( / ent entl pt pt_close)
  (setq ent (car (entsel)))
  (setq ent (vlax-ename->vla-object ent))
  (command "_.line" '(0 0) '(1 0) "")
  (setq entl (entget (entlast)))
  (while (= (car (setq pt (grread 2 4))) 5)
    (setq pt (cadr pt))
    (setq pt_close (vlax-curve-getClosestPointTo ent pt t))
    (setq entl (subst (cons 10 pt_close) (assoc 10 entl) entl))
    (setq entl (subst (cons 11 pt) (assoc 11 entl) entl))
    (entmod entl)
  )
  (princ)
)CODE]
回复

使用道具 举报

19

主题

79

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2003-10-24 17:32:00 | 显示全部楼层
飞哥您好:
您的程序问题在于vlax-curve-getClosestPointTo返回的是距离曲线最近的点,而非垂直点,所以在pline角点处、曲线的起点及终点处返回不正确,在以上点位应返回曲线或多段线某一段延长线处的垂点。
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2003-10-24 20:11:00 | 显示全部楼层
希望多测试一下,不是所有曲线都返回不正确,PLINE端点无法延长,SPLINE端点也无法延长是这个程序的局限。至于其它曲线都是正确的。
你说PLINE的角点不正确,那我问你,角点处的切线你能作出来吗?无法作切线,谈何与切线垂直?
最后,你用几何知识分析一下,在光滑曲线外一点到这条曲线的最近点的切线是否和最近点同已知点连线垂直
回复

使用道具 举报

19

主题

79

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2003-10-27 08:32:00 | 显示全部楼层
惭愧!!!!!!!
回复

使用道具 举报

20

主题

872

帖子

10

银币

中流砥柱

Rank: 25

铜币
952
发表于 2004-6-26 01:40:00 | 显示全部楼层
1

qbka0fjmk1l.gif

qbka0fjmk1l.gif
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-8-18 10:29 , Processed in 0.487646 second(s), 75 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表