【Rhino】【Python】Select Circular Objects Within Specified Radius Range

Rhino Python Script: Selecting Circles by Radius

Overview

This Python script for Rhinoceros (Rhino) selects circular objects within a specified radius range.

Key Features

  • Scans all objects in Rhino
  • Identifies circular objects
  • Filters circles based on user-defined radius range
  • Selects matching circular objects

Code Analysis

python 复制代码
import rhinoscriptsyntax as rs
import Rhino.Geometry as rg

def select_circles_by_radius(min_radius=0, max_radius=float('inf'), tolerance=0.01):
    all_objects = rs.AllObjects()
    circles = []
    
    for obj in all_objects:
        try:
            geometry = rs.coercegeometry(obj)
            if isinstance(geometry, rg.Curve) and geometry.IsCircle(tolerance):
                success, circle = geometry.TryGetCircle()
                if success:
                    radius = circle.Radius
                    if min_radius <= radius <= max_radius:
                        circles.append(obj)
        except Exception as e:
            print("Error processing object:", str(e))
            continue
    
    if circles:
        rs.SelectObjects(circles)
        print("Selected {} circles with radius between {} and {}.".format(len(circles), min_radius, max_radius))
    else:
        print("No circles found with radius between {} and {}.".format(min_radius, max_radius))

# Usage example
select_circles_by_radius(5, 10)

Implementation Details

  1. Module Import : Utilizes rhinoscriptsyntax and Rhino.Geometry.

  2. Function Definition : select_circles_by_radius accepts minimum radius, maximum radius, and tolerance.

  3. Object Iteration: Processes all objects in the document.

  4. Circle Identification:

    • Converts objects to geometry.
    • Checks for curve type and circularity.
  5. Circle Information Extraction : Uses TryGetCircle() method.

  6. Radius Filtering: Checks if the radius is within the specified range.

  7. Object Selection : Selects filtered circles using rs.SelectObjects().

python 复制代码
select_circles_by_radius(5, 10)  # Selects circles with radii between 5 and 10

Applications

  • Selecting circular holes or columns of specific sizes.
  • Locating circular elements in complex models.
  • Quality control for circular object dimensions.
相关推荐
fantasy_arch2 小时前
pytorch例子计算两张图相似度
人工智能·pytorch·python
程序员码歌2 小时前
【零代码AI编程实战】AI灯塔导航-总结篇
android·前端·后端
七七&5563 小时前
2024年08月13日 Go生态洞察:Go 1.23 发布与全面深度解读
开发语言·网络·golang
java坤坤3 小时前
GoLand 项目从 0 到 1:第八天 ——GORM 命名策略陷阱与 Go 项目启动慢问题攻坚
开发语言·后端·golang
元清加油3 小时前
【Golang】:函数和包
服务器·开发语言·网络·后端·网络协议·golang
健康平安的活着4 小时前
java之 junit4单元测试Mockito的使用
java·开发语言·单元测试
书弋江山4 小时前
flutter 跨平台编码库 protobuf 工具使用
android·flutter
WBluuue4 小时前
数学建模:智能优化算法
python·机器学习·数学建模·爬山算法·启发式算法·聚类·模拟退火算法
赴3355 小时前
矿物分类案列 (一)六种方法对数据的填充
人工智能·python·机器学习·分类·数据挖掘·sklearn·矿物分类
大模型真好玩5 小时前
一文深度解析OpenAI近期发布系列大模型:意欲一统大模型江湖?
人工智能·python·mcp