找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 945|回复: 11

[编程申请]:过一点与一条线相切的圆或弧(指定半径)

[复制链接]
发表于 2006-4-30 18:08:27 | 显示全部楼层 |阅读模式

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

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

×
请高手们写一段lisp,画过一点与一条线相切的圆或弧(指定半径),画图时经常会碰到,要费好几步功夫,先谢了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 6个

财富等级: 恭喜发财

发表于 2006-4-30 19:28:47 | 显示全部楼层
将就一下用这个吧:
(setvar "cmdecho" 0)
(defun c:cc (/ r p dss)
  (command "offset"
           (setq r (getdist "\n请输入R=:"))
           (entsel "\n请选要相切的对像(不可选BLOCK):")
           (setq p (getpoint "\n请选点P="))
           ""
  )
  (setq dss (ssadd))
  (setq dss (ssadd (entlast) dss))
  (command "circle" p r)
  (setq dss (ssadd (entlast) dss))
  (princ "\n请选取合适的交点为圆心")
  (command "circle" "int" pause r)
  (command "erase" dss "")
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-30 22:11:51 | 显示全部楼层
谢谢!不过请问怎样将“请选取合适的交点为圆心”改为“指定圆心所在侧”的形式自动找到圆心,因为选圆心时容易点错。
另外我想将偏移直线改为构造线,因为还有那种延伸后才相交的情况,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6个

财富等级: 恭喜发财

发表于 2006-4-30 23:02:13 | 显示全部楼层
楼主你可以选取延伸交点的啊!
好吧改成这样好了:
(setvar "cmdecho" 0)
(defun c:cc (/ r p dss la)
  (command "offset"
           (setq r (getdist "\n请输入R=:"))
           (entsel "\n请选要相切的对像(不可选BLOCK):")
           (setq p (getpoint "\n请选点P="))
           ""
  )
  (setq dss (ssadd))
  (setq dss (ssadd (setq la (entlast)) dss))
  (if (= (cdr (assoc 0 (entget la))) "LINE")
    (command "xline"
             "non"
             (trans (cdr (assoc 10 (entget la))) 0 1)
             "non"
             (trans (cdr (assoc 11 (entget la))) 0 1)
             ""
             "erase"
             (ssadd la)
             ""
    )
  )
  (setq dss (ssadd (entlast) dss))
  (command "circle" p r)
  (setq dss (ssadd (entlast) dss))
  (princ "\n请选取合适的交点为圆心")
  (command "circle" "int" pause r)
  (command "erase" dss "")
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-30 23:19:18 | 显示全部楼层
斜线就麻烦了,我的意思是不好找延伸交点,新程序解决了,
还是希望能自动识别交点就更好了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6个

财富等级: 恭喜发财

发表于 2006-5-1 06:16:06 | 显示全部楼层
再来一个:功能如何啊???
看看这个是不是你想要的结果啦???
(setvar "cmdecho" 0)
(defun c:cc (/ r p dss la xline 50p 51p p0 p1 pc)
  (setvar "EDGEMODE" 1)
  (command            "offset"
           (setq r (getdist "\n请输入R=:"))
           (entsel
             "\n请选要相切的对像:line;arc;ellipse;等(不可选BLOCK):"
           )
           (setq p (getpoint "\n请选点P="))
           ""
  )
  (setq dss (ssadd))
  (setq dss (ssadd (entlast) dss))
  (setq xline (entlast))
  (command "circle" p r)
  (setq dss (ssadd (entlast) dss))
  (command "trim" xline "" (entlast) "")
  (setq 50p (cdr (assoc 50 (entget (entlast)))))
  (setq 51p (cdr (assoc 51 (entget (entlast)))))
  (setq p0 (list (* r (cos 50p)) (* r (sin 50p)) 0))
  (setq p1 (list (* r (cos 51p)) (* r (sin 51p)) 0))
  (setq p0 (mapcar '+ p p0))
  (setq p1 (mapcar '+ p p1))
  (setq pc (getpoint "\n指定圆心大概位置:"))
  (command "erase" dss "")
  (command "circle"
           "non"
           (if (< (DISTANCE pc p0) (DISTANCE pc p1))
             p0
             p1
           )
           r
  )
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-5-1 09:38:12 | 显示全部楼层
参照fsxm的程序:
  1. [FONT=courier new](load "xyp_lib.vlx")  ;版本 V.20060430
  2. ;|下载和加载通用函数(可在签名栏直接下载后放到搜索路径下)
  3. 利用以下任何一种方式(首选第一种)即可加载和运行通用函数内的所有子程序:
  4. ★1·在acad.lsp中增加(load"xyp_lib.vlx")
  5. ■2·在每个程序内增加(load"xyp_lib.vlx")
  6. ■3·在command下,输入(load"xyp_lib.vlx")
  7. ■4·在菜单.mnl中增加(load"xyp_lib.vlx")
  8. ■5·将xyp_lib.vlx文件直接拽到cad屏幕
  9. [COLOR=red] ★通用函数下载地址:[/COLOR]
  10. [url]http://www.xdcad.net/forum/attachment.php?s=&postid=1606661[/url]
  11. [url]http://free.ys168.com/?xyp1964[/url]
  12. |;

  13. (defun c:test (/ s1 s2 ptn pt)
  14.   (cmdla0)
  15.   (if(null r)(setq r 1000.0))
  16.   (command "offset"
  17.            (setq r (UDIST 1 "" "\n请输入圆半径" r nil))
  18.            (entsel "\n请选要相切的直线: ")
  19.            (setq p (getpoint "\n请选要经过的点: "))
  20.            ""
  21.   )
  22.   (setq s1 (entlast))
  23.   (setvar"osmode"0)
  24.   (command "circle" p r)
  25.   (setq s2 (entlast))
  26.   (xyp-mklaco "TEST"1)
  27.   (if (setq ptn (xyp-get-Inters s2 s1 2))
  28.     (foreach pt        ptn
  29.       (command "circle" pt r)
  30.     )
  31.     (princ"\n半径太小! ")
  32.   )
  33.   (command "erase" s1 s2 "")
  34.   (cmdla1)
  35. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-7 01:03:12 | 显示全部楼层
“五一”出游没有上网,非常感谢fsxm兄,基本是想要的,我把“指定圆心大概位置”一句移到前面去了,但那些辅助作图过程仍有些“痕迹”,有办法彻底“隐藏”掉吗?再次感谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6个

财富等级: 恭喜发财

发表于 2006-5-7 17:23:58 | 显示全部楼层
可以啊!!不过如果用计算的话就要对像ellipse,spline等就不行了~!
还要区分计算line,circle
就这样相切对像才能全面一点啦!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-5-7 19:17:45 | 显示全部楼层
玩玩
;| tpc = 过点作与曲线相切定半径圆---ok!--- by 雨箭风刀.2006.5
支持任意曲线
支持曲线延伸相切
.

|;

命令:tpc
运行过程:
命令: tpc
tpc = 过点作与曲线相切定半径圆---ok!--- by 雨箭风刀.2006.5
相切曲线<退出>:
通过点<退出>:
圆半径<退出>:
选择要保留的一个圆/<全保留>:

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-29 08:23 , Processed in 0.353636 second(s), 55 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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