Thank you TT, your Idea was way Better then mine. I hope I understood the correct way of doing it.
and Jeff thank you for your Idea but I was not able to do as you suggested (probably my fault for not know the correct way)
once again thank you all for all your help.
Public Function CloneMLeaderStyle(ByVal TargetDatabase As Database, ByVal sourceFileName As String, ByVal mLeaderStyleName As String, ByVal dscale As Double) As ObjectId
If IO.File.Exists(sourceFileName) = False Or mLeaderStyleName = "" Then
Return ObjectId.Null
End If
Using TargetTrans As Transaction = TargetDatabase.TransactionManager.StartTransaction
Dim Targetdict As DBDictionary = TryCast(TargetTrans.GetObject(TargetDatabase.MLeaderStyleDictionaryId, OpenMode.ForRead), DBDictionary)
Using sourceDatabase As New Database(False, True)
sourceDatabase.ReadDwgFile(sourceFileName, FileOpenMode.OpenForReadAndAllShare, True, Nothing)
Using sourceDbTr As Transaction = sourceDatabase.TransactionManager.StartTransaction()
Try
Dim Sourcedict As DBDictionary = TryCast(sourceDbTr.GetObject(sourceDatabase.MLeaderStyleDictionaryId, OpenMode.ForRead), DBDictionary)
If Not Sourcedict.Contains(mLeaderStyleName) Then
Return ObjectId.Null
End If
Dim SourceMLeaderStyleID As ObjectId = Sourcedict.GetAt(mLeaderStyleName)
Dim ids As New ObjectIdCollection()
ids.Add(SourceMLeaderStyleID)
Dim idMap As New IdMapping()
If Not Targetdict.Contains(mLeaderStyleName) Then
TargetDatabase.WblockCloneObjects(ids, TargetDatabase.MLeaderStyleDictionaryId, idMap, DuplicateRecordCloning.Replace, False)
TargetTrans.Commit()
Return idMap(SourceMLeaderStyleID).Value
Else
TargetDatabase.WblockCloneObjects(ids, TargetDatabase.MLeaderStyleDictionaryId, idMap, DuplicateRecordCloning.MangleName, False)
Dim TempMLeaderStyleID As ObjectId = idMap(SourceMLeaderStyleID).Value
Dim TempMLeaderStyle As MLeaderStyle = TryCast(TargetTrans.GetObject(TempMLeaderStyleID, OpenMode.ForRead), MLeaderStyle)
Dim TargetMLeaderStyleID As ObjectId = Targetdict.GetAt(mLeaderStyleName)
Dim TargetMLeaderStyle As MLeaderStyle = TryCast(TargetTrans.GetObject(TargetMLeaderStyleID, OpenMode.ForRead), MLeaderStyle)
TempMLeaderStyle.UpgradeOpen()
TempMLeaderStyle.Scale = dscale
TempMLeaderStyle.DowngradeOpen()
TargetMLeaderStyle.UpgradeOpen()
TargetMLeaderStyle.SwapIdWith(TempMLeaderStyleID, True, True)
TargetMLeaderStyle.DowngradeOpen()
Targetdict.Remove(TempMLeaderStyleID)
TargetTrans.Commit()
Return Targetdict.GetAt(mLeaderStyleName)
End If
Catch
Return ObjectId.Null
End Try
End Using
End Using
End Using
End Function