类型过滤
docs.autodesk.com/ACD/2011/CH…
在得到特定cad对象时 如果提供过滤条件能很大程度上减少程序要处理对象的数量
CAD数据存储XData
www.theswamp.org/index.php?t…
在使用XData存储数据的时候是有大小限制的,国外有人解决了这个问题,使用GZipStream对文件内容压缩存储,每项存储特定大小数据
/// <summary>
/// Compress stream
/// </summary>
/// <param name="source">Stream: source</param>
/// <param name="destination">Stream: destination</param>
internal static void Compress(Stream source, Stream destination)
{
using (GZipStream output = new GZipStream(destination, CompressionMode.Compress, true))
{
Pump(source, output);
}
}
/// <summary>
/// Decompress Stream
/// </summary>
/// <param name="source">Stream: source</param>
/// <param name="destination">Stream: destination</param>
internal static void Decompress(Stream source, Stream destination)
{
using (GZipStream input = new GZipStream(source, CompressionMode.Decompress))
{
Pump(input, destination);
}
}
/// <summary>
/// Helper function for Compress and Decompress
/// </summary>
/// <param name="input">Stream: input</param>
/// <param name="output">Stream: output</param>
private static void Pump(Stream input, Stream output)
{
byte[] bytes = new byte[4096];
int n;
while ((n = input.Read(bytes, 0, bytes.Length)) != 0)
{
output.Write(bytes, 0, n);
}
}
精度控制
当判断平行或者对线段长度取整操作,得到的数值会遇到 40.00000000003,这时候如果直接取整操作Math.Ceiling 会得到41,这并不是想要的结果。可以先按照自己的要求的精度处理后再取整