明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 857|回复: 5

要审稿,这是另一篇,特在此社区请教大侠们,万分感谢

[复制链接]
发表于 2008-1-14 08:39 | 显示全部楼层 |阅读模式

来稿:由于本人不明白语法等相关,不知道怎么处理和审稿,到此请教,请大家帮忙修改。(使用AutoLISP语言开发了一款物探取样图自动生成程序,该程序完全自主开发,能实现取样图自动生成、自动解释功能,大大提高了物探取样图绘制的效率,且避免了手工绘图所带来的误差。)

部分源程序代码

以下为该程序解释面积、厚度、品位的源程序代码:

(setq fi  (getfiled "请选择解释数据保存的路径"  "d:/" "txt" 1))

(setq f1 (open fi "a"))

(while (/=  (setq bl  (getreal "请输入纵轴比例,如果解释完毕,请按鼠标右键")) nil)

  (while (/= (setq pp (getpoint "请选取需要解释区域内任意一点,如果解释完毕,请按鼠标右键")) nil)   

    (command "_boundary"  pp )

    (command "")

    (setq e1 (entlast))

    (command "area" "o" e1)

    (setq earea   (getvar "area"))

    (setq earea (/ earea (float bl)))

    (command "dist"  (setq p1 (getpoint "请选取解释区域横轴左边的点"))

                      (setq p2 (getpoint "请选取解释区域横轴右边的点"))

         )

    (setq dist (getvar "distance"))

    (setq ppm  (/ earea (float dist)))

    (command "text" "tl" (list (car p1) -300) 45 0 (strcat "S=" (rtos earea 2 2) "ppm.mm"))

    (command "text" "tl" (list (car p1) -420) 45 0 (strcat "H=" (rtos dist 2 2) "mm"))

    (command "text" "tl" (list (car p1) -540) 45 0 (strcat "Q=" (rtos ppm 2 2) "ppm"))

    (setq ppp  (list (car p1) earea  dist ppm))

    (print ppp f1)

    (setq pp nil)

    )

    (setq bl nil)

 )

(close f1)

发表于 2008-1-14 08:52 | 显示全部楼层
你不懂为什么还要审别人?如果你是领导别管人家程序是如何编的,看结果就行了;如果你是专家谦虚些,让人家把编程思路讲一下就行了,为什么一定要看人家的源程序呢?如果在这儿侃两句你就能学会LISP,那你就太聪明了!!!!
 楼主| 发表于 2008-1-14 09:10 | 显示全部楼层
误会了,我不是想学LISP,我是想让大家帮忙看看,问题在哪
发表于 2008-1-14 16:20 | 显示全部楼层
有问题吗?什么问题?
发表于 2008-1-15 09:00 | 显示全部楼层

个人看法,说得有问题,请见谅

本帖最后由 作者 于 2008-1-15 9:03:09 编辑

(1)提示信息有一点点问题,提示没有换行,都在同一行,

(while (/=  (setq bl  (getreal "请输入纵轴比例,如果解释完毕,请按鼠标右键")) nil)
       
(while (/= (setq pp (getpoint "请选取需要解释区域内任意一点,如果解释完毕,请按鼠标右键")) nil)
  

 

上面的getreal和getpoint提示内容,哪怕在前面加个\n也可以呀..后面也加个:,提示信息看起来比较舒服,你说是不?

(2)  (command "dist"  (setq p1 (getpoint "请选取解释区域横轴左边的点"))

                   (setq p2 (getpoint "请选取解释区域横轴右边的点"))

  )

  要是p1/p2为nil,那你的程式就GAME OVER了,是不??这种情况,不是应该用while做循环处理吗?

                   (setq p2 (getpoint "请选取解释区域横轴右边的点"))

  )

  要是p1/p2为nil,那你的程式就GAME OVER了,是不??这种情况,不是应该用while做循环处理吗?

 

(3)   (command "_boundary"  pp )
     
(command "")
     上面能合成一段吗??

(4) (while (/=  (setq bl  (getreal "请输入纵轴比例,如果解释完毕,请按鼠标右键")) nil)

    (while (/= (setq pp (getpoint "请选取需要解释区域内任意一点,如果解释完毕,请按鼠标右键")) nil)   

                ......

         (setq pp nil)

     )

     (setq bl nil) 
 

 )
 

       你的这个双while,如果完成操作就退出(看到后面的setq pp nil)了,可是你的while里又有一个setq pp (getpoint),又要重新取值,有问题,,setq与while最好分开写.

(5)  (setq f1 (open fi "a"))

       ......<程式段>

(close f1)

(close f1)

(close f1)

 

       我也不知道该说些虾米,要是你的<程式段>非法中断了,你打开的fi文件,你认为还能处理吗?
 楼主| 发表于 2008-1-16 15:50 | 显示全部楼层
谢谢指导,怎么联系你?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-11 20:17 , Processed in 0.165691 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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