You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AutoLISP中IF函数多条件判断实现问题咨询

问题分析与解决方案

你的代码核心问题是逻辑运算符用错:预期是同时满足「不等于三个值」的与逻辑,却用了or(或逻辑),导致判断结果完全相反。另外princ里的换行符应该是"\n"而非"/n",否则无法正确换行。

修正后的IF函数实现

(if (and (/= flr "0_01.")  ; 同时满足:不等于"0_01."
         (/= flr "4_01.")  ; 不等于"4_01."
         (/= flr "6_01.")  ; 不等于"6_01."
    )
    (progn
        ; 使用已定义变量重定义外部参照路径
        (command "-xref" "p" afile afilepathname)
    )
    (progn
        (princ "\nThis is a model file")  ; 修正换行符为"\n"
    )
)

使用COND函数的实现方式

如果你想用cond实现相同逻辑,写法如下:

(cond
    ; 当flr不等于三个目标值时,执行xref路径重定义
    ((and (/= flr "0_01.")
          (/= flr "4_01.")
          (/= flr "6_01.")
     )
     (command "-xref" "p" afile afilepathname))
    ; 其他所有情况(即flr是三个值之一),输出提示
    (t (princ "\nThis is a model file"))
)

关键说明

  • and运算符:只有所有条件都为真时,整体才返回真,符合你「同时不等于三个值」的需求。
  • cond的t分支:代表默认匹配,当前面的条件都不满足时执行,适合处理「否则」的逻辑。
  • 换行符修正:"\n"是AutoLISP里的正确换行转义字符,"/n"会被当作普通字符串输出。

内容的提问来源于stack exchange,提问作者Dustin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 00:29:57