Hi all
habe ein VB.NET Programm das einen Block problemlos einfügt und dasselbe in C# nochmals erstellt. Leider funktioniert das C# nicht. Kann mir jemand sagen was ich hier falsch gemacht habe ? Besten Dank.
Das Block explode habe ich bis jetzt in VB sowie in C# nicht geschafft. Ware dankbar wenn ich einen Tip erhalten würde wie das funktioniert.
VB Code
-------
Public Class AdskClass1
<CommandMethod("Asdkcmd1")> _
Public Function Asdkcmd1()
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 = acadApp.DocumentManager.MdiActiveDocument
Dim ed As Editor = doc.Editor
Dim tr As Transaction = doc.TransactionManager.StartTransaction
Try
Dim dwgName As String = HostApplicationServices.Current.FindFile(Comp, acadApp.DocumentManager.MdiActiveDocument.Database, FindFileHint.Default)
Dim db As Database = New Database(False, False)
db.ReadDwgFile(dwgName, IO.FileShare.Read, True, "")
Dim NewBlkId As ObjectId
NewBlkId = doc.Database.Insert(dwgName, db, False)
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), NewBlkId)
btr.AppendEntity(bref)
tr.AddNewlyCreatedDBObject(bref, True)
tr.Commit()
Catch ex As Exception
ed.WriteMessage(ex.ToString)
End Try
End Function
End Class
C# Code
-------
[CommandMethod("AsdkCmd1")]
static public void test()
{
string comp = "d:\temp\test.dwg";
Document doc = acadApp.DocumentManager.MdiActiveDocument;
Editor ed = doc.Editor;
Transaction tr = doc.TransactionManager.StartTransaction();
try
{
string dwgName = HostApplicationServices.Current.FindFile(comp,acadApp.DocumentManager.MdiActiveDocument.Database,FindFileHint.Default);
Database db = new Database(false, false);
db.ReadDwgFile(dwgName,System.IO.FileShare.Read, true, "");
ObjectId NewBlkId = new ObjectId();
NewBlkId = doc.Database.Insert(dwgName, db, false);
BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead,true);
BlockTableRecord btr =(BlockTableRecord)tr.GetObject(bt[BlockTableRecord.ModelSpace],OpenMode.ForWrite);
BlockReference bref = new BlockReference(new Autodesk.AutoCAD.Geometry.Point3d(10,10,0), NewBlkId);
btr.AppendEntity(bref);
tr.AddNewlyCreatedDBObject(bref, true);
tr.Commit();
}
finally
{
tr.Dispose();
}
}
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP