【C#】【EXCEL】BumblebeeComponentsAnalysisGH_Ex_Ana_CondUnique.cs

news/2024/9/18 14:44:57/ 标签: c#, excel, python

这段代码定义了一个名为 GH_Ex_Ana_CondUnique 的 Grasshopper 组件。以下是该组件的功能和介绍:

功能介绍:
这个组件是用于在 Excel 范围内添加基于唯一值的条件格式。它允许用户高亮显示工作表中的唯一值或非唯一值。

主要特点:

  1. 条件格式化:基于唯一值对 Excel 范围应用条件格式。
  2. 颜色选择:允许用户指定高亮显示的颜色。
  3. 翻转选项:可以选择高亮显示唯一值或非唯一值。
  4. 清除功能:可以清除现有的条件格式。
  5. 激活控制:用户可以控制是否应用条件格式。

组件参数:

  • 输入:

    1. 工作表(Worksheet)
    2. 范围(Range)
    3. 单元格颜色(Cell Color)
    4. 翻转选项(Flip)
    5. 清除选项(Clear)
    6. 激活选项(Activate)
  • 输出:

    1. 更新后的范围(Updated Range)

使用流程:

  1. 用户提供 Excel 工作表和要应用格式的范围。
  2. 设置高亮颜色、是否翻转(高亮非唯一值)、是否清除现有条件、是否激活。
  3. 如果激活,组件将应用或清除条件格式。
  4. 输出更新后的范围。

这个组件是 Grasshopper 环境中用于 Excel 数据分析和可视化的工具之一,特别适用于需要快速识别数据集中唯一或重复值的场景。它提供了一种程序化的方式来应用 Excel 的条件格式功能,使数据分析和展示更加高效和灵活。

Flow diagram

Yes / 是
Yes / 是
No / 否
No / 否
Start / 开始
Initialize Component / 初始化组件
Register Input Parameters / 注册输入参数
Register Output Parameters / 注册输出参数
SolveInstance Method / SolveInstance 方法
Get Worksheet Data / 获取工作表数据
Get Range Data / 获取范围数据
Get Color, Flip, Clear, Activate / 获取颜色,翻转,清除,激活参数
Activate? / 是否激活?
Clear? / 是否清除?
Clear Conditions / 清除条件
Add Conditional Unique / 添加条件唯一格式
Set Output Data / 设置输出数据
End / 结束

这个更新后的流程图包含了每个步骤的中英文标签,更好地对应了代码中的英文和您要求的中文说明。图表展示了从组件初始化到条件格式应用的整个过程,包括数据获取、条件检查和最终的输出设置。

每个节点都包含了英文说明和对应的中文翻译,使得流程图更容易理解和跟踪代码的执行过程。开始和结束节点使用了不同的样式以突出显示。

这个流程图应该能够清晰地展示 GH_Ex_Ana_CondUnique 类的主要执行流程,同时满足您对中英双语说明的要求。

Description

public class GH_Ex_Ana_CondUnique : GH_Ex_Rng__Base
{/// <summary>/// 初始化 GH_Ex_Ana_CondUnique 类的新实例。/// Initializes a new instance of the GH_Ex_Ana_CondUnique class./// </summary>public GH_Ex_Ana_CondUnique(): base("Conditional Unique", "Unique","Add conditional formatting to a Range based on unique values",Constants.ShortName, Constants.SubAnalysis){}

说明:

  • 这是组件的构造函数。它调用基类构造函数,设置组件的名称、昵称、描述和类别。
  • “Conditional Unique” 是组件的全名,“Unique” 是简称。
  • 描述说明了组件的功能:基于唯一值为 Range 添加条件格式。
    /// <summary>/// 设置组件的暴露级别。/// Set Exposure level for the component./// </summary>public override GH_Exposure Exposure{get { return GH_Exposure.secondary; }}

说明:

  • 这个属性定义了组件在 Grasshopper 界面中的可见性级别。
  • GH_Exposure.secondary 表示这是一个次要组件,通常在子菜单或高级选项中显示。
    /// <summary>/// 注册此组件的所有输入参数。/// Registers all the input parameters for this component./// </summary>protected override void RegisterInputParams(GH_Component.GH_InputParamManager pManager){base.RegisterInputParams(pManager);pManager[1].Optional = true;pManager.AddColourParameter("Cell Color", "C", "The cell highlight color", GH_ParamAccess.item, Sd.Color.LightGray);pManager[2].Optional = true;pManager.AddBooleanParameter("Flip", "F", "If true, non unique values will be highlighted", GH_ParamAccess.item, false);pManager.AddBooleanParameter("Clear", "_X", "If true, the existing conditions will be cleared", GH_ParamAccess.item, false);pManager.AddBooleanParameter("Activate", "_A", "If true, the condition will be applied", GH_ParamAccess.item, false);pManager[5].Optional = true;}

说明:

  • 这个方法注册了组件的所有输入参数。
  • 首先调用基类的 RegisterInputParams 方法来注册基本参数。
  • 然后添加特定于此组件的参数:
    1. 单元格颜色(Cell Color):用于高亮显示的颜色。
    2. 翻转(Flip):决定是否高亮显示非唯一值。
    3. 清除(Clear):是否清除现有条件。
    4. 激活(Activate):是否应用条件。
  • 部分参数被设置为可选(Optional)。
    /// <summary>/// 注册此组件的所有输出参数。/// Registers all the output parameters for this component./// </summary>protected override void RegisterOutputParams(GH_Component.GH_OutputParamManager pManager){base.RegisterOutputParams(pManager);}

说明:

  • 这个方法注册组件的输出参数。
  • 在这个案例中,它只是调用基类的 RegisterOutputParams 方法,没有添加额外的输出。
    /// <summary>/// 这是实际执行工作的方法。/// This is the method that actually does the work./// </summary>/// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>protected override void SolveInstance(IGH_DataAccess DA){// 获取工作表数据IGH_Goo gooS = null;DA.GetData(0, ref gooS);ExWorksheet worksheet = new ExWorksheet();bool hasWs = gooS.TryGetWorksheet(ref worksheet);// 获取范围数据IGH_Goo gooR = null;DA.GetData(1, ref gooR);ExRange range = new ExRange();if (!gooR.TryGetRange(ref range, worksheet)) return;if (!hasWs) worksheet = range.Worksheet;// 获取颜色参数Sd.Color color = Sd.Color.LightGray;DA.GetData(2, ref color);// 获取翻转选项bool flip = false;DA.GetData(3, ref flip);// 获取清除选项bool clear = false;DA.GetData(4, ref clear);// 获取激活选项bool activate = false;DA.GetData(5, ref activate);// 如果激活,执行条件格式化if (activate){if (clear) range.ClearConditions();range.AddConditionalUnique(color, flip);}// 设置输出数据DA.SetData(0, range);}

说明:

  • 这是组件的核心方法,执行主要的逻辑。
  • 步骤包括:
    1. 获取工作表和范围数据。
    2. 获取用户输入的颜色、翻转、清除和激活选项。
    3. 如果激活,则应用条件格式:
      • 如果需要清除,先清除现有条件。
      • 添加基于唯一值的条件格式。
    4. 将更新后的范围设置为输出。
    /// <summary>/// 为组件提供一个图标。/// Provides an Icon for the component./// </summary>protected override System.Drawing.Bitmap Icon{get{return Properties.Resources.BB_Cond_Unique_01;}}/// <summary>/// 获取此组件的唯一ID。发布后请勿更改此ID。/// Gets the unique ID for this component. Do not change this ID after release./// </summary>public override Guid ComponentGuid{get { return new Guid("28ad7faa-df68-4797-a884-5869f6548bf5"); }}

说明:

  • Icon 属性提供组件的图标。
  • ComponentGuid 属性返回组件的唯一标识符,这对于 Grasshopper 识别和管理组件很重要。

Code

using Grasshopper.Kernel;
using Grasshopper.Kernel.Parameters;
using Grasshopper.Kernel.Types;
using Rhino.Geometry;
using System;
using System.Collections.Generic;
using Sd = System.Drawing;namespace Bumblebee.Components
{// 定义一个基于 GH_Ex_Rng__Base 的 Grasshopper 组件public class GH_Ex_Ana_CondUnique : GH_Ex_Rng__Base{/// <summary>/// 初始化 GH_Ex_Ana_CondUnique 类的新实例。/// </summary>public GH_Ex_Ana_CondUnique(): base("Conditional Unique", "Unique","Add conditional formatting to a Range based on unique values",Constants.ShortName, Constants.SubAnalysis){// 构造函数调用基类构造函数,设置组件名称、昵称、描述和类别}/// <summary>/// 设置组件的暴露级别。/// </summary>public override GH_Exposure Exposure{get { return GH_Exposure.secondary; } // 设置为次要组件}/// <summary>/// 注册此组件的所有输入参数。/// </summary>protected override void RegisterInputParams(GH_Component.GH_InputParamManager pManager){base.RegisterInputParams(pManager); // 调用基类方法注册基本参数pManager[1].Optional = true; // 设置第二个参数为可选pManager.AddColourParameter("Cell Color", "C", "The cell highlight color", GH_ParamAccess.item, Sd.Color.LightGray); // 添加颜色参数pManager[2].Optional = true;pManager.AddBooleanParameter("Flip", "F", "If true, non unique values will be highlighted", GH_ParamAccess.item, false); // 添加翻转选项pManager[3].Optional = true;pManager.AddBooleanParameter("Clear", "_X", "If true, the existing conditions will be cleared", GH_ParamAccess.item, false); // 添加清除选项pManager[4].Optional = true;pManager.AddBooleanParameter("Activate", "_A", "If true, the condition will be applied", GH_ParamAccess.item, false); // 添加激活选项pManager[5].Optional = true;}/// <summary>/// 注册此组件的所有输出参数。/// </summary>protected override void RegisterOutputParams(GH_Component.GH_OutputParamManager pManager){base.RegisterOutputParams(pManager); // 调用基类方法注册输出参数}/// <summary>/// 这是实际执行工作的方法。/// </summary>/// <param name="DA">用于从输入检索数据并存储到输出的 DA 对象。</param>protected override void SolveInstance(IGH_DataAccess DA){IGH_Goo gooS = null;DA.GetData(0, ref gooS); // 获取第一个输入参数(工作表)ExWorksheet worksheet = new ExWorksheet();bool hasWs = gooS.TryGetWorksheet(ref worksheet); // 尝试获取工作表IGH_Goo gooR = null;DA.GetData(1, ref gooR); // 获取第二个输入参数(范围)ExRange range = new ExRange();if (!gooR.TryGetRange(ref range, worksheet)) return; // 尝试获取范围,如果失败则返回if (!hasWs) worksheet = range.Worksheet; // 如果没有工作表,使用范围的工作表Sd.Color color = Sd.Color.LightGray;DA.GetData(2, ref color); // 获取高亮颜色bool flip = false;DA.GetData(3, ref flip); // 获取翻转选项bool clear = false;DA.GetData(4, ref clear); // 获取清除选项bool activate = false;DA.GetData(5, ref activate); // 获取激活选项if (activate) // 如果激活{if (clear) range.ClearConditions(); // 如果需要清除,清除现有条件range.AddConditionalUnique(color, flip); // 添加条件唯一格式}DA.SetData(0, range); // 设置输出数据为更新后的范围}/// <summary>/// 为组件提供一个图标。/// </summary>protected override System.Drawing.Bitmap Icon{get{// 返回组件的图标return Properties.Resources.BB_Cond_Unique_01;}}/// <summary>/// 获取此组件的唯一ID。发布后请勿更改此ID。/// </summary>public override Guid ComponentGuid{get { return new Guid("28ad7faa-df68-4797-a884-5869f6548bf5"); } // 返回组件的唯一标识符}}
}


http://www.ppmy.cn/news/1515934.html

相关文章

稳石机器人 | 工业级AMR S1200L,专为多样化需求设计,柔性拓展更易用

近日&#xff0c;稳石机器人重磅推出基于新品控制器ROC1000的全新移动机器人AMR S1200L&#xff0c;专为满足生产制造和仓储物流的多样化需求而设计&#xff0c;无需改造现场&#xff0c;最快可在1周内完成部署。 重载型AMR-S1200L设计注重实用性和灵活性&#xff0c;可在室内…

解决执行npm run dev报错node: --openssl-legacy-provider is not allowed in NODE_OPTIONS

问题&#xff1a; 最近下载了一个开源系统&#xff0c;执行npm install很顺利&#xff0c;以为大功告成&#xff0c;结果运行npm run dev时报错node: --openssl-legacy-provider is not allowed in NODE_OPTIONS 解决方法&#xff1a; 应用程序配置&#xff08;package.json&a…

Ansible初识

ansible初识 Ansible是一种自动化工具&#xff0c;用于配置管理、应用程序部署和任务自动化。它基于Python语言开发&#xff0c;使用SSH协议进行通信&#xff0c;并且不需要在被管理的主机上安装任何客户端。Ansible使用简单的YAML语言来描述任务和配置&#xff0c;使得操作简…

测试用例的设计

*涉及概念来源于《软件测试的艺术》 目录 一、为什么要设计测试用例&#xff1f; 二、黑盒测试与白盒测试介绍 三、测试用例常见设计方法 1.黑盒测试(功能测试) 2.白盒测试(结构测试) 四、测试策略 五、测试用例怎么写 一、为什么要设计测试用例&#xff1f; 由于时间…

一本读懂数据库发展史的书

数据库及其存储技术&#xff0c;一直以来都是基础软件的主力。数据库系统的操作接口标准&#xff0c;也是应用型软件的重要接口&#xff0c;关系重大。 作为最“有感”的系统软件&#xff0c;数据库的历史悠久、品类繁多、创新活跃。 对数据库历史发展的介绍&#xff0c;有利…

前端知识点

1.常见文本标签 2.属性 3.区块 4.表单 如果那个性别只能是单选的话要加上name属性 css 相邻选择器就是跟在被选中的里面的所有 js基本语法 js函数&#xff1a;就跟C语言差不多啊 改文本 引入js

【C#】【EXCEL】Bumblebee/Classes/ExColumn.cs

文章目录 Bumblebee/Classes/ExColumn.csFlow diagramDescriptionCode Bumblebee/Classes/ExColumn.cs Flow diagram #mermaid-svg-6WUm4r0wDJG9uelI {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-6WUm4r0wDJG9ue…

[Algorithm][综合训练][对称之美][经此一役小红所向无敌][连续子数组最大和]详细讲解

目录 1.对称之美1.题目链接2.算法原理详解 && 代码实现 2.经此一役小红所向无敌1.题目链接2.算法原理详解 && 代码实现 3.连续子数组最大和1.题目链接2.算法原理详解 && 代码实现 1.对称之美 1.题目链接 对称之美 2.算法原理详解 && 代码实现…

C# 循环访问目录树详解与示例

文章目录 一、目录树遍历的概念二、使用System.IO命名空间三、DirectoryInfo和FileInfo类四、递归遍历目录树五、示例&#xff1a;列出目录树中的所有文件和文件夹六、异常处理七、迭代方法八、总结 在C#中&#xff0c;访问文件系统是常见的需求之一。有时我们需要遍历目录树以…

使用SQLite进行Python简单数据存储的线程安全解决方案

在 Python 中使用 SQLite 进行简单数据存储时&#xff0c;线程安全是一个需要注意的问题。SQLite 本身是线程安全的&#xff0c;但在多线程环境下&#xff0c;可能仍然需要做一些额外的工作来确保数据访问的安全性。 1、问题背景 一位开发者正在编写一个简单的聊天服务器和客户…

leetcode 数组+哈希+双指针+子串+滑动窗口

——————双指针 283. 移动零 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] …

sheng的学习笔记-AI-半监督学习

AI目录&#xff1a;sheng的学习笔记-AI目录-CSDN博客 基础知识 什么是半监督学习 我们在丰收季节来到瓜田&#xff0c;满地都是西瓜&#xff0c;瓜农抱来三四个瓜说这都是好瓜&#xff0c;然后再指着地里的五六个瓜说这些还不好&#xff0c;还需再生长若干天。基于这些信息&a…

数学基础 -- 微积分之线性化

微积分中的线性化 在线性代数和微积分中&#xff0c;线性化是指使用一个线性函数来近似描述非线性函数在某一点附近的行为。在微积分中&#xff0c;线性化通常是通过泰勒展开将一个非线性函数线性化的过程。 线性化公式 给定一个函数 f ( x ) f(x) f(x)&#xff0c;我们可以…

微信小程序开发经验记录

1、把微信开发者工具安装好后&#xff0c;创建小程序。 AppID可以注册下&#xff0c;后续小程序上线会用到&#xff0c;前期可以使用测试号先开发程序&#xff0c;后续修改AppID即可。 模板选择基础模板就行。 2、开发页面如下。 左上角可以控制几个窗口的打开和关闭。模拟器窗…

arm64--内嵌汇编

内嵌汇编代码基本用法 1.作用&#xff1a;对于特定重要和时间敏感的代码进行优化&#xff0c;同时在C语言中访问某些特殊指令&#xff08;例如内存屏障指令&#xff09;来实现特殊功能 2.内嵌汇编代码主要有两种形式 基础内嵌汇编代码&#xff1a;不带任何参数 扩展内嵌汇…

【Datawhale AI夏令营第四期】 浪潮源大模型应用开发方向笔记 Task05 源大模型微调实战代码精读 RAG测试 AI简历助手代码优化 网课剩余部分

【Datawhale AI夏令营第四期】 浪潮源大模型应用开发方向笔记 Task05 源大模型微调实战代码精读 RAG测试 AI简历助手代码优化 网课剩余部分 教程基础背景知识&#xff1a; 微调能解决的问题正好是我需要的——模型在某个特定方面上能力不够。我感觉这种情况适用于让模型去完成…

数据仓库系列 5:什么是事实表和维度表,它们有什么作用?

目录 1. 引言&#xff1a;事实表与维度表的魔力2. 事实表&#xff1a;业务活动的数字足迹2.1 什么是事实表?2.2 事实表的特征2.3 事实表的类型2.4 事实表示例2.5 事实表的作用2.6 事实表的设计原则2.7 事实表的查询示例 3. 维度表&#xff1a;为数据赋予意义3.1 什么是维度表?…

vscode附着调试

我有一个程序&#xff0c;是别的程序调用启动的&#xff0c;所以需要等它的进程启动后&#xff0c;再附着上去调试。 编写Launch.json: {"version": "0.2.0","configurations": [{"name": "(gdb) Launch","type"…

day 39 代码随想录 | 打家劫舍 动态规划

198.打家劫舍 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警。 给定一个代表每个…

暑期算法训练

目录 A.糖果&#xff08;Candy) B.小红的数组重排 C.牛牛与LCM D.子串 E.勤奋的杨老师 F.清楚姐姐跳格子 G.方块 I H.PUBG A.糖果&#xff08;Candy) 思路 &#xff1a;贪心&#xff0c;为了使操作数最少&#xff0c;我们要尽可能的先吃第二个盒子里的糖果&#x…