乐筑天下

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

[编程交流] 如何组合多个SETVAR

[复制链接]

24

主题

40

帖子

16

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-6 07:10:07 | 显示全部楼层 |阅读模式
例如,不要写很多这样的内容:
(setvar“coords”2)(setvar“hpassoc”1)。。。
我可以合并吗?
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 07:17:31 | 显示全部楼层
  1. (vl-load-com)
  2. (foreach x (list '(coords 2)
  3.                 '(hpassoc 1)
  4.                 ;; <-- More sysvars
  5.           )
  6. (vl-catch-all-apply 'setvar x)
  7. )
回复

使用道具 举报

5

主题

1074

帖子

1088

银币

初来乍到

Rank: 1

铜币
9
发表于 2022-7-6 07:22:36 | 显示全部楼层
 
是的,这个方法会奏效,但只有几件事(我的朋友,这不是对你的反思)。。。。
 
我非常不喜欢这种方法,主要是因为它将系统变量和所需值分为两个单独的列表,而不是如我上面的示例所示的一个列表对(即'(变量值))。
 
这不仅仅是源于代码维护的观点,因为保持变量值列表对在一起也有一个(尽管很小)性能优势。。。在此小速度测试中演示:
 
测试功能:
  1. (mapcar 'setvar '(coords hpassoc) (list 2 1))
速度测试结果:
 
  1. (vl-load-com)
  2. (defun _Mapcar (vars vals)
  3. (mapcar 'setvar vars vals)
  4. )
  5. (defun _Foreach (pairs)
  6. (foreach x pairs
  7.    (vl-catch-all-apply 'setvar x)
  8. )
  9. )
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 07:23:29 | 显示全部楼层
两者之间的区别是什么:(list‘a’b’c),它给出了一个list(a b c),
和:(列出a b c),这也给出了(a b c)。
我不知道引号(')函数是什么,为什么我需要它,在上面的示例代码中
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 07:27:42 | 显示全部楼层
 
如果您知道该列表中要提供的所有值,那么就不需要像我在该示例中演示的那样调用list函数。这样做只需最小化实际调用的时间列表的数量。
 
我使用List函数调用的原因是,我可以提供已知值(引用的项)以及需要评估的值(意味着在List调用本身中正在执行一些编程操作)。
 
考虑这个例子:
(vl load com)(foreach x(list)(坐标2)-(hpassoc 1)(list“osmode(cond)(=“user1”(setq user(getvar”loginname))255)((=“user2”user)35)((=“user3”user)39)((=“user4”user)243)(T(getvar“osmode))    ;
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 07:33:08 | 显示全部楼层
我在我的系统变量中包含的另一项,在AcadDoc时需要评估。正在加载的lsp是AUTOMATICPUB系统变量,因此当DWGPREFIX包含我们的sheets目录时,它被启用,而当在我们的model目录中时,它被禁用。
回复

使用道具 举报

24

主题

40

帖子

16

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-6 07:39:26 | 显示全部楼层
 
这一古老的解释可能有助于:
http://www.cadtutor.net/forum/showthread.php?38732-选择所有未闭合的多段线&p=258390#post258390
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 07:42:41 | 显示全部楼层
 
... 另一个很好的帖子,李。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 07:47:42 | 显示全部楼层
干杯伙计
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:52:25 | 显示全部楼层
什么是(vl load com)?我应该在代码中插入它吗?
vl是函数吗?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 10:40 , Processed in 0.643771 second(s), 72 queries .

© 2020-2025 乐筑天下

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