Hi
HI am play with dotspatial to import SHP file to Autopcad if I import one file it is ok but a few the speed is little show
is someone who can help how I can speed this up
<CommandMethod("XYinsert")> _
Public Sub XYinsert()
ReadSHPfile("C:\map\streetline.shp", "st")
End Sub
a few
Public Sub ReadSHPfile(ByVal slod, ByVal Layerinst)
Dim doc As Document = Application.DocumentManager.MdiActiveDocument
Dim db As Database = doc.Database
Dim ed As Editor = doc.Editor
Using acTrans As Transaction = db.TransactionManager.StartTransaction()
Dim acBlkTbl As BlockTable
acBlkTbl = CType(acTrans.GetObject(db.BlockTableId, OpenMode.ForRead), BlockTable)
Dim acBlkTblRec As BlockTableRecord
acBlkTblRec = CType(acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), OpenMode.ForWrite), BlockTableRecord)
Dim shapeActual As FeatureSet = FeatureSet.Open(slod)
shapeActual.FillAttributes()
Dim dt As System.Data.DataTable = shapeActual.DataTable
Dim pline As Polyline = New Polyline()
pline.SetDatabaseDefaults()
Dim ptColl As Point3dCollection = New Point3dCollection()
For count As Integer = 0 To shapeActual.Features.Count - 1
For Each feature As IFeature In shapeActual.Features 'circle through the features
For i As Integer = 0 To feature.BasicGeometry.NumGeometries - 1 'circle through the parts of one feature
For Each coord As Coordinate In feature.BasicGeometry.GetBasicGeometryN(i).Coordinates() 'circle through the coordinates of the feature part
'Dim AdresX = coord.X
'Dim AdresY = coord.Y
pline.AddVertexAt(count, New Point2d(coord.X, (coord.Y)), 0.0, 0.0, 0.0)
count = count + 1
Dim pt As New Point3d(coord.X, coord.Y, coord.Z)
pts.Add(pt)
Next
' installa1()
ed.WriteMessage(vbCr & feature.FeatureType.ToString)
Next
insert_with_layer(Layerinst)
pts.Clear()
Next
Next
acTrans.Commit()
End Using
End Sub
Public Sub insert_with_layer(ByVal Layer_name As String)
Dim doc As Document = Application.DocumentManager.MdiActiveDocument
Dim db As Database = doc.Database
Dim trans As Transaction
Dim transMan As Autodesk.AutoCAD.ApplicationServices.TransactionManager
transMan = db.TransactionManager
trans = transMan.StartTransaction
' Dim lne As New Line(pt1, pt2)
Dim pline As Polyline = New Polyline()
Dim bt As BlockTable
Dim btr As BlockTableRecord
bt = trans.GetObject(db.BlockTableId, OpenMode.ForRead)
btr = trans.GetObject(bt(BlockTableRecord.ModelSpace), OpenMode.ForWrite)
Dim i As Integer = 0
For Each pnt As Point3d In pts
Dim pt As New Point3d(pnt.X, pnt.Y, pnt.Z)
pline.AddVertexAt(i, New Point2d(pt.X, (pt.Y)), 0.0, 0.0, 0.0)
i += 1
Next
pline.Layer = Layer_name
btr.AppendEntity(pline)
trans.AddNewlyCreatedDBObject(pline, True)
trans.Commit()
trans.Dispose()
transMan.Dispose()
End Sub