将图元包含的点集合(IPointCollection)序列化为二进制保存到数据库

需求:

把图元包含的点集合按

 

点数

x1

y1

x2

y2

...

...

 

这样保存到byte[]数组中并存储到数据库(oracle的blob或sqlserver的image型)

 

 

 

开始是用string连接多个点坐标,用逗号分隔,然后转成byte数组,但这样的话,

byte数组就凭空大了一倍

在读取的时候还要转换类型,再分解,使用C++做这些操作比较麻烦(客户端是C++写的)

这样存储按位读取,速度效率都不错,记一下

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现这个功能需要使用CAD的API库和Excel的COM接口。以下是一个简单的实现步骤: 1. 在VB.NET项目中添加对AutoCAD的引用,可以使用COM接口或.NET API接口,这里以COM接口为例。 2. 创建一个Excel应用程序对象,并打开一个新的工作簿。 3. 遍历CAD所有图元,获取每个图元的逐坐标信息,并将其写入Excel工作簿中。 以下是代码示例: ``` Dim acadApp As AcadApplication = New AcadApplication() Dim acadDoc As AcadDocument = acadApp.ActiveDocument Dim excelApp As Excel.Application = New Excel.Application() Dim excelWorkbook As Excel.Workbook = excelApp.Workbooks.Add() Dim excelWorksheet As Excel.Worksheet = excelWorkbook.Sheets(1) Dim rowIndex As Integer = 1 For Each entity As AcadEntity In acadDoc.ModelSpace If TypeOf entity Is AcadCurve Or TypeOf entity Is AcadSolid Then Dim points As Object() = entity.Coordinates For i As Integer = 0 To points.Length - 1 Step 3 excelWorksheet.Cells(rowIndex, 1).Value = entity.EntityName excelWorksheet.Cells(rowIndex, 2).Value = points(i) excelWorksheet.Cells(rowIndex, 3).Value = points(i + 1) excelWorksheet.Cells(rowIndex, 4).Value = points(i + 2) rowIndex += 1 Next End If Next excelWorkbook.SaveAs("output.xlsx") excelWorkbook.Close() excelApp.Quit() ``` 请注意,此示例代码仅适用于简单的CAD图元,对于复杂的图元可能需要更复杂的处理逻辑。同时,此代码也需要进行错误处理和资源释放等操作,以确保程序的正确性和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值