几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » CAD二次开发 » AutoCAD二次开发 » 数据库ObjectDBX
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


回复
 
主题工具 搜索本主题 显示模式
旧 2009-04-28, 05:05 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】还需要老顾改下以前的关于通用方面,

还需要老顾改下以前的关于通用方面,
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程序的可读性太差

我新发上来,关于通用方面,以下程序能否帮我改为可输入圆孔心与圆孔心距离,别的都不用改,由于以前没有想到太多别的,现在有的图没法用得上,
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
回复


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



所有的时间均为北京时间。 现在的时间是 07:19 AM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多