明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1211|回复: 5

[求助]请教:LISP

[复制链接]
发表于 2006-3-12 18:54 | 显示全部楼层 |阅读模式
        听说可以在LISP程序中加入一函数指定任何一个文件,在执行程序过程中需寻找电脑中的这个文件,如没有找到则不能再执行下去!!不知LISP是怎么写的,是无论加在程序中的任何一个位置都可以吗??请教了!!!!!谢谢了!!!!!!!!!
发表于 2006-3-12 18:59 | 显示全部楼层
参考:
  1. (defun c:test105 ()
  2.   (CMDLA0)
  3.   (alert
  4.     "数据格式:
  5.   X坐标 Y坐标
  6.   X坐标 Y坐标
  7.   X坐标 Y坐标
  8.   X坐标 Y坐标
  9.   X坐标 Y坐标
  10.   ..."
  11.   )
  12.   (prompt "\n\t稍候 ")
  13.   (MKLA "建筑-红线" 1)
  14.   (setq tn (getfiled "坐标数据文件(txt;dat;*)" "" "txt;dat;*" 2))
  15.   (setq fle (findfile tn))
  16.   (if (not fle)
  17.     (setq fle (getfiled "请选择数据文件" "txt1" "txt;dat;*" 8))
  18.   )
  19.   (if fle
  20.     (progn
  21.       (setq fn (open fle "r"))
  22.       (command "pline")
  23.       (while (setq pt (read-line fn))
  24. (princ ".")
  25. (command (read (strcat "(" pt ")")))
  26.       )
  27.       (command "")
  28.       (close fn)
  29.     )
  30.     (princ "\n未选择数据文件,退出")
  31.   )
  32.   (prompt " 完毕!")
  33.   (CMDLA1)
  34. )
 楼主| 发表于 2006-3-12 20:50 | 显示全部楼层

      不好意思,我的级别太差了,还没看明白,下面我有一段程,可否帮我加一下,要求在执行中寻找C盘中LISP目录下的a,txt文件!!!如没有找到此文件则不能运行!!!谢谢!!!!!!!!!

(defun c:dl ()
  (setvar "cmdecho" 0)
  (setq ll (ssget))
  (setq llnum (sslength ll))
  (setq rep1 0)
  (repeat llnum
    (setq lname1 (ssname ll rep1)
   lent1  (entget lname1)
   lp11  (cdr (assoc '10 lent1))
   lp12  (cdr (assoc '11 lent1))
   lper1  (list lp11 lp12 lname1)
    )
    (setq rep2 0)
    (repeat llnum
      (setq lname2 (ssname ll rep2)
     lent2  (entget lname2)
     lp21   (cdr (assoc '10 lent2))
     lp22   (cdr (assoc '11 lent2))
     lper2  (list lp21 lp22 lname2)
      )
      (if (/= rep1 rep2)
 (progn
   (if (or (and (equal lp11 lp21) (equal lp12 lp22))
    (and (equal lp11 lp22) (equal lp12 lp21))
       )
     (vl-cmdf "erase" lname1 "")
   )
 )
      )
      (setq rep2 (1+ rep2))
    )
    (setq rep1 (1+ rep1))
    (princ (strcat "\rProcessing object " (itoa rep1) " of " (itoa llnum)))
  )
  (setvar "cmdecho" 1)
  (princ)
)

发表于 2006-3-12 22:03 | 显示全部楼层
  1. (defun c:dl ()
  2.   (if (findfile "C:/LISP/a.txt")
  3.     (progn
  4.       (setvar "cmdecho" 0)
  5.       (setq ll   (ssget)
  6.      llnum (sslength ll)
  7.      rep1  0
  8.       )
  9.       (repeat llnum
  10. (setq lname1 (ssname ll rep1)
  11.        lent1  (entget lname1)
  12.        lp11   (cdr (assoc '10 lent1))
  13.        lp12   (cdr (assoc '11 lent1))
  14.        lper1  (list lp11 lp12 lname1)
  15.        rep2   0
  16. )
  17. (repeat llnum
  18.    (setq lname2 (ssname ll rep2)
  19.   lent2  (entget lname2)
  20.   lp21   (cdr (assoc '10 lent2))
  21.   lp22   (cdr (assoc '11 lent2))
  22.   lper2  (list lp21 lp22 lname2)
  23.    )
  24.    (if (/= rep1 rep2)
  25.      (if (or (and (equal lp11 lp21) (equal lp12 lp22))
  26.       (and (equal lp11 lp22) (equal lp12 lp21))
  27.   )
  28.        (vl-cmdf "erase" lname1 "")
  29.      )
  30.    )
  31.    (setq rep2 (1+ rep2))
  32. )
  33. (setq rep1 (1+ rep1))
  34. (princ (strcat "\rProcessing object "
  35.          (itoa rep1)
  36.          " of "
  37.          (itoa llnum)
  38.         )
  39. )
  40.       )
  41.       (setvar "cmdecho" 1)
  42.     )
  43.   )
  44.   (princ)
  45. )
 楼主| 发表于 2006-3-13 13:17 | 显示全部楼层
   谢谢了!!深深的感谢!!!!!!!!
 楼主| 发表于 2006-3-15 20:51 | 显示全部楼层

    不好意思,再请教:在程序执行中如果没找到文件,可否加一句提示错误,如有找到正常垫行则不提示!!!

谢谢!!!!!!

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

本版积分规则

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

GMT+8, 2024-5-19 13:19 , Processed in 0.171284 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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