明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2763|回复: 13

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

  [复制链接]
发表于 2011-5-30 11:17:39 | 显示全部楼层 |阅读模式
在编辑时如何高亮显示相连的几条直线,编辑完成后关闭高亮显示?
发表于 2011-5-30 14:38:56 | 显示全部楼层
用highlight()和unhighlight()
 楼主| 发表于 2011-5-30 15:05:16 | 显示全部楼层
回复 epwt 的帖子

highlight() 显示出来的怎么是虚线啊,而且如果是多段线的话只改变第一段.能给我点具体代码参考下么?
发表于 2011-5-30 17:03:19 | 显示全部楼层
高亮的实质就是把实线变成虚线。
你可以试着在选中实体的时候改变实体的颜色,设置它高亮显示,
那样效果会更明显些。

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

具体代码就是ent.Highlight()了。
要是还有问题,再贴段代码讨论下?
 楼主| 发表于 2011-5-30 17:10:56 | 显示全部楼层
回复 epwt 的帖子

OK,谢谢了,现在基本问题都已解决,就是改变颜色并且在编辑完成时恢复原来的默认颜色,怎么操作?能给我点具体代码参考下么?
 楼主| 发表于 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();
        }
发表于 2011-5-30 17:44:07 | 显示全部楼层
这个默认颜色。。。。。你可能需要记录一下,再重新回去设置了。
当然也许有更好的办法,也期待高人出现哈。

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

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

希望会对你有帮助。
 楼主| 发表于 2011-5-30 18:29:26 | 显示全部楼层
回复 epwt 的帖子

十分感谢!!!;另外在代码中怎么调用 Zoom A命令?A是选择的实体么?
发表于 2011-5-31 09:13:01 | 显示全部楼层
本帖最后由 epwt 于 2011-5-31 09:31 编辑

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


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

 楼主| 发表于 2011-5-31 10:04:10 | 显示全部楼层
回复 epwt 的帖子

十分感谢!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 21:25 , Processed in 0.184011 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表