
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hello! I need some help
I have this one file .txt with this features:
Point North East Z Description
1 8618063,68 312415,09 75,87 T1
2 8618138,38 312428,89 70,57 B_RIO SECO
3 8618132,23 312427,75 71,90 ARENAL
4 8618126,23 312426,64 72,50 ARENAL
5 8618112,22 312424,06 73,77 ARENAL
6 8618099,78 312421,76 75,35 ARENAL
7 8618089,51 312419,86 75,84 ARENAL
8 8618132,23 312427,75 71,94 J
9 8618112,23 312424,06 73,88 J
10 8618099,82 312421,78 75,36 ARENAL
11 8618089,48 312419,87 75,85 E_1
And I generated this code for read this file and insert one block with attributes for each line of text…..
If txtPath.Text() = "" Then
MsgBox("Select DB .txt.", MsgBoxStyle.Exclamation)
End If
On Error GoTo ControlErroresBD
Dim AcadDocPt As Document = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument
Dim AcadCurrentDBPt As Database = AcadDocPt.Database
Dim AcadEdPt As Editor = AcadDocPt.Editor
Dim FileBD As String = txtPath.Text()
Dim Ext As String
Ext = Path.GetExtension(FileBD)
If (Not IO.File.Exists(FileBD)) Then
MsgBox("The DB doesn’t exist", MsgBoxStyle.Critical)
Return
Using Reader As New IO.StreamReader(FileBD)
While Not Reader.EndOfStream
Dim Fila As String = Reader.ReadLine()
Dim Valores As String() = Fila.Split(New String() {}, StringSplitOptions.RemoveEmptyEntries)
Dim PtX, PtY, PtZ As Double
Dim NPt, Cota, Descripcion As String
NPt = Valores(0)
PtY = Valores(1)
PtX = Valores(2)
PtZ = Valores(3)
Cota = Valores(3
Descripcion = Valores(4)
Using AcadTransPt As Transaction = AcadCurrentDBPt.TransactionManager.StartTransaction()
Dim BloqueName As String = txtName.Text()
Dim AcadBlkTblIns As BlockTable
AcadBlkTblIns = AcadTransPt.GetObject(AcadCurrentDBPt.BlockTableId, OpenMode.ForRead)
If AcadBlkTblIns.Has(BloqueName) Then
Dim AcadBlockRec As BlockTableRecord = AcadTransPt.GetObject(AcadBlkTblIns(BlockTableRecord.ModelSpace),
OpenMode.ForWrite)
AcadBlockRec = AcadTransPt.GetObject(AcadBlkTblIns(BlockTableRecord.ModelSpace), OpenMode.ForWrite)
Dim AcadBlock As BlockTableRecord
AcadBlock = AcadTransPt.GetObject(AcadBlkTblIns.Item(BloqueName), OpenMode.ForRead, False)
Dim AcadBlockRef As New BlockReference(New Point3d(PtX, PtY, PtZ), AcadBlock.ObjectId)
‘To the end of this line I can insert the block,,,,,,, but I don’t know how to write the attributes…… I tried with the next code but it doesn’t work…. Some help! My bloque has 3 attributes and every tag named with “PN”, “CD” and “CT”
Dim AcadObj As Entity
For Each acObjId As ObjectId In AcadBlockRef.AttributeCollection
AcadObj = AcadTransPt.GetObject(acObjId, OpenMode.ForWrite)
Dim acAttDef As AttributeDefinition = TryCast(AcadObj, AttributeDefinition)
Dim acAttRef As AttributeReference = New AttributeReference
acAttRef.SetAttributeFromBlock(acAttDef, AcadBlockRef.BlockTransform)
acAttDef.Tag = "PN"
acAttDef.TextString = NPt
acAttRef.TextString = acAttDef.TextString
acAttDef.Tag = "CD"
acAttDef.TextString = Descripcion
acAttRef.TextString = acAttDef.TextString
acAttDef.Tag = "CT"
acAttDef.TextString = Cota
acAttRef.TextString = acAttDef.TextString
Next
AcadBlockRec.AppendEntity(AcadBlockRef)
AcadTransPt.AddNewlyCreatedDBObject(AcadBlockRef, True)
AcadTransPt.Commit()
End If
End Using
End While
End Using
ControlErroresBD:
MsgBox(Err.Number & vbNewLine & Err.Description, MsgBoxStyle.Critical)
End Sub
Solved! Go to Solution.