乐筑天下

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

[编程交流] 反应堆特性

[复制链接]

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 17:52:53 | 显示全部楼层 |阅读模式
你好
我试图创建一个属性反应器:
如果存在选定对象,则调用“属性”命令,
如果没有选择任何对象,则调用propertieclose命令。
它的工作方式应该与quickproperties在选择时显示的方式相同。
 
我知道如何使用纯lisp执行此操作:
  1. (defun checkselection ()
  2. (if (ssget "_I")
  3. (command "_.properties")
  4. (command "_.propertiesclose")
  5. )
  6. );defun

 
但是我没有反应堆方面的经验,我不知道使用什么事件名称,回调函数应该是什么。
这是我的原始开始:
  1. ;*********************************************************************
  2. (vlr-command-reactor
  3. "TurnPropertiesOnSelection" '((:vlr-XXXX . XXXXXX ))) ; what event-name to use and what should be the callback function?
  4. ;*********************************************************************
  5. (vl-load-com)
  6. (defun checkselection () ; data
  7. (if (ssget "_I")
  8. (...)
  9. )
  10. );defun
  11. (defun doProperties () ; callback
  12. (command "_.properties")
  13. );defun
  14. (defun undoProperties () ; callback
  15. (command "_.propertiesclose")
  16. );defun

据我所知,它应该检查是否有调用属性的选择
如果没有选择调用propertiesclose。
但这是否意味着要建造两座反应堆?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:01:32 | 显示全部楼层
这是此类反应堆的基本形式,类型为“autopropson”和“autopropsoff”,分别用于启用和禁用反应堆:
请注意,您不能从反应堆回调函数中调用命令调用,因此需要使用sendcommand方法进行处理后评估。
 
请注意,反应堆通常被视为Visual LISP的高级领域,因此支持代码需要防水,考虑到每一种可能的情况,以确保不间断运行。因此,我建议您在编写程序之前学习各种可用的教程和资源,以便更好地理解反应堆的“规则”。
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 18:10:58 | 显示全部楼层
嗨,李,
 
我记得有人问过这个问题,所以在反应堆内调用命令的全局答案是:
  1. (autoprops:sendcommand "_.commandname ")

我很高兴得到这个答案!
 
 
我明白了,正如你提到的“Visual LISP的高级领域”一样,reactor似乎是最难学习的,但在某些情况下,它们是最容易使用的方法(正如我在许多示例中看到的,您的LayerDirector例程和其他一些隐藏/锁定对象例程)。
 
 
公平地说,我查看了afralisp的反应堆教程,但我找不到执行此尝试的示例,这就引出了我的问题:
您在哪里找到/阅读了这些功能:
  1. 4

通常,为了寻找一些VL VLA函数,我在AutoCAD的ActiveX参考中进行了检查,但我在任何地方都没有找到任何“VLR”(只有afralisp中的几个示例)。
 
 
我仍然在思考你的评论这一部分,因为我习惯了用ESC键退出每个命令的坏习惯来修改和学习示例-正如你所说,这与反应堆无关。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:14:27 | 显示全部楼层
反应堆函数(vlr-*)在标准开发人员文档中有很好的文档记录——如果你在谷歌上搜索我在上面发布的代码中使用的任何函数,你应该从标准文档中找到描述每个函数的用途和格式的参考,并给出示例。
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 18:20:43 | 显示全部楼层
只是在谷歌上找到了“反应堆函数参考”。
https://knowledge.autodesk.com/search-result/caas/CloudHelp/cloudhelp/2016/ENU/AutoCAD-AutoLISP/files/GUID-B83B512E-CEF6-43C5-9099-398999E254AF-htm.html
李,谢谢你的时间和努力!
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 18:30:18 | 显示全部楼层
 
AutoLISP函数中已经存在相关的开始字符[V]。酒店雇员和饭馆雇员
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 18:36:32 | 显示全部楼层
我没有想到ACAD的帮助文件中会有AutoLISP函数!
立即下载脱机帮助。
谢谢,塔瓦!
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 18:42:20 | 显示全部楼层
不客气。
 
你的帖子鼓励我搜索解决方案,唯一阻碍我的是如何找出是否已经选择了对象,所以我搜索了系统变量以寻找一匹马,但我空手而出,直到李一如既往地用答案让我们惊讶,老实说,我以前不知道ssgetfirst函数。
 
干得好,李。
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 18:49:15 | 显示全部楼层
有时我觉得他的母语是LISP,他的第二语言是英国英语。
很高兴听到你向他学习。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:53:55 | 显示全部楼层
谢谢你们俩
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

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

© 2020-2025 乐筑天下

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