明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: 小妹丁

想要一个这样子的程序

  [复制链接]
发表于 2004-7-24 11:59 | 显示全部楼层
meflying发表于2004-7-24 10:13:00这个计算肯定是错误的...
老大,我还是看不出错在那里
发表于 2004-7-24 14:25 | 显示全部楼层
f5612140发表于2004-7-24 11:59:00老大,我还是看不出错在那里

看图,你说的单元弧长应该是红色部分吧,可需要的是通过这个圆弧,半径为D的部分的长度,因为D未知,这个弧长就是未知数,无法进行计算 你说的间隙是指A吧,可实际应该是兰色圆圈标识的直径为D的部分圆弧,这更是一个未知数。。。 如果你按A和红色部分来计算,结果在楼主给的图得出的结果取整可能是正确的,但如果条件改变,结果就无法预料了,至少从数学角度,它是错误的

本帖子中包含更多资源

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

x
发表于 2004-7-26 08:57 | 显示全部楼层
1.只能看贴图,细看才知D的位置,谢谢指正 2.将公式D->D' pi*D'/(单元外弧长+S)=B(取整数) 3.以单元看,已知单元,D'=D+36 单元"外弧长"也为已知 1):已知阵列B,输入S -> D'->D
2):输入D,S=3求B1,S=5求B2,由B1,B2取B(可能不只一个值,自取一个),
输入S->D'->D
 楼主| 发表于 2004-7-29 15:22 | 显示全部楼层
defun c:shg ()
(setq os (getvar "osmode"))
(setq cm (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(shg1)
(setvar "cmdecho" cm)
(setvar "osmode" os)
)
(defun shg1 ()
(setq end (car (entsel "\n最大圆弧:")))
(setq enddata (entget end))
(command "lengthen" end "")
(setq hu (getvar "perimeter"))
(setq rd (cdr (assoc 40 enddata)))
(setq pdcen (cdr (assoc 10 enddata)))
(setq pdtemp (polar pdcen (* 0.5 pi) rd))
(setq enx (car (entsel "\n最小圆弧:")))
(setq enxdata (entget enx))
(setq rx (cdr (assoc 40 enxdata)))
(setq pxcen (cdr (assoc 10 enxdata)))
(setq px1 (polar pxcen (cdr (assoc 50 enxdata)) rx))
(shg2)
)
(defun shg2 ()
(setq bb (getint "\n阵列数:"))
(setq rr (fix (/ (* (+ hu 3.5) bb) (+ pi pi))))
(setq pxx (polar pdtemp (* 1.5 pi) rr))
(setq dd (fix (distance pxx px1)))
)
现在程序计算出的直径比较理想了,但是不知道如何操作截面图形,一次将图画出,希望指点。

本帖子中包含更多资源

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

x
发表于 2004-7-29 15:41 | 显示全部楼层
可考虑该单元做成block
 楼主| 发表于 2004-8-2 16:41 | 显示全部楼层
(defun c:shg ()
(setq os (getvar "osmode"))
(setq cm (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(shg1)
(setvar "cmdecho" cm)
(setvar "osmode" os)
)
(defun shg1 ()
(setq end (car (entsel "\n最大圆弧:")))
(setq enddata (entget end))
(command "lengthen" end "")
(setq hu (getvar "perimeter"))
(setq rd (cdr (assoc 40 enddata)))
(setq pdcen (cdr (assoc 10 enddata)))
(setq pdtemp (polar pdcen (* 0.5 pi) rd))
(setq enx (car (entsel "\n最小圆弧:")))
(setq enxdata (entget enx))
(setq rx (cdr (assoc 40 enxdata)))
(setq pxcen (cdr (assoc 10 enxdata)))
(setq pxtemp (polar pxcen (* 0.5 pi) rx))
(setq px1 (polar pxcen (cdr (assoc 50 enxdata)) rx))
(setq px2 (polar pxcen (cdr (assoc 51 enxdata)) rx))
(shg2)
)
(defun shg2 ()
(setq bb (getint "\n阵列数:"))
(setq rr (fix (/ (* (+ hu 3.5) bb) (+ pi pi))))
(setq pxx (polar pdtemp (* 1.5 pi) rr))
(setq dd (fix (distance pxx px1)))
(command "arc" px1 "e" px2 "r" dd "")
(setq hux (entlast))
(setq px (cdr (assoc 10 (entget hux))))
(command "circle" px dd "")
(command "erase" hux "")
(setq bbk (ssget))
(command "array" bbk px "" "p" px bb "" "")

) 这样子,可以操作图形阵列。 (setq bbk (ssget))
如果能在BBK中自动找出最大圆弧.最小圆弧就好了,只是我不知怎么做: 在一个选集中,含有一组圆弧,找出最大半径和最小半径的圆弧。
发表于 2004-8-2 17:58 | 显示全部楼层
把这些对象做成列表,然后使用vl-sort排一下序就可以了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-6 02:29 , Processed in 0.175601 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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