乐筑天下

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

[编程交流] 如果线型存在

[复制链接]

21

主题

155

帖子

135

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
105
发表于 2022-7-5 19:14:25 | 显示全部楼层
我就是这么做的
 
if语句询问acadiso中是否存在线型“DASHED2.5”(第一选择)。林。
如果是,则加载它。
 
Else加载“hidden2”(第二选择)
 
至少我是这么想的
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 19:15:54 | 显示全部楼层
请尝试以下操作:
  1. (defun ltload ( typ lin )
  2.    (eval
  3.        (list 'defun 'ltload '( typ lin )
  4.            (list 'vl-catch-all-apply ''vla-load
  5.                (list 'list
  6.                    (vla-get-linetypes (vla-get-activedocument (vlax-get-acad-object)))
  7.                    'typ
  8.                    'lin
  9.                )
  10.            )
  11.           '(tblsearch "ltype" typ)
  12.        )
  13.    )
  14.    (ltload typ lin)
  15. )
  16. (cond
  17.    (   (ltload "DASHED2.5" "acadiso.lin")
  18.        (princ "\nLoaded DASHED2.5 linetype.")
  19.    )
  20.    (   (ltload "HIDDEN2" "acadiso.lin")
  21.        (princ "\nLoaded HIDDEN2 linetype.")
  22.    )
  23.    (   (princ "\nUnable to load HIDDEN2 linetype."))
  24. )
回复

使用道具 举报

21

主题

155

帖子

135

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
105
发表于 2022-7-5 19:20:05 | 显示全部楼层
来吧,非常感谢李。
 
为了测试,我在一个新的绘图中运行了它&它加载了dashed2.5
 
然后,我从acadiso中删除dashed2.5,保存它,清除图形并重新运行lisp
 
宾果,它加载了hidden2
 
我猜:
 
  1.     (   (princ "\nUnable to load HIDDEN2 linetype."))
是条件T吗?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 19:25:04 | 显示全部楼层
 
欢迎你,哈比人-该方法基本上与我的Load Linetypes函数使用的方法相同,尽管正如你已经知道的那样,该方法非常简洁。线型所在的lin文件。
 
 
您是正确的-如果程序未能加载任何一种线型,则将计算此表达式,因此前面的测试表达式返回了nil。
 
注意,对于这个最终条件,不需要显式的“t”作为测试表达式,因为第一个表达式(测试表达式)将始终被计算。
回复

使用道具 举报

21

主题

155

帖子

135

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
105
发表于 2022-7-5 19:29:14 | 显示全部楼层
在post#9中,我试图使用IF语句来确定代码是否返回T。显然,这是错误的做法。
 
现在我已经将您的defun ltload(作为一个子函数)插入到主lisp中,作为主列表中的一个writing和cond函数,它工作得非常好
 
非常非常感谢李
 
给伦敦那个永远乐于助人的家伙打上最高分
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 19:31:36 | 显示全部楼层
 
无论如何,您仍然可以使用一系列IF语句编写代码(通常,任何COND表达式都可以作为一系列嵌套的IF表达式编写),例如:
  1. (if (ltload "DASHED2.5" "acadiso.lin")
  2.    (princ "\nLoaded DASHED2.5 linetype.")
  3.    (if (ltload "HIDDEN2" "acadiso.lin")
  4.        (princ "\nLoaded HIDDEN2 linetype.")
  5.        (princ "\nUnable to load HIDDEN2 linetype.")
  6.    )
  7. )

我只是觉得康德在这种情况下更清楚。
 
 
很高兴听到,谢谢你的好话和感激之情。
 
回复

使用道具 举报

21

主题

155

帖子

135

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
105
发表于 2022-7-5 19:36:44 | 显示全部楼层
不用了,李,我宁愿每次都用康德。即使使用vlide,它也比嵌套的“if-then-else”语句清晰得多。我甚至考虑更新我早期在lisp上的一些尝试(大约12个月前),用cond替换ifs。
如果我能找到时间的话。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 19:55 , Processed in 0.557152 second(s), 64 queries .

© 2020-2025 乐筑天下

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