sclkkk 发表于 2011-5-30 11:17:39

求助:在编辑时如何高亮显示相连的几条直线,编辑完成后关闭高亮显示?

在编辑时如何高亮显示相连的几条直线,编辑完成后关闭高亮显示?

epwt 发表于 2011-5-30 14:38:56

用highlight()和unhighlight()

sclkkk 发表于 2011-5-30 15:05:16

回复 epwt 的帖子

highlight() 显示出来的怎么是虚线啊,而且如果是多段线的话只改变第一段.能给我点具体代码参考下么?

epwt 发表于 2011-5-30 17:03:19

高亮的实质就是把实线变成虚线。
你可以试着在选中实体的时候改变实体的颜色,设置它高亮显示,
那样效果会更明显些。

至于只改变第一段线,你还是贴段代码上来吧。

具体代码就是ent.Highlight()了。
要是还有问题,再贴段代码讨论下?

sclkkk 发表于 2011-5-30 17:10:56

回复 epwt 的帖子

OK,谢谢了,现在基本问题都已解决,就是改变颜色并且在编辑完成时恢复原来的默认颜色,怎么操作?能给我点具体代码参考下么?

sclkkk 发表于 2011-5-30 17:30:45

回复 epwt 的帖子

现在还要实现个功能,就是我同过代码选择个实体时,当前窗口要移动到该实体所在位置.请问怎么实现?
代码如下
public static void setElementHighlight(long elementid, int entNo,int pStatus)
      {
            DocumentLock docLock = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.LockDocument();
            Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
            ObjectId objectids = FindElement(elementid, entNo);
            Database db = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Database;
            Autodesk.AutoCAD.DatabaseServices.TransactionManager tm = db.TransactionManager;
            Entity acadEntity = null;


            using (Transaction trans = tm.StartTransaction())
            {
                if (!objectids.IsNull)
                {
                  acadEntity = (Entity)trans.GetObject(objectids, OpenMode.ForWrite);

                  if (pStatus == 0)
                  {
                        acadEntity.Highlight();
                  }
                  else
                  {
                        acadEntity.Unhighlight();
                  }
                }
                trans.Commit();
                Application.UpdateScreen();
            }
            docLock.Dispose();
      }

epwt 发表于 2011-5-30 17:44:07

这个默认颜色。。。。。你可能需要记录一下,再重新回去设置了。
当然也许有更好的办法,也期待高人出现哈。

关于移动到实体所在的位置,我目前没有特别好的解决办法,
但是你可以试一下调用 Zoom A命令,看是否符合你的要求。

还有就是提点建议,
你可以把DocumentLock 放到using里面。

希望会对你有帮助。

sclkkk 发表于 2011-5-30 18:29:26

回复 epwt 的帖子

十分感谢!!!;另外在代码中怎么调用 Zoom A命令?A是选择的实体么?

epwt 发表于 2011-5-31 09:13:01

本帖最后由 epwt 于 2011-5-31 09:31 编辑

public static void SendStringToExecute(string command)
    {
      Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;      
          if (!command.EndsWith(" ")) {//确保命令后面有空格,相当于需要回车后执行命令,否则命令不执行
      command = command + " ";
      }
      doc.SendStringToExecute(command, true, false, false);
    }

调用的时候
SendStringToExecute("._zoom _all ");
就可以了。

sclkkk 发表于 2011-5-31 10:04:10

回复 epwt 的帖子

十分感谢!!!
页: [1] 2
查看完整版本: 求助:在编辑时如何高亮显示相连的几条直线,编辑完成后关闭高亮显示?