还需要老顾出手才行,已帮完成!
作者:cad 提交日期:2009-7-6| 分类: | 访问量:
还需要老顾出手才行,已帮完成!
图片:
文件图.dwg (31 K) 下载次数:2
*
我给你编制了一个程序如下:
(defun c:hwy (/ en p1 r an1 an2 en1 p2 r1 an3 an4 pp1 pp2 pp3 pp4 ppp1 ppp2 r2 aan1 aan)
(setvar "osmode" 0)
(prompt "选择弧的内弧:")
(setq en (entget (car (entsel))) p1 (cdr (assoc 10 en)) r (cdr (assoc 40 en)) an1 (cdr (assoc 50 en)) an2 (cdr (assoc 51 en))) ;求出圆心半径起始角和终止角
(prompt "选择弧的外弧:")
(setq en1 (entget (car (entsel))) p2 (cdr (assoc 10 en1)) r1 (cdr (assoc 40 en1)) an3 (cdr (assoc 50 en1)) an4 (cdr (assoc 51 en1))) ;求出圆心半径起始角和终止角
(setq pp1 (polar p1 an1 r) pp2 (polar p1 an2 r) pp3 (polar p2 an3 r1) pp4 (polar p2 an4 r1)) ;求出两条园弧的端点
(setq an5 (angle p1 p2) p3 (polar p1 an5 (/ (distance p1 p2) 2.0))) ;求出弧中心园的圆心
(setq ppp1 (polar pp1 (angle pp1 pp3) (/ (distance pp1 pp3) 2.0)) ppp2 (polar pp2 (angle pp2 pp4) (/ (distance pp2 pp4) 2.0))) ;求出两圆弧端点的中点
(setq an3 (angle p3 ppp1) an4 (angle p3 ppp2)) ;从算出起始角和终止角
(setq r2 (distance p3 ppp1) aan1 (/ (abs (- an4 an3)) 8.0) aan an3) ;r2为中心半径aan1 为每步的角我按8步算你可改变
(setq p5 (polar p3 an3 r2))
(command "circle" p5 "0.5") ;半径我给的固定数0.5你可改变用变量来替换就行了
(repeat 8
(setq aan (+ aan aan1) p4 (polar p3 aan r2) )
(command "circle" p4 "0.5")
)
)
;用你提供的图是对的
[ 此贴被老顾在2007-11-21 17:44重新编辑 ]
*
按步法算圆心到圆心距离太大了,可否控制3MM以上5MM以下,如果有一个两个端点距离是5。5左右的,要保证端点有圆,距离就不可能大于3可以符合要求,新手有时很多就是想得不全,还再嘛烦你帮改一改,
[ 此贴被xd12345在2007-11-21 20:17重新编辑 ]
*
图片:
程序应无问题,把你的图放大了4倍,无问题
(defun c:hwy (/ en p1 r an1 an2 en1 p2 r1 an3 an4 pp1 pp2 pp3 pp4 ppp1 ppp2 r2 aan1 aan)
(setvar "osmode" 0)
(prompt "选择弧的内弧:")
(setq en (entget (car (entsel))) p1 (cdr (assoc 10 en)) r (cdr (assoc 40 en)) an1 (cdr (assoc 50 en)) an2 (cdr (assoc 51 en))) ;求出圆心半径起始角和终止角
(prompt "选择弧的外弧:")
(setq en1 (entget (car (entsel))) p2 (cdr (assoc 10 en1)) r1 (cdr (assoc 40 en1)) an3 (cdr (assoc 50 en1)) an4 (cdr (assoc 51 en1))) ;求出圆心半径起始角和终止角
(setq pp1 (polar p1 an1 r) pp2 (polar p1 an2 r) pp3 (polar p2 an3 r1) pp4 (polar p2 an4 r1)) ;求出两条园弧的端点
(setq an5 (angle p1 p2) p3 (polar p1 an5 (/ (distance p1 p2) 2.0))) ;求出弧中心园的圆心
(setq ppp1 (polar pp1 (angle pp1 pp3) (/ (distance pp1 pp3) 2.0)) ppp2 (polar pp2 (angle pp2 pp4) (/ (distance pp2 pp4) 2.0))) ;求出两圆弧端点的中点
(setq an3 (angle p3 ppp1) an4 (angle p3 ppp2)) ;从算出起始角和终止角
(setq r2 (distance p3 ppp1) aan1 (/ (abs (- an4 an3)) 8.0) aan an3) ;r2为中心半径aan1 为每步的角我按8步算你可改变
(setq p5 (polar p3 an3 r2) a (* (distance pp1 pp3) 0.8))
(command "circle" p5 "d" a) ;半径我给的固定数0.5你可改变用变量来替换就行了
(command "line" pp1 pp3 """line" pp2 pp4 "")
(repeat 8
(setq aan (+ aan aan1) p4 (polar p3 aan r2) )
(command "circle" p4 "d" a)
)
)
这个程序中间的孔径取两端点距离的0.8倍,两端点给画线了。
*
乖乖,相当的复杂,搞的我都不敢学了。
*
图片:
HWY.dwg (37 K) 下载次数:2
*
图片:
我在上面的程序这些多是可以改变的,现我按你的要求把程序改好了见下:
(defun c:hwy (/ en p1 r an1 an2 en1 p2 r1 an3 an4 pp1 pp2 pp3 pp4 ppp1 ppp2 r2 aan1 aan a b b1 n)
(setvar "osmode" 0)
(prompt "选择弧的内弧:")
(setq en (entget (car (entsel))) p1 (cdr (assoc 10 en)) r (cdr (assoc 40 en)) an1 (cdr (assoc 50 en)) an2 (cdr (assoc 51 en))) ;求出圆心半径起始角和终止角
(prompt "选择弧的外弧:")
(setq en1 (entget (car (entsel))) p2 (cdr (assoc 10 en1)) r1 (cdr (assoc 40 en1)) an3 (cdr (assoc 50 en1)) an4 (cdr (assoc 51 en1))) ;求出圆心半径起始角和终止角
(setq pp1 (polar p1 an1 r) pp2 (polar p1 an2 r) pp3 (polar p2 an3 r1) pp4 (polar p2 an4 r1)) ;求出两条园弧的端点
(setq an5 (angle p1 p2) p3 (polar p1 an5 (/ (distance p1 p2) 2.0))) ;求出弧中心园的圆心
(setq ppp1 (polar pp1 (angle pp1 pp3) (/ (distance pp1 pp3) 2.0)) ppp2 (polar pp2 (angle pp2 pp4) (/ (distance pp2 pp4) 2.0))) ;求出两圆弧端点的中点
(setq an3 (angle p3 ppp1) an4 (angle p3 ppp2)) ;从算出起始角和终止角
(setq r2 (distance p3 ppp1) ) ;r2为中心半径
(setq p5 (polar p3 an3 r2) a (getreal "孔径: ") b (getint "孔与孔的大约距离: ")) ;输入孔径,孔与孔的距离
(command "line" pp1 pp3 """line" pp2 pp4 "") ;画两端的线
(setq b1 (abs (- an4 an3)) b2 (* b1 r2) n (fix (/ b2 b)) aan1 (/ (abs (- an4 an3)) n) aan an3);计算出它的步数n aan1 为每步的角,
(command "circle" p5 "d" a) ;半径我给的固定数0.5你可改变用变量来替换就行了
(repeat n
(setq aan (+ aan aan1) p4 (polar p3 aan r2) )
(command "circle" p4 "d" a)
)
)
*
很多都是半懂半不懂,不是专项的,也没有实际能力,不好意思也得请老大出手,
*本文摘自:http://www.jxcad.com.cn/read.php?tid=469280