Monatsarchiv für Juni 2009

ObjectARX: DocumentLock bei modalen Fenstern verwenden

19. Juni 2009, 18:29 Uhr

Wir portieren auf der Arbeit gerade ein altes AutoCAD VBA-Projekt mit Hilfe von ObjectARX nach VB.net.

ObjectARX ist supermächtig, aber für Neueinsteiger gibt es einige Klippen zu umschiffen. Ich möchte behaupten, dass wir die meisten schon gerammt haben, aber immer noch auf Fahrt sind! ;)

Eine gute Quelle ist übrigens der Blog von Kean Walmsley!

Beim letzten Problem hatte ich eine Funktion geschrieben, die per Transaktion Änderungen in einer DWG-Datei vornimmt. Wenn ich die Funktion direkt per Kommando aufgerufen habe, klappt alles wunderbar! Wenn ich sie allerdings von einem modalen Fenster aus aufgerufen habe, gab es immer eine eLockViolation-Ausnahme:

Eine Ausnahme (erste Chance) des Typs “Autodesk.AutoCAD.Runtime.Exception” ist in AcdbMgd.dll aufgetreten.
Autodesk.AutoCAD.Runtime.Exception: eLockViolation

Zum Glück hat Sebastian eine Lösung im CAD-Forum gefunden:

wenn eine Funktion aus dem Form (eigentlich ohne AutoCAD-Befehl) gestartet wird, dann muss die Funktion dafür das Document vor Zugriff von anderen Befehlen sperren.

Das Sperren passiert mit der LockDocument-Eigenschaft des Dokument-Objektes:

Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices

Public Class TestForm
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim oActiveDoc As Document = Application.DocumentManager.MdiActiveDocument

        Using oAcadDocLock As DocumentLock = oActiveDoc.LockDocument
            Using oTransaction As Transaction = oActiveDoc.TransactionManager.StartTransaction
                '...
                '...
                '...
                oTransaction.Commit()
            End Using
        End Using
    End Sub
End Class
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.EditorInput

Public Class TextAutoCadAddIn
    <CommandMethod("test4")> _
    Public Sub Test()
        Application.ShowModelessDialog(New TestForm())
    End Sub
End Class

WinMerge 2.12.4

15. Juni 2009, 15:50 Uhr

Bereits am 9. Juni wurde das stabile WinMerge 2.12.2 veröffentlicht. Auch diese Version enthält ausschließlich Fehlerkorrekturen in verschiedenen Bereichen.

Herbert Grönemeyer Benefizkonzert in Bochum

8. Juni 2009, 20:58 Uhr

Mareike und ich waren am Samstag auf dem Benefizkonzert von Herbert Grönemeyer in Bochum. Zusammen mit Bochumer Symphonikern wurden für den Bau eines neuen Konzerthauses gespielt.

Die Stimmung war einfach genial und Herbert hatte die 28.000 Fans fest im Griff. Nur die Technik war nicht immer ganz auf seiner Seite. Mal fielen die Monitore aus oder sein Keyboard machte bei dem schlechten Wetter Zicken, aber damit konnte Herbert routiniert umgehen.

Grönemeyer Benefizkonzert in Bochum

Nur die Anreise war unter aller Kanone! Wir hatten zwar geplant, eine Stunde vorm Konzertbeginn in Bochum zu sein, aber wer konnte schon damit rechnen, dass wir fast 1,5 Stunden für die letzten 2 Kilometer bis zum rewirpowerSTADION brauchten? Bis wir dann endlich einen Parkplatz hatten, war das Konzert schon lange angefangen. :-(

Aktuellen Adobe Reader 9.1.1 Setup bauen

8. Juni 2009, 12:46 Uhr

Wir installieren hier auf der Arbeit oft den Adobe Reader zum Anzeigen von PDF-Dateien. Adobe bietet aber nur einen Setup von der Version 9.1.0 an und das Update auf 9.1.1 ist eine separate Datei. Das ist beim Installieren einer neuen Maschine natürlich mehr Arbeit. Und Administratoren sind von Natur aus ja faul! :)

Mit folgendem Befehl baut man sich aus dem 9.1.0 MSI-Setup und der 9.1.1 MSP-Patchdatei einen neuen Setup:

msiexec /p AdbeRdrUpd911_all_incr.msp /a AdbeRdr910_de_DE.msi

Die Dateien lädt man am besten direkt von FTP-Server herunter, denn über die Webseite kommt man nicht so einfach daran: