发布于:2006-01-21 19:15:21
来自:建筑设计/CAD下载及教程
[复制转发]
程序实例剖析,供初学者用~~
========== 实用程序范例 (楼梯剖面) ==========
----- 程序简介 -----
在使用者输入各项资料后,程序自动计算出每级楼梯的宽度及高度;
利用重复及不断更新坐标位置的方法,划出楼梯的剖面.
这是一个很典型的回圈程序范例.
----- 程序码 -----
(DEFUN C:STAIR() (SETQ PT_BASE (GETPOINT "\nStair lower corner : ")
PT_TMP1 (GETPOINT PT_BASE "\nStair length : ")
PT_TMP2 (GETPOINT PT_BASE "\nStair height : ")
TEMP_N (GETINT "\nNumber of step : "))
(IF (OR (< TEMP_N 2) (= TEMP_N NIL)) (PRINC "\nNumber of stair error") (PROGN
(SETQ DIST_L (/ (DISTANCE PT_BASE PT_TMP1) (1- TEMP_N))
DIST_H (/ (DISTANCE PT_BASE PT_TMP2) TEMP_N)
ANGE_1 (ANGLE PT_BASE PT_TMP1)
ANGE_2 (ANGLE PT_BASE PT_TMP2))
(SETQ M_OSM (GETvar "OSMODE")) (SETvar "OSMODE" 0)
(COMMAND "PLINE" PT_BASE)
(REPEAT TEMP_N
(SETQ PT_TMP1 (POLAR PT_BASE ANGE_2 DIST_H))
(SETQ PT_TMP2 (POLAR PT_TMP1 ANGE_1 DIST_L))
(COMMAND PT_TMP1 PT_TMP2)
(SETQ PT_BASE PT_TMP2)
) ;关闭REPEAT
(COMMAND "U" "")
(SETvar OSMODE M_OSM)
)) ;关闭PROGN及IF;
(PRINC)) ;关闭DEFUN
----- 程序说明 -----
第1行 : 设定函数名称;以GETPOINT取得楼梯最底的一点(左边或右边均可),存入变数PT_BASE
第2行 : 用GETPOINT函数,以PT_BASE为基准点,取得楼梯横向的第二点,存入变数PT_TMP1
第3行 : 用GETPOINT函数,以PT_BASE为基准点,取得楼梯纵向的第三点,存入变数PT_TMP2
第4行 : 用GETINT函数,取得楼梯的级数(整数),存入变数TEMP_N
第5行 : 以IF判断输入的级数是否小于2或是(OR)等于NIL;若是则显示讯息,否则以PROGN函数包含以下各程序
第6行 : 用DISTANCE取得楼梯横向长度(PT_BASE至PT_TMP1),除以级数减1(1- TEMP_N),存入变数DIST_L
第7行 : 用DISTANCE取得楼梯纵向高度(PT_BASE至PT_TMP2),除以级数(TEMP_N),存入变数DIST_H
第8行 : 用ANGLE函数,取得横向角度(PT_BASE至PT_TMP1),存入变数ANGE_1
第9行 : 用ANGLE函数,取得纵向角度(PT_BASE至PT_TMP2),存入变数ANGE_2
第10行 : 用GETvar取得目前锁点模式的设定值,存入变数M_OSM;再用SETvar将锁点模式设为0(取消)
第11行 : 以COMMAND函数执行PLINE指令,聚合线的起点为变数PT_BASE(第一选取点)
第12行 : 用REPEAT函数重复执行以下程序(重复次数为变数TEMP_N,即为楼梯级数)
第13行 : 用POLAR取得新座标点:由楼梯(聚合线)起点,沿楼梯纵向角度(变数ANGE_2),距离为变数DIST_H,
存入变数PT_TMP1
第14行 : 用POLAR取得新座标点:由上一点(PT_TMP1)起,沿楼梯横向角度(变数ANGE_1),距离为变数DIST_L,
存入变数PT_TMP2
第15行 : 继续以两个新座标点(变数PT_TMP1,PT_TMP2)作为COMMAND函数(PLINE指令)的输入顶点
第16行 : 将最后取得的坐标点(变数PT_TMP2),存入变数PT_BASE中,并覆盖原值
第17行 : 用以对应REPEAT函数的小括号 : 第13至16行的程序会重复执行TEMP_N次
第18行 : 以COMMAND函数执行”U”选项(PLINE指令),取消最后绘划的一条线,并以空字符串(等于按下ENTER键)
结束PLINE指令(第11行)
第19行 : 用SETvar函数,将锁点模式还原(变数M_OSM)
----- 执行程序 -----
1. Stair lower corner : 选取楼梯最低的一点
2. Stair Length : 输入楼梯的总长度 (可以从键盘输入,或
在屏幕选取一点,与第一选取点的距离作为长度)
3. Stair Height : 输入楼梯的总高度 (可以从键盘输入,或
在屏幕选取一点,与第一选取点的距离作为高度)
4. Number of step : 输入楼梯的级数 (注意 : 输入值不可以小于2,且必须为整数值)
全部回复(9 )
只看楼主 我来说两句-
fan-zhu
沙发
这个东西谁能够彻底讲明白呢?
2006-02-08 12:52:08
赞同0
-
wenki2000
板凳
支持楼主发这么多好资料,真的很适合初学者。
2006-02-07 18:07:07
赞同0
加载更多回复 举报
回复 举报