找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1385|回复: 12

[求助] [求助]:怎样通过任意线形图元上的任意一点做这个图元的垂线!!

[复制链接]
发表于 2005-10-19 09:54:04 | 显示全部楼层 |阅读模式

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

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

×
怎样通过任意线形图元上的任意一点做这个图元的垂线!!
线行比如说是直线,圆曲线,样条曲线等
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 23个

财富等级: 恭喜发财

发表于 2005-10-19 12:52:37 | 显示全部楼层
line (Enter) per (Enter) (Pick a Curve object) ...
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-19 13:26:44 | 显示全部楼层
会求实体上的任意点的切角(+90度就是法线角)就没问题。
怎么求论坛里已经有很多帖子。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-19 13:47:31 | 显示全部楼层
  1. [FONT=courier new](load "xyp_lib")
  2. ;|加载通用函数(可在签名栏直接下载)
  3. 如果已经下载xyp_lib并放到搜索路径下可以不再下载!
  4. 利用以下任何一种方式(首选第一种)即可加载和运行通用函数内的所有子程序:
  5. ★1·在acad.lsp中增加(load"xyp_lib")
  6. ■2·在每个程序内增加(load"xyp_lib")
  7. ■3·在command下,输入(load"xyp_lib")
  8. ■4·在菜单.mnl中增加(load"xyp_lib")
  9. ■5·将xyp_lib.vlx文件直接拽到cad屏幕
  10. ★通用函数下载地址:
  11. [url]http://www.xdcad.net/forum/attachme...&postid=1606661[/url]
  12. [url]http://www.mjtd.com/bbs/dispbbs.asp...ID=37554&page=1[/url]|;

  13. ;;;线上任意一点的垂线
  14. (defun c:test ()
  15.   (CMDLA0)
  16.   (if(null no1)(setq no1 1000))
  17.   (setq no1 (UREAL 7 "" "\n垂线线长" no1))
  18.   (while (setq s1 (entsel "\n选点 : "))
  19.     (setq pt (osnap (cadr s1) "near")
  20.           e  (car s1)
  21.     )
  22.     (FAXIAN e pt no1)
  23.   )
  24.   (CMDLA1)
  25. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2005-10-19 16:15:55 | 显示全部楼层
最初由 liangcheng_xia 发布
[B]2楼看明白我的意思!
4的程序不能运行啊! [/B]

什么问题?
是否下载和加载xyp_lib通用函数?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 23个

财富等级: 恭喜发财

发表于 2005-10-20 13:07:20 | 显示全部楼层
看不懂?   ;-P

AutoCAD 现在可以直接用命令来完成你的要求了
你用AutoCAD 2005/6就知道了

如果你是要通过特定一点,那还是要编程解决
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2005-10-25 10:29:13 | 显示全部楼层
这个程序对我很有用,但我想研究一下lisp源码,不知道xyp1964可否把FAXIAN子程序原码贴上来,以便我们这些新手学习提高
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-25 11:51:43 | 显示全部楼层
可以先研究一下一个很有用的VLISP函数vlax-curve-getfirstderiv
(SETQ DV (vlax-curve-getfirstderiv OBJ PT))
得到一个三维矢量表表示曲线在该点的一阶导数...
如果曲线是二维的那么(/ (CADR DV) (CAR DV))就是曲线上该的斜率
斜率有了点有了切线也就出来了,,切线出来了法线也就出来了(垂线..其实这样叫不是很术语)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2005-10-25 14:06:18 | 显示全部楼层
最初由 wangwangnn 发布
[B]这个程序对我很有用,但我想研究一下lisp源码,不知道xyp1964可否把FAXIAN子程序原码贴上来,以便我们这些新手学习提高 [/B]
  1. [FONT=courier new](defun faxian (ename PT dist / p1 v1)
  2.   (setq v1 (vlax-curve-getfirstderiv ename (vlax-curve-getparamatpoint ename PT))
  3. p1 (mapcar '+ PT v1)
  4.   )
  5.   (command "line" PT (polar PT (+ (angle PT p1) (* pi 0.5)) dist) "")
  6. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-25 15:42:52 | 显示全部楼层
谢谢了,但有个问题,我在网上学习的时候找到了一个动态滑快的程序,觉得挺好的,我想把他和作图元垂线的程序结合起来,这样选垂足点就会更直观,但我不知应该怎样修改,还请高手帮忙。

(defun C:TTc(/ enline old_cmdEcho old_osmode en PT ret Next_PT typ)
(vl-load-com)
(setq old_cmdEcho (getvar "CMDECHO")
old_osmode (getvar "OSMODE"))
(setq en (car (entsel "\nSELECT LINE: ")))
(setvar "CMDECHO" 0)
(setvar "OSMODE" 0)
(setq PT (cadr (grread 1 1)))
(while PT
(setq ret (grread 1 1))
(setq Next_PT (cadr ret)
typ (car ret))
(cond ((= typ 5)
(if (not (equal Next_PT PT 0.00000001))
(progn
(redraw)
(updline Next_PT en enline)
))
(setq PT Next_PT))
((= typ 3)
(if (not (equal Next_PT PT 0.00000001))

(updline Next_PT en enline)

)

(setq PT nil))
(T (setq PT Next_PT))))
(entdel enline)
(redraw)
(setvar "CMDECHO" old_cmdEcho)
(setvar "OSMODE" old_osmode)
(princ)
)
;;-------------------------------------------------
(defun updline (pt enc enl / pt1 el)
(setq pt1 (vlax-curve-getClosestPointTo enc pt))
(DrawMark pt1)
(if (not (boundp 'enl))
(if (vl-cmdf "_.line" pt pt1 "")
(setq enline (entlast)))
(if (not (equal pt1 pt 0.00000001))
(progn
(setq el (entget enl))
(setq el (subst (cons 10 pt) (assoc 10 el) el))
(setq el (subst (cons 11 pt1) (assoc 11 el) el))
(entmod el)
)
)
)
)

(defun DrawMark(p / marksize)
(setq marksize (/ (getvar "viewsize") 25))
(grdraw (polar p pi (* marksize 0.5))(polar p 0 (* marksize 0.5)) 141)
(grdraw (polar p (* pi 0.5) (* marksize 0.5))(polar p (* pi 1.5) (* marksize 0.5)) 141))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 18:26 , Processed in 0.302580 second(s), 57 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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