兰顿蚂蚁——CAD二次开发

效果如下:

cs 复制代码
    private static void OnTick(object sender, EventArgs e)
    {
        if (_currentStep >= _maxSteps)
        {
            Stop();
            return;
        }

        // 检查是否暂停
        if (_isPaused)
            return;

        Document doc = Application.DocumentManager.MdiActiveDocument;
        Database db = doc.Database;
        var ed = doc.Editor;

        using (doc.LockDocument())
        {
            using (Transaction tr = db.TransactionManager.StartTransaction())
            {
                BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead);
                BlockTableRecord ms = (BlockTableRecord)tr.GetObject(
                    bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);

                // 第一步暂停逻辑:如果第一步还没完成且需要第一步暂停
                if (_pauseAtFirstStep && !_firstStepCompleted)
                {
                    // 只执行一步
                    StepAllAnts(tr, ms);
                    _currentStep++;
                    _firstStepCompleted = true;

                    // 立即暂停
                    _isPaused = true;

                    tr.Commit();
                    ed.UpdateScreen();

                    ed.WriteMessage("\n第一步完成,已暂停。按空格继续。");
                    return; // 直接返回,不再执行后面的代码
                }
                else
                {
                    // 正常执行多步
                    for (int i = 0; i < _stepsPerTick; i++)
                    {
                        if (_currentStep >= _maxSteps)
                            break;

                        StepAllAnts(tr, ms);
                        _currentStep++;
                    }

                    tr.Commit();
                }
            }
            ed.UpdateScreen();
        }
    }
相关推荐
码农学院19 小时前
使用腾讯翻译文本
服务器·数据库·c#
@zulnger19 小时前
正则表达式
数据库·正则表达式
源代码•宸19 小时前
Golang基础语法(go语言error、go语言defer、go语言异常捕获、依赖管理、Go Modules命令)
开发语言·数据库·后端·算法·golang·defer·recover
optimistic_chen19 小时前
【Redis 系列】持久化特性
linux·数据库·redis·分布式·中间件·持久化
Coder码匠19 小时前
从项目实践中学习 Spring 事务范围优化
数据库·spring
我的golang之路果然有问题19 小时前
mysql 个人笔记导出之-数据库时间戳问题以及增删改查
数据库·笔记·学习·mysql·分享·个人笔记
张永清-老清19 小时前
每周读书与学习->JMeter性能测试脚本编写实战(三)如何利用JMeter为MySQL数据库构造测试数据
数据库·测试工具·jmeter·压力测试·性能调优·jmeter性能测试·每周读书与学习
亮子AI19 小时前
注册成功的提示信息怎么写?
数据库·python
Clang's Blog19 小时前
使用 SQL Server Management Studio 还原 .bak 备份文件的完整指南
数据库·sqlserver