明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2400|回复: 17

[求助]程序如何改进

  [复制链接]
发表于 2004-3-15 08:31:00 | 显示全部楼层 |阅读模式
各位大侠,初学上手,请教两个问题: ①、以下绘制阀门程序,如何从vv.dat文件中筛选取出正确的阀门数据(假设已知阀门型号、直径,怎样找到对应的数据?); ②、产生的阀门如何形成块,并予以属性(如阀门型号、直径); ; ;
;阀门高度=VH 阀门直径=VDN 阀门长度=VL 手轮直径=VO ;
;阀门型号=VNAME ;
; ;
(defun c:test (/ )
(setq filename "D:\\lsptry\\vv.txt");数据文件名称
(setq f (open filename "r"))
(setq ff (read (strcat "(" (read-line f) ")")))
(close f)

(setq vdn (nth 1 ff)
vl (nth 2 ff)
vh (nth 3 ff)
vo (nth 4 ff)
)

(setq pt (getpoint "请点击或键入点坐标 ?"))
(setq ptx (car pt)
pty (cadr pt))
(setq ll (/ vl 2)
dd (/ vdn 2)
oo (/ vo 2))
(setq a (/ vl 20))
(setq pt1 (list (- (+ ptx ll) a) (+ pty dd))
pt2 (list (- (+ ptx ll) a) (- pty dd))
pt3 (list (+ (- ptx ll) a) (- pty dd))
pt4 (list (+ (- ptx ll) a) (+ pty dd))
pt5 (list (- ptx oo) (+ pty (* vh 0.9)))
pt6 (list ptx (+ pty (* vh 0.9)))
pt7 (list (+ ptx oo) (+ pty (* vh 0.9)))
pt8 (list ptx (+ pty vh))
)
(setq
pt9 (list (+ (car pt1) a) (+ pty dd))
pt10 (list (+ (car pt2) a) (- pty dd))
pt11 (list (+ (car pt9) a) (+ pty dd))
pt12 (list (+ (car pt10) a) (- pty dd))
pt13 (list (- (car pt4) a) (+ pty dd))
pt14 (list (- (car pt3) a) (- pty dd))
pt15 (list (- (car pt13) a) (+ pty dd))
pt16 (list (- (car pt14) a) (- pty dd)) )

(command "_.line" pt1 pt2 pt4 pt3 "c"
"_.line" pt pt8 ""
"_.line" pt5 pt7 ""
"_.line" pt1 pt6 pt4 ""
"_.line" pt9 pt10 ""
"_.line" pt11 pt12 ""
"_.line" pt13 pt14 ""
"_.line" pt15 pt16 ""
)
(princ)
)
------------ 好人一生平安
发表于 2004-3-15 12:08:00 | 显示全部楼层
能先说说你的程序有什么不足或问题吗
 楼主| 发表于 2004-3-15 16:34:00 | 显示全部楼层
对不起,MEFLYING老师让你见笑了,初学肯定有很多问题,我想至少有这样几点: ①、程序不规范; ②、变量太多; ③、未处理局部变量。 目前程序能够通过,我的想法一步一步的扩展,最后再加上对话框,将其完整起来,并推广到其他类似的东西。希望MEFLYING多多指教,以便菜鸟也能飞翔。 同时,上传VV.DAT如下: 型号 公称直径 长度 高度 手轮直径 法兰 压力 Z41H-16c 50 250 402 200 光滑面 1.6
Z41H-16c 100 300 588 240 光滑面 1.6
Z41H-16c 200 400 885 400 光滑面 1.6
Z41H-16c 300 500 1232 560 光滑面 1.6
Z41H-25 50 250 415 350 光滑面 2.5
Z41H-25 100 300 620 320 光滑面 2.5
Z41H-25 200 400 1041 400 光滑面 2.5
Z41H-25 300 500 1474 560 光滑面 2.5
Z41H-40 50 250 415 350 凸面 4.0
Z41H-40 100 350 684 320 凸面 4.0
Z41H-40 200 550 1110 450 凸面 4.0
Z41H-40 300 750 1348 560 凸面 4.0
Z41H-64 50 250 415 250 梯形槽面 6.4
Z41H-64 100 350 633 360 梯形槽面 6.4
Z41H-64 200 550 1100 450 梯形槽面 6.4
Z41H-100 50 300 467 400 梯形槽面 10
Z41H-100 100 350 665 400 梯形槽面 10
Z41H-100 200 550 972 560 梯形槽面 10
Z41H-160 50 300 467 400 梯形槽面 16
Z41H-160 100 450 680 400 梯形槽面 16
Z41H-160 200 750 1160 720 梯形槽面 16
发表于 2004-3-15 17:18:00 | 显示全部楼层
如何不规范了?


要设置成局部变量,只要把所有的变量都写入(defun c:test( / ...)中...处就可以了
发表于 2004-3-15 19:32:00 | 显示全部楼层
(read-line [file-desc])

此函数将由 file-desc 中已打开的文件或键盘中读入一行字符。

(strcat string1 [string2]...)

此函数将用来连接string1string2等字符串, 并返回最后得到的字符串。

read string)

此函数将返回 string 的第一个表或原子。但 string 不可以包含空格, 除非是在表或字符串中 。read 会返回它的参数转换的相对应数据类型此函数将用来连接string1string2等字符串, 并返回最后得到的字符串。

发表于 2004-3-15 19:40:00 | 显示全部楼层
楼上的,不明白你总是放一些帮助内容上来做什么,以上这些内容似乎和楼主的问题没什么关系。。。
 楼主| 发表于 2004-3-16 08:35:00 | 显示全部楼层
楼上meflying老师,关于局部变量的教导,我已明白,深表感谢!我问的两个问题,能不能给个例子,以便临摹。


最为困惑的是从vv.dat文件中,如何筛选出第一项(阀门型号)、第二项(阀门直径)符合要求的一组数据。


解决完这个问题,可再请教你如何形成块,并赋予属性,以便计料。
发表于 2004-3-16 08:37:00 | 显示全部楼层
读VV.DAT你不是已经做到了吗? (setq ff (read (strcat "(" (read-line f) ")")))
(close f)

(setq vdn (nth 1 ff)
vl (nth 2 ff)
vh (nth 3 ff)
vo (nth 4 ff)
)
 楼主| 发表于 2004-3-16 16:34:00 | 显示全部楼层
但我不会筛选合适的阀门型号,不知如何补充,看过您教别人的程序,只是画线,不存在选择,尝试过总不成功,为此非常苦恼。请meflying勿厌其烦,继续赐教,非常感谢。
发表于 2004-3-16 20:12:00 | 显示全部楼层
筛选要条件才可以的,你没有给出条件,我也不知道什么阀门是合适的。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-27 20:27 , Processed in 0.191211 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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