![]() |
【转帖】还需要老顾改下以前的关于通用方面,
还需要老顾改下以前的关于通用方面,
www.dimcax.com 还需要老顾改下以前的关于通用方面, 图片: 老顾,关于通用方面,能否帮我改以下可输入孔与孔距离,别的不变, 图片: 程序应无问题,把你的图放大了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倍,两端点给画线了。 gbg 乖乖,相当的复杂,搞的我都不敢学了。 图片: 多得你指点,但我每个方孔大小不一, 可得每次改步才能得到要圆心到圆心距离,3mm上5mm下 我在上面的程序这些多是可以改变的,现我按你的要求把程序改好了见下: (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) ) ) gbg 很多都是半懂半不懂,不是专项的,也没有实际能力,不好意思也得请老大出手, 还需要老顾改下以前的关于通用方面,楼上的第一个程序, lisp程序的可读性太差 我新发上来,关于通用方面,以下程序能否帮我改为可输入圆孔心与圆孔心距离,别的都不用改,由于以前没有想到太多别的,现在有的图没法用得上, |
| 所有的时间均为北京时间。 现在的时间是 10:00 PM. |