乐筑天下

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

[编程交流] DCL忽略空值多行文字

[复制链接]

6

主题

10

帖子

4

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 06:51:30 | 显示全部楼层 |阅读模式
我试图编写一个例程,允许用户在对话框中输入项目和权重,并输出格式化的多行文字(以及其他内容)。我允许用户输入最多10个项目,但我只希望多行文字使用填充的值。
 
我的对话框如下所示:
075131qsi4uai8tssc3zc8.png
 
下面是我的输出结果:
075132c7h78f9z87fe47fn.png
 
以下是我的多行文字代码:
  1. (setq val (strcat "\\pxtr18,c20,r30;\t" eq1 "\t=\t" wt1 " LB
  2.                         \\P\t" eq2 "\t=\t" wt2 " LB
  3.                         \\P\t" eq3 "\t=\t" wt3 " LB
  4.                         \\P\t" eq4 "\t=\t" wt4 " LB
  5.                         \\P\t" eq5 "\t=\t" wt5 " LB
  6.                         \\P\t" eq6 "\t=\t" wt6 " LB
  7.                         \\P\t" eq7 "\t=\t" wt7 " LB
  8.                         \\P\t" eq8 "\t=\t" wt8 " LB
  9.                         \\P\t" eq9 "\t=\t" wt9 " LB
  10.                         \\P\t" eq10 "\t=\t" wt10 " LB"
  11.                        
  12.             ))
  13. (entmake
  14.    (list
  15.      (cons 0 "MTEXT")
  16.      (cons 100 "AcDbEntity")
  17.      (cons 100 "AcDbMText")
  18.      (cons 10 pt1)
  19.      (cons 1 val)
  20.      (cons 8 "NOTES")
  21.      (cons 40 0.09375)
  22.      (cons 7 "ROMANS")
  23.      (cons 41 4)))

 
有什么建议可以让它忽略“0”值吗?
提前感谢!
回复

使用道具 举报

2

主题

389

帖子

387

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 07:15:19 | 显示全部楼层
在字符串串联中,您只需要取值。(在“eq”上)使用条件句,以便只包括实际有条目的行。
回复

使用道具 举报

6

主题

10

帖子

4

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 07:34:19 | 显示全部楼层
谢谢neophoible,以下是我如何解决它的。
 
  1. (if (/= eq1 "0") (setq a (strcat "\\P\t" eq1 "\t=\t" wt1 " LB")) (setq a ""))
  2.                         (if (/= eq2 "0") (setq b (strcat "\\P\t" eq2 "\t=\t" wt2 " LB")) (setq b ""))
  3.                         (if (/= eq3 "0") (setq c (strcat "\\P\t" eq3 "\t=\t" wt3 " LB")) (setq c ""))
  4.                         (if (/= eq4 "0") (setq d (strcat "\\P\t" eq4 "\t=\t" wt4 " LB")) (setq d ""))
  5.                         (if (/= eq5 "0") (setq e (strcat "\\P\t" eq5 "\t=\t" wt5 " LB")) (setq e ""))
  6.                         (if (/= eq6 "0") (setq f (strcat "\\P\t" eq6 "\t=\t" wt6 " LB")) (setq f ""))
  7.                         (if (/= eq7 "0") (setq g (strcat "\\P\t" eq7 "\t=\t" wt7 " LB")) (setq g ""))
  8.                         (if (/= eq8 "0") (setq h (strcat "\\P\t" eq8 "\t=\t" wt8 " LB")) (setq h ""))
  9.                         (if (/= eq9 "0") (setq i (strcat "\\P\t" eq9 "\t=\t" wt9 " LB")) (setq i ""))
  10.                         (if (/= eq10 "0") (setq j (strcat "\\P\t" eq10 "\t=\t" wt10 " LB")) (setq j ""))
  11. (setq val (strcat "\\pxtr18,c20,r30;\t" a b c d e f g h i j))
回复

使用道具 举报

2

主题

389

帖子

387

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 07:55:22 | 显示全部楼层
不客气。非常好,非常直接,完成了工作。
 
我应该问你是否真的运行了它以确保它工作。我提到它的原因是,在你的初始“if”之后,你可能有很多表达式需要计算。如果我是对的,那么解决这个问题的一个简单方法就是在它们之前添加一个“progn”,即将它们分组。
 
我想我只是被压痕弄糊涂了。我习惯于与同级的其他人保持一致。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 15:11 , Processed in 0.809261 second(s), 63 queries .

© 2020-2025 乐筑天下

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