兰顿蚂蚁——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();
        }
    }
相关推荐
夜影风17 小时前
Redis集群创建时出现“Node xxx.xxx is not empty”问题处理
数据库·redis·缓存
utf8mb4安全女神17 小时前
【Redis数据库】哨兵集群/redis集群/安装配置/主从复制/数据持久化操作/数据结构/安全限制/PHP redis/
linux·服务器·数据结构·数据库·redis·缓存
lzz的编码时刻17 小时前
Liquibase 入门实战教程
数据库·运维开发
Zk.Sun17 小时前
Linux设置触屏双击距离容差
linux·运维·数据库
山峰哥18 小时前
数据库工程:Explain执行计划对比实战指南‌
数据库·sql·oracle·深度优先·宽度优先
crisps_ww19 小时前
自媒体运营分析-BI可视化仪表盘制作
数据库
Geek-Chow19 小时前
微服务认证与授权:01 — 概念
java·前端·数据库
烤代码的吐司君19 小时前
Redis IO 多路复用原理与引入原因深度解析
数据库·redis·php
韶博雅20 小时前
oracle密码策略检查
数据库·oracle
Database_Cool_20 小时前
单库瓶颈解决方案首选:阿里云 PolarDB-X 平滑替代分库分表
数据库·阿里云