乐筑天下

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

[编程交流] 请帮助使用hatch?

[复制链接]

66

主题

180

帖子

119

银币

后起之秀

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

铜币
341
发表于 2022-7-5 17:53:28 | 显示全部楼层 |阅读模式
我想为我的同事自动化一个舱口,我想到了这个:
  1. (defun c:Test (/ hcol)
  2. (prompt "1 = Gray | 2 = Blue | 3 = Green | 4 = Yellow | 5 = Red | 6 = Magenta")
  3. (princ)
  4. (setq hcol(getint "\nEnter COLOR:"))
  5. (cond
  6. ((= hcol 1)(setq hcol (252)))
  7. ((= hcol 2)(setq hcol (2)))
  8. ((= hcol 3)(setq hcol (3)))
  9. ((= hcol 4)(setq hcol (5)))
  10. ((= hcol 5)(setq hcol (1)))
  11. ((= hcol 6)(setq hcol (200)))
  12. )
  13. (princ)
  14. (command "_-hatch" pause "" "CO" hcol "")
  15. (princ)
  16. )

 
上面写着“错误:功能不好”
我的条件不对吗??
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 18:00:19 | 显示全部楼层
删除括号。。。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:01:50 | 显示全部楼层
  1. (setq hcol (252))
应为:
  1. (setq hcol 252)

 
还有几个不必要的(princ)表达式-只有final(princ)才需要抑制最后一个计算表达式返回的值。
 
我还建议使用initget/getkword代替整数选项。
回复

使用道具 举报

66

主题

180

帖子

119

银币

后起之秀

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

铜币
341
发表于 2022-7-5 18:05:29 | 显示全部楼层
 
对非常感谢!
 
 
 
我会尽力做到的,
 
  1. (defun c:Test (/ hcol)
  2. (prompt "1 = Gray | 2 = Blue | 3 = Green | 4 = Yellow | 5 = Red | 6 = Magenta")
  3. (setq hcol(getint "\nEnter COLOR:"))
  4. (cond
  5. ((= hcol 1)(setq hcol 252))
  6. ((= hcol 2)(setq hcol 5))
  7. ((= hcol 3)(setq hcol 3))
  8. ((= hcol 4)(setq hcol 2))
  9. ((= hcol 5)(setq hcol 1))
  10. ((= hcol 6)(setq hcol 200))
  11. )
  12. (prompt "\npick point!") ; hot do i prompt the user to pick point on pause???
  13. (command "_-hatch" "CO" hcol  pause "")
  14.   (princ)
  15. )

 
我做对了吗?对不起,如果我的代码很混乱,我开始学习这个lisp
回复

使用道具 举报

95

主题

477

帖子

383

银币

后起之秀

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

铜币
475
发表于 2022-7-5 18:08:35 | 显示全部楼层
我会更改提示,使其更便于用户使用:
您还可以让提示记住最后选择的,这样用户就可以在提示下按enter键。此外,您应该使用getpoint函数,而不是对图案填充部分使用暂停。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 18:11:59 | 显示全部楼层
 
请注意,除非键入完整的单词,否则绿色关键字不会带有起始字符G
回复

使用道具 举报

95

主题

477

帖子

383

银币

后起之秀

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

铜币
475
发表于 2022-7-5 18:14:45 | 显示全部楼层
Tharwat,我在发布之前没有检查我的代码,所以谢谢你指出这一点。修正后的代码为
  1. (initget 1 "Grey Blue GReen Yellow Red Magenta")
  2. (setq hcol (getkword "\nEnter COLOR [Grey/Blue/GReen/Yellow/Red/Magenta]: "))
回复

使用道具 举报

66

主题

180

帖子

119

银币

后起之秀

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

铜币
341
发表于 2022-7-5 18:19:49 | 显示全部楼层
 
非常感谢。这是一个好主意,而不是数字
但是我不知道你在说什么,我不知道该怎么合并它
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 18:23:47 | 显示全部楼层
 
由于灰色也具有相同的字符序列,因此前两个字符GR没有变化,也不会达到绿色。
 
 
玩一玩:
 
  1. (defun c:HHatch  (/ hcol clr)
  2. (initget 1 "Gray Blue greeN Yellow Red Magenta")
  3. (if (and (setq hcol (getkword "\nEnter COLOR [Gray/Blue/greeN/Yellow/Red/Magenta]: "))
  4.           (setq clr (nth (vl-position hcol '("Gray" "Blue" "greeN" "Yellow" "Red" "Magenta")) '(252 5 3 2 1 200)))
  5.           )
  6. (command "_-hatch" "Properties" "_Solid" "_COLOR" clr "" pause "")
  7.    )
  8. (princ)
  9. )
回复

使用道具 举报

95

主题

477

帖子

383

银币

后起之秀

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

铜币
475
发表于 2022-7-5 18:26:29 | 显示全部楼层
Tharwat,我喜欢使用vl位置而不是条件位置,这看起来更好更干净。要使用getpoint,只需添加类似于9的东西,如果您希望用户能够像实际的图案填充循环那样继续拾取和图案填充,那么也可以使用while循环。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 00:52 , Processed in 0.482901 second(s), 72 queries .

© 2020-2025 乐筑天下

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