乐筑天下

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

[编程交流] 我的基本路线需要帮助

[复制链接]

9

主题

33

帖子

23

银币

初来乍到

Rank: 1

铜币
47
发表于 2022-7-6 17:12:46 | 显示全部楼层 |阅读模式
我试着做一个例程(我的第一个),每次调用函数时都切换两层状态。
 
你能告诉我代码有什么问题吗?
 
非常感谢。
回复

使用道具 举报

15

主题

102

帖子

106

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 17:20:12 | 显示全部楼层
  1. (defun c:layswitch (/ layvar)
  2. (setvar "layvar" 1)
  3. (if (=(getvar "layvar") 1)
  4. (command "layer" "A" "R" "T1" "")
  5. (setvar "layvar" 0)
  6. ) ;if
  7. (if (=(getvar "layvar") 0)
  8.   (command "layer" "A" "R" "T2" "")
  9.   (setvar "layvar" 1)
  10. ) ;if
  11. (princ)
  12. );defun

 
看起来很快,这就是我看到的,加上什么是LAYVAR?
回复

使用道具 举报

9

主题

33

帖子

23

银币

初来乍到

Rank: 1

铜币
47
发表于 2022-7-6 17:22:50 | 显示全部楼层
哼一个我创建的变量?对于每次调用函数时在layerstate T1和T2之间切换,是否良好?
 
编辑:这显然与layvar无关。。。我在某个地方读到需要调用defun()括号中的变量。但我想我误解了
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 17:27:15 | 显示全部楼层
 
您可能应该使用“setenv”来设置系统环境变量,或者只使用通常的“setq”来设置局部变量。
回复

使用道具 举报

9

主题

33

帖子

23

银币

初来乍到

Rank: 1

铜币
47
发表于 2022-7-6 17:29:23 | 显示全部楼层
好的,请问语法有什么问题?
 
  1. (defun c:layswitch ()
  2. (setq "layvar" 1)
  3. (if ("layvar" = 1)
  4. (command "layer" "A" "R" "T1" "")
  5. (setq "layvar" 0)
  6. ) ;if
  7. (if ("layvar" = 0)
  8.   (command "layer" "A" "R" "T2" "")
  9.   (setq "layvar" 1)
  10. ) ;if
  11. (princ)
  12. );defun
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 17:32:07 | 显示全部楼层
使用“setq”时,不要在变量名周围使用引号,此外,为了检查等式,请使用:
 
  1. (= xxxx yyy)

 
不是:
 
  1. ("xxxx" = yyy)

 
  1. (defun c:layswitch (/ layvar)
  2. (setq layvar 1)
  3. (if (= layvar 1)
  4. (command "layer" "A" "R" "T1" "")
  5. (setq layvar 0)
  6. ) ;if
  7. (if (= layvar 0)
  8.   (command "layer" "A" "R" "T2" "")
  9.   (setq layvar 1)
  10. ) ;if
  11. (princ)
  12. );defun
回复

使用道具 举报

9

主题

33

帖子

23

银币

初来乍到

Rank: 1

铜币
47
发表于 2022-7-6 17:37:34 | 显示全部楼层
太好了谢谢
 
这部分工作正常,
 
现在,每次我运行该函数时,它只将我的层状态设置为T1(而不是T2)
我想这是因为第2行变量总是设置为1。
 
知道吗?
回复

使用道具 举报

41

主题

301

帖子

265

银币

后起之秀

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

铜币
209
发表于 2022-7-6 17:42:15 | 显示全部楼层
正确,这是你的问题
你把layvar设置为1,所以它总是1
我不确定你想做什么,(咖啡还没有开始)
对不起,我帮不了你多少,但是
你想换层吗?
比如,如果电流层是t1,那么转到t2,如果电流层是t2,那么转到t1?
 
当做
回复

使用道具 举报

9

主题

33

帖子

23

银币

初来乍到

Rank: 1

铜币
47
发表于 2022-7-6 17:45:26 | 显示全部楼层
 
是的,这就是我要做的
回复

使用道具 举报

2

主题

439

帖子

536

银币

限制会员

铜币
-14
发表于 2022-7-6 17:46:44 | 显示全部楼层
LISP中的布尔值为nil(false),T(true)不是0和1。在这种情况下,变量“layvar”必须是全局变量。在real LISP中:
 
  1. 7
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 16:33 , Processed in 0.919941 second(s), 72 queries .

© 2020-2025 乐筑天下

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