乐筑天下

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

[编程交流] Lisp反应堆用于检测长安

[复制链接]
rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 14:08:11 | 显示全部楼层
 
我的代码并没有改变任何东西,只是让我看到了SDI的状态,因为它不在选项卡级别上运行,而只在文档级别上运行。为什么不为revcloud命令本身做一个包装,在执行revcloud命令本身之前,测试模型/纸张空间?
回复

使用道具 举报

28

主题

317

帖子

292

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
140
发表于 2022-7-5 14:10:31 | 显示全部楼层
唯一需要的是具有多视图布局的dwg。如果您切换到pspace V,则只有在没有活动mview的情况下,cvport才为6。在pspace中,如果mview处于活动状态,cvport将为2,因此为什么原始代码有2个嵌套的if语句。
 
大致上这就是原始代码所做的
-如果在模型中:将rev vars设置为300
-如果在纸上,那么。。。
[列表]
  • 如果视口处于活动状态:禁用视口、缩放扩展和重新激活视口。(左rev vars不变)
  • 如果没有vport处于活动状态:zoom extend,并将rev vars更改为6
    它不能用一个if语句来完成,因此在翻译过程中您错过的是,当您进入PS if/没有活动的mviews时,您的代码不会进行缩放扩展。即使修复了这个问题,您仍然会有一个我的版本没有的不想要的行为:vars“*REVCLOUDMAXARCLENGTH”“*revcloudminarlength”不依赖于dwg。如果在dwg A中进入模型,进入dwg B,然后进入dwg B中的PS,“*REVCLOUDMAXARCLENGTH”和“*REVCLOUDMINARCLENGTH”将设置为6。将活动dwg再次更改为A(在模型中),“*REVCLOUDMAXARCLENGTH”和“*REVCLOUDMINARCLENGTH”仍将设置为6,而实际上,您需要将其设置为300,因此原始代码分为两部分:因为您还需要检测活动图形中的更改,不幸的是,如果我们尝试使用:vlr documentBecameCurrent,那么反应堆的多次燃烧又回来了。
    关于你的第三点和第四点(至少在CAD 2015中,这似乎是你正在使用的版本),这正是我在之前的消息中所说的::VLR documentBecameCurrent触发器3次:当文档失去焦点时触发一次,当它恢复焦点时触发两次。(它唯一一次只反应两次似乎是,第一次文档失去焦点:它没有反应,这本身就相当令人困惑。之后它会被系统地触发)。但是,它不受打开其他dwg的数量或在没有反应器的文档之间切换的次数的影响。请试试我的反应堆监测反应堆,如果你得到与我相同的结果,请告诉我。您将能够看到什么被触发、何时触发、由什么触发以及在哪个图形中触发。这很有启发性,即使它带来的问题比答案多。我很好奇Bricscad是否也有同样的行为。。。
    (vlr DocManager Reactor“Jef!:reactormonSTRdescription”'((:vlr documentBecameCurrent.Jef!:reactormon))(defun Jef!:reactormon(调用Reactor commandInfo/reactType reactData reactCall dwgname reactEvent reactCallback);ori(setq;reactInfo own;获取反应器类型reactictype(vl符号名称(vlr类型调用反应器));获取应用数据reactData(vlr数据调用reactor);获取回调列表reactCall(car(vlr reactions calling reactor));获取dwgname dwgname(vla get name(car commandInfo));提取事件Reactor reactEvent(vl符号名称(car reactCall));提取回调函数reactCallback(vl符号名(cdr reactCall))(警报(strcat)(“reactType”“reactData”“(vl princ to string(vlr reactions calling reactor))”)“\n已在以下dwg中反应:“\n-->”dwgname”“(vl princ to string(vlr notification calling reactor))”
  • 回复

    使用道具 举报

    6

    主题

    29

    帖子

    3

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    51
    发表于 2022-7-5 14:14:00 | 显示全部楼层
    你好,我想猜猜Lisp程序是怎么回事,但我不能。。。
     
    谁能给我解释一下吗?
     
    谢谢
     
    回复

    使用道具 举报

    28

    主题

    317

    帖子

    292

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    140
    发表于 2022-7-5 14:17:21 | 显示全部楼层
    你好,Renkor。
    这里有相当多的代码片段-正在进行中-主要的一段(我上一篇文章的最后一段代码)是关于主题的。它是一个反应器,当通过命令“starte”激活时,将自动更改“*REVCLOUDMAXARCLENGTH”&“*revcloudminarlength”变量(用于驱动修订云的尺寸)根据布局和dwg更改,模型中的值为300,图纸空间中的值为6。它还将在布局更改时自动缩放并扩展任何图纸空间。 
     
    原始代码有一个被多次触发的副作用(它是Functional,但由于它打印了
    回复

    使用道具 举报

    6

    主题

    29

    帖子

    3

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    51
    发表于 2022-7-5 14:21:01 | 显示全部楼层
    Ok, thanks a lot.
    回复

    使用道具 举报

    发表回复

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

    本版积分规则

    • 微信公众平台

    • 扫描访问手机版

    • 点击图片下载手机App

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

    GMT+8, 2025-3-15 06:02 , Processed in 1.525642 second(s), 60 queries .

    © 2020-2025 乐筑天下

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