兰顿蚂蚁——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();
        }
    }
相关推荐
梁萌3 小时前
ShardingSphere分库分表实战
数据库·mysql·实战·shardingsphere·分库分表
川石课堂软件测试3 小时前
Mysql中触发器使用详详详详详解~
数据库·redis·功能测试·mysql·oracle·单元测试·自动化
鹏说大数据3 小时前
数据治理项目实战系列6-数据治理架构设计实战,流程 + 工具双架构拆解
大数据·数据库·架构
唯余旧忆3 小时前
【数据写入】达梦数据库(dm8)merge into写入时序数据速度慢的问题处理
数据库
小二·4 小时前
MyBatis基础入门《十四》多租户架构实战:基于 MyBatis 实现 SaaS 系统的动态数据隔离
数据库·架构·mybatis
白衣衬衫 两袖清风4 小时前
SQL联查案例
数据库·sql
ShirleyWang0124 小时前
VMware如何导入vmdk文件
linux·数据库
gugugu.4 小时前
Redis Set类型完全指南:无序集合的原理与应用
数据库·windows·redis
wang6021252185 小时前
为什么不采用级联删除而选择软删除
数据库·oracle