chpmould 发表于 2010-11-24 01:01:00

保存当前图层设置

<p><font face="Verdana">请教各位老师,在<font color="#0000ff">C#</font>中如何实现以下 <font color="#0000ff">LISP </font>中图层设置功能:<br/></font>&nbsp;</p>
<p><font face="Verdana">(setq old_lay(getvar "clayer"))&nbsp;&nbsp; <font face="Verdana">[</font>保存当前图层]</font></p>
<p><font face="Verdana">(SETVAR "CLAYER" "TEST")&nbsp; <font face="Verdana">[<font face="Verdana">设为当前图层</font>]</font></font></p>
<p><font face="Verdana">(setvar "clayer" old_lay)&nbsp;&nbsp; <font face="Verdana">[</font><font face="Verdana">恢复</font>当前图层]</font></p>
<p>&nbsp;</p>
<p>我希望实现的功能如下:</p>
<p>&nbsp;</p>
<p>第一步:在一个程序执行的开始先[保存当前图层]</p>
<p>第二步:将指定图层名称[<font face="Verdana">设为当前图层</font>]</p>
<p>第三步:执行绘图</p>
<p>第四步:在一个程序执行的开始先[&nbsp;<font face="Verdana">恢复<font color="#0000ff">第一步</font>保存的</font>当前图层]</p>
<p>&nbsp;</p>

雪山飞狐_lzh 发表于 2010-11-24 09:59:00

<p>你的需求是不需要设置当前图层的</p>
<p>在生成图形对象后给他指定一个图层的ID就OK了</p>

chpmould 发表于 2010-11-24 12:45:00

<p>狐哥</p>
<p>我需要实现的功能是如下:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 当运行程序时首先记住当前图面中当前图层(例如:当前图层为0层);接下来程序新建一个Test层,将程序生成所有图形对象为Test层(例如:新建一个图层为Test层);最后当程序结束绘图之后,再将图层转换为0层</p>
<p>&nbsp;</p>

chpmould 发表于 2010-11-24 19:33:00

<p>顶一下...</p>

雪山飞狐_lzh 发表于 2010-11-24 22:53:00

<p>ObjectId layId = CreateLayer("01");</p>
<p>&nbsp;</p>
<p>........</p>
<p>&nbsp;</p>
<p>Line l = new Line(pt1, pt2);</p>
<p>l.LayerId = layId;</p>
<p>......</p>
<p>&nbsp;</p>
<p>&nbsp;</p>

chpmould 发表于 2010-11-24 23:46:00

<font face="Verdana">如何获取当前图层...</font>

雪山飞狐_lzh 发表于 2010-11-25 07:39:00

<p>先把这里看一遍吧</p>
<p>&nbsp;</p>
<p><font face="Verdana"><a href="http://www.mjtd.com/helpcenter/netguide/">http://www.mjtd.com/helpcenter/netguide/</a></font></p>
<p>&nbsp;</p>

chpmould 发表于 2010-11-25 12:32:00

谢谢!问题已解决...

SWAYWOOD 发表于 2013-10-10 16:13:12

我是这么搞的,感觉有些笨,不知道大家有没有好的方法?       /// <summary>
      /// 取得当前图层名称
      /// </summary>
      /// <param name="db">数据库对象</param>
      /// <returns></returns>
      publicstatic stringGetCurrentLayer(this Database db)
      {
            //Database db = HostApplicationServices.WorkingDatabase;
            using (Transaction trans = db.TransactionManager.StartTransaction())
            {
                //获取当前图形中所有颜色为红色的图层层名
                var CurrentLayer = (from layer in db.GetAllLayers()
                                 where layer.Id==db.Clayer
                                 select layer.Name).ToList();
                return CurrentLayer;
                trans.Commit();
            }
      }

cchessbd 发表于 2022-10-22 10:44:45

好好好!好好好!
页: [1]
查看完整版本: 保存当前图层设置