找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1364|回复: 4

[求助] 哪位大神帮忙看看程序哪里出错了,郁闷

[复制链接]
发表于 2015-5-7 18:39:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
本帖最后由 teysgp 于 2015-5-7 18:46 编辑

                                        ;用于标注纵断面控制点
(defun DR (num)
  (* pi (/ num 180.0))
)
(defun c:bz (/ fname bzcs jcd  STR LST li wz wzbz ckjd bzqd bzzd
             wzck wzwz)
  (vl-load-com)
                                        ;打开数据文件并获取路径
  (setq        lsppath
         (vl-registry-read
           "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ComDlg32\\OpenSaveMRU\\txt"
           (substr
             (vl-registry-read
               "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ComDlg32\\OpenSaveMRU\\txt"
               "MRUList"
             )
             1
             1
           )
         )
  )

                                       
  (setq fname (getfiled "选取控制点数据文件" lsppath "txt" 2))
  (if (not fname)
    (progn
      (alert "请输入有效文件名!")
      (quit)
    )
  )
                                        ;设置环境参数
  (setvar "cmdecho" 0)
  (setq bzcs (getvar "osmode"))
  (setvar "osmode" 33)
  (command "-layer" "m"        "桥梁起终点" "c" "blue"        "桥梁起终点" "")
                                        ;设置坐标系
  (setq        jcd (getpoint "\n 请选择K0与正线交叉点(右线):")
  )
  (command "_.UCS" "_n" jcd)
                                        ;进行标注
  (setq F1 (open fname "r"))
   (while
    (setq STR (read-line F1))
    (setq LST (read (strcat "(" STR ")")))
    (setq li   (car LST)
          wz   (cadr LST)
          wz   (vl-princ-to-string wz)
          wzbz (strcat wz)
    )

    (setq ckjd (list (* li 0.02) 0))
    (setq bzqd (polar ckjd (dr 270) 0.7)
          bzzd (polar ckjd (dr 270) 11)
    )
    (setq wzck (polar ckjd (dr 270) 2.2)
          wzwz         (polar wzck (dr 180) 0.2)
    )


    (command "_.line" bzqd bzzd "")
    (command "_.text" "j" "br" wzwz "1.2" "90"  wzbz)

    (close F1)
                                        ;恢复系统参数
    (command "_.UCS" "_W")
    (setvar "osmode" bzcs)
    (princ)
  )
  (prompt
    "\n 1、执行命令bz。
   \n 2、比例:横向1:5000
    "
  )

)

数据文件格式
856.473            K0+856.473             30512.294        K30+512.294
30736.944        K30+736.944
30934.644        K30+934.644
存在的问题是:1、程序执行不下去,提示“错误: 字符流已关闭: #<FILE internal>”2、文字标注出来没有小数点,比如“ K0+856.473”,标注出来就成了“  K0+856”求大神指点



论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2015-5-7 18:46:15 | 显示全部楼层
一次读取完数据后关闭,再进行**操作
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-7 18:47:57 | 显示全部楼层
"一次读取完数据后关闭,再进行**操作",求详解
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2015-5-7 19:03:54 | 显示全部楼层
  1. (defun DR (num)
  2.   (* pi (/ num 180.0))
  3. )
  4. (defun c:bz (/ fname bzcs jcd STR LST li wz wzbz ckjd bzqd bzzd wzck wzwz s sl fl)
  5.   (vl-load-com)
  6.   ;;打开数据文件并获取路径
  7.   (setq        lsppath
  8.          (vl-registry-read
  9.            "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ComDlg32\\OpenSaveMRU\\txt"
  10.            (substr
  11.              (vl-registry-read
  12.                "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ComDlg32\\OpenSaveMRU\\txt"
  13.                "MRUList"
  14.              )
  15.              1
  16.              1
  17.            )
  18.          )
  19.   )
  20.   (setq fname (getfiled "选取控制点数据文件" lsppath "txt" 2))
  21.   (if (not fname)
  22.     (progn
  23.       (alert "请输入有效文件名!")
  24.       (quit)
  25.     )
  26.     (progn
  27.       (setq fl (open fname "r"))
  28.       (while (setq s (read-line fl))
  29.         (setq sl (cons s sl))
  30.       )
  31.       (close fl)
  32.     )
  33.   )
  34.   ;;设置环境参数
  35.   (setvar "cmdecho" 0)
  36.   (setq bzcs (getvar "osmode"))
  37.   (setvar "osmode" 33)
  38.   (command "-layer" "m" "桥梁起终点" "c" "blue" "桥梁起终点" "")
  39.   ;;设置坐标系
  40.   (setq jcd (getpoint "\n 请选择K0与正线交叉点(右线):"))
  41.   (command "_.UCS" "_n" jcd)
  42.   ;;进行标注
  43.   ;;(setq F1 (open fname "r"))
  44.   ;;(while
  45.   ;;(setq STR (read-line F1))
  46.   (foreach str sl
  47.     (setq LST (read (strcat "(" STR ")")))
  48.     (setq li   (car LST)
  49.           wz   (cadr LST)
  50.           wz   (vl-princ-to-string wz)
  51.           wzbz (strcat wz)
  52.     )
  53.     (setq ckjd (list (* li 0.02) 0))
  54.     (setq bzqd (polar ckjd (dr 270) 0.7)
  55.           bzzd (polar ckjd (dr 270) 11)
  56.     )
  57.     (setq wzck (polar ckjd (dr 270) 2.2)
  58.           wzwz (polar wzck (dr 180) 0.2)
  59.     )
  60.     (command "_.line" bzqd bzzd "")
  61.     (command "_.text" "j" "br" wzwz "1.2" "90" wzbz)
  62.   )
  63.   ;;(close F1)
  64.   ;;恢复系统参数
  65.   (command "_.UCS" "_W")
  66.   (setvar "osmode" bzcs)
  67.   ;;(princ)
  68.   ;;)
  69.   (prompt "\n 1、执行命令bz。\n 2、比例:横向1:5000")
  70.   (princ)
  71. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-7 20:18:31 | 显示全部楼层
谢谢Free-lancer金牌会员指导!
可是还是存在两个问题:一是标注的文字没有小数点,比如“ K0+856.473”,标注出来就成了“  K0+856”;二是四行数据:
856.473     K0+856.473   
30512.294  K30+512.294
30736.944  K30+736.944
30934.644  K30+934.644
第一行生成后是正确的,后面三行的数据都生成在了第二行数据的位置,重叠在一起,求解决!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-15 09:08 , Processed in 0.227655 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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