判断图层是否存在
<p><font face="Verdana">初学C#,请各位老师帮助指点</font></p><p><font face="Verdana">如何判断当前文档中是否已新建了一个层,如果没有侧新建,如果有就不用新建</font></p>
<p>以下是新建层的代码,请高手帮我改为可以判断有就不用新建</p>
<p> </p>
<p> <font face="Verdana"> public void CreateNewLayer()<br/> {<br/> LayerTableRecord ltRec = new LayerTableRecord(); <br/> ltRec.Name = "MYLAYER"; <br/> Database db = Application.DocumentManager.MdiActiveDocument.Database; <br/> DBTransMan tm = db.TransactionManager; <br/> using (Transaction ta = tm.StartTransaction()) <br/> {<br/> LayerTable lt = (LayerTable)tm.GetObject(db.LayerTableId, OpenMode.ForWrite, false); <br/> lt.Add(ltRec);<br/> tm.AddNewlyCreatedDBObject(ltRec, true); <br/> ta.Commit(); <br/> }<br/> }</font></p>
<p></p> 2010以上用lt.Has判断,以下用下面的函数
/// <summary>
/// 在符号表中获取对应键值的记录Id
/// </summary>
/// <param name="table">符号表</param>
/// <param name="key">记录键值</param>
/// <returns>对应键值的记录Id</returns>
public static ObjectId GetRecorId<T>(this T table, string key) where T : SymbolTable
{
if (table.Has(key))
{
if (Application.Version.Major < 18)
{
ObjectId idres = table;
if (!idres.IsErased)
return idres;
foreach (ObjectId id in table)
{
if (!id.IsErased)
{
SymbolTableRecord str = id.GetObject<SymbolTableRecord>();
if (str.Name == key)
return str.ObjectId;
}
}
}
else
{
return table;
}
}
return ObjectId.Null;
}
本帖最后由 作者 于 2010-11-18 23:45:51 编辑 <br /><br /> <p>谢谢狐哥指点</p>
<p>我还不理解如何调用此函数.能否再指点一下如何调用,</p>
<p>例如:</p>
<p>1) 我贴的那个就直接CreateNewLayer()就调用了,你帮我写的这个函数需要如何调用;</p>
<p> </p>
<p>2) 另外再请教一个问题,如何将此新建层设为当前层;(就是LISP中<font face="Verdana">(setvar "clayer" "TEST")的效果</font>);</p>
页:
[1]