| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: .NET VB (1635 mal gelesen)
|
egug Mitglied
Beiträge: 42 Registriert: 11.11.2001
|
erstellt am: 30. Jan. 2006 10:45 <-- editieren / zitieren --> Unities abgeben:
Hallo miteinander habe mit VBA folgende Befehle in einem Programm verwendet die auch gut funktionieren. Dim blockRefObj As AcadBlockReference Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(insertionPoint, Comp, 1, 1, 1, 0) blockRefObj.Explode blockRefObj.Delete wollte nun das ganze VBA Programm dur .NET VBA ersetzen. Nun meine Frage, wie müssen obige VBA Befehle in VB .NET umgesetzt werden ?
Besten Dank Ernst
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 11. Aug. 2006 18:04 <-- editieren / zitieren -->
Also in .NET gibts die Setzung von "Set" nicht mehr. Versuchs mal ohne... Alle Variablen sind in .NET nun sg. Objekte, jedoch im Internen verschiedener Kategorie. Das heißt, dass die Referenzierung der Instanz (Objekterstellung) via dem Befehl "Set" nicht mehr nötig ist. Grüße ------------------ -=es gibt nichts, was nicht geht=- |
Ex-Mitglied
|
erstellt am: 11. Aug. 2006 18:18 <-- editieren / zitieren -->
Aber ich überlege gerade. Ist ACAD eigentlich schon .NET fähig? Also die 2007er Version wohl noch nicht... Dort liegt die Visual Basic 6.0 zugrunde... ------------------ -=es gibt nichts, was nicht geht=- |
J.Becker Mitglied Dipl.-Ing. Versorgungstechnik
Beiträge: 78 Registriert: 28.05.2003 ADT 2007, Windows XP, SP2, MAP, MCAD, Inventor
|
erstellt am: 14. Aug. 2006 13:58 <-- editieren / zitieren --> Unities abgeben: Nur für egug
|
egug Mitglied
Beiträge: 42 Registriert: 11.11.2001
|
erstellt am: 14. Aug. 2006 20:10 <-- editieren / zitieren --> Unities abgeben:
Hallo Jürgen das Programm funktioniert nun, bis auf eine Kleinigkeit wo ich nicht dahinterkomme. Kannst Du mir sagen wie ich den eingefügten Block in den Ursprung setzen kann ? Besten Dank hier mal den Code wo der Block eingefügt wird 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) If (smash = 1) Then 'explode addierter block End If tr.Commit() Catch ex As Exception ed.WriteMessage(ex.ToString) End Try
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
J.Becker Mitglied Dipl.-Ing. Versorgungstechnik
Beiträge: 78 Registriert: 28.05.2003 ADT 2007, Windows XP, SP2, MAP, MCAD, Inventor
|
erstellt am: 15. Aug. 2006 15:16 <-- editieren / zitieren --> Unities abgeben: Nur für egug
|
egug Mitglied
Beiträge: 42 Registriert: 11.11.2001
|
erstellt am: 17. Aug. 2006 20:07 <-- editieren / zitieren --> Unities abgeben:
|
egug Mitglied
Beiträge: 42 Registriert: 11.11.2001
|
erstellt am: 27. Aug. 2006 22:11 <-- editieren / zitieren --> Unities abgeben:
hab es nun geschafft, das Programm funktioniert :-) Option Explicit On Imports System Imports System.Type Imports Autodesk.AutoCAD.Runtime Imports Autodesk.AutoCAD.Interop Imports Autodesk.AutoCAD.ApplicationServices Imports Autodesk.AutoCAD.DatabaseServices Imports Autodesk.AutoCAD.EditorInput Imports acadApp = Autodesk.AutoCAD.ApplicationServices.Application Imports Autodesk.AutoCAD.Geometry Imports DBTransMan = Autodesk.AutoCAD.DatabaseServices.TransactionManager 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 BlkId As ObjectId BlkId = 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), BlkId) btr.AppendEntity(bref) tr.AddNewlyCreatedDBObject(bref, True) bref.ExplodeToOwnerSpace() bref.Erase() tr.Commit() Catch ex As Exception ed.WriteMessage(ex.ToString) End Try End Function End Class
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|