关于dxf文件中,多段线凸度的计算

1.前言

       在前面的CAD中的dxf文件解析(二)中讲到了一些CAD的dxf文件解析点、线、圆弧、圆、块等的思路。下面提供链接:

(二): CAD中的dxf文件解析(二):dxflib的使用_不爱学习 未完待续的博客-CSDN博客_dxflib

  (一):CAD中的dxf文件解析(一):准备工作_不爱学习 未完待续的博客-CSDN博客_dxf解析

关于官方demo文件的下载,还可以参考:

dxflib-src.rar_dxflib-互联网文档类资源-CSDN下载

Dxf_C帮助文档.zip-互联网文档类资源-CSDN下载

        今天主要说一下多段线数据的解析。

 2.多段线数据的解析

先看看多段线长什么样子

直观上看,多段线由线和圆弧构成,但是相邻的线、圆弧是连接起来的。但是从多段线在含义上看来,它其实是由一个个角点连接起来的。

如下面图1为一个多段线,图2所示,为dxf文本中对多段线的描述,LWPOLYLINE标记着进入多段线的描述(文件保存版本为2000以上),如果是POLYLINE则表示为比较老的标本。图3为对polyline的组码的说明,其中10,20之后的数据为角点的x,y坐标,42之后的数据为角点的凸度,其中为负说明圆弧的方向为顺时针方向,为正说明圆弧方向为逆时针方向。

               

 图1.多段线                        图2.多段线的dxf文本                           

               

图3.多段线的组码说明

如上面所说,多段线是由线和圆弧组成,对于线的话,则42后的数据为0或者没有,线的解析直接就是线起点和线终点。

如果42后的数据不为0,则角点和角点之间连接的为圆弧,圆弧的起点和终点也就是相邻角点的坐标,关键是怎么利用凸度的信息。

我们在CAD的help中找到对凸度的解释:凸度是四分之一圆弧段角的切线,如果从起点到端点,圆弧为顺时针,则为负数。凸度为 0 表示一条直线段,角点为连接直线的两个端点。凸度为 1 表示一个半圆。

凸度不为0时为圆弧,那如何来得到圆弧的圆心和半径信息呢?

这里我觉得yishang44这里解释的挺好,放上他计算的链接:

dxf中凸度的计算_yishang44的博客-CSDN博客_dxf凸度

为了防止他博客丢失,我在这里抛转做一些解释和说明吧。前面说到CAD里的说法是:凸度是四分之一圆弧段角的切线,这里用的是yishang44的图。

如果A1,A2为两个角点,那么四分之一圆弧角为图中,为圆周角,的圆心角,很显然。则A1,A2两个角点的凸度为。那现在

已知:角点A1,A2的坐标,

求:圆心、半径

这里用的方法是旋转变换公式来的,以A1,A2的中点A0为旋转中心,(r-H)为半径的点B进行顺时针旋转90°来得到圆心O,x0,y0为A0坐标,x,y为B坐标,其中B坐标可以根据向量公式来得到,其中

旋转公式为:

                     

 

这里的角度为90°,则公式变为:

                              

  

算得圆心坐标为: 

注意事项:

(1)如果用线段和圆弧元素来表示多段线,需要注意排序问题和数量问题;

(2)有的时候会判断多段线是否封闭,要看70后面的数值,如果是0则不封闭,为0是封闭的。

参考文献:(1)CAD help文件

                    (2)dxf中凸度的计算_yishang44的博客-CSDN博客_dxf凸度

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/401964.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[ 2024春节 Flink打卡 ] -- Paimon

2024,游子未归乡。工作需要,flink coding。觉知此事要躬行,未休,特记 Flink 社区希望能够将 Flink 的 Streaming 实时计算能力和 Lakehouse 新架构优势进一步结合,推出新一代的 Streaming Lakehouse 技术,…

缓存篇—缓存雪崩、缓存击穿、缓存穿透

缓存异常会面临的三个问题:缓存雪崩、击穿和穿透。 其中,缓存雪崩和缓存击穿主要原因是数据不在缓存中,而导致大量请求访问了数据库,数据库压力骤增,容易引发一系列连锁反应,导致系统奔溃。不过&#xff0…

揭秘安秉网盾加密软件芯片制造业的5个神奇点

安秉网盾加密软件在芯片制造业有着许多神奇的应用点,以下是其中的五个: 芯片行业的数据的安全性与保密性 安秉网盾加密软件提供强大的加密算法和安全机制,可以对芯片研发行业的图纸及源代码文件进行加密保护,加密后的文件只能在安…

三、创建脚手架和脚手架分析

三、创建脚手架 一、环境准备 1、安装node.js **下载地址:**https://nodejs.org/zh-cn/界面展示 2、检查node.js版本 查看版本的两种方式 node -vnode -version 出现版本号则说明安装成功(最新的以官网为准) 3、为了提高我们的效率&…

VK36N3B SOP8/DFN8L抗噪3键触摸感应/高抗干扰触控IC/工控触摸触控IC BCD 输出

产品型号:VK36N3B 产品品牌:永嘉微电/VINKA 封装形式:SOP8/DFN8L 工程服务,技术支持! 概述 VK36N3B具有3个触摸按键,可用来检测外部触摸按键上人手的触摸动作。该芯片具有较高的集成度,仅需…

关于RestCloud iPaaS平台的板块详解

当今的企业分工越来越细,上下游合作越来越紧密、各企业之间的业务系统需要相互协作完成业务、外部API依赖越来越多、同时企业系统运行在多个混合云环境及SaaS中,私有端大量业务系统与云端系统形成了错综复杂的集成关系,企业面临集成技术复杂多…

图表示学习 Graph Representation Learning chapter2 背景知识和传统方法

图表示学习 Graph Representation Learning chapter2 背景知识和传统方法 2.1 图统计和核方法2.1.1 节点层次的统计和特征节点的度 节点中心度聚类系数Closed Triangles, Ego Graphs, and Motifs 图层次的特征和图的核节点袋Weisfieler–Lehman核Graphlets和基于路径的方法 邻域…

[开源协议] 什么是MIT协议及其使用场景

什么是MIT协议? MIT协议是一种开放源代码软件授权协议,全称为Massachusetts Institute of Technology License。该协议允许自由地使用、复制、修改、合并、发布、分发、再授权和销售软件及其副本的任何部分。MIT协议要求在软件的所有副本中包含版权声明和许可声明…

机遇与挑战并存 企业级软件如何突围向上

如果企业级软件能够像TO C产品那样,购买者就是使用者,那企业级软件市场可能会大不一样。不过,事实并非如此。因为无论是商业模式,还是专业程度和用户群体,二者都有显著区别。而这种区别也使得我们不得不从一个全新视角…

辉辉数码:目前电视盒子哪个最好?目前性能最好的电视盒子

大家好,我是辉辉,上期测评发布后我收到了很多粉丝的反馈希望我这期能分享电视盒子推荐,看看目前电视盒子哪个最好。我购入了市面上最热门的十几款电视盒子对比配置、系统后整理了五款目前性能最好的电视盒子推荐给大家。 品牌型号&#xff1…

网络安全“降本增笑”的三大帮手

在网络安全这个快速变化和危机四伏的领域中,通过使用正确的工具和方法,我们可以在工作中取得更高的效率,并降低相关成本。 雷池社区版 雷池社区版—开源Web应用防火墙。这款产品凭借强大的规则引擎,它允许用户自定义安全策略&…

探索Redis是否为单线程的奥秘(文末送书)

🌈个人主页:聆风吟 🔥系列专栏:数据结构、网络奇遇记 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. Redis中的多线程二. I/O多线程三. Redis中的多进程四. 结论五. 书籍推荐5.1 书…

CoordConv(NeurIPS 2018)

paper:An Intriguing Failing of Convolutional Neural Networks and the CoordConv Solution official implementation:https://github.com/uber-research/coordconv 存在的问题 本文揭示并分析了CNN在两种不同类型空间表示之间转换能力的欠缺&#…

BLUEZ学习笔记_GATT_server_client_简单解析

文章参考了以下内容 蓝牙bluez5的开发方法及入门教程_bluez蓝牙配网demo-CSDN博客文章浏览阅读1w次,点赞15次,收藏99次。1 摘要这篇文章的主要目的是告诉大家应该如何使用bluez进行开发,由于bluez的文档实在太少了,入门门槛实在太…

vue保留用户在列表的操作记录, beforeRouteLeave离开当前组件缓存数据即可

最近遇到一个需求,用户在列表页的查询输入框输入条件后,点击查询,然后此时切换菜单,再回到之前的页面,希望能停留在上一次输入的结果上,如下例子,用户管理页面,输入yangfan这个关键词搜索后,结果如下图: 当我此时点击权限管理后,再点击用户管理切回来,结果依旧如上…

(二十二)Flask之上下文管理第三篇【收尾—讲一讲g】

目录: 每篇前言:g到底是什么?生命周期在请求周期内保持数据需要注意的是: 拓展—面向对象的私有字段深入讲解一下那句: 每篇前言: 🏆🏆作者介绍:【孤寒者】—CSDN全栈领域…

ubuntu内核卸载重装

目录 问题1.问题复现2.可以正常启动的方式 保存快照卸载有问题的内核重装最新内核参考资料 问题 1.问题复现 ubuntu开机出现如下画面,启动不能正常启动 2.可以正常启动的方式 使用其他内核可以正常工作 保存快照 在解决之前保存快照,防止破坏时恢复 卸载有问题的内核…

stm32——hal库学习笔记(DMA实验)

一、DMA介绍(了解) 二、DMA结构框图介绍(熟悉) 三、DMA相关寄存器介绍(熟悉) 四、DMA相关HAL库驱动介绍(掌握) 五、DMA配置步骤(掌握) 六、编程实战&#xff…

训练yolov8+SAM的过程记录

1-首先将拿到的数据集进行重新命名(dataset1:是经过校色之后裁剪的图片;dataset2:原图) 图片文件从1.jpg开始命名的代码: folder_path rC:\Users\23608\Desktop\Luli_work\data\fanStudent\tongueseg\Fan…

【C语言】长篇详解,字符系列篇2-----strcat,strcmp,strncpy,strncat,strncmp函数的使用和模拟实现【图文详解】

欢迎来CILMY23的博客喔,本期系列为【C语言】长篇详解,字符系列篇2-----“混杂”的字符串函数,字符串函数的使用和模拟实现【图文详解】,图文讲解各种字符串函数,带大家更深刻理解C语言中各种字符串函数的应用&#xff…