当前位置: 首页 > news >正文

做优化的网站电话wordpress 5.0.2 发布失败

做优化的网站电话,wordpress 5.0.2 发布失败,李沧网站建设公司,北京网站开发品牌一、AutoCAD .NET API 事件机制 1. 事件监听核心 - Database.ModifyObjects 事件 当数据库中的实体(如图形对象)发生修改时触发,包括: - 几何属性变更(移动、缩放、旋转)。 - 非几何属性变更&#xff08…

一、AutoCAD .NET API 事件机制

 

1. 事件监听核心

 

-  Database.ModifyObjects  事件

当数据库中的实体(如图形对象)发生修改时触发,包括:

 

- 几何属性变更(移动、缩放、旋转)。

 

- 非几何属性变更(颜色、线型、图层)。

 

- 删除或复制操作(需结合事件参数判断)。

 

- 事件参数  ObjectModifiedEventArgs 

 

-  GetModifiedObjectIds(OpenMode) :获取修改的实体ID列表, OpenMode  控制访问权限(如 ForRead 或 ForWrite )。

 

- 通过遍历实体ID,获取对应的  Entity  对象进行操作。

 

二、实体移动检测原理

 

1. 几何包围盒( GeometricExtents )

 

- 定义:

每个实体( Entity )都有一个  GeometricExtents  属性,表示其在三维空间中的最小包围盒,包含:

 

-  MinPoint :包围盒最小角点坐标(X,Y,Z)。

 

-  MaxPoint :包围盒最大角点坐标(X,Y,Z)。

 

- 中心点计算:

中心点 =  (MinPoint + MaxPoint) / 2 ,用于表征实体的位置。

移动判断逻辑:若修改前后中心点坐标差异超过阈值(如 1e-9 ),则认为实体发生移动

 

核心逻辑流程
 
1. 事件注册:
通过  RegisterIndexEvent  命令绑定  ModifyObjects  事件,开始监听实体修改。
 
2. 移动检测:
 
- 遍历所有修改的实体,获取新旧版本的包围盒中心点。
 
- 对比中心点差异,判断是否为移动操作。
 
3. 颜色变更:
 
- 生成随机  ColorIndex ,排除绿色(3号)和当前颜色索引。
 
- 直接设置  entity.ColorIndex = newIndex ,触发视觉更新。
 
4. 事件注销:
通过  UnregisterIndexEvent  移除事件监听,释放资源。

 

using Autodesk.AutoCAD.Runtime;

using Autodesk.AutoCAD.ApplicationServices;

using Autodesk.AutoCAD.DatabaseServices;

using Autodesk.AutoCAD.EditorInput;

using Autodesk.AutoCAD.Geometry;

using System;

 

public class ColorIndexChangeDemo

{

    private Document doc;

    private Database db;

    private Editor ed;

    private const int GreenColorIndex = 3; // 绿色对应的ColorIndex(3号色为标准绿色)

    private readonly Random random = new Random();

 

    [CommandMethod("RegisterIndexEvent")]

    public void RegisterIndexEvent()

    {

        doc = Application.DocumentManager.MdiActiveDocument;

        db = doc.Database;

        ed = doc.Editor;

        

        db.ModifyObjects += OnEntityMoved; // 注册移动事件

        ed.WriteMessage("\n已启用ColorIndex变色功能(避免3号绿色)");

    }

 

    private void OnEntityMoved(object sender, ObjectModifiedEventArgs e)

    {

        try

        {

            using (Transaction trans = doc.TransactionManager.StartTransaction())

            {

                foreach (ObjectId objId in e.GetModifiedObjectIds(OpenMode.ForWrite))

                {

                    Entity entity = trans.GetObject(objId, OpenMode.ForWrite) as Entity;

                    if (entity == null) continue;

 

                    // 检测移动(基于包围盒中心点)

                    if (IsEntityMoved(entity, trans))

                    {

                        ChangeColorByIndex(entity); // 修改ColorIndex

                        ed.WriteMessage($"\n实体{entity.GetType().Name}颜色已更新为索引{entity.ColorIndex}");

                    }

                }

                trans.Commit();

            }

        }

        catch (Exception ex)

        {

            ed.WriteMessage($"\n错误:{ex.Message}");

        }

    }

 

    /// <summary>

    /// 检测实体移动(包围盒中心点变化)

    /// </summary>

    private bool IsEntityMoved(Entity entity, Transaction trans)

    {

        using (DBObject oldObj = trans.GetObject(entity.Id, OpenMode.ForRead, true))

        {

            if (oldObj is not Entity oldEntity) return false;

            return !GetCenter(oldEntity).IsEqualTo(GetCenter(entity), 1e-9);

        }

    }

 

    /// <summary>

    /// 获取包围盒中心点

    /// </summary>

    private Point3d GetCenter(Entity entity)

    {

        GeometricExtents extents = entity.GeometricExtents;

        return extents.IsValid ? 

            new Point3d((extents.MinPoint.X + extents.MaxPoint.X)/2, 

                        (extents.MinPoint.Y + extents.MaxPoint.Y)/2, 

                        (extents.MinPoint.Z + extents.MaxPoint.Z)/2) : 

            Point3d.Origin;

    }

 

    /// <summary>

    /// 安全修改ColorIndex(避开绿色和当前索引)

    /// </summary>

    private void ChangeColorByIndex(Entity entity)

    {

        int currentIndex = entity.ColorIndex; // 获取当前索引

        int newIndex;

 

        do

        {

            // 生成1-255的随机索引(ColorIndex范围:0=随层,1-255为具体颜色)

            newIndex = random.Next(1, 256); 

        } while (newIndex == GreenColorIndex || newIndex == currentIndex); // 排除绿色和当前索引

 

        entity.ColorIndex = newIndex; // 直接设置索引

    }

 

    [CommandMethod("UnregisterIndexEvent")]

    public void UnregisterIndexEvent()

    {

        if (db != null)

        {

            db.ModifyObjects -= OnEntityMoved;

            ed.WriteMessage("\n已停止ColorIndex变色功能");

        }

    }

}

 

 

http://www.dtcms.com/a/537507.html

相关文章:

  • 商城建设公司湖南好搜公司seo
  • 在 Windows系统下将 YOLOv5 模型导出为 ONNX 文件
  • 数字化利器,扔掉getdata吧
  • 个人网站建设价格表wordpress post class
  • 做网站写代码好还是模板c 网站开发视频教程
  • 粉末涂料 技术支持 东莞网站建设建设网站困难的解决办法
  • 网站开发工程师岗位说明书移动网站建设cnfg
  • linxu下安装纯cpu模式的pytorch以及国内源安装方法
  • C++ 常见代码异味(Code Smells)
  • 手写线程池第2弹:并发与并行深度解析:从CPU原理到高并发系统设计的核心技术
  • 国产三维CAD实现复杂实体快速转换钣金 | 中望3D 2026亮点速递(9)
  • 免费网站建设专业的公司软件设计师教程
  • 关于企业的网站wordpress建站seo
  • Java数据结构:Stack(栈)Queue(队列)
  • Python中的列表推导式、字典推导式和集合推导式的性能和应用场景?
  • Spring全家桶面试题, 只补充细节版本
  • 做网站可以挣钱吗微信公众平台网页版登录
  • 第2章-类加载子系统
  • 网站左侧悬浮导航芜湖学校网站建设电话
  • PyTorch2 Python深度学习 - 简介以及入门
  • 定制版网站建设费用湘潭网站建设湘潭振企专业
  • 自己做的小网站如何发布网络营销案例范文
  • 单体架构中的事件驱动架构:Java应用程序的渐进式重构
  • 成都网站开发的公司吉安县规划建设局网站
  • 有了域名怎么建设网站淘宝客网站是怎么做的
  • 铁岭做网站大学网页设计与制作教程
  • 工商工事上哪个网站做西安网站制作公司排名
  • 机关单位网站建设申请公司简介模板图片
  • 【Delphi】操纵EXE文件中的主图标(MAINICON)
  • 彭州建设网站陕西省建设执业资格注册中心网站