发布时间:2026/6/29 20:00:26
C# CAD多段线等距分割技巧
在C#对CAD进行二次开发时要将一条多段线Polyline等距分割成多份核心是使用Polyline的GetSplitCurves方法并传入一组在曲线参数域内、按升序排列的切割点参数值。以下是实现将多段线等距分割成10份的完整代码示例using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.EditorInput; using Autodesk.AutoCAD.Geometry; using Autodesk.AutoCAD.Runtime; using System; public class PolylineSplitCommands { [CommandMethod(SplitPolylineEqually)] public void SplitPolylineEqually() { Document doc Application.DocumentManager.MdiActiveDocument; Database db doc.Database; Editor ed doc.Editor; // 1. 选择要分割的多段线 PromptEntityOptions peo new PromptEntityOptions( 请选择一条多段线: ); peo.SetRejectMessage( 请选择一条多段线。); peo.AddAllowedClass(typeof(Polyline), false); PromptEntityResult per ed.GetEntity(peo); if (per.Status ! PromptStatus.OK) return; using (Transaction tr db.TransactionManager.StartTransaction()) { try { // 2. 打开选中的多段线对象 Polyline pline tr.GetObject(per.ObjectId, OpenMode.ForRead) as Polyline; if (pline null) return; // 3. 计算等距分割点参数 int numberOfSegments 10; // 分割成10份 double totalLength pline.Length; double segmentLength totalLength / numberOfSegments; // 准备切割点参数集合注意必须升序排列 DoubleCollection splitParams new DoubleCollection(); // 从第一个分割点开始到最后一个分割点前结束 // 注意GetSplitCurves方法在参数处切割起点和终点的参数不需要加入 for (int i 1; i numberOfSegments; i) { double distance segmentLength * i; // 通过距离获取对应的曲线参数 double param pline.GetParameterAtDistance(distance); splitParams.Add(param); } // 4. 执行分割操作 // 重要GetSplitCurves 要求参数按升序排列且不能包含曲线起点和终点的参数 DBObjectCollection splitCurves pline.GetSplitCurves(splitParams); // 5. 将分割后的新曲线多段线添加到模型空间 BlockTableRecord btr tr.GetObject( SymbolUtilityServices.GetBlockModelSpaceId(db), OpenMode.ForWrite) as BlockTableRecord; foreach (DBObject obj in splitCurves) { Entity newEntity obj as Entity; if (newEntity ! null) { btr.AppendEntity(newEntity); tr.AddNewlyCreatedDBObject(newEntity, true); } } // 6. 可选删除原始多段线 pline.UpgradeOpen(); pline.Erase(); tr.Commit(); ed.WriteMessage($ 成功将多段线等距分割为 {numberOfSegments} 段。); } catch (System.Exception ex) { ed.WriteMessage($ 分割过程中发生错误: {ex.Message}); tr.Abort(); } } } }关键步骤与原理说明获取曲线参数多段线的分割基于其内部参数域通常从0.0到某个最大值。GetParameterAtDistance方法用于将沿曲线的长度距离转换为对应的参数值。参数排序GetSplitCurves方法要求传入的切割参数集合DoubleCollection必须是严格升序排列的否则会导致分割失败或结果错误。分割点计算若要将曲线等分为N段需要在曲线上确定N-1个切割点。代码中循环从i1到iN计算每个等分点的距离并转换为参数。结果处理GetSplitCurves返回一个DBObjectCollection其中包含了分割后产生的所有新曲线对象。需要将这些新实体添加到数据库如模型空间中才能显示。重要注意事项事项说明参数范围不要将曲线起点参数通常为0.0和终点的参数加入splitParams集合否则GetSplitCurves可能抛出异常或产生意外结果。对象状态在事务中原始多段线在分割前应以ForRead模式打开。分割后若需删除原曲线需先调用UpgradeOpen()将其状态改为可写。分割结果分割后生成的是多个独立的曲线对象通常是多个Polyline或Line它们首尾相连共同构成原始路径。参考来源C#.netCAD二次开发 polyline多段线/line直线/曲线 break打断的方法

相关新闻

ChatGPT翻译翻车真相:为什么你写的提示词总被AI“意译”?3步诊断法+5个必改语法陷阱
2026/6/29 20:00:26

ChatGPT翻译翻车真相:为什么你写的提示词总被AI“意译”?3步诊断法+5个必改语法陷阱

更多请点击: https://kaifayun.com 第一章:ChatGPT翻译翻车真相:为什么你写的提示词总被AI“意译”? 当你输入“请将以下英文精准直译为中文,不增不减,保留术语和句式结构”,ChatGPT却输出了一…

阅读更多
面试总说不出亮点?双非应届生秋招求职,请提前准备一个企业级AI应用案例
2026/6/29 20:00:26

面试总说不出亮点?双非应届生秋招求职,请提前准备一个企业级AI应用案例

每年秋招季,AI 应用能力都是运营、产品、数据分析等岗位的常见考察维度。不少应届生会在简历中标注 “熟练使用 ChatGPT 等大模型工具”,但在面试中被问及具体应用场景时,往往只能描述润色文案、总结报告等浅层操作,难以形成差异化…

阅读更多
Redis 内存分配器调优方案
2026/6/29 19:00:26

Redis 内存分配器调优方案

Redis作为高性能的内存数据库,其内存分配效率直接影响系统性能和资源利用率。默认的jemalloc分配器虽能应对多数场景,但在高并发或特殊负载下可能出现内存碎片、分配延迟等问题。本文将深入探讨Redis内存分配器的调优方案,帮助开发者挖掘性能…

阅读更多
Windows本地训练LoRA模型完全指南:从环境配置到效果调优
2026/6/29 21:00:26

Windows本地训练LoRA模型完全指南:从环境配置到效果调优

Windows本地训练LoRA模型完全指南:从环境配置到效果调优 一、前言:为什么自己训练LoRA LoRA(Low-Rank Adaptation)是目前最轻量的模型微调方案。相比动辄几十GB的全量模型训练,LoRA只需几百MB的附加文件,就…

阅读更多
2026深度实测|Copilot高性价比替代方案最全评测,30天轮换实战结论
2026/6/29 21:00:26

2026深度实测|Copilot高性价比替代方案最全评测,30天轮换实战结论

Microsoft Copilot 在行内补全、轻量代码提示上的稳定性一直值得肯定,非常适合日常简单编码、单行语法纠错场景。但面对复杂业务逻辑、多文件联动开发、本土化中文需求适配,以及长期订阅成本问题,我一直在寻找更适配国内开发者的替代工具。我…

阅读更多
Untrunc视频修复工具:三分钟拯救你的损坏视频文件
2026/6/29 21:00:26

Untrunc视频修复工具:三分钟拯救你的损坏视频文件

Untrunc视频修复工具:三分钟拯救你的损坏视频文件 【免费下载链接】untrunc Restore a truncated mp4/mov. Improved version of ponchio/untrunc 项目地址: https://gitcode.com/gh_mirrors/un/untrunc 你是否曾经历过这样的绝望时刻?精心录制的…

阅读更多
基于SpringBoot+Vue的线下音乐演出票务管理系统设计与实现
2026/6/29 21:00:26

基于SpringBoot+Vue的线下音乐演出票务管理系统设计与实现

摘 要 在文化消费升级与线下音乐演出市场持续升温的背景下,传统票务管理模式存在信息不对称、验票效率低、数据统计滞后等痛点,既难以满足观众便捷购票、快速入场的需求,也无法为演出主办方提供精准的票务数据支撑与风险管控手段。构建一套高…

阅读更多
AFE5807超声模拟前端设计:LNA、VCA与CW波束成形器深度解析
2026/6/29 21:00:26

AFE5807超声模拟前端设计:LNA、VCA与CW波束成形器深度解析

1. 项目概述与核心价值在医疗超声成像、工业无损检测这类对微弱信号捕捉要求极高的领域,前端信号调理电路的性能直接决定了整个系统的“视力”上限。你探头接收到的回波信号,可能只有微伏甚至纳伏级别,并且动态范围极大——从紧贴探头的强反射…

阅读更多
电商系统性能压测实战:从JMeter压测到瓶颈定位与优化
2026/6/29 20:00:26

电商系统性能压测实战:从JMeter压测到瓶颈定位与优化

1. 项目概述:为什么性能压测是电商项目的“必修课”最近在复盘谷粒商城这个经典电商项目时,我发现很多朋友把重心都放在了业务功能的实现上,比如秒杀、优惠券、订单流转,这当然没错。但项目上线前,有一个环节的缺失&am…

阅读更多
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告
2026/6/28 0:00:11

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

阅读更多
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?
2026/6/28 0:00:11

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

阅读更多
蒙特卡洛离策略强化学习:工业场景下的无偏评估与稳定训练
2026/6/29 0:00:22

蒙特卡洛离策略强化学习:工业场景下的无偏评估与稳定训练

1. 这不是教科书里的“蒙特卡洛离策略”,而是我在强化学习项目里亲手调通的那套逻辑“Monte Carlo Off-Policy Explained”——看到这个标题,别急着去翻Sutton那本绿皮书第5章。我带过三个工业级强化学习落地项目,从智能仓储调度到金融风控策…

阅读更多
Java开发者转型安全开发:从代码审计到自动化工具实践
2026/6/29 0:00:22

Java开发者转型安全开发:从代码审计到自动化工具实践

1. 转型背景与核心驱动力最近几年,身边不少做Java后端开发的朋友,都开始或多或少地关注起安全开发这个方向。我自己也是从写了七八年Java业务代码,一步步转向了安全领域,现在主要做代码审计和自动化安全工具开发。这个转变不是一时…

阅读更多
HyperFrames 设计、品味与借鉴
2026/6/29 0:00:22

HyperFrames 设计、品味与借鉴

调研对象:https://github.com/heygen-com/hyperframes 核心判断:HyperFrames 最值得学习的不是“用 HTML 渲染视频”这个技术点,而是它把“让 Agent 生成视频”设计成了一套可操作、可验证、可复现的生产协议。 一句话记住:视频生…

阅读更多
GIT修改用户名
2026/6/28 5:47:46

GIT修改用户名

在GIT中修改用户名可按以下步骤操作: 查看当前git的用户名,使用命令git config --list或git config user.name。修改git用户名,使用命令git config --global user.name "xxx(新的用户名)",将其中…

阅读更多
Win11Debloat:让你的Windows系统重获新生的终极优化工具
2026/6/28 14:44:43

Win11Debloat:让你的Windows系统重获新生的终极优化工具

Win11Debloat:让你的Windows系统重获新生的终极优化工具 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and …

阅读更多
技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践
2026/6/28 14:44:39

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter m4s-converter是一个…

阅读更多