【Rhino】【Python】adjust repeated column marks

article/2025/8/3 23:14:43
#coding=utf-8
import rhinoscriptsyntax as rs
import re
import System.Guiddef process_column_marks():# 获取目标图层中的所有文本对象layer_name = "03 STR. DRAFT MEMBER::COLUMN MARK"text_objects = rs.ObjectsByLayer(layer_name, True)if not text_objects or len(text_objects) == 0:print("未在指定图层找到文本对象")return# 存储编号及其对应的对象IDcolumn_marks = {}object_info = []# 提取每个文本对象的编号和位置信息for obj_id in text_objects:if rs.IsText(obj_id):text = rs.TextObjectText(obj_id)# 分割多行文本lines = text.split('\n')# 验证文本格式if len(lines) >= 1:# 提取第一行的编号 (以C开头的编号)first_line = lines[0].strip()if re.match(r'^C[A-Za-z0-9]+', first_line):# 获取文本对象的位置pos = rs.TextObjectPoint(obj_id)# 存储对象信息object_info.append({'id': obj_id,'mark': first_line,'x': pos.X,'y': pos.Y,'text': text})# 按从左到右,从下到上排序(先按Y从小到大,相同Y值则按X从小到大)sorted_objects = sorted(object_info, key=lambda obj: (obj['y'], obj['x']))# 第一步:先统计重复的编号mark_counts = {}for obj in sorted_objects:mark = obj['mark']if mark in mark_counts:mark_counts[mark] += 1else:mark_counts[mark] = 1# 第二步:处理所有重复编号的对象mark_processed = {}for obj in sorted_objects:mark = obj['mark']# 如果是重复的编号if mark_counts[mark] > 1:# 初始化处理计数器if mark not in mark_processed:mark_processed[mark] = 0# 添加后缀 (a, b, c, ...)suffix = chr(97 + mark_processed[mark])  # 97是ASCII中的'a'new_mark = mark + suffix# 更新计数器mark_processed[mark] += 1# 更新文本对象lines = obj['text'].split('\n')lines[0] = new_marknew_text = '\n'.join(lines)rs.TextObjectText(obj['id'], new_text)print("已将重复标记 %s 更改为 %s" % (mark, new_mark))print("处理完成,共处理 %d 个文本对象" % len(sorted_objects))# 运行函数
process_column_marks()

在这里插入图片描述


http://www.hkcw.cn/article/cyignCssec.shtml

相关文章

Goreplay最新版本的安装和简单使用

一:概述 Gor 是一个开源工具,用于捕获实时 HTTP 流量并将其重放到测试环境中,以便使用真实数据持续测试您的系统。它可用于提高对代码部署、配置更改和基础设施更改的信心。简单易用。 项目地址:buger/goreplay: GoReplay is an …

YOLOv5 环境配置指南

系统要求 Windows/Linux/MacOSNVIDIA GPU (推荐) 或 CPUPython 3.8CUDA 11.8 (如果使用 GPU) 安装步骤 1. 安装 Conda 如果还没有安装 Conda,请先从官网下载并安装 Miniconda。 2. 创建虚拟环境 # 创建名为 yolov5 的新环境,使用 Python 3.8 conda…

【算法应用】虚拟力算法VFA用于WSN覆盖,无人机网络覆盖问题

目录 1.虚拟力算法VFA2.WSN覆盖&无人机覆盖应用3.参考文献4.代码获取5.读者交流 1.虚拟力算法VFA 虚拟势场(Virtual Potential Field)最早因解决机器人路径规划及避障问题而被提出。它假设待优化个体会根据某种关系与周围的环境或其他个体产生力的作…

简历制作要精而不简

不得不说,不管是春招,还是秋招,我们在求职时,第一步便是制作一份简历。不得不承认,好的简历,就像一块敲门砖,能让面试官眼前一亮,让应聘成功的概率增添一分。 对于一个初次求职者来…

数据库管理与高可用-MySQL全量,增量备份与恢复

目录 #1.1MySQL数据库备份概述 1.1.1数据备份的重要性 1.1.2数据库备份类型 1.1.3常见的备份方法 #2.1数据库完全备份操作 2.1.1物理冷备份与恢复 2.1.2mysqldump备份与恢复 2.1.3MySQL增量备份与恢复 #3.1制定企业备份策略的思路 #4.1扩展:MySQL的GTID 4.1.1My…

论文解读 - 统一的多模态理解和生成模型综述(上)

一、 简要介绍 近年来,多模态理解模型和图像生成模型都取得了显著的进步。尽管各自取得了成功,这两个领域却独立发展,形成了独特的架构范式:基于自回归的架构主导了多模态理解,而基于扩散的模型则成为图像生成的基石…

核心机制:TCP 断开连接(四次挥手)

断开连接的四次挥手,可能是客户端主动发起的,也可能是服务端主动发起的 而三次握手,一定是客户端先发起的(倒果为因)(先发起的一方定义为客户端) 1.客户端告诉服务器,我要和你断开连接,请你把我删了 2.服务器回应"收到" 3.服务器告诉客户端,我也要和你断开连接,请…

WEBSTORM前端 —— 第3章:移动 Web —— 第3节:移动适配

目录 一、移动Web基础 1.谷歌模拟器 2.屏幕分辨率 3.视口 4.二倍图 二、适配方案 三、rem 适配方案 四、less 1.less – 简介 2.less – 注释 3.less – 运算 4.less – 嵌套 5.less – 变量 6.less – 导入 7.less – 导出 8.less – 禁止导出 五…

【笔记】MSYS2 安装 Python 构建依赖记录Cython + Ninja + Meson + meson-python

#工作记录 📌 安装目标 为构建 Python C 扩展(如 numpy)安装必要依赖: CythonNinjaMeson meson-python ✅ 成功安装命令 pacman -S mingw-w64-x86_64-cython pacman -S mingw-w64-x86_64-ninja pacman -S mingw-w64-x86_64-me…

【染色归一化】staintools工具详讲

staintools工具原代码是没有GPU加速的,代码链接 运行速度较慢,因此,github上有研究者写了pytorch加速版本的staintools 本篇主要讲GPU加速版本的staintools工具的使用教程。 1.背景 目前的公开数据库中的WSI是由不同研究机构制作上传的,这导致WSI有很大的颜色差别,例如:…

历年中山大学计算机保研上机真题

历年中山大学计算机保研上机真题 2025中山大学计算机保研上机真题 2024中山大学计算机保研上机真题 2023中山大学计算机保研上机真题 在线测评链接:https://pgcode.cn/school 不连续1的子串 题目描述 给定一个数字 n n n,输出长度为 n n n 的 01…

历年山东大学计算机保研上机真题

历年山东大学计算机保研上机真题 2025山东大学计算机保研上机真题 2024山东大学计算机保研上机真题 2023山东大学计算机保研上机真题 在线测评链接:https://pgcode.cn/school 从1到100找质数 题目描述 从 1 1 1 到 100 100 100 中找出所有的质数。 输入格式 …

殷咏梅教授:OptiTROP-Breast05亮相2025 ASCO,中国原创TROP2 ADC为mTNBC一线治疗带来新希望

引言 抗体药物偶联物(ADC)以其精准杀伤特性,已成为乳腺癌治疗领域的探索热点。近年来,在全球ADC研发赛道中,中国的ADC力量正逐步崛起,乳腺癌领域首个中国原研、国际品质的TROP2 ADC芦康沙妥珠单抗脱颖而出&…

02.上帝之心算法用GPU计算提速50倍

本文介绍了上帝之心的算法及其Python实现,使用Python语言的性能分析工具测算性能瓶颈,将算法最耗时的部分重构至CUDA C语言在纯GPU上运行,利用GPU核心更多并行更快的优势显著提高算法运算速度,实现了结果不变的情况下将耗时缩短五…

latex 三线表-算法对比表

效果 导入包 \usepackage{booktabs} \usepackage{multirow}表格 \begin{table}[t]\caption{\textbf{Comparison of test results of various algorithms}\label{tab}}\centering\begin{tabular}{ccccc}\toprule\multirow{2}{*}{Algorithms} & \multirow{2}{*}{mAP} &…

蓝桥云课ROS学习C++教程cpp-geeksforgeeks版本

教程 网上教程很多&#xff0c;都可以在蓝桥云课ROS中复习。 #include <bits/stdc.h> using namespace std;int main() {// Creating a map of integer keys// and string valuesmap<int, string> m {{1, "Geeks"},{2,"For"}, {3,"Geek…

rtos,什么意思

RTOS,它的全称是 Real-Time Operating System,中文我们通常称之为“实时操作系统”。 让我们把这个词拆解开来,细细品味: Operating System (操作系统 - OS): 你肯定熟悉我们日常用的 Windows、Linux (桌面版或服务器版)、macOS 等。这些都是操作系统。它们的核心作用是什…

研读论文《Attention Is All You Need》(13)

原文 26 4 Why Self-Attention In this section we compare various aspects of self-attention layers to the recurrent and convolutional layers commonly used for mapping one variable-length sequence of symbol representations ( x 1 , ⋯ , x n ) (x_1,\cdots,x_…

智能体时代的数据安全:企业如何平衡效率与风险

数据来源&#xff1a;企业网D1net 智能体时代的数据安全&#xff1a;企业如何平衡效率与风险&#xff1f; 在数字化转型浪潮中&#xff0c;智能体&#xff08;Autonomous AI Agents&#xff09;正成为企业提升效率的利器。这些能够自主执行任务、分析数据并做出决策的AI系统&…

从模式到架构:Java 工厂模式的设计哲学与工程化实践

一、工厂模式概述 &#xff08;一&#xff09;定义与核心思想 工厂模式&#xff08;Factory Pattern&#xff09;是软件开发中常用的创建型设计模式&#xff0c;其核心思想是将对象的创建过程封装起来&#xff0c;通过工厂类来统一管理对象的创建逻辑。这种模式分离了对象的创…