乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 30|回复: 13

[编程交流] 此行出错

[复制链接]

26

主题

81

帖子

55

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2022-7-5 15:21:27 | 显示全部楼层 |阅读模式
大家好
 
#(setq Cloud(getstring(“\n输入选项P或O)))#
你能告诉我为什么这条线会出错吗?
 
这是错误:
.如果没有事先调用(*push error using command*),则无法从*error*调用(命令)。
建议将(命令)调用转换为(命令-s)。
 
然而,如果我用这一行代替上面的那一行,这一行是可行的,但显然它没有给我选择的余地
#(setq云O)#
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
325
发表于 2022-7-5 15:28:40 | 显示全部楼层
  1. (setq Cloud (progn (initget "P O") (getkword "\nEnter an Option [P/O]: " )))
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 15:31:22 | 显示全部楼层
Tunzagibbo选择#not type it或[c o d e]和[[c o d e]如果你想键入它。
回复

使用道具 举报

26

主题

81

帖子

55

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2022-7-5 15:38:41 | 显示全部楼层
高Grrr
谢谢你的代码
我还是有点问题。你能帮我查一下这个代码吗?
我知道,只要在Autocad中运行“revcloud”命令,我就可以选择P或O,但我的Lisp只是全局的一部分。
如果我将2个DEFUNS(“objectcloud”和“polygoncloud”)剪切并粘贴到Autocad命令行中,它们各自都可以正常运行。
当我试图将它们合并到lisp程序中时,我得到了错误。
 
当我输入P或O时,它似乎失败了
 
  1. (defun c: mycloud ()
  2. (setq Cloud (progn (initget "P O") (getkword "\nEnter an Option [P/O]: " )))
  3. (if (= Cloud O) (objectcloud))
  4. (if (= Cloud P) (polygoncloud))
  5. (defun polygoncloud ()
  6.   (setvar "orthmode" 1)
  7.   (command-s"._revcloud" "_P")
  8. )
  9. (defun objectcloud ()
  10.   (command "._revcloud" "_O" pause "No")
  11. )
回复

使用道具 举报

0

主题

24

帖子

24

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 15:41:01 | 显示全部楼层
因为您将字符串存储在变量“cloud”中,所以其值将是“P”或“O”,而不是P或O
 
  1. (defun c:mycloud ( / Cloud )[color=royalblue] ; localise cloud variable[/color]
  2. (initget 1 "P O")
  3. (setq Cloud (getkword "\nEnter an Option [P/O]: " ))
  4. (if (= Cloud "P")
  5.      (polygoncloud)[color=royalblue] ; if "P"[/color]
  6.      (objectcloud)[color=royalblue] ; else "O"[/color]
  7. )
  8. )
回复

使用道具 举报

26

主题

81

帖子

55

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2022-7-5 15:48:41 | 显示全部楼层
这是我试图运行的实际代码,但仍然有问题。
 
  1. (defun c:bbb (/ Cloud)
  2. (initget 1 "P O p o")
  3. (setq Cloud (getkword "\nEnter an Option [P/O] " ))
  4. (if (= Cloud "O") (objectcloud) (polygoncloud))
  5. (defun polygoncloud ()
  6.   (setvar "orthmode" 1)
  7.   (command-s"._revcloud" "_P")
  8. )
  9. (defun objectcloud ()
  10.   (command-s "._revcloud" "_O" pause "No")
  11. )
  12. )
回复

使用道具 举报

0

主题

24

帖子

24

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 15:51:34 | 显示全部楼层
隐马尔可夫模型。。如果你先声明子函数就行了,我不知道这是个问题,我习惯于把它们放在最上面。考虑到大小写是个好主意,添加strcase将确保变量始终为大写。
 
  1. (defun c:bbb (/ polygoncloud objectcloud Cloud)
  2. (defun polygoncloud ()
  3.    (setvar "orth[color=red]o[/color]mode" 1)
  4.    (command "._revcloud" "_P")
  5. )
  6. (defun objectcloud ()
  7.    (command "._revcloud" "_O" pause "No")
  8. )
  9. (initget 1 "P O")
  10. (setq Cloud (strcase (getkword "\nEnter an Option [P/O]: ")))
  11. (if (= Cloud "O") (objectcloud) (polygoncloud))
  12. (princ)
  13. )
回复

使用道具 举报

26

主题

81

帖子

55

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2022-7-5 15:58:03 | 显示全部楼层
谢谢你的帮助,弗兰克。现在一切正常
 
当做
 
托尼
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
325
发表于 2022-7-5 15:58:47 | 显示全部楼层
 
在这种情况下,它们似乎是主函数的局部函数,首先声明这一点很重要——您在函数(主函数或子函数)中放入的所有内容都是从上到下进行求值的。
默认“top2bottom”顺序的异常是从已经计算过的函数调用的。
 
应用时,自上而下的评估顺序适用。lsp文件,它从上到下逐个评估所有声明的函数。
然后,一旦所有主函数和子函数都被声明/求值,您就可以运行主函数,而不用担心未定义的(子)函数。
注意,当解释器评估一个函数时,它只是检查它的内容——在这里,您可能会收到“输入时额外的左/右参数”错误,
但它不运行函数(这意味着运行/检查内部的所有计算):
  1. _$ (defun test ( / ) [color="darkgreen"]; <- The function /main/[/color]
  2. [color="darkgreen"]; These things will be evaluated from top to bottom order, starting from this row
  3. ; <code> ... bla bla[/color]
  4. (MyUndefinedFunction [color="darkgreen"]; <- a subfunction we use inside of our main, but we didn't define it anywhere (so the main will try to run it, but will crash because it was never evaluated)[/color]
  5. ) [color="darkgreen"]; <- our main should crash at this evaluation, and will stop going thru the next bottom lines [/color]
  6. [color="darkgreen"] ; <code> ... bla bla
  7. ; we could define/evaluate the subfoo here, but since we already attempted to run it before defining it, we will recieve an error
  8. ; (defun MyUndefinedFunction ( / ) <code> .. bla bla)[/color]
  9. )[color="darkgreen"]; defun test[/color]
  10. TEST [color="darkgreen"]; <- This means our main function evaluated successfuly (no syntax errors)[/color]
  11. _$ (test) [color="darkgreen"]; <- Now we run it, it will step through all the evaluations inside (TOP to BOTTOM order)[/color]
  12. Error: [color="red"]no function definition[/color]: MYUNDEFINEDFUNCTION [color="darkgreen"]; <- it doesn't recognise it, because we never define it (or we tried to define it after we ran it)[/color]
  13. _1$
  14. _$ test [color="darkgreen"]; <- lets check if our main is defined/evaluated[/color]
  15. #<USUBR @000000b646f7c570 TEST>[color="darkgreen"] ; <- yes it is[/color]
  16. _$ MyUndefinedFunction [color="darkgreen"]; <- lets check if our subfunction is defined/evaluated[/color]
  17. nil [color="darkgreen"]; <- no its not[/color]

 
谢谢
回复

使用道具 举报

26

主题

81

帖子

55

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2022-7-5 16:05:50 | 显示全部楼层
 
尝试以下操作:
  1. (command "._revcloud" "_O")
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-14 03:17 , Processed in 1.572237 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表