| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Block einfügen und Auflösen (1500 mal gelesen)
|
Theo37 Mitglied Techniker
Beiträge: 423 Registriert: 08.10.2008 ACAD 2019 WIN 7 64bit Intel Xenon CPU E5-1620 3.60GHz 16GB RAM
|
erstellt am: 14. Feb. 2012 17:02 <-- editieren / zitieren --> Unities abgeben:
Hallo an Alle, ich hab mal wieder Probleme mit dem Auflösen von Blöcken. Ich möchte einen Block ins Activelayout der Zeichnung einfügen. Dieser sollte aber gleich aufgelöst werden. Mein Code unten, führt zum Absturz von ACAD. Weiß jemand was ich falsch mache? Oder hat jemand ein gutes Beispiel zum Thema. Danke Theo Try Using acTrans As Transaction = DocDatabase.TransactionManager.StartTransaction() Dim Aktbereich As BlockTableRecord Dim Splitter As DBObjectCollection Aktbereich = acTrans.GetObject(DocDatabase.CurrentSpaceId, OpenMode.ForWrite) Using MyBlock As BlockReference = New BlockReference(New Geometry.Point3d(Einfügepunkt(0), Einfügepunkt(1), Einfügepunkt(2)), NKBlockdef) MyBlock.ScaleFactors = New Geometry.Scale3d(Scale, Scale, Scale) MyBlock.Explode(Splitter) End Using For Each MyEnty As Entity In Splitter Aktbereich.AppendEntity(MyEnty) acTrans.AddNewlyCreatedDBObject(MyEnty, True) Next acTrans.Commit() End Using Catch ex As Exception MsgBox(ex.Message) End Try Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 14. Feb. 2012 19:37 <-- editieren / zitieren --> Unities abgeben: Nur für Theo37
|
Theo37 Mitglied Techniker
Beiträge: 423 Registriert: 08.10.2008
|
erstellt am: 15. Feb. 2012 08:51 <-- editieren / zitieren --> Unities abgeben:
Hallo Holger, ich glaub mein Fehler war: Splitter = New DBObjectCollection Das fehlte. Da bin ich mir nie sicher ob ich NEW brauche oder nicht. Mit dem Schließen der Objekte? welche Objekte muß ich schließen? reicht: Aktbereich.Close() ? Gruß, Theo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 15. Feb. 2012 17:42 <-- editieren / zitieren --> Unities abgeben: Nur für Theo37
... alle Objekte, die du mit Transaction.Getobjeckt oder Objecct.Open öffnest, solltest du auch wieder schließen mit Object.Close(). Ein zum schreiben geöffnetes und nicht geschlossenes Objekt, kann im Programm selbst zu Problemen führen, zum bsp. wenn du das Object an ganz anderer Stelle wider öffnen wolltest. Es kann aber auch dazu führen, dass nachdem dein Tool durchgelaufen ist, nicht mhr gespeichert werden kann oder du keine Objekte mehr hinzufügen kannst. Das kann zwar mit einer Zeichnungsprüfung behoben werden, ist aber lästig für die Anwender dr Befehle. Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|