我正在使用Delphi类从DXF文件导入/导出某种实体。 我想添加对Image实体的支持,但我不了解某些组代码。
我正在使用官方DXF指南参考(2002):http://www.autodesk.com/techpubs/autocad/dxf/dxf2002.pdf
我已经理解了组码10,20和30,还有#34;插入点"和任何其他实体一样工作。
问题是群组代码: -11,21和31:单个像素的U向量(沿图像的视觉底部指向, 从插入点开始)(在WCS中);
-12,22和32:单个像素的V矢量(沿图像的视觉左侧指向, 从插入点开始)(在WCS中);
我认为DXF使用它进行缩放和旋转但我不了解如何。
由于
答案 0 :(得分:2)
这些组代码用于控制图像的旋转和缩放。
组代码10
,20
和30
控制图片左下角的插入点。
组代码11
,21
和31
用于定义3D空间中的向量,该向量是假定起始点为{{1}的行的终点无论图像的原点如何。这些组代码描述了相对向量。
这个相对向量(对于比例因子为1)受一个圆的约束,该圆的半径是1/8的平方根,或者是0.352733677 ...
例如,插入时没有旋转且比例因子为1的图像将分别具有0,0,0
,11
,21
组代码值31
。
插入时没有旋转且比例因子为2的图像将分别0.352733677,0,0
,11
,21
组代码值为31
。
以45度旋转和比例因子1插入的图像将分别具有0.7054673542,0,0
,11
,21
组代码31
。这是一个奇怪的偶数,但这就是数学运算的方式。
比例因子是半径为sqrt(1/8)的圆的乘数。根据比例因子获得此半径后,您可以使用旋转角度的0.25,0.25,0
和sin
来确定“11”和“21”值。
cos
,12
,22
组代码具有相似的值,但是对于图像的左边缘。
将使用相同的数学来确定它们的值。这似乎过度约束了图像,但这就是规范的工作方式。
修改强>
以上答案仅对以72 dpi保存的光栅图像有效,然后插入到公制(毫米级)绘图中。
例如,在'11'组代码中确定适当值(对于在AuoCAD图中插入图像时的比例因子为1)的公式为:
32
在使用毫米作为绘图单位的公制dxf图形中,以及以72 dpi保存的光栅图像时,比例因子将为(drawing units per inch) / (dpi of image)
在使用毫米作为绘图单位的公制dxf图形中,以及以96 dpi保存的光栅图像时,比例因子将为25.4/72 = .35277778
在使用英寸作为绘图单位的英制dxf绘图中,以及以72 dpi保存的光栅图像时,比例因子将为25.4/96 = .26458333
。
在使用英寸作为绘图单位的英制dxf绘图中,以及以96 dpi保存的光栅图像时,比例因子将为1/72 = .013888888
。
当在AutoCAD等程序中打开dxf文件时,光栅图像将以上面显示的比例因子绘制,因此我们的第一个示例将以1/96 = .010416667
的大小绘制,对于100x100px图像,将是35.2778毫米。