As I see in ObjectARX SDK docs this method should work
just with uniform scaled blocks
Thus, you don't defined scale factors, it would not work for you
Try this instead:
#Region " AcadDlls"
Imports System
Imports System.IO
Imports System.Collections
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.Geometry
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.DatabaseServices
Imports graph = Autodesk.AutoCAD.GraphicsInterface
Imports Autodesk.AutoCAD.ApplicationServices
Imports AcDb = Autodesk.AutoCAD.DatabaseServices
Imports AcApp = Autodesk.AutoCAD.ApplicationServices.Application
Imports AcGe = Autodesk.AutoCAD.Geometry
Imports AcRx = Autodesk.AutoCAD.Runtime
#End Region
Module Module5
Sub main()
InsertApiBlock()
End Sub
Public Sub InsertApiBlock()
Dim insertionPoint(2) As Double
Dim Comp As String
Comp = "d:\temp\test.dwg"
insertionPoint(0) = 10 : insertionPoint(1) = 20 : insertionPoint(2) = 0
Dim doc As Document = Application.DocumentManager.MdiActiveDocument
Dim ed As Editor = doc.Editor
Dim tr As Transaction = doc.TransactionManager.StartTransaction
Try
Dim dwgName As String = HostApplicationServices.Current.FindFile( _
Comp, Application.DocumentManager.MdiActiveDocument.Database, FindFileHint.Default)
Dim db As Database = New Database(False, False)
db.ReadDwgFile(dwgName, IO.FileShare.Read, True, "")
Dim BlkId As ObjectId
BlkId = doc.Database.Insert(dwgName, db, False)
MessageBox.Show(Comp)
Dim bt As BlockTable = tr.GetObject(doc.Database.BlockTableId, OpenMode.ForRead, True)
Dim btr As BlockTableRecord = tr.GetObject(bt(BlockTableRecord.ModelSpace), OpenMode.ForWrite, True)
Dim bref As BlockReference = New BlockReference(New Autodesk.AutoCAD.Geometry.Point3d(insertionPoint), BlkId)
Dim scl As Scale3d = New Scale3d(1, 1, 1)
bref.ScaleFactors = scl
btr.AppendEntity(bref)
tr.AddNewlyCreatedDBObject(bref, True)
bref.UpgradeOpen()
bref.ExplodeToOwnerSpace()
bref.Erase()
tr.Commit()
Catch ex As System.Exception
ed.WriteMessage(ex.ToString)
End Try
End Sub
End Module