c# CAD二次开发 模拟CAD移动图形, 通过圆现在注记,改变图形颜色
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Runtime;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Application = Autodesk.AutoCAD.ApplicationServices.Application;
using System.Windows.Forms;

namespace _7_属性查找
{
public class Class1
{
///
/// 通过文本和扩展属性进行搜索
///
[CommandMethod(“yesee”)]
public void selectdemo()
{
Form1selecte form = new Form1selecte();
form.Show();
}
///
/// 更新图形颜色
///
///
private void changecolor(SelectionSet sset)
{
ObjectId[] ids = sset.GetObjectIds();
Database db = HostApplicationServices.WorkingDatabase;
using (Transaction trans = db.TransactionManager.StartTransaction())
{
for (int i = 0; i < ids.Length; i++)
{
Entity ent = (Entity)ids[i].GetObject(OpenMode.ForWrite);

                ent.ColorIndex = 1;DBText textEntity = ent as DBText;string sTxt = textEntity.TextString;}trans.Commit();}}/// <summary>/// 通过选择圆来选择/// </summary>[CommandMethod("yese1")]public void selectdemo1(){Database db = HostApplicationServices.WorkingDatabase;Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;//通过过滤器选择圆TypedValue[] values = new TypedValue[]{new TypedValue((int)DxfCode.Start,"circle")//选择图形为圆};SelectionFilter filter = new SelectionFilter(values);PromptSelectionResult psr = ed.GetSelection(filter);List<ObjectId> ids = new List<ObjectId>();if (psr.Status == PromptStatus.OK){//遍历每个圆,将每个SelectionSet sset = psr.Value;List<Point3d> points = this.getpoint(sset);for (int i = 0; i < points.Count; i++){PromptSelectionResult ss1 = ed.SelectCrossingWindow(points.ElementAt(i), points.ElementAt(i));ids.AddRange(ss1.Value.GetObjectIds());}}this.changecolor1(ids);}/// <summary>/// 通过顶点选择集/// </summary>/// <param name="sset"></param>/// <returns></returns>private List<Point3d> getpoint(SelectionSet sset){List<Point3d> points = new List<Point3d>();ObjectId[] ids = sset.GetObjectIds();Database db = HostApplicationServices.WorkingDatabase;using (Transaction trans = db.TransactionManager.StartTransaction()){for (int i = 0; i < ids.Length; i++){Entity ent = (Entity)ids[i].GetObject(OpenMode.ForWrite);Point3d creter = ((Circle)ent).Center;double radius = ((Circle)ent).Radius;points.Add(new Point3d(creter.X + radius, creter.Y, creter.Z));}trans.Commit();}return points;}/// <summary>/// 更新图形颜色/// </summary>/// <param name="sset"></param>private void changecolor1(List<ObjectId> ids){Database db = HostApplicationServices.WorkingDatabase;using (Transaction trans = db.TransactionManager.StartTransaction()){for (int i = 0; i < ids.Count; i++){Entity ent = (Entity)ids[i].GetObject(OpenMode.ForWrite);ent.ColorIndex = 3;}trans.Commit();}}/// <summary>/// 动态交互,移动图形/// </summary>[CommandMethod("yemove", CommandFlags.UsePickSet)]public void yemove(){Database db = HostApplicationServices.WorkingDatabase;Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;//选择在命令前的图形PromptSelectionResult psr = ed.SelectImplied();//如果执行命令前没有选择对象,则执行选择if (psr.Status != PromptStatus.OK){psr = ed.GetSelection();}if (psr.Status != PromptStatus.OK) return;//获取用户指定的基础点Point3d pointbase = new Point3d(0, 0, 0);PromptPointOptions ppo = new PromptPointOptions("\n 指定基点或[位移(D)]<位移>:");ppo.AllowNone = true;PromptPointResult ppr = ed.GetPoint(ppo);//判断用户指定基础点的输入if (ppr.Status == PromptStatus.Cancel) return;if (ppr.Status == PromptStatus.OK) pointbase = ppr.Value;//获取选择图形的图形对象List<Entity> entlist = new List<Entity>();//把选中的ID赋给idsObjectId[] ids = psr.Value.GetObjectIds();entlist = this.getentity(ids);//改变源对象的颜色this.lowcolor(entlist, 211);//声明一个移动类MoveJig movejig = new MoveJig(entlist, pointbase);PromptResult pr = ed.Drag(movejig);}/// <summary>/// 将选择的对象转成Entity/// </summary>/// <param name="ids">图形列表</param>/// <returns></returns>private List<Entity> getentity(ObjectId[] ids){Database db = HostApplicationServices.WorkingDatabase;List<Entity> enlist = new List<Entity>();using (Transaction trans = db.TransactionManager.StartTransaction()){for (int i = 0; i < ids.Length; i++){Entity ent = (Entity)ids[i].GetObject(OpenMode.ForWrite);enlist.Add(ent);}}return enlist;}/// <summary>/// 改变图形对象的颜色/// </summary>/// <param name="enlist">图形对象</param>/// <param name="colorindex">颜色值</param>private void lowcolor(List<Entity> enlist, int colorindex){Database db = HostApplicationServices.WorkingDatabase;using (Transaction trans = db.TransactionManager.StartTransaction()){for (int i = 0; i < enlist.Count; i++){Entity ent = (Entity)enlist[i].ObjectId.GetObject(OpenMode.ForWrite);ent.ColorIndex = colorindex;}trans.Commit();}}
}

}

c# CAD二次开发 模拟CAD移动图形, 通过圆现在注记,改变图形颜色相关推荐

  1. c# cad 二次开发 类库 CAD表格的操作,给CAD添加一个表格

    c# cad 二次开发 类库 CAD表格的操作,给CAD添加一个表格 using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCA ...

  2. 【CAD二次开发】CAD选择集的问题集合

    var result = ed.SelectCrossingWindow();获取指定范围内的对象,类似从右下角到左上角框选: 注意框选对象要在CAD的窗体范围内,否则会返回错误结果.

  3. C#之CAD二次开发(5) CAD图形填充封装

    0.引言 我们首先来康康在CAD中填充创建的一个过程(图有点吃藕,凑合看==) 搞清楚这个以后,我们在把之前那张出镜率很高的CAD类继承关系图拿出来 可以看到的是Hatch(填充)类继承于Entity ...

  4. CAD二次开发获取CAD内所有的大字体SHX字体

    using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.Runtime; using Microsoft.Win32; u ...

  5. [CAD二次开发]获取CAD内3D块参照的欧拉旋转角,Matrix3d矩阵转欧拉角。

    根据选择块参照生成新的欧拉角相同的块参照 [CommandMethod("ttt")]public void rr(){Document doc = Application.Doc ...

  6. cad二次开发程序的绿色安装

    此问题的引入是因为一个cad二次开发软件,客户要求做成绿色安装.何为绿色安装呢?软件包copy到一台电脑上(已安装CAD),双击exe,打开的界面包含自定义的菜单.菜单的图标能正确显示.每个功能能使用 ...

  7. intersect 相交 范围_关于CAD二次开发中(范围线自相交)相交线的问题

    CAD二次开发对于毕业没多久,又是半路出家的我来说,是一个很大的挑战,遇到过很多难以解决的问题,这次在CAD二次开发遇到一个很苦恼的问题:判断 一个由线段组成的闭合区域中,是否存在着相互之间相交的线段 ...

  8. CAD 二次开发 图层操作(1)创建图层

    CAD二次开发的资料比较少,除了李冠亿先生的<深居浅出AutoCAD二次开发>这本书之外,目前没有找到合适的参考资料.现将自己工作中用的的一些方法贴出来.方便各位网友快速入门. #regi ...

  9. CAD 二次开发 图层操作(3)取得指定图层下的所有对象id

    对于CAD二次开发的人来说,可能需要对某一图层下的实体(点,线,面域,块,三维实体)进行不同的操作.下面的方法,即可实现获取指定图层名称下的所有实体ID. 输入参数为图层名称: 返回值为:对象主键集合 ...

最新文章

  1. 小说站 章节内容 ajax,第17章 作业分析与异步编程原理——2019年5月14日22:00
  2. Android之利用JSBridge库实现Html,JavaScript与Android的所有交互
  3. 【Linux 内核 内存管理】Linux 内核堆内存管理 ① ( 堆内存管理 | 内存描述符 mm_struct 结构体 | mm_struct 结构体中的 start_brk、brk 成员 )
  4. 如何让FPGA中的SPI与其他模块互动起来
  5. 前端学习(663):逻辑中断逻辑与
  6. Pytorch 神经网络训练过程
  7. 使用大于16TB的ext4文件系统
  8. Cisco公司的CAR流量控制策略
  9. 【病毒程序】发一个无聊的小病毒(无限弹窗)
  10. Intellij IDEA中拉svn分支
  11. Ubuntu16.04 LTS无法开启无线网开关的解决方法(联想Y7000)
  12. node--压缩文件夹
  13. 微信上卖菜的小程序怎么做?
  14. 古天乐一哭,电影宣传又跪了下来
  15. CPU,处理器插槽,逻辑处理器,处理器内核
  16. 云服务器 文件管理,云服务器文件管理工具
  17. 单机:Oracle 11GR2 数据库一键安装
  18. 前端实现播放直播视频或监控视频
  19. Matlab画柱状图和折线图的暗黑技巧
  20. 吾爱神器,图片变清晰,这个软件好用的有点过分!

热门文章

  1. 用python做人脸识别_用Python实现一个简单的人脸识别,原来我和这个明星如此相似...
  2. 计算机网络技术现代安防是啥意思,现代化校园视频安防监控系统 具有哪些特点呢...
  3. 岁月如白驹过隙,抓住了你就是黑马
  4. 推荐|NE(Network Embedding)论文小览,附21篇经典论文和代码
  5. 关于如何设计动态表情的分享
  6. 给外行能看懂的科普:这就叫自然语言处理
  7. 我,北漂5年程序员,终于在帝都全款买房。
  8. ubuntu 查询程序崩溃日志_ubuntu服务器系统崩溃数据成功恢复(一)
  9. D. Lucky Chains edu139 div2
  10. 如何使用iAd在应用程序中展示Banner广告