- 博客(23)
- 收藏
- 关注
原创 对SHX形定义中矢量方向代码的解释
本文解析了SHX形定义中的矢量方向代码原理。通过官方文档和实际案例分析,指出对角矢量会被拉伸以匹配正交位移,并揭示各方向矢量长度并不相等。作者将每个代码表示的矢量称为该方向的"单位矢量",并通过代码示例展示了如何计算不同方向矢量的终点坐标。最后通过txt.shx字体中字母A的实际绘制案例,验证了该解析方法的正确性,与AutoCAD生成结果一致。文中还提供了简单的C++实现代码,用于计算不同方向矢量的位移量。
2026-01-21 17:13:49
631
原创 SHX中部分圆弧(代码:00B)的解析
本文详细解析了AutoCAD SHX字体中部分圆弧(代码00B)的定义和计算方法。文章首先介绍了八分圆弧(代码00A)的基础概念,然后重点阐述了部分圆弧的定义格式和参数含义。通过图解和数学公式说明了如何计算圆弧的起始偏移量和终止偏移量,特别解释了顺时针圆弧的偏移量计算规则。作者分享了自己的解析代码实现,并展示了通过调试工具可视化显示字形生成过程的实际效果。文中还提供了具体示例和计算步骤,帮助读者理解这一复杂但重要的SHX字体绘制机制。
2026-01-19 16:13:55
673
原创 DWG 2004 格式解析系列(八) DataSection(3) AcDb:AcDbObjects
AcDb:AcDbObject section存储着整个dwg文件中的所有对象,包括object和entity。通常,这个section一般会由多个page组成。通过(二)中的方法可以容易地得到section data,并且藉由Object map根据object的handle定位到编码的数据,最后,根据object的类型解码得到具体的object。在我们得到的data中,前4个字节(CA 0D 00 00)含义未明。00000000 CA 0D 00 00 17 00 8D 01 0C 00
2022-05-15 19:15:47
1612
2
原创 DWG 2004 格式解析系列(七) DataSection(2) AcDb:Handles
简单说,AcDb:Handles section描述的是对象句柄与其存储位置的对应关系,称为ObjectMap,其结构简单易于理解。其中的存储位置,指的是该对象在AcDb:Objects section在解码解压后的数据中的绝对地址。首先要明确的是,其数据是分页存储的。每页以一个BigEndian short值表示页尺寸(page data + crc的尺寸),当页尺寸值为2(即只包含一个CRC)时,则结束。贴代码比文字描述要轻松,其实也没什么需要再描述的了。void CObjectMap::dec
2022-05-07 14:23:12
814
1
原创 DWG 2004 格式解析系列(六) DataSection (1) AcDb:Preview
我们知道,DWG的存储逻辑上是按照SECTION分组的,而且我们已经能够从DWG的数据流中解析出各种SECTION。这里的SECTION与DXF中SECTION是对应的,DXF实质上就是DWG的文本表述。自然而然,我们下一步就是解析各种SECTION。涉及的DATA SECTION为:/// \enum Section type of R2004+typedef enum _tagDwg2004SectionType{ SECTION_UNKNOWN = 0, /
2022-05-06 19:54:53
994
原创 DWG 2004格式解析系列(四) BITCODE
在学习了如何解析DWG的结构后,接下来就是解读各SECTION的内容。不过,在这之前仍然有一件事是必需要了解的,那就是DWG中的数据流的编码格式。Autodesk大概是为了减小保存文件的尺寸,将数据流按位进行了编码(个别section仍然是以字节为单位编码,如Preview),所以,本节只讲位码的编排格式。0,我总是打头阵编码名称含义B1位BB2位3B1-3位BSBit ShortBLBit LongBLLBit Long LongBD
2022-05-03 15:31:08
2419
原创 DWG 2004 解析系列(三)文件结构之2007
前文讲述了2004的文件结构,在引言中层提及2004后的dwg文件结构,除了2007外,基本相同,本文就详细讲述一下2007的文件结构。其实,从2000版后,除了文件结构的不同外(可分为2000,2004,2007三种不同结构),从文件中解析出某个SECTION的数据后,其内部编码都是相同的(即位码,计划后面再详述)。0 总体结构 总体结构依然是文件头+数据页的组织形式,主要差别在于2007的文件头的不同。对文件头的解码过程如下图: 首先从dwg文...
2022-05-02 12:50:00
2444
1
原创 DWG 2004 格式解析系列(二)文件结构
从整体上看,一个dwg文件可分为2部分:文件头和数据,数据部分是在物理上是分页(page)存储的,在逻辑上一个或多个页组成一个段(section)......
2022-04-29 21:12:18
10026
27
原创 DWG 2004 格式解析系列(一)引言
终于下定决心,把我对dwg格式的理解整理成文字。 对dwg格式的认识,可以追溯到200x年开发一款图形编辑软件的时候。除了软件本身提供的编辑功能外,也需要从外部引入矢量图形。大家都知道Autocad在国内的普及程度,因此读入dwg中的图形就是首要的需求。也许有人会说dxf不是很方便吗,干嘛非要从不公开格式的dwg中引入呢?的确,dxf是公开的格式,稍有编程能力的人都能自己解析,但是,你要使用者每次都从dwg转换到dxf,也是一件烦人的事。如果能直接读入dwg,岂不是更方便。...
2022-04-28 22:24:50
3965
7
原创 gbcbig.shx字体的BUG
在解析ACAD中的shx字体文件时,遇到了一点问题,找遍网络也没找到答案,能找到一个帖子也是提问的,如:http://www.cppblog.com/wrhwww/archive/2011/03/23/142544.html?opt=admin我在autodesk论坛上发过一个求助帖,也是无人回答。原文是这样的:-------------------------------------...
2019-05-04 21:31:55
2442
原创 已知圆弧的起点端点和凸度计算圆心
最近翻看我以前的博文,看到计算LWPLINE中凸度圆弧的圆心的公式那篇,一时竟想不起这公式是如何推导的了。(http://blog.sina.com.cn/s/blog_66349acf0102vivw.html)这里把推导过程简单描述一下,为了以后不再忘记。注:本来想发在新浪博客上,奈何人家在维护,要5月才能恢复,已经写好的文,怕丢失,就发到了这里。首先要明确lwpline...
2019-04-17 22:48:26
13326
19
原创 AutoCAD object & entity struct
http://blog.sina.com.cn/s/blog_66349acf0101d56r.html
2014-01-20 17:00:46
1060
原创 AutoCAD2004 DWG 格式
http://blog.sina.com.cn/s/blog_66349acf0101d0lt.html
2014-01-20 17:00:04
1058
2
原创 判断点在直线段上的方法
看到这个题目,估计很多人都会说,这么简单的问题,还写个日志。呵呵 当然,大多人的想法自然是用数学公式来计算了,我也是,而且是用的最笨的方法,看吧: 一条直线段由两个点确定,假设他们叫a和c,一个点b在这个线段上的条件是,b到a的距离和b到c的距离之和等于a到c的距离。以下假设在二维平面下。 b到a的距离 d1=sqrt((b.x-a.x)*(b.x-a.x) + (b.y-
2013-07-04 13:46:00
4754
原创 ACAD shx字体格式之 unifont
该文章详细解析了AutoCAD SHX字体文件的二进制结构,为分析SHX字体文件提供了详细的技术参考。
2013-02-17 11:04:23
1726
原创 ACAD shx字体格式之BigFont
该文解析了工程汉字字符集SHX文件格式,详细说明了文件头标记、区间定义和字符索引结构。重点指出索引段以short类型存储字符编码(如D2A1),而数据段以字符形式存储(如A1D2),并分析了字形数据的存储方式:包含字体描述参数和以0结尾的字形名称与编码。作者特别指出文件开头的字体参数存储方式,并推测AutoCAD在显示文字时会进行编码转换处理。文章通过具体字符示例(如"∫"符号)展示了编码存储与实际显示的关系。
2013-02-17 11:03:14
2917
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅