缩放视口
大家好,现在,我正在尝试创建一个命令,允许用户在创建图形时输入默认的视口大小,但有几件事我还没有解决。第一个问题是如何使默认视口大小同时应用于模型空间和所有布局,还是自动实现?第二个问题是如何使用c#设置自定义视口大小?
下面是一些代码,允许我查询现有视口的比例。
public void CurrentVportScale()
{
Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
ObjectId vpid = ed.CurrentViewportObjectId;
using (Transaction tr =
ed.Document.TransactionManager.StartTransaction())
{
Viewport vport = (Viewport)tr.GetObject(vpid, OpenMode.ForRead);
ed.WriteMessage(vport.CustomScale.ToString());
}
}
我试图将最后几行更改为
vport.CustomScale.Equals(2:1);
tr.commit();
tr.dispose();
但是没有用。如有任何见解,将不胜感激。值得一提的是,我之前运行了一个命令(但可以在之后运行),该命令根据用户输入创建“x”个布局,因此这些布局还需要接受新的视口比例。
提前感谢! 是否要将比例应用于模型空间中的对象和图纸空间布局中的视口? 我只是仔细检查了一下,它实际上只需要应用于图纸空间布局 这很好。你刚才把我弄糊涂了。 请阅读代码发布指南。 抱歉,我假设是格式问题,现在已经解决了,很抱歉打扰您。
你不麻烦,谢谢你把代码放在标签里。 可以使用StandardScaleType枚举设置StandardScale
如果不是标准比例,可以使用CustomScale属性进行设置(即使是标准比例,也可以使用Custom scale属性进行设置,但要传递“double”值) 感谢您迄今为止的帮助,非常感谢。在开发者手册或其他地方是否有这样的例子。我仍然有点迷路,我的代码似乎抛出了很多致命的错误。 就像我在之前的帖子中提到的,你用标准比例改变它,并传递一个枚举值
public void StandardScaleViewPort()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
using (Transaction trx = db.TransactionManager.StartTransaction())
{
PromptEntityOptions peo = new PromptEntityOptions("\nSelect Viewport: ");
peo.SetRejectMessage("\nInvalid selection...");
peo.AddAllowedClass(typeof(Viewport), true);
PromptEntityResult per = ed.GetEntity(peo);
if (per.Status != PromptStatus.OK)
{
return;
}
Viewport vp = trx.GetObject(per.ObjectId, OpenMode.ForWrite) as Viewport;
vp.StandardScale = StandardScaleType.Scale1To8inchAnd1ft;
trx.Commit();
}
}
或者使用自定义比例并在双精度中传递,这与第一个命令相同,只是它要求比例并使用customscale属性
public void CustomScaleViewport()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
using (Transaction trx = db.TransactionManager.StartTransaction())
{
PromptEntityOptions peo = new PromptEntityOptions("\nSelect Viewport: ");
peo.SetRejectMessage("\nInvalid selection...");
peo.AddAllowedClass(typeof(Viewport), true);
PromptEntityResult per = ed.GetEntity(peo);
if (per.Status != PromptStatus.OK)
{
return;
}
Viewport vp = trx.GetObject(per.ObjectId, OpenMode.ForWrite) as Viewport;
PromptDoubleOptions pdo = new PromptDoubleOptions("\nEnter Scale");
PromptDoubleResult pdr = ed.GetDouble(pdo);
if (pdr.Status != PromptStatus.OK)
{
return;
}
vp.CustomScale = pdr.Value;
trx.Commit();
}
}
页:
[1]
2