乐筑天下

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

[编程交流] 检查输入字段是否已读取

[复制链接]

5

主题

20

帖子

15

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 18:27:05 | 显示全部楼层 |阅读模式
大家好,
 
我有一个问题,我似乎无法通过谷歌来解决。
我是一个非常基本的autocad程序员,所以请容忍我。
 
我有一个简单的小代码来填充DWGPROPS的作者,以自动填充我的标题栏。就像一个符咒,但我想添加一个检查,看看它是否已经填写,这样我可以自动打开一个绘图,这样当其他人打开它时,它不会覆盖原始作者。
 
我没有收到任何错误信息或反馈,所以我不知道如何继续,所以希望你们中的任何人都能帮助我。
 
这是代码:
  1. (defun C:Author (/ doc db si author)
  2. (vl-load-com)
  3.                (setq doc (vla-get-ActiveDocument (vlax-get-Acad-Object)))
  4.                (setq db (vla-get-Database doc))
  5.                (setq si (vla-get-SummaryInfo db))
  6.                (setq ath (getenv "username"))
  7.                (setq ath_first(substr ath 1 2))
  8.                (setq ath_last(substr ath 3))
  9.                               (setq Hath (strcat (strcase ath_first) ath_last))
  10.         (while (setq Ennt 0)
  11.           (cond
  12.             ((= Entt 0)
  13.              (vla-put-author si Hath)
  14.              (setq Ennt 1+)
  15.              )
  16.            );cond
  17.           );while
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 18:41:24 | 显示全部楼层
put的对面是get(vla get author si),然后检查是否为空。
回复

使用道具 举报

5

主题

20

帖子

15

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 18:48:28 | 显示全部楼层
我用你的“get”试过了,但我的知识有限
仍然没有显示任何错误
  1. (while
  2.           (cond (setq check (vla-get-author si))
  3.             ((= check "")
  4.              (vla-put-author si Hath)
  5.              )
  6.            );cond
  7.           );while
回复

使用道具 举报

5

主题

20

帖子

15

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 19:01:46 | 显示全部楼层
谢谢Bigal,
 
发现问题
 
将变量放置在错误的位置。
如果有人能用的话,给你
 
  1. (defun C:Author (/ doc db si author)
  2. (vl-load-com)
  3.                (setq doc (vla-get-ActiveDocument (vlax-get-Acad-Object)))
  4.                (setq db (vla-get-Database doc))
  5.                (setq si (vla-get-SummaryInfo db))
  6.                (setq ath (getenv "username"))
  7.                (setq ath_first(substr ath 1 2))
  8.                 (setq check (vla-get-author si))
  9.                (setq ath_last(substr ath 3))
  10.                               (setq Hath (strcat (strcase ath_first) ath_last))
  11.         (while
  12.           (cond
  13.             ((= check "")
  14.              (vla-put-author si Hath)
  15.              )
  16.            );cond
  17.           );while
  18. );defun

 
上下快速移动
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 19:09:15 | 显示全部楼层
您的(while)
 
  1. (while
  2.           (cond
  3.             ((= check "")
  4.              (vla-put-author si Hath)
  5.              )
  6.            );cond
  7.           );while
  8. mine
  9. (if (= check "")(vla-put-author si Hath))
回复

使用道具 举报

5

主题

20

帖子

15

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 19:21:59 | 显示全部楼层
哦,真的,
 
我在一些Autocad lisp库中读到,当使用“If”函数时,它需要一个“else”。
如果没有“else”,则使用“while”函数。
 
很高兴知道,谢谢
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 19:36:30 | 显示全部楼层
你还使用了while和cond进行了双重检查
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 19:51 , Processed in 0.415099 second(s), 66 queries .

© 2020-2025 乐筑天下

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