更改某个块的名称
大家好 theswamp.org提前,我要感谢所有在这里分享知识的人。
这是我的第一个话题,我请所有朋友帮助我。我想通过VB .Net更改某个块的名称,但我还没有成功。任何人都可以帮我这样做吗?断续器
**** Hidden Message ***** 也许可以玩一下这样的东西,//(C)CodeHimBelonga kdub 2015/07/11。
//。
。
使用系统;。
使用Autodesk.AutoCAD.Runtime;。
使用Autodesk.AutoCAD.ApplicationServices;。
使用Autodesk.AutoCAD.DatabaseServices;。
使用Autodesk.AutoCAD.Geometry;。
使用Autodesk.AutoCAD.EditorInput;。
使用AcadApp=Autodesk.AutoCAD.ApplicationServices.Core.Application;。
。
[程序集:命令类(类型(kdubRenameBlock.MyCommands))]。
。
命名空间kdubRenameBlock。
{。
公共类MyCommand ds。
{。
[命令方法("Test01",CommandFlags.Modal)]。
公共无效测试01()。
{。
//获取当前文档、数据库和编辑器,。
var doc=AcadApp.DocumentManager.MdiActiveDocument;。
var db=doc.Database;。
var ed=doc.Editor;。
。
//建立变量。
常量字符串存在块名称=“块”;。
const string renamedBlockName="在块名称";。
。
//启动文档事务,。
使用(事务tr=db.TransactionManager.StartTransaction ()) {。
//打开块表进行读取,。
var bt=tr.GetObject(db.BlockTableId,OpenMode.ForWrite)。
作为BlockTable;。
。
//确认存在的BlockName存在,。
如果(!bt.Has(存在的BlockName)){。
ed.WriteMessage(。
"\nBlock'{0}'在当前绘图中不可用,",。
存在的块名称);。
返回;。
}。
。
//确认重命名的BlockName不存在,。
如果(bt.Has(重命名的块名称)){。
ed.WriteMessage(。
"\n块'{0}'已存在于当前绘图中,",。
重命名的块名称);。
返回;。
}。
。
//为存在的BlockName打开块表记录。
var block TableRecordId=bt[存在的BlockName];。
var btr=tr.GetObject(block TableRecordId,OpenMode.ForWrite)。
作为块表记录;。
。
ed.WriteMessage("\nDXF name:"+btr.ObjectId.ObjectClass.DxfName);。
ed.WriteMessage("\nObjectID:"+btr.ObjectId.ToString ());。
ed.WriteMessage("\nBlockName:"+btr.Name);。
。
//重命名块。
btr.Name=renamedBlockName;。
。
tr.Commit();。
。
ed.WriteMessage("\nObjectID:"+btr.ObjectId.ToString ());。
ed.WriteMessage("\nBlockName:"+btr.Name);。
}。
}。
}。
}。
如果您真的想使用VB.net我将把翻译留给您,享受!。
亲爱的Kerry
感谢您的良好代码和结果。请您离开VB代码吗?断续器 http://www.developerfusion.com/tools/convert/csharp-to-vb/http://converter.telerik.com/http://www.carlosag.net/tools/codetranslator/http://lmgtfy.com/?q=translate+c%23+to+vb.net'(C)CodeHimBelonga kdub 2015/07/11。
'。
。
导入Autodesk.AutoCAD.Runtime。
导入Autodesk.AutoCAD.ApplicationServices。
导入Autodesk.AutoCAD.DatabaseServices。
导入Autodesk.AutoCAD.Geometry。
导入Autodesk.AutoCAD.EditorInput。
导入AcadApp=Autodesk.AutoCAD.ApplicationServices.Core.Application。
。
。
。
命名空间kdubRenameBlock。
公共类我的命令。
_。
公共子测试01()。
'获取当前文档、数据库和编辑器,。
昏暗的文件=AcadApp.DocumentManager.MdiActiveDocument。
暗db=doc.Database。
昏暗的ed=doc.Editor。
。
'建立变量。
将存在的BlockName设为字符串=“块”。
const renamedBlockName as String="Block known"。
。
'启动文档事务,。
使用tr作为事务=db.TransactionManager.StartTransaction()。
'打开块表进行读取,。
dim bt=TryCast(tr.GetObject(db.BlockTableId,OpenMode.ForWrite), BlockTable)。
。
'确认存在的BlockName存在,。
如果没有bt.Has,那么。
ed.WriteMessage(vbLf&"Block'{0}'在当前绘图中不可用,"。
返回。
结束如果。
。
'确认重命名的BlockName不存在,。
如果bt.Has(重命名的块名称),那么。
ed.WriteMessage(vbLf&"Block'{0}'已经存在于当前绘图中,", renamedBlockName)。
返回。
结束如果。
。
'为存在的BlockName打开块表记录。
昏暗块TableRecordId=bt(存在块名称)。
昏暗的btr=TryCast(tr.GetObject(block TableRecordId,OpenMode.ForWrite), BlockTableBook)。
。
ed.WriteMessage(vbLf&"DXF name:"&Convert.ToString(btr.ObjectId.ObjectClass.DxfName))。
ed.WriteMessage(vbLf&"ObjectID:"&btr.ObjectId.ToString())。
ed.WriteMessage(vbLf&"BlockName:"&Convert.ToString(btr.Name))。
。
'重命名块。
btr.Name=重命名块名称。
。
tr.Commit()。
。
ed.WriteMessage(vbLf&"ObjectID:"&btr.ObjectId.ToString())。
ed.WriteMessage(vbLf&"BlockName:"&Convert.ToString(btr.Name))。
结束使用。
结束子。
结束类。
结束命名空间。
。
。
非破坏性变化;
正在对此进行一些重构,并意识到注释
//start文档事务。
应该 read
//start 一个数据库事务。
我已经和鞭打
者
预约了。
鞭笞者现在可以见你了。 来自维基百科
“最后一个在澳大利亚被鞭打的人是1958年在墨尔本彭里奇监狱的威廉·约翰·奥米利。”
页:
[1]