乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 89|回复: 6

更改某个块的名称

[复制链接]

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
6
发表于 2015-7-10 17:39:43 | 显示全部楼层 |阅读模式
大家好 theswamp.org
提前,我要感谢所有在这里分享知识的人。
这是我的第一个话题,我请所有朋友帮助我。我想通过VB .Net更改某个块的名称,但我还没有成功。任何人都可以帮我这样做吗?断续器

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

116

主题

996

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1466
发表于 2015-7-10 21:43:03 | 显示全部楼层
也许可以玩一下这样的东西,//(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我将把翻译留给您,享受!。
回复

使用道具 举报

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
6
发表于 2015-7-11 07:46:57 | 显示全部楼层
亲爱的Kerry
感谢您的良好代码和结果。请您离开VB代码吗?断续器
回复

使用道具 举报

116

主题

996

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1466
发表于 2015-7-11 17:03:51 | 显示全部楼层
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))。
结束使用。
结束子。
结束类。
结束命名空间。


回复

使用道具 举报

116

主题

996

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1466
发表于 2015-7-12 22:29:27 | 显示全部楼层
非破坏性变化;
正在对此进行一些重构,并意识到注释
//start文档事务。
应该 read
//start 一个数据库事务。
我已经和鞭打

预约了。
回复

使用道具 举报

15

主题

190

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
250
发表于 2015-7-13 12:44:17 | 显示全部楼层

鞭笞者现在可以见你了。
回复

使用道具 举报

116

主题

996

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1466
发表于 2015-7-13 15:33:45 | 显示全部楼层
来自维基百科
“最后一个在澳大利亚被鞭打的人是1958年在墨尔本彭里奇监狱的威廉·约翰·奥米利。”
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-8 16:15 , Processed in 1.262786 second(s), 66 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表