明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1521|回复: 6

[求助]我的这个LISP小程序,请帮忙改一下???

[复制链接]
发表于 2004-10-7 08:58:00 | 显示全部楼层 |阅读模式
请帮忙帮我改一下我的这个程序好不好: 主要意图:是从下面的ddd.dat文件中读取数据,并写到4个点上去,读取的时候可以根据 ddd.dat文件不同的行来读取。 请您来帮我一下忙,不胜感激!!! LISP文件: (defun read_file()
(findfile "ddd.dat")
(setq fname "ddd.dat")
(setq rdata (open fname "r"))
(setq data1 (read-line rdata))
(setq data1-1 (read data1)) (setq canshu data1-1)
(setq d1 (nth 0 canshu))
(setq d2 (nth 1 canshu))
(setq d3 (nth 2 canshu))
(setq d4 (nth 3 canshu))
(close rdata)
) (defun fanhui()
(setq shuju (get_tile "canshu"))
(setq shuju (atof shuju))
)
(defun C:dd()
(setq pt1 (getpoint "\n请输入绘制点:"))
(setq pt2 (polar pt1 0 (* scal 20)))
(setq pt3 (polar pt1 0 (* scal 40)))
(setq pt4 (polar pt1 0 (* scal 60)))
(read_file)
(setq shuju (get_tile "canshu"))
(fanhui)
(command "text" pt1 "" "" d1)
(command "text" pt2 "" "" d2)
(command "text" pt3 "" "" d3)
(command "text" pt4 "" "" d4) ) DAT文件:文件名为ddd.dat (20 15 4 5)
(25 20 5 6)
(30 25 5 6)
(40 32 6 5)
(50 42 8 10)
发表于 2004-10-7 09:16:00 | 显示全部楼层
程序中的c:dd涵数里的 (setq pt2 (polar pt1 0 (* scal 20))) 中 scal         的变量值是怎么来的?
 楼主| 发表于 2004-10-7 09:24:00 | 显示全部楼层
应该加上,


(setq scal 1)


请您帮着改好
发表于 2004-10-7 09:32:00 | 显示全部楼层
(defun read_file (/ fname rdata data1 data1-1 canshu
d1 d2 d3 d4 )
(setq fname "d:/ddd.dat")
(if (findfile fname)
(progn
(setq rdata (open fname "r"))
(while (setq data1 (read-line rdata))
(setq data1-1 (read data1))
(setq canshu data1-1)
(setq d1 (nth 0 canshu))
(setq d2 (nth 1 canshu))
(setq d3 (nth 2 canshu))
(setq d4 (nth 3 canshu))
(vl-cmdf "text" pt1 "" "" d1)
(vl-cmdf "text" pt2 "" "" d2)
(vl-cmdf "text" pt3 "" "" d3)
(vl-cmdf "text" pt4 "" "" d4)
(setq pt1 (list (car pt1) (- (cadr pt1) 6))
pt2 (list (car pt2) (- (cadr pt2) 6))
pt3 (list (car pt3) (- (cadr pt3) 6))
pt4 (list (car pt4) (- (cadr pt4) 6))
)
)
(close rdata)
)
)
) (defun C:dd (/ pt1 os pt2 pt3 pt4)
(setq pt1 (getpoint "\n请输入绘制点:"))
(setvar "cmdecho" 0)
(setq os (getvar "osmode"))
(setvar "osmode" 0)
(setq pt2 (polar pt1 0 20))
(setq pt3 (polar pt1 0 40))
(setq pt4 (polar pt1 0 60))
(read_file)
(setvar "cmdecho" 1)
(setvar "osmode" os)
(princ"\n程序完成数据输出.") (princ)
)
 楼主| 发表于 2004-10-7 09:55:00 | 显示全部楼层
真是高手,很短的时间就已经改好了,非常感谢!!!!!!!


这个程序能不能加上一个DCL对话框(对话框有选择DAT某一行的数据、有确定、有取消按扭)


这样就可以实现选择DAT某一行的数据时,仅绘制这一行的内容


       


请高手继续帮忙?????
发表于 2004-10-7 09:58:00 | 显示全部楼层
又没有你的DCL代码. 不知你是怎么搞的. 所以我把那个以为是多余的涵数删了, 真不好意思
 楼主| 发表于 2004-10-7 10:09:00 | 显示全部楼层
我想加上一个DCL对话框,以下,可总不能LIST下写上、 list="(d1 d2 d3 d4)\n"
"(20 15 4 5)\n"
"(25 20 5 6)\n"
"(30 25 5 6)\n"
"(40 32 6 5)\n"
"(50 42 8 10)\n";
总是总些太复杂了 以下是DCL文件,文件名是ccc.dcl(请修改) bbb:dialog{
label="选择输入";
width=25;
fixed_height=20;
:column{
spacer_1;
:list_box{
label="数据:";
key="canshu";
weight=50;
height=5;
list="(d1 d2 d3 d4)\n"
"(20 15 4 5)\n"
"(25 20 5 6)\n"
"(30 25 5 6)\n"
"(40 32 6 5)\n"
"(50 42 8 10)\n";
multiple_select=flase;
}
ok_only;
}
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-18 13:32 , Processed in 0.192329 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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