嗨
嗨,我玩点空间导入SHP文件到Autopcad,如果我导入一个文件,那是可以的,但有几个速度是小显示
是有人可以帮助我如何加快这个
- _
- 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
本帖以下内容被隐藏保护;需要你回复后,才能看到! 游客,如果您要查看本帖隐藏内容请 回复 |