找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 651|回复: 4

[LISP程序]:请高手帮我看看下面的程序为何不能运行?

[复制链接]
发表于 2006-5-30 02:40:01 | 显示全部楼层 |阅读模式

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

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

×
(defun c:mj1()
    (setq blip (getvar "blipmode"))
    (setq cmd (getvar "cmdecho"))
    (setvar "blipmode" 0)
    (setvar "cmdecho" 1)
  (prompt "\n输入字高:<") (princ (getvar "textsize")) (princ ">")
(setq 输入字高 (getreal))
(if (not 输入字高)
(setq 字高 (getvar "textsize"))
(setq 字高 输入字高)
)
(setq f (open "d:\\qqq.dat" "w"))
(close f)
  (setq lct1 t)
  (while lct1
    (setq lct t)
    (while lct
(setq a (getpoint "\n点取封闭区域:"))
(if (= a nil) (princ "\n没有拾取点!请重新拾取点:")
      (if (/= a nil) (setq lct nil))
        )
      )
  (setq ax (car a))
  (setq ay (cadr a))
(command "-boundary" a "")
  (setq ent (entlast))
(command "area" "o" ent)
(setq mianji (strcat (rtos (getvar "area") 2 4)))
(command "text" a 字高 "0" mianji)
(setq f (open "d:\\qqq.dat" "a"))
(princ mianji f)
(princ "\n" f)
(princ ax f)
(princ "," f)
(princ ay f)
(princ "\n" f)
(close f)
(pldd(ent))
(command "erase" z_a "")
    )
   (setvar "blipmode" blip)
    (setvar "cmdecho" cmd)
princ
  )

(defun pldd(z_a)
(setq z_b (entget(car z_a)))
  (setq n (length z_b))
  (setq na ( - (/ (- n 15) 4) 1))
    (setq f (open "d:\\qqq.dat" "a"))
(setq nc (+ na 1))
    (princ nc f)
  (princ "\n" f)
  (close f)
  (setq m 0)
  (setq nb 14)
    (while (<= m na)
  (setq pxy (cdr (nth nb z_b)))
(setq px (car pxy))
(setq py (cdr pxy))
(setq f (open "d:\\qqq.dat" "a"))
  (setq m1 (+ m 1))
    (princ m1 f)
   (princ "\n" f)
      (princ px f)  
   (princ "," f)
       (princ py f)  
   (princ "\n" f)
      (close f)   
    (setq nb (+ nb 4))
    (setq m (1+ m ))
  )
)


        上面这个程序是在封闭图形中间点取一点,然后求取该封闭图形的面积,并向外部文件输出拾取点的坐标,封闭图形的面积,以及封闭图形角点的坐标,但是程序不能正常运行,请高手帮忙看看!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-5-30 08:03:31 | 显示全部楼层
汉字可以做变量名吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2006-5-30 08:43:23 | 显示全部楼层
汉字可以做变量的

命令: (setq 一落千丈 "aaaaa")
"aaaaa"

以上是在2004中得到的结果。

程序中的
(pldd (ent))  就改成 (pldd ent)
(entget (car z_a)) 应改成 (entget z_a)

另外,你的程序没有给出结束条件,程序一直循环,不能正常结束
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 7235个

财富等级: 富甲天下

发表于 2006-5-30 09:15:23 | 显示全部楼层
(defun pldd (z_a)
  (setq z_b (entget z_a))
  (setq n (length z_b))
  (setq na (- (/ (- n 15) 4) 1))
  (setq f (open "d:\\qqq.dat" "a"))
  (setq nc (+ na 1))
  (princ nc f)
  (princ "\n" f)
  (close f)
  (setq m 0)
  (setq nb 14)
  (while (<= m na)
    (setq pxy (cdr (nth nb z_b)))
    (setq px (car pxy))
    (setq py (cdr pxy))
    (setq f (open "d:\\qqq.dat" "a"))
    (setq m1 (+ m 1))
    (princ m1 f)
    (princ "\n" f)
    (princ px f)
    (princ "," f)
    (princ py f)
    (princ "\n" f)
    (close f)
    (setq nb (+ nb 4))
    (setq m (1+ m))
  )
)

(defun c:mj1 ()
  (setq blip (getvar "blipmode"))
  (setq cmd (getvar "cmdecho"))
  (setvar "blipmode" 0)
  (setvar "cmdecho" 1)
  (prompt "\n输入字高:<")
  (princ (getvar "textsize"))
  (princ ">")
  (setq 输入字高 (getreal))
  (if (not 输入字高)
    (setq 字高 (getvar "textsize"))
    (setq 字高 输入字高)
  )
  (setq f (open "d:\\qqq.dat" "w"))
  (close f)
  (setq lct1 t)
  (while lct1               ; ****** ===> 要给出结束条件
     (while (not (setq a (getpoint "\n点取封闭区域:")))
      (princ "\n没有拾取点!请重新拾取点:")
    )  
    (setq ax (car a))
    (setq ay (cadr a))
    (command "-boundary" a "")
    (setq ent (entlast))
    (command "area" "o" ent)
    (setq mianji (strcat (rtos (getvar "area") 2 4)))
    (command "text" a 字高 "0" mianji)
    (setq f (open "d:\\qqq.dat" "a"))
    (princ mianji f)
    (princ "\n" f)
    (princ ax f)
    (princ "," f)
    (princ ay f)
    (princ "\n" f)
    (close f)
    (pldd ent)
    (entdel ent)
  )
  (setvar "blipmode" blip)
  (setvar "cmdecho" cmd)
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-31 11:43:04 | 显示全部楼层
若执行(command "-boundary" a "")语句时,点取的区域没有封闭,则程序也将崩溃,请问设置出错处理?使其可以重新执行
?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 22:35 , Processed in 0.173017 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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