乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 75|回复: 6

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

[复制链接]

8

主题

43

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 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)
回复

使用道具 举报

63

主题

1203

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1455
发表于 2004-10-7 09:16:00 | 显示全部楼层
程序中的c:dd涵数里的 (setq pt2 (polar pt1 0 (* scal 20))) 中 scal         的变量值是怎么来的?
回复

使用道具 举报

8

主题

43

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2004-10-7 09:24:00 | 显示全部楼层
应该加上,
(setq scal 1)
请您帮着改好
回复

使用道具 举报

63

主题

1203

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1455
发表于 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)
)
回复

使用道具 举报

8

主题

43

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2004-10-7 09:55:00 | 显示全部楼层
真是高手,很短的时间就已经改好了,非常感谢!!!!!!!
这个程序能不能加上一个DCL对话框(对话框有选择DAT某一行的数据、有确定、有取消按扭)
这样就可以实现选择DAT某一行的数据时,仅绘制这一行的内容
        
请高手继续帮忙?????
回复

使用道具 举报

63

主题

1203

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1455
发表于 2004-10-7 09:58:00 | 显示全部楼层
又没有你的DCL代码. 不知你是怎么搞的. 所以我把那个以为是多余的涵数删了, 真不好意思
回复

使用道具 举报

8

主题

43

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 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;
                         }
                }
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-8-20 11:47 , Processed in 1.110880 second(s), 67 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表