SetOrMakeLAYOUT和Zoom Ext
Ref:https://forums.autodesk.com/t5/net/set-new-layout-to-zoom-extents-in-c/m-p/7081775#U7081775在这里发布更好的代码窗格质量概念证明代码,using System;。使用Autodesk.AutoCAD.Runtime;。
使用Autodesk.AutoCAD.DatabaseServices;。
使用Autodesk.AutoCAD.EditorInput;。
using CadApp = Autodesk.AutoCAD.ApplicationServices.Core.Application;。
。
。
。
命名空间 KdubServices.Test0315。
{。
公共类 MyCommands。
{。
[命令方法(“kb_SetOrMakeLAYOUT”)]。
公共无效kb_SetOrMakeLAYOUT()。
{。
var doc = CadApp.DocumentManager.MdiActiveDocument;。
var db = doc.数据库;。
。
var pso = new PromptStringOptions(“\nEnter the layout name: ”);。
var pr = doc.Editor.GetString(pso);。
如果(pr.Status != PromptStatus.OK) // 。
返回;。
。
var name = pr.StringResult; 。
。
。
using (var tr = db.TransactionManager.StartTransaction()){。
// 作弊在这里 : 。
// 同时使用 LayoutManager 和 Dictionary。
。
引用布局管理器。
var lmc = LayoutManager.Current;。
。
获取当前数据库的布局字典。
var layouts = (DBDictionary) tr.GetObject(db.LayoutDictionaryId, OpenMode.ForRead);。
。
获取或创建布局。
var layoutId = layouts,包含(名称) ?布局,GetAt(name) : lmc.CreateLayout(name);。
。
设置命名的布局当前 ( 活动 )。
lmc.CurrentLayout = name;。
。
打开布局。
var layout = (Layout) tr.GetObject(layoutId, OpenMode.ForRead);。
。
输出布局信息演示:。
医生,Editor.WriteMessage($“\nTab Order: {layout.TabOrder}“ +。
$“\n选项卡 选定:{布局,选项卡选择}“ +。
$“\nBlock Table Record ID: {layout.BlockTableRecordId}”。
);。
。
缩放至布局范围。
医生,SendStringToExecute(“._zoom _extents”, true, false, false);。
断续器Commit();。
}。
}。
}。
}。
。
。
**** Hidden Message ***** 不错的kdub,
SendStringToExecute
也是我的第一个想法。这感觉像是一个黑客,但它的工作... 谢谢蒂姆,这是一个黑客,是的...但有效// - 添加了PromptStatus检查: if(pr。地位!=提示状态,好)//。
返回;。
。
var name = pr,StringResult。
有一种方法可以让AutoCAD中的“最后一个命令”功能忽略缩放命令
...但我想不起是什么了。
有人吗??... 有点跑题抱歉,但我发现了.SendStringToExecute 在一种情况下比 ed.command 工作得更好。
我喜欢2017年的矩形revcloud和.SendStringToExecute将允许我使用它,而相同的字符串不会与ed.command一起使用。
然后,我可以开始命令使用正确的图层,并结束命令它将日期和注释添加到标题栏。这就像ed.command只使用2015 cad
页:
[1]