找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 497|回复: 3

[求助] [求助]:请各位大侠看看我的这个程序哪里错了

[复制链接]
发表于 2004-5-5 14:49:49 | 显示全部楼层 |阅读模式

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

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

×
我现在正在学AutoLISP编程,在学习中写了一个小程序,前段测试都通过了,但是后面绘图部分不起作用,请各位高手给指点一下,错在哪里?在这里先谢谢了!
这是一个绘制楼梯的小程序:
源码:
;;;;--------------------------
;;;;文件名:zhj.lsp
;;;;--------------------------

(defun D:ZHJ(/pt_base L H N sblip scmde pt_corner pt_top a b i pt0 pt1 pt2)
                                        ;询问楼梯的输入参数
  (setq pt_base (getpoint "\n 请指定楼梯左下脚点的位置:"))
  (setq L (getdist pt_base "\n 请输入楼梯总长度:"))
  (setq H (getdist pt_base "\n 请输入楼梯总高度:"))
  (setq N (getint "\n 请输入楼梯台阶级数:"))
  (setq sblip (getvar"blipmode"))
  (setq scmde (getvar"cmdecho"))
  (setvar"blipmode"0)
  (setvar"cmdecho"0)
                                        ;计算楼梯的相关参数
  (setq pt_corner (polar pt_base 0.0 L)) ;计算右下角点
  (setq pt_top (polar pt_corner (/pi 2.0) H)) ;计算右定点
  (setq        a (/L N) b (/H N))                ;计算一级台阶的高度和宽度
                                        ;绘制楼梯的总长和总高轮廓
  (Command "LINE" pt_base pt_corner pt_top "")
                                        ;计算台阶定点并循环绘制每一级台阶
  (setq i 1)                                ;设置循环控制变量i的初始值
  (setq pt0 pt_base)                        ;设置台阶基点pt0的初始值(即左下脚点)
  (while (<=i N)                        ;循环画台阶
     (setq pt1 (polar pt0 (/pi 2.0) b))        ;计算台阶的定点
     (setq pt2 (polar pt1 0.0 a))
     (Command "LINE" pt0 pt1 pt2 "")        ;绘制一级台阶
     (setq pt0 pt2)                        ;将本台阶的终点作为下一台阶的基点
     (setq i (1+i))                        ;循环控制变量i值加1,为计算并绘制下一级台阶作准备
  )
  ;楼梯下面的墙面区域填充以砖块案
  (Command"HATCH""BRICK"10"W"pt_base pt_top"")
  (Command"ZOOM""A")  ;显示图
  (setvar"blipmode"sblip)
  (setvar"cmdecho"scmde)
(princ)
  )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-5-5 15:29:33 | 显示全部楼层
(defun C:ZHJ (/        PT_BASE        L H N SBLIP SCMDE PT_CORNER PT_TOP A B I PT0 PT1
              PT2)
  ;;詢問樓梯的輸入參數
  (setq PT_BASE (getpoint "\n 請指定樓梯左下腳點的位置:"))
  (setq L (getdist PT_BASE "\n 請輸入樓梯總長度:"))
  (setq H (getdist PT_BASE "\n 請輸入樓梯總高度:"))
  (setq N (getint "\n 請輸入樓梯臺階級數:"))
  (setq SBLIP (getvar "blipmode"))
  (setq SCMDE (getvar "cmdecho"))
  (setvar "blipmode" 0)
  (setvar "cmdecho" 0)
  ;;計算樓梯的相關參數
  (setq PT_CORNER (polar PT_BASE 0.0 L)) ;計算右下角點
  (setq PT_TOP (polar PT_CORNER (/ pi 2.0) H)) ;計算右定點
  (setq        A (/ L N)
        B (/ H N)
  )                                        ;計算一級臺階的高度和寬度
  ;;繪製樓梯的總長和總高輪廓
  (command "LINE" PT_BASE PT_CORNER PT_TOP "")
  ;;計算臺階定點並迴圈繪製每一級臺階
  (setq I 1)                                ;設置迴圈控制變數i的初始值
  (setq PT0 PT_BASE)                        ;設置臺階基點pt0的初始值(即左下腳點)
  (while (<= I N)                        ;迴圈畫臺階
    (setq PT1 (polar PT0 (/ pi 2.0) B))        ;計算臺階的定點
    (setq PT2 (polar PT1 0.0 A))
    (command "LINE" PT0 PT1 PT2 "")        ;繪製一級臺階
    (setq PT0 PT2)                        ;將本臺階的終點作為下一臺階的基點
    (setq I (1+ I))                        ;迴圈控制變數i值加1,為計算並繪製下一級臺階作準備
  )
  ;;樓梯下麵的牆面區域填充以磚塊案
  (command "HATCH" "BRICK" 10 "0" "W" PT_BASE PT_TOP "")
  (command "ZOOM" "A")                        ;顯示圖
  (setvar "blipmode" SBLIP)
  (setvar "cmdecho" SCMDE)
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-5-5 15:34:52 | 显示全部楼层
看看我的!
(defun c:ZHJ(/ pt_base L H N sblip scmde pt_corner pt_top a b i pt0 pt1 pt2)
;询问楼梯的输入参数
  (princ)
(setq pt_base (getpoint "\n 请指定楼梯左下脚点的位置:"))
(setq L (getdist pt_base "\n 请输入楼梯总长度:"))
(setq H (getdist pt_base "\n 请输入楼梯总高度:"))
(setq N (getint "\n 请输入楼梯台阶级数:"))
(setq sblip (getvar"blipmode"))
(setq scmde (getvar"cmdecho"))
  (SETVAR "OSMODE" 0)
(setvar"blipmode" 0)
(setvar"cmdecho" 0)
;计算楼梯的相关参数
(setq pt_corner (polar pt_base 0.0 L)) ;计算右下角点
(setq pt_top (polar pt_corner (/ pi 2.0) H)) ;计算右定点
(setq a (/ L N) b (/ H (+ 1 N))) ;计算一级台阶的高度和宽度
;绘制楼梯的总长和总高轮廓
(Command "LINE" pt_base pt_corner pt_top "")
;计算台阶定点并循环绘制每一级台阶
(setq i 1) ;设置循环控制变量i的初始值
(setq pt0 pt_base) ;设置台阶基点pt0的初始值(即左下脚点)
(while (<= i N) ;循环画台阶
(setq pt1 (polar pt0 (/ pi 2.0) b)) ;计算台阶的定点
(setq pt2 (polar pt1 0.0 a))
(Command "LINE" pt0 pt1 pt2 "") ;绘制一级台阶
(setq pt0 pt2) ;将本台阶的终点作为下一台阶的基点
(setq i (1+ i)) ;循环控制变量i值加1,为计算并绘制下一级台阶作准备
)
;楼梯下面的墙面区域填充以砖块案
(Command"HATCH""BRICK"100 "" "W"pt_base pt_top"")
;(Command"ZOOM""A") ;显示图
(setvar"blipmode"sblip)
(setvar"cmdecho"scmde)
(princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-5-5 15:54:03 | 显示全部楼层
不好意思,能告诉我是那儿错了吗?最好具体点。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 03:40 , Processed in 0.365299 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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