LMJPJP 发表于 2018-5-4 22:30:29

菜鸟求助:总是显示no function definition: <ID

加载后,输入dbx后,总是显示no function definition: <ID。实在不知道哪错了。用的全是英文括号
(defun c:dbx()
(setq id (load_dialog "d:/cad_1/zdbx"))
(if (<id 0) (exit))
(if (not(new_dialog "zdbx" id)) (exit))
(action_tile "nq" "(setq fg 1)")
(action_tile "wq" "(setq fg 0)")
(action_tile "accept" "(qsj) (done_dialog)")
(action_tile "cancel" "(setq what -1) (done_dialog)")
(start_dialog)
(unload_dialog id)
(if (>what 0) (draw_zdbx n r flag))
)
(defun draw_zdbx(n r flag)
(setq bp (getpoint "\nbase point"))
(command "circle" bp r)
(command "polygon" n bp flag r)
)
(defun qsj()
(setq n (atoi (get_tile "number")))
(setq r (atof (get_tile "rad")))
(if (=fg 1) (setq flag "i") (setq flag "c"))
(setq what 1)
)

Andyhon 发表于 2018-5-4 22:39:38

(if (<id 0) (exit))
==>
(if (< id 0) (exit))

LMJPJP 发表于 2018-5-4 22:45:10

太感谢了!!这是为什么呢?我以前遇到过类似的一个情况:(setq n (+1 n)不对,必须写成(setq n (1+ n)才对。另外if (>what 0)怎么就不用修改呢?谢谢

Andyhon 发表于 2018-5-4 23:01:39

并未验证其余...
函数与变量间得以空白隔开
1+ 是一函数

(=fg 1)==> (= fg 1)
语法有错调试时过不了滴

LMJPJP 发表于 2018-5-4 23:13:14

谢谢!太感激了!

pengfei2010 发表于 2018-5-5 09:24:39

函数于变量或者字符一定不要连在一起了, 连在一起后就会变成 函数或者变量,肯定会出错的

烟盒迷唇 发表于 2018-5-7 09:38:52

学习了,高手啊

jin1114 发表于 2018-8-17 21:40:22

LMJPJP 发表于 2018-5-4 22:45
太感谢了!!这是为什么呢?我以前遇到过类似的一个情况:(setq n (+1 n)不对,必须写成(setq n (1+ n)才对 ...

+ 号是一个函数   1+ (注意1和+号中间没有空格)也是一个函数
你所谓的“(setq n (+1 n)不对” 肯定是+和1之间没有空格,
函数与参数之间是要有空格的,而没有空格的话它就认为你这是一个函数
页: [1]
查看完整版本: 菜鸟求助:总是显示no function definition: <ID