c# CAD二次開發(fā) 模擬CAD移動圖形, 通過圓現(xiàn)在注記,改變圖形顏色
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
{
///
/// 通過文本和擴(kuò)展屬性進(jìn)行搜索
///
[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);文章來源:http://www.zghlxwxcb.cn/news/detail-465587.html
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>
/// 通過頂點(diǎn)選擇集
/// </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>
/// 動態(tài)交互,移動圖形
/// </summary>
[CommandMethod("yemove", CommandFlags.UsePickSet)]
public void yemove()
{
Database db = HostApplicationServices.WorkingDatabase;
Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
//選擇在命令前的圖形
PromptSelectionResult psr = ed.SelectImplied();
//如果執(zhí)行命令前沒有選擇對象,則執(zhí)行選擇
if (psr.Status != PromptStatus.OK)
{
psr = ed.GetSelection();
}
if (psr.Status != PromptStatus.OK) return;
//獲取用戶指定的基礎(chǔ)點(diǎn)
Point3d pointbase = new Point3d(0, 0, 0);
PromptPointOptions ppo = new PromptPointOptions("\n 指定基點(diǎn)或[位移(D)]<位移>:");
ppo.AllowNone = true;
PromptPointResult ppr = ed.GetPoint(ppo);
//判斷用戶指定基礎(chǔ)點(diǎn)的輸入
if (ppr.Status == PromptStatus.Cancel) return;
if (ppr.Status == PromptStatus.OK) pointbase = ppr.Value;
//獲取選擇圖形的圖形對象
List<Entity> entlist = new List<Entity>();
//把選中的ID賦給ids
ObjectId[] ids = psr.Value.GetObjectIds();
entlist = this.getentity(ids);
//改變源對象的顏色
this.lowcolor(entlist, 211);
//聲明一個移動類
MoveJig movejig = new MoveJig(entlist, pointbase);
PromptResult pr = ed.Drag(movejig);
}
/// <summary>
/// 將選擇的對象轉(zhuǎn)成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();
}
}
}
}文章來源地址http://www.zghlxwxcb.cn/news/detail-465587.html
到了這里,關(guān)于c# CAD二次開發(fā) 模擬CAD移動圖形, 通過圓現(xiàn)在注記,改變圖形顏色的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!