明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2376|回复: 8

[提问] cond 函数用法

[复制链接]
发表于 2020-8-24 15:55:03 | 显示全部楼层 |阅读模式
请教大家,程式运行到Cond这里无法按满足条件执行对应的操作是什么原因
(defun c:aq()
  (setq en(entget(car(entsel"\n选择圆:"))))
  (setq cid(cdr(assoc 10 en)))
  (setq cir(cdr(assoc 40 en)))
  (setq n(getint"\n输入多边形<3边>:"))
  (initget "C I c i")
  (setq side(GETKWORD"\n[内接I]或[外切C]:"))
  (setq side(strcase side))
  (COND ((setq side C)(command "POLYGON"n cid "c" cir))
        ((setq side I)(command "POLYGON"n cid "I" cir))
        (T (ALERT "未选择圆!"))
  )
  )

发表于 2020-8-24 16:12:27 | 显示全部楼层
①(initget "C I")
②尽量设个默认值,如右键为C (if (null key ) (setq key "C"))
③Cond 中,只能是比较符,如(= side C)
发表于 2020-8-24 16:16:30 | 显示全部楼层
Try
(setq side C)
--->
(= side "C")
发表于 2020-8-24 16:23:53 | 显示全部楼层
改进了下,你看下
(defun c:aq(/ en cid cir n side)
  (setq en(entget(car(entsel"\n选择圆:"))))
  (setq cid(cdr(assoc 10 en)))
  (setq cir(cdr(assoc 40 en)))  
        (if (not (setq n(getint"\n输入多边形<3边>:")))
                        (setq n 3)
        )
  (initget "C I")
  (setq side(GETKWORD"\n[内接I]或[外切C]:"))
  (if (null side ) (setq side "C"))
        (setq side(strcase side))
  (COND
                ((= side "C")(command "POLYGON" n cid "c" cir))
                ((= side "I")(command "POLYGON" n cid "I" cir))
                (T (ALERT "未选择圆!"))
  )
)
 楼主| 发表于 2020-8-24 16:24:27 | 显示全部楼层
Andyhon 发表于 2020-8-24 16:16
Try
(setq side C)
--->

是这个问题导致无法执行,谢谢指教
发表于 2020-8-24 21:46:23 | 显示全部楼层
不知道你到底怎么理解的 (setq side C) ,还是提醒下:
在你的原代码中C 是个变量,本例程中还是没有定义的空变量,也就是nil值 (如果其他例程中没有定义过,因为是全局变量所以提醒下),把变量C的值赋给side变量, 也就是前面两句话无论如何都是nil ,这种操作有点迷茫了,
看您不习惯定义局部变量,如果您在其他例程中定义了C值,到这里会直接赋值给side,这时候会给你惊喜。但是肯定不是你想要的结果
发表于 2020-8-25 09:53:53 | 显示全部楼层
来留个名 打个卡
 楼主| 发表于 2020-8-25 10:05:07 | 显示全部楼层
G〆h 发表于 2020-8-24 16:23
改进了下,你看下
(defun c:aq(/ en cid cir n side)
  (setq en(entget(car(entsel"\n选择圆:"))))

你这个改得很好用,谢谢
 楼主| 发表于 2020-8-25 10:06:59 | 显示全部楼层
muwind 发表于 2020-8-24 21:46
不知道你到底怎么理解的 (setq side C) ,还是提醒下:
在你的原代码中C 是个变量,本例程中还是没有定义 ...

是的,我确实没有定义局部变量的习惯,以后会注意,谢谢提醒.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-18 03:14 , Processed in 0.174950 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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