所以我找到了一个小解决方案(通过反复试验)。
HostApplicationServices,WorkingDatabase = SourceDB。
使用tr3作为Transaction = SourceDB,transaction manager . start transaction()。
。
“获取扩展字典”。
将块表调成块表。
blkTable = CType(tr3,GetObject(SourceDB,BlockTableId,OpenMode。ForRead)、块表)。
。
Dim extension dictionary As db dictionary 。
extension dictionary = CType(tr3,GetObject(blkTable,ExtensionDictionary(),OpenMode。ForRead,False)、DBDictionary)。
。
' '获取现有块表记录中对象的对象id 。
Dim objIdCol As New objectid collection()。
。
Dim DataDic As db dictionary = CType(tr3,GetObject(ExtensionDictionary,GetAt(“规则”),OpenMode。ForWrite)、DBDictionary)。
。
'允许我从字典中获取键名。
Dim DicKeys As IDictionary = DataDic 。
。
对于DicKeys中作为字符串的每个X,钥匙。
objIdCol,添加(DataDic,GetAt(X))。
下一步。
。
Dim id map As id mapping = New id mapping()。
newDb,WblockCloneObjects(objIdCol,。
DestDict1,ObjectId,。
idMap,。
重复记录克隆,MangleName,。
假)。
。
tr3,Commit()。
。
结束使用。
。
但是每个Xrecord的名称都没有出现,他们通过*A35,*A18等....我不明白这是为什么?。