QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 4309|回复: 3
收起左侧

[已答复] lisp编程中if怎么用?

[复制链接]
发表于 2008-10-8 10:41:26 | 显示全部楼层 |阅读模式 来自: 中国北京

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

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

x
(if testexpr thenexpr [elseexpr]) 参数 testexpr 要判断的表达式。 thenexpr 如果 testexpr 不等于 nil 则执行该表达式。 elseexpr 如果 testexpr 等于 nil 则执行该表达式。 以上是网上找到的内容,就是不知道用在实际的编程中这个函数用的多不多,或者作用大不大,怎么使用,请帮忙举个例子最好了,谢谢了!
发表于 2008-10-8 13:03:14 | 显示全部楼层 来自: 中国辽宁营口
在任何编程工具中条件判断都是不可缺少的。IF语句用得很多,作用很大,在面临多种可能性时必须使用它及它的派生语句决定程序向何处去。
% {5 w2 n: z& k, e6 n* o7 b以下是从前几天一个帖子上摘下来的例程
  1. (defun c:myhatch (/ a b c d)3 p2 D5 ]5 v8 ~6 L# y
  2.   (setq pa '(0 0 0))6 R) y$ y  E. c8 G
  3.   (setq pb '(400 400 0))  h7 K0 F+ @2 k5 V3 q- y  g
  4.   (setq po '(300 300 0))
    ( W- }% t* q$ n8 C7 d/ y4 b4 t
  5.   (command "rectang" pa pb)2 k- D) N. [! K( R! Q$ p& [; x
  6.   (command "-hatch" po "P" "solid" ""  )
    + y0 K/ F% k: r
  7.   (setq a (entlast))
    ( a5 a, G( [4 ^6 ]
  8.   (setq b (entget a))3 Y4 o7 M0 W6 \2 t# d. m" X
  9.   (setq c (assoc 62 b))
    $ D' X6 ~: K1 o! }; k) w; L( y6 J
  10.   (if c
    % i& g0 ~: n7 }1 V- A1 |
  11.     (progn
    : G' H- n! D2 O  J; f' Q3 X. f
  12.       (setq d (cons 62 1))
    ; B- v' d& c1 ~: x" Z3 H: d7 i
  13.       (setq b (subst d c b))( g5 q4 m4 Y9 K7 c* p" M
  14.     )+ W" Z( ~8 ]6 |, t$ P8 h* k
  15.     (setq b (append b (list (cons 62 1))))
    * o8 [! L; R4 S  O
  16.   )3 X: H5 n! l5 X. |0 [, N3 X
  17.   (entmod b)
    5 N7 c) f( O: [$ f+ c1 o' j5 E
  18.   (princ)
    & j3 K$ `/ O7 u, _  e& @& `
  19. )
复制代码
第一行声明函数,第二到六行画一个矩形并填充,第七、八行提取填充的属性,第九行在属性列表中查找填充的颜色:如果原来的颜色为“bylayer”,则属性列表中没有颜色属性,c返回nil;否则颜色在属性列表中一个有两个元素的、第一个元素为62的列表的第二个元素上,c返回这个有两个元素的列表。第十到十六行就是用IF语句根据查找颜色属性的结果使用不同方法修改填充的颜色。如果c返回列表,程序执行第十二、十三行,用红颜色的列表替换原来的列表,从而修改颜色,然后跳到第十七行向下进行;如果c返回nil,程序执行第十五行,在属性列表中添加一个红颜色的列表,然后继续向下进行。
发表于 2008-10-8 21:45:12 | 显示全部楼层 来自: 中国云南文山壮族苗族自治州
回答得非常详细,学习了!
发表于 2010-10-14 16:16:53 | 显示全部楼层 来自: 中国广东深圳
在运行程序出现如下
- y$ T6 D6 g3 }* C; A5 {1 G, s_1$ 1 C  A4 R% I0 ^
; 错误: 参数类型错误: numberp: nil
% r' D0 ?" X* f( j* U请问是什么意思,谢谢了!
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

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