using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using System.IO;
namespace T_cad
{
class LSTKAllCls
{
public LSTKAllCls()
{
}
///
/// 测试函数
///
public void Function()
{
#region//后台打开一个dwg文件,最后用DataBase.saveas()进行保存
try
{
//for (int i = 0; i < 10; i++)
//{
var filenamemuban = @"D:\test\1000tk.dwg";
Database myDB = new Database(false, true);
myDB.ReadDwgFile(filenamemuban, System.IO.FileShare.ReadWrite, false, "");
////选中所有对象进行平移
using (var myTran = myDB.TransactionManager.StartTransaction())
{
var bt = (BlockTable)(myTran.GetObject(myDB.BlockTableId, OpenMode.ForWrite));
foreach (ObjectId blid in bt)
{
var btr = (BlockTableRecord)(myTran.GetObject(blid, OpenMode.ForWrite));
BlockTableRecordEnumerator btrenu = btr.GetEnumerator();
while (btrenu.MoveNext())
{
ObjectId myobjid = btrenu.Current;
Entity myentity = myTran.GetObject(myobjid, OpenMode.ForWrite) as Entity;
//测试后台可否执行的代码
//myentity.Color = Autodesk.AutoCAD.Colors.Color.FromColor(System.Drawing.Color.Blue);
myentity.ColorIndex = 5;
Point3d basept = new Point3d(0, 0, 0);
Point3d targetpt = new Point3d(3000, 3000, 0);
Vector3d vec = targetpt - basept;
Matrix3d mt3d = Matrix3d.Displacement(vec);
myentity.TransformBy(mt3d);
// //平移代码
// ///
///// 指定基点与目标移动实体
/////
///// 实体移动
///// 基点
///// 目标点
//public static void Move(Entity ent, Point3d basePt, Point3d targetPt)
//{
//Vector3d vec = targetPt - basePt;
//Matrix3d mt = Matrix3d.Displacement(vec);
//ent.TransformBy(mt);
//}
}
btrenu.Dispose();
btr.Dispose();
}
bt.Dispose();
myTran.Commit();
myTran.Dispose();
}
var resultfilename = @"D:\test\result\1.dwg";
//var resultfilename = @"D:\test\result\1000tk" + i.ToString() + ".dwg";
myDB.SaveAs(resultfilename, DwgVersion.Current);
myDB.CloseInput(true);
myDB.Dispose();
//}//end for
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
#endregion/////////////
}
public void mianfunction()
{
FolderBrowserDialog fbd = new FolderBrowserDialog();
fbd.Description = "请设置DOM路径";
if (fbd.ShowDialog() == DialogResult.OK)
{
string pathdirectory = fbd.SelectedPath;
DirectoryInfo di = new DirectoryInfo(pathdirectory);
FileInfo[] fiarray = di.GetFiles();
foreach (FileInfo fi in fiarray)
{
string filename = fi.FullName;
if (filename.Contains(".tfw"))
{
DOMAndDWGfunction(fi);
}
}
}
MessageBox.Show("程序运行结束");
}
public void DOMAndDWGfunction(FileInfo fi)
{
string filename = fi.FullName;
//读取tfwcode
string tfwfilename = filename;
string imageName = filename.Replace(".tfw", ".tif");
string dwgfilename = filename.Replace(".tfw", ".dwg");
string myName = fi.Name.Replace(".tfw", "");//图幅号名
double scale = 0;
double X = 0, Y = 0;
try
{
StreamReader sr = new StreamReader(tfwfilename);
scale = Convert.ToDouble(sr.ReadLine());
sr.ReadLine();
sr.ReadLine();
sr.ReadLine();
X = Convert.ToDouble(sr.ReadLine());
Y = Convert.ToDouble(sr.ReadLine());
sr.Close();
sr.Dispose();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString ());
}
//移动dwg图框code
//var filenamemuban = @"E:\2015Work\20150309DOM套图库程序\moban\1000lstk.dwg";
var filenamemuban = @"E:\2015Work\20150309DOM套图库程序\moban\1000lstkcode.dwg";
Database myDB = new Database(false, true);
myDB.ReadDwgFile(filenamemuban, System.IO.FileShare.ReadWrite, false, "");
myDB.CloseInput(true);
//左上角坐标除去外扩
double xmove = X + 10;
double ymove = Y - 10;
//左上 left top
double xlt = xmove/1000.0;
double ylt = ymove / 1000.0;
string xltstr = xlt.ToString("f1");
string yltstr = ylt.ToString("f1");
//右上 right top
double xrt = (xmove + 500) / 1000.0;
double yrt = ymove / 1000.0;
string xrtstr = xrt.ToString("f1");
string yrtstr = yrt.ToString("f1");
//左下 left bottom
double xlb = xmove / 1000.0;
double ylb = (ymove - 500) / 1000.0;
string xlbstr = xlb.ToString("f1");
string ylbstr = ylb.ToString("f1");
//右下 right bottom
double xrb = (xmove + 500) / 1000.0;
double yrb = (ymove - 500) / 1000.0;
string xrbstr = xrb.ToString("f1");
string yrbstr = yrb.ToString("f1");
////X = 559000.000 Y = 3349500.000 Z = 2874.000
////选中所有对象进行平移
using (var myTran = myDB.TransactionManager.StartTransaction())
{
try
{
var bt = (BlockTable)(myTran.GetObject(myDB.BlockTableId, OpenMode.ForWrite));
foreach (ObjectId blid in bt)
{
var btr = (BlockTableRecord)(myTran.GetObject(blid, OpenMode.ForWrite));
BlockTableRecordEnumerator btrenu = btr.GetEnumerator();
while (btrenu.MoveNext())
{
ObjectId myobjid = btrenu.Current;
Entity myentity = myTran.GetObject(myobjid, OpenMode.ForWrite) as Entity;
//////测试后台可否执行的代码
////myentity.Color = Autodesk.AutoCAD.Colors.Color.FromColor(System.Drawing.Color.Blue);
////myentity.ColorIndex = 5;
//////修改文字代码
if (myentity is DBText)
{
DBText text = myentity as DBText;
string str = text.TextString;
switch (str)
{
case "aaaa":
break;
case "bbbb":
break;
case "cccc":
break;
case "eeee":
break;
case "ffff":
break;
case "xxxx":
break;
case "yyyy":
break;
case "zzzz":
break;
//case "Name":
// text.TextString = "邻水县农村土地经营权DOM"; //"邻水县" + "XXX镇XXX村" + "农村土地经营权DOM";
// break;
case "ididid":
text.TextString = myName;
break;
case "xlt":
text.TextString = xltstr.Substring(0, xltstr.Length - 4);
break;
case "xlt2":
text.TextString = xltstr.Substring(xltstr.Length - 4, 4);
break;
case "ylt":
text.TextString = yltstr.Substring(0,yltstr .Length -5);
break;
case "ylt2":
text.TextString = yltstr.Substring(yltstr.Length - 5, 5);
break;
case "xrt":
text.TextString = xrtstr.Substring(0, xrtstr.Length - 4);
break;
case "xrt2":
text.TextString = xrtstr.Substring(xrtstr.Length - 4, 4);
break;
case "yrt":
text.TextString = yrtstr.Substring(0, yrtstr.Length - 5);
break;
case "yrt2":
text.TextString = yrtstr.Substring(yrtstr.Length - 5, 5);
break;
case "xlb":
text.TextString = xlbstr.Substring(0, xlbstr.Length - 4);
break;
case "xlb2":
text.TextString = xlbstr.Substring(xlbstr.Length - 4, 4);
break;
case "ylb":
text.TextString = ylbstr.Substring(0, ylbstr.Length - 5);
break;
case "ylb2":
text.TextString = ylbstr.Substring( ylbstr.Length - 5,5);
break;
case "xrb":
text.TextString = xrbstr.Substring(0, xrtstr.Length - 4);
break;
case "xrb2":
text.TextString = xrbstr.Substring(xrbstr.Length - 4, 4);
break;
case "yrb":
text.TextString = yrbstr.Substring(0, yrbstr.Length - 5);
break;
case "yrb2":
text.TextString = yrbstr.Substring(yrbstr.Length - 5, 5);
break;
//case "":
// break;
default: break;
}
myentity = text;
}
Point3d basept = new Point3d(0, 0, 0);
Point3d targetpt = new Point3d(xmove, ymove, 0);
Vector3d vec = targetpt - basept;
Matrix3d mt3d = Matrix3d.Displacement(vec);
myentity.TransformBy(mt3d);
}
btrenu.Dispose();
btr.Dispose();
}
bt.Dispose();
myTran.Commit();
myTran.Dispose();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString ());
}
}
//////DOM
//using (var myTran = myDB.TransactionManager.StartTransaction())
//{
// try
// {
// BlockTable blktbl = myTran.GetObject(myDB.BlockTableId, OpenMode.ForRead) as BlockTable;
// BlockTableRecord blktblrec = myTran.GetObject(blktbl[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
// DrawOrderTable dot = myTran.GetObject(blktblrec.DrawOrderTableId, OpenMode.ForWrite) as DrawOrderTable;
// //////////////////////创建图像定义对象
// ObjectId imgid = RasterImageDef.GetImageDictionary(myDB);
// if (imgid == ObjectId.Null)
// imgid = RasterImageDef.CreateImageDictionary(myDB);
// DBDictionary imgdict = myTran.GetObject(imgid, OpenMode.ForWrite) as DBDictionary;
// RasterImageDef imgdef = new RasterImageDef();
// imgdef.SourceFileName = imageName;
// imgdef.Load();
// ObjectId imgdefid = imgdict.SetAt(imageName, imgdef);
// myTran.AddNewlyCreatedDBObject(imgdef, true);
// RasterImage image = new RasterImage();
// image.ImageDefId = imgdefid;
// //image.Layer = "DOM";
// blktblrec.AppendEntity(image);
// myTran.AddNewlyCreatedDBObject(image, true);
// double height = imgdef.Size.Y;
// Vector3d vt1 = scale * image.Orientation.Xaxis;
// Vector3d vt2 = scale * image.Orientation.Yaxis;
// image.AssociateRasterDef(imgdef);
// image.Draw();
// image.Orientation = new CoordinateSystem3d(new Point3d(X, Y - height * scale, 0), vt1, vt2);
// ObjectIdCollection obidcoll = new ObjectIdCollection();
// //影像后置
// obidcoll.Add(image.ObjectId);
// dot.MoveToBottom(obidcoll);
// obidcoll = new ObjectIdCollection();
// myTran.Commit();
// myTran.Dispose();
// //Autodesk.AutoCAD.ApplicationServices.Application.UpdateScreen();
// MessageBox.Show(imageName + "影像已按照参数正确加载;");
// }
// catch (Exception ex)
// {
// MessageBox.Show(ex.ToString());
// }
//}
////保存为dwg code
var resultfilename = dwgfilename;
////var resultfilename = @"D:\test\result\1000tk" + i.ToString() + ".dwg";
myDB.SaveAs(resultfilename, DwgVersion.Current);
//myDB.CloseInput(true);
myDB.Dispose();
}
public void DWGXiugai()
{
FolderBrowserDialog fbd = new FolderBrowserDialog();
fbd.Description = "请设置成果路径";
if (fbd.ShowDialog() == DialogResult.OK)
{
string pathdirectory = fbd.SelectedPath;
DirectoryInfo di = new DirectoryInfo(pathdirectory);
FileInfo[] fiarray = di.GetFiles();
foreach (FileInfo fi in fiarray)
{
string filename = fi.FullName;
if (filename.Contains(".dwg"))
{
//DOMAndDWGfunction(fi);
DWGTextXiugai(fi);
}
}
}
MessageBox.Show("程序运行结束");
}
public void DWGTextXiugai(FileInfo fi)
{
var filenamemuban = fi.FullName;
Database myDB = new Database(false, true);
myDB.ReadDwgFile(filenamemuban, System.IO.FileShare.ReadWrite, false, "");
//myDB.CloseInput(true);
////选中所有对象进行平移
using (var myTran = myDB.TransactionManager.StartTransaction())
{
try
{
var bt = (BlockTable)(myTran.GetObject(myDB.BlockTableId, OpenMode.ForWrite));
//int count = 0;
foreach (ObjectId blid in bt)
{
var btr = (BlockTableRecord)(myTran.GetObject(blid, OpenMode.ForWrite));
BlockTableRecordEnumerator btrenu = btr.GetEnumerator();
while (btrenu.MoveNext())
{
ObjectId myobjid = btrenu.Current;
Entity myentity = myTran.GetObject(myobjid, OpenMode.ForWrite) as Entity;
//测试后台可否执行的代码
//myentity.Color = Autodesk.AutoCAD.Colors.Color.FromColor(System.Drawing.Color.Blue);
//myentity.ColorIndex = 5;
////修改文字代码
if (myentity is DBText)
{
DBText text = myentity as DBText;
string str = text.TextString;
// switch (str)
// {
// // case " 201503":
// // text.TextString = "";
// // break;
// // case "( )":
// // text.TextString = "";
// // break;
// // ////////////////////////
// // //case "邻水县八斗丘村农村土地经营权DOM":
// // // text.TextString = "邻水县" + "柳塘乡"+"八斗坵村" + "农村土地承包经营权确权登记工作底图";
// // // Point3d pt = text.Position;
// // // text.Position = new Point3d(pt.X - 28, pt.Y, pt.Z);
// // // break;
// // //case "邻水县大步口村农村土地经营权DOM":
// // // text.TextString = "邻水县" + "石滓乡" + "大步口村" + "农村土地承包经营权确权登记工作底图";
// // // Point3d pt = text.Position;
// // // text.Position = new Point3d(pt.X - 28, pt.Y, pt.Z);
// // // break;
// // //case "邻水县大河坝村农村土地经营权DOM":
// // // text.TextString = "邻水县" + "柳塘乡" + "大河坝村" + "农村土地承包经营权确权登记工作底图";
// // // Point3d pt = text.Position;
// // // text.Position = new Point3d(pt.X - 28, pt.Y, pt.Z);
// // // break;
// // //case "邻水县沙帽石村农村土地经营权DOM":
// // // text.TextString = "邻水县" + "柳塘乡" + "沙帽石村" + "农村土地承包经营权确权登记工作底图";
// // // Point3d pt = text.Position;
// // // text.Position = new Point3d(pt.X - 28, pt.Y, pt.Z);
// // // break;
// // //case "邻水县双桥居委会农村土地经营权DOM":
// // // text.TextString = "邻水县" + "柳塘乡" + "双桥居委会" + "农村土地承包经营权确权登记工作底图";
// // // Point3d pt = text.Position;
// // // text.Position = new Point3d(pt.X - 28, pt.Y, pt.Z);
// // // break;
// // //case "邻水县雄码头村农村土地经营权DOM":
// // // text.TextString = "邻水县" + "柳塘乡" + "雄码头村" + "农村土地承包经营权确权登记工作底图";
// // // Point3d pt = text.Position;
// // // text.Position = new Point3d(pt.X - 28, pt.Y, pt.Z);
// // // break;
// // //////////////////
// // case "邻水县袁市镇增产村农村土地经营权DOM":
// // text.TextString = "邻水县" + "袁市镇" + "增产村" + "农村土地承包经营权确权登记工作底图";
// // Point3d pt = text.Position;
// // text.Position = new Point3d(pt.X - 28, pt.Y, pt.Z);
// // break;
// // case "投影方式:高斯投影。中央子午线106.5度。":
// // text.TextString = "国家2000坐标系。";
// // break;
// // case "国家2000坐标系。":
// // text.TextString = "投影方式:高斯投影,中央子午线经度106.5。";
// // break;
// // case "1985年黄海高程系。":
// // text.TextString = "1985国家高程系统。";
// // break;
// // case "2015年03月数字成图。":
// // text.TextString = "影像2015年01月摄。";
// // break;
// // case "测图员 ":
// // text.TextString = "调绘者: ";
// // break;
// // case "土调员 ":
// // text.TextString = "指界人: ";
// // break;
// // case "数化员 ":
// // text.TextString = "组长联系方式:";
// // break;
// // case "检查员 ":
// // text.TextString = "";
// // break;
// // case "复查员 ":
// // text.TextString = "";
// // break;
// ////////////////////////////
// /////////////////////////////
// //case "投影方式:高斯投影。":
// // text.TextString = "国家2000坐标系。";
// // break;
// //case "国家2000坐标系。":
// // text.TextString = "投影方式:高斯投影,中央子午线经度106.5。";
// // break;
// //case "1985年黄海高程系。":
// // text.TextString = "1985国家高程系统。";
// // break;
// //case "2015年03月数字成图。":
// // text.TextString = "影像2015年01月摄。";
// // break;
// //case "数化员 陈步清":
// // text.TextString = "调绘者: ";
// // break;
// //case "检查员 李 敏":
// // text.TextString = "指界人: ";
// // break;
// //case "复查员 ":
// // text.TextString = "组长联系方式:";
// // break;
// case "影像2015年01月摄。":
// text.TextString = "2015年01月摄。";
// break;
// default: break;
// }
switch (str)
{
//case "投影方式:高斯投影,中央子午线经度106.5。":
// if (count == 0)
// text.TextString = "国家2000坐标系。";
// count++;
// break ;
//case "投影方式:高斯投影,中央子午线经度106.5。":
// text.TextString = "国家2000坐标系。";
// break;
//case "国家2000坐标系。":
// text.TextString = "投影方式:高斯投影,中央子午线经度106.5。";
// break;
case "邻水县八斗坵村农村土地经营权DOM":
text.TextString = "邻水县柳塘乡八斗坵村农村土地承包经营权确权登记工作底图";
break;
default :break ;
}
myentity = text;
}
}
btrenu.Dispose();
btr.Dispose();
}
bt.Dispose();
myTran.Commit();
myTran.Dispose();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
////保存为dwg code
//var resultfilename = dwgfilename;
////var resultfilename = @"D:\test\result\1000tk" + i.ToString() + ".dwg";
myDB.SaveAs(filenamemuban, DwgVersion.Current);
//myDB.CloseInput(true);
myDB.Dispose();
}
public void openfunction()
{
try
{
//for (int i = 0; i < 10; i++)
//{
var filenamemuban = @"D:\test\1000tk.dwg";
//Document document = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
var docMgr = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager;
var doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.Open(filenamemuban);
docMgr.MdiActiveDocument = doc;
//doc.Editor.WriteMessage("文档已打开0.0");
var resultfilename = @"D:\test\result\1.dwg";
//var resultfilename = @"D:\test\result\1000tk"+i.ToString ()+".dwg";
//doc.CloseAndSave(resultfilename);
//Database db= doc.Database;
Database database = HostApplicationServices.WorkingDatabase;
database.SaveAs(resultfilename, DwgVersion.Current);
//}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
///
/// 20150611code
///
public void DGWTKfunctionnew ()
{
//OpenFileDialog ofd = new OpenFileDialog();
//if (ofd.ShowDialog() == DialogResult.OK)
//{
char[] chspilt = new char[] { ',' };
try
{
//string fileresult = ofd.FileName;
string fileresult = @"H:\2015Work\20150309DOMLS_TKCode\moban\myResult.txt";
string outfilapth = @"H:\2015Work\20150309DOMLS_TKCode\DWGResult\";
StreamReader sr = new StreamReader(fileresult);
////////
int i = 0;
while (sr.Peek() != -1)
{
//i++;
//if (i > 2)
// break;
string temp = sr.ReadLine();
string[] spilt = temp.Split(chspilt, StringSplitOptions.RemoveEmptyEntries);
if (spilt.Length >= 11)
{
string name = spilt[0];
double minX = Convert.ToDouble(spilt[1]);
double minY = Convert.ToDouble(spilt[2]);
string name1 = spilt[3];
string name2 = spilt[4];
string name3 = spilt[5];
string name4 = spilt[6];
string name5 = spilt[7];
string name6 = spilt[8];
string name7 = spilt[9];
string name8 = spilt[10];
string dwgfilename = outfilapth + name+".dwg";
{
//移动dwg图框code
//var filenamemuban = @"E:\2015Work\20150309DOM套图库程序\moban\1000lstk.dwg";
var filenamemuban = @"H:\2015Work\20150309DOMLS_TKCode\moban\1000lstkcode.dwg";
Database myDB = new Database(false, true);
myDB.ReadDwgFile(filenamemuban, System.IO.FileShare.ReadWrite, false, "");
myDB.CloseInput(true);
//左下角坐标
double xmove = minX;
double ymove =minY;
double len = 500;
//左上 left top
double xlt = minX / 1000.0;
double ylt = (minY +len) / 1000.0;
string xltstr = xlt.ToString("f1");
string yltstr = ylt.ToString("f1");
//右上 right top
double xrt = (minX +len) / 1000.0;
double yrt = (minY+len) / 1000.0;
string xrtstr = xrt.ToString("f1");
string yrtstr = yrt.ToString("f1");
//左下 left bottom
double xlb = minX / 1000.0;
double ylb = minY/ 1000.0;
string xlbstr = xlb.ToString("f1");
string ylbstr = ylb.ToString("f1");
//右下 right bottom
double xrb = (minX+len) / 1000.0;
double yrb = minY/ 1000.0;
string xrbstr = xrb.ToString("f1");
string yrbstr = yrb.ToString("f1");
////X = 559000.000 Y = 3349500.000 Z = 2874.000
////左上角坐标除去外扩
//double xmove = X + 10;
//double ymove = Y - 10;
////左上 left top
//double xlt = xmove / 1000.0;
//double ylt = ymove / 1000.0;
//string xltstr = xlt.ToString("f1");
//string yltstr = ylt.ToString("f1");
////右上 right top
//double xrt = (xmove + 500) / 1000.0;
//double yrt = ymove / 1000.0;
//string xrtstr = xrt.ToString("f1");
//string yrtstr = yrt.ToString("f1");
////左下 left bottom
//double xlb = xmove / 1000.0;
//double ylb = (ymove - 500) / 1000.0;
//string xlbstr = xlb.ToString("f1");
//string ylbstr = ylb.ToString("f1");
////右下 right bottom
//double xrb = (xmove + 500) / 1000.0;
//double yrb = (ymove - 500) / 1000.0;
//string xrbstr = xrb.ToString("f1");
//string yrbstr = yrb.ToString("f1");
//////X = 559000.000 Y = 3349500.000 Z = 2874.000
////选中所有对象进行平移
using (var myTran = myDB.TransactionManager.StartTransaction())
{
try
{
var bt = (BlockTable)(myTran.GetObject(myDB.BlockTableId, OpenMode.ForWrite));
foreach (ObjectId blid in bt)
{
var btr = (BlockTableRecord)(myTran.GetObject(blid, OpenMode.ForWrite));
BlockTableRecordEnumerator btrenu = btr.GetEnumerator();
while (btrenu.MoveNext())
{
ObjectId myobjid = btrenu.Current;
Entity myentity = myTran.GetObject(myobjid, OpenMode.ForWrite) as Entity;
//////测试后台可否执行的代码
////myentity.Color = Autodesk.AutoCAD.Colors.Color.FromColor(System.Drawing.Color.Blue);
////myentity.ColorIndex = 5;
//////修改文字代码
if (myentity is DBText)
{
DBText text = myentity as DBText;
string str = text.TextString;
switch (str)
{
case "name1":
if (name1 == "NULL")
text.TextString = " ";
else
text.TextString =name1;
break;
case "name2":
if (name2 == "NULL")
text.TextString = " ";
else
text.TextString =name2;
break;
case "name3":
if (name3 == "NULL")
text.TextString = " ";
else
text.TextString =name3;
break;
case "name4":
if (name4 == "NULL")
text.TextString = " ";
else
text.TextString =name4;
break;
case "name5":
if (name5 == "NULL")
text.TextString = " ";
else
text.TextString =name5;
break;
case "name6":
if (name6 == "NULL")
text.TextString = " ";
else
text.TextString = name6;
break;
case "name7":
if (name7 == "NULL")
text.TextString = " ";
else
text.TextString =name7;
break;
case "name8":
if (name8 == "NULL")
text.TextString = " ";
else
text.TextString =name8;
break;
//case "Name":
// text.TextString = "邻水县农村土地经营权DOM"; //"邻水县" + "XXX镇XXX村" + "农村土地经营权DOM";
// break;
case "(ididid)":
text.TextString = "("+name+")";
break;
case "xlt":
text.TextString = xltstr.Substring(0, xltstr.Length - 4);
break;
case "xlt2":
text.TextString = xltstr.Substring(xltstr.Length - 4, 4);
break;
case "ylt":
text.TextString = yltstr.Substring(0, yltstr.Length - 5);
break;
case "ylt2":
text.TextString = yltstr.Substring(yltstr.Length - 5, 5);
break;
case "xrt":
text.TextString = xrtstr.Substring(0, xrtstr.Length - 4);
break;
case "xrt2":
text.TextString = xrtstr.Substring(xrtstr.Length - 4, 4);
break;
case "yrt":
text.TextString = yrtstr.Substring(0, yrtstr.Length - 5);
break;
case "yrt2":
text.TextString = yrtstr.Substring(yrtstr.Length - 5, 5);
break;
case "xlb":
text.TextString = xlbstr.Substring(0, xlbstr.Length - 4);
break;
case "xlb2":
text.TextString = xlbstr.Substring(xlbstr.Length - 4, 4);
break;
case "ylb":
text.TextString = ylbstr.Substring(0, ylbstr.Length - 5);
break;
case "ylb2":
text.TextString = ylbstr.Substring(ylbstr.Length - 5, 5);
break;
case "xrb":
text.TextString = xrbstr.Substring(0, xrtstr.Length - 4);
break;
case "xrb2":
text.TextString = xrbstr.Substring(xrbstr.Length - 4, 4);
break;
case "yrb":
text.TextString = yrbstr.Substring(0, yrbstr.Length - 5);
break;
case "yrb2":
text.TextString = yrbstr.Substring(yrbstr.Length - 5, 5);
break;
//case "":
// break;
default: break;
}
myentity = text;
}
Point3d basept = new Point3d(0, 0, 0);
Point3d targetpt = new Point3d(xmove, ymove, 0);
Vector3d vec = targetpt - basept;
Matrix3d mt3d = Matrix3d.Displacement(vec);
myentity.TransformBy(mt3d);
}
btrenu.Dispose();
btr.Dispose();
}
bt.Dispose();
myTran.Commit();
myTran.Dispose();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
//////DOM
//using (var myTran = myDB.TransactionManager.StartTransaction())
//{
// try
// {
// BlockTable blktbl = myTran.GetObject(myDB.BlockTableId, OpenMode.ForRead) as BlockTable;
// BlockTableRecord blktblrec = myTran.GetObject(blktbl[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
// DrawOrderTable dot = myTran.GetObject(blktblrec.DrawOrderTableId, OpenMode.ForWrite) as DrawOrderTable;
// //////////////////////创建图像定义对象
// ObjectId imgid = RasterImageDef.GetImageDictionary(myDB);
// if (imgid == ObjectId.Null)
// imgid = RasterImageDef.CreateImageDictionary(myDB);
// DBDictionary imgdict = myTran.GetObject(imgid, OpenMode.ForWrite) as DBDictionary;
// RasterImageDef imgdef = new RasterImageDef();
// imgdef.SourceFileName = imageName;
// imgdef.Load();
// ObjectId imgdefid = imgdict.SetAt(imageName, imgdef);
// myTran.AddNewlyCreatedDBObject(imgdef, true);
// RasterImage image = new RasterImage();
// image.ImageDefId = imgdefid;
// //image.Layer = "DOM";
// blktblrec.AppendEntity(image);
// myTran.AddNewlyCreatedDBObject(image, true);
// double height = imgdef.Size.Y;
// Vector3d vt1 = scale * image.Orientation.Xaxis;
// Vector3d vt2 = scale * image.Orientation.Yaxis;
// image.AssociateRasterDef(imgdef);
// image.Draw();
// image.Orientation = new CoordinateSystem3d(new Point3d(X, Y - height * scale, 0), vt1, vt2);
// ObjectIdCollection obidcoll = new ObjectIdCollection();
// //影像后置
// obidcoll.Add(image.ObjectId);
// dot.MoveToBottom(obidcoll);
// obidcoll = new ObjectIdCollection();
// myTran.Commit();
// myTran.Dispose();
// //Autodesk.AutoCAD.ApplicationServices.Application.UpdateScreen();
// MessageBox.Show(imageName + "影像已按照参数正确加载;");
// }
// catch (Exception ex)
// {
// MessageBox.Show(ex.ToString());
// }
//}
////保存为dwg code
var resultfilename = dwgfilename;
////var resultfilename = @"D:\test\result\1000tk" + i.ToString() + ".dwg";
myDB.SaveAs(resultfilename, DwgVersion.Current);
//myDB.CloseInput(true);
myDB.Dispose();
}
}
}
}
catch (Exception ex0)
{
MessageBox.Show(ex0.ToString());
}
//}
//else
// return;
}
///end
///
public string str3(string strpama)
{
if (strpama == "NULL")
{ return strpama; }
else
{ return strpama.Substring(strpama.Length - 3); }
}
///
/// 20200807code
/// 20230301 update
///
public void DGWTKfunction2020()
{
//OpenFileDialog ofd = new OpenFileDialog();
//if (ofd.ShowDialog() == DialogResult.OK)
//{
char[] chspilt = new char[] { ',' };
try
{
Document document = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
Database database = HostApplicationServices.WorkingDatabase;
PromptStringOptions pStrOpts = new PromptStringOptions("\nEnter daihao 代号(默认无代号): ");
pStrOpts.AllowSpaces = true;
PromptResult pStrRes = document.Editor.GetString(pStrOpts);
//代号
string ssssssss = pStrRes.StringResult;
//MessageBox.Show(ssssssss);
pStrOpts = new PromptStringOptions("\nEnter 小数位数(默认为2位): ");
pStrOpts.AllowSpaces = true;
pStrRes = document.Editor.GetString(pStrOpts);
//小数位数
string xsws = pStrRes.StringResult;
string ffff111222="f2";
if (xsws == "1")
ffff111222 = "f1";
//////////////////////////////////////////////////////
//////////////////////////////////////////////////////
//string fileresult = ofd.FileName;
string fileresult = "";
string filenamemuban = "";
OpenFileDialog ofd = new OpenFileDialog();
ofd.Title = "请选择导出的txt文件";
if (ofd.ShowDialog() == DialogResult.OK)
{
fileresult = ofd.FileName;
}
else
return;
ofd.Dispose();
OpenFileDialog od222 = new OpenFileDialog();
od222.Title = "请选择模板.dwg文件";
if (od222.ShowDialog() == DialogResult.OK)
{
filenamemuban = od222.FileName;
}
else
return;
od222.Dispose();
string outfilapth = Path.GetDirectoryName(fileresult);
StreamReader sr = new StreamReader(fileresult);
////////
int i = 0;
while (sr.Peek() != -1)
{
//i++;
//if (i > 2)
// break;
string temp = sr.ReadLine();
string[] spilt = temp.Split(chspilt, StringSplitOptions.RemoveEmptyEntries);
if (spilt.Length >= 11)
{
string name = spilt[0];
double minX = Convert.ToDouble(spilt[1]);
double minY = Convert.ToDouble(spilt[2]);
double maxX = Convert.ToDouble(spilt[3]);
double maxY = Convert.ToDouble(spilt[4]);
string name1 = spilt[5];
string name2 = spilt[6];
string name3 = spilt[7];
string name4 = spilt[8];
string name5 = spilt[9];
string name6 = spilt[10];
string name7 = spilt[11];
string name8 = spilt[12];
/////////////////////////
/////////////////////////
string dwgfilename = outfilapth + "\\"+name + ".dwg";
//MessageBox.Show(dwgfilename);
{
//移动dwg图框code
//var filenamemuban = @"E:\2015Work\20150309DOM套图库程序\moban\1000lstk.dwg";
Database myDB = new Database(false, true);
myDB.ReadDwgFile(filenamemuban, System.IO.FileShare.ReadWrite, false, "");
myDB.CloseInput(true);
//左下角坐标
double xmove = minX;
double ymove = minY;
Point3d basept = new Point3d(0, 0, 0);
Point3d targetpt = new Point3d(xmove, ymove, 0);
Vector3d vec = targetpt - basept;
Matrix3d mt3d = Matrix3d.Displacement(vec);
//double len = 500;
////左上 left top 2020 code
//double xlt = minX / 1000.0;
//double ylt = maxY / 1000.0;
//string xltstr = xlt.ToString("f1");
//string yltstr = ylt.ToString("f1");
////右上 right top
//double xrt = maxX / 1000.0;
//double yrt = maxY / 1000.0;
//string xrtstr = xrt.ToString("f1");
//string yrtstr = yrt.ToString("f1");
////左下 left bottom
//double xlb = minX / 1000.0;
//double ylb = minY / 1000.0;
//string xlbstr = xlb.ToString("f1");
//string ylbstr = ylb.ToString("f1");
////右下 right bottom
//double xrb =maxX / 1000.0;
//double yrb = minY / 1000.0;
//string xrbstr = xrb.ToString("f1");
//string yrbstr = yrb.ToString("f1");
////左上 left top
//double xlt = minX / 1000.0;
//double ylt = maxY / 1000.0;
//string xltstr = xlt.ToString("f2");
//string yltstr = ylt.ToString("f2");
////右上 right top
//double xrt = maxX / 1000.0;
//double yrt = maxY / 1000.0;
//string xrtstr = xrt.ToString("f2");
//string yrtstr = yrt.ToString("f2");
////左下 left bottom
//double xlb = minX / 1000.0;
//double ylb = minY / 1000.0;
//string xlbstr = xlb.ToString("f2");
//string ylbstr = ylb.ToString("f2");
////右下 right bottom
//double xrb = maxX / 1000.0;
//double yrb = minY / 1000.0;
//string xrbstr = xrb.ToString("f2");
//string yrbstr = yrb.ToString("f2");
//左上 left top 2021 code
double xlt = minX / 1000.0;
double ylt = maxY / 1000.0;
string xltstr = xlt.ToString(ffff111222);
string yltstr = ylt.ToString(ffff111222);
//右上 right top
double xrt = maxX / 1000.0;
double yrt = maxY / 1000.0;
string xrtstr = xrt.ToString(ffff111222);
string yrtstr = yrt.ToString(ffff111222);
//左下 left bottom
double xlb = minX / 1000.0;
double ylb = minY / 1000.0;
string xlbstr = xlb.ToString(ffff111222);
string ylbstr = ylb.ToString(ffff111222);
//右下 right bottom
double xrb = maxX / 1000.0;
double yrb = minY / 1000.0;
string xrbstr = xrb.ToString(ffff111222);
string yrbstr = yrb.ToString(ffff111222);
//////////////////////////////////////////////////////
//////////////////////////////////////////////////////
string daihao = ssssssss;
//////////////////////////////////////////////////////
//////////////////////////////////////////////////////
#region//old 2020 code
//////选中所有对象进行平移
//using (var myTran = myDB.TransactionManager.StartTransaction())
//{
// try
// {
// var bt = (BlockTable)(myTran.GetObject(myDB.BlockTableId, OpenMode.ForWrite));
// foreach (ObjectId blid in bt)
// {
// var btr = (BlockTableRecord)(myTran.GetObject(blid, OpenMode.ForWrite));
// BlockTableRecordEnumerator btrenu = btr.GetEnumerator();
// while (btrenu.MoveNext())
// {
// ObjectId myobjid = btrenu.Current;
// Entity myentity = myTran.GetObject(myobjid, OpenMode.ForWrite) as Entity;
// //////测试后台可否执行的代码
// ////myentity.Color = Autodesk.AutoCAD.Colors.Color.FromColor(System.Drawing.Color.Blue);
// ////myentity.ColorIndex = 5;
// //////修改文字代码
// if (myentity is DBText)
// {
// DBText text = myentity as DBText;
// string str = text.TextString;
// #region
// switch (str)
// {
// case "name1":
// if (name1 == "NULL")
// text.TextString = " ";
// else
// text.TextString = name1;
// break;
// case "name2":
// if (name2 == "NULL")
// text.TextString = " ";
// else
// text.TextString = name2;
// break;
// case "name3":
// if (name3 == "NULL")
// text.TextString = " ";
// else
// text.TextString = name3;
// break;
// case "name4":
// if (name4 == "NULL")
// text.TextString = " ";
// else
// text.TextString = name4;
// break;
// case "name5":
// if (name5 == "NULL")
// text.TextString = " ";
// else
// text.TextString = name5;
// break;
// case "name6":
// if (name6 == "NULL")
// text.TextString = " ";
// else
// text.TextString = name6;
// break;
// case "name7":
// if (name7 == "NULL")
// text.TextString = " ";
// else
// text.TextString = name7;
// break;
// case "name8":
// if (name8 == "NULL")
// text.TextString = " ";
// else
// text.TextString = name8;
// break;
// //case "Name":
// // text.TextString = "邻水县农村土地经营权DOM"; //"邻水县" + "XXX镇XXX村" + "农村土地经营权DOM";
// // break;
// //case "ididid":
// // //text.TextString = "(" + name + ")";
// // //text.TextString = name .Substring(name.Length - 3);
// // text.TextString = name;
// // break;
// case "(ididid)":
// //text.TextString = "(" + name + ")";
// //text.TextString = name .Substring(name.Length - 3);
// text.TextString = "("+name+")";
// break;
// case "xlt":
// //text.TextString =daihao+ xltstr.Substring(0, xltstr.Length - 4);
// text.TextString = daihao + xltstr.Substring(0, xltstr.Length - 5);
// break;
// case "xlt2":
// //text.TextString = xltstr.Substring(xltstr.Length - 4, 4);
// text.TextString = xltstr.Substring(xltstr.Length - 5, 5);
// break;
// case "ylt":
// text.TextString = yltstr.Substring(0, yltstr.Length - 5);
// //text.TextString = yltstr.Substring(0, yltstr.Length - 4);
// break;
// case "ylt2":
// text.TextString = yltstr.Substring(yltstr.Length - 5, 5);
// //text.TextString = yltstr.Substring(yltstr.Length - 4, 4);
// break;
// case "xrt":
// //text.TextString = daihao + xrtstr.Substring(0, xrtstr.Length - 4);
// text.TextString = daihao + xrtstr.Substring(0, xrtstr.Length - 5);
// break;
// case "xrt2":
// //text.TextString = xrtstr.Substring(xrtstr.Length - 4, 4);
// text.TextString = xrtstr.Substring(xrtstr.Length - 5, 5);
// break;
// case "yrt":
// text.TextString = yrtstr.Substring(0, yrtstr.Length - 5);
// //text.TextString = yrtstr.Substring(0, yrtstr.Length - 4);
// break;
// case "yrt2":
// text.TextString = yrtstr.Substring(yrtstr.Length - 5, 5);
// //text.TextString = yrtstr.Substring(yrtstr.Length - 4, 4);
// break;
// case "xlb":
// //text.TextString = daihao + xlbstr.Substring(0, xlbstr.Length - 4);
// text.TextString = daihao + xlbstr.Substring(0, xlbstr.Length - 5);
// break;
// case "xlb2":
// //text.TextString = xlbstr.Substring(xlbstr.Length - 4, 4);
// text.TextString = xlbstr.Substring(xlbstr.Length - 5, 5);
// break;
// case "ylb":
// text.TextString = ylbstr.Substring(0, ylbstr.Length - 5);
// //text.TextString = ylbstr.Substring(0, ylbstr.Length - 4);
// break;
// case "ylb2":
// text.TextString = ylbstr.Substring(ylbstr.Length - 5, 5);
// //text.TextString = ylbstr.Substring(ylbstr.Length - 4, 4);
// break;
// case "xrb":
// //text.TextString = daihao + xrbstr.Substring(0, xrtstr.Length - 4);
// text.TextString = daihao + xrbstr.Substring(0, xrtstr.Length - 5);
// break;
// case "xrb2":
// //text.TextString = xrbstr.Substring(xrbstr.Length - 4, 4);
// text.TextString = xrbstr.Substring(xrbstr.Length - 5, 5);
// break;
// case "yrb":
// text.TextString = yrbstr.Substring(0, yrbstr.Length - 5);
// //text.TextString = yrbstr.Substring(0, yrbstr.Length - 4);
// break;
// case "yrb2":
// text.TextString = yrbstr.Substring(yrbstr.Length - 5, 5);
// //text.TextString = yrbstr.Substring(yrbstr.Length - 4, 4);
// break;
// //case "":
// // break;
// default: break;
// }
// #endregion
// myentity = text;
// }
// myentity.TransformBy(mt3d);
// }
// btrenu.Dispose();
// btr.Dispose();
// }
// bt.Dispose();
// myTran.Commit();
// myTran.Dispose();
// }
// catch (Exception ex)
// {
// MessageBox.Show(ex.ToString());
// }
//}
#endregion
#region//old 2021 2023 code
// 2023 edit code
////选中所有对象进行平移
using (var myTran = myDB.TransactionManager.StartTransaction())
{
try
{
var bt = (BlockTable)(myTran.GetObject(myDB.BlockTableId, OpenMode.ForWrite));
foreach (ObjectId blid in bt)
{
var btr = (BlockTableRecord)(myTran.GetObject(blid, OpenMode.ForWrite));
BlockTableRecordEnumerator btrenu = btr.GetEnumerator();
while (btrenu.MoveNext())
{
ObjectId myobjid = btrenu.Current;
Entity myentity = myTran.GetObject(myobjid, OpenMode.ForWrite) as Entity;
//////测试后台可否执行的代码
////myentity.Color = Autodesk.AutoCAD.Colors.Color.FromColor(System.Drawing.Color.Blue);
////myentity.ColorIndex = 5;
//////修改文字代码
if (myentity is DBText)
{
DBText text = myentity as DBText;
string str = text.TextString;
#region
switch (str)
{
case "name1":
if (name1 == "NULL")
text.TextString = " ";
else
text.TextString = name1;
break;
case "name2":
if (name2 == "NULL")
text.TextString = " ";
else
text.TextString = name2;
break;
case "name3":
if (name3 == "NULL")
text.TextString = " ";
else
text.TextString = name3;
break;
case "name4":
if (name4 == "NULL")
text.TextString = " ";
else
text.TextString = name4;
break;
case "name5":
if (name5 == "NULL")
text.TextString = " ";
else
text.TextString = name5;
break;
case "name6":
if (name6 == "NULL")
text.TextString = " ";
else
text.TextString = name6;
break;
case "name7":
if (name7 == "NULL")
text.TextString = " ";
else
text.TextString = name7;
break;
case "name8":
if (name8 == "NULL")
text.TextString = " ";
else
text.TextString = name8;
break;
//case "Name":
// text.TextString = "邻水县农村土地经营权DOM"; //"邻水县" + "XXX镇XXX村" + "农村土地经营权DOM";
// break;
//case "ididid":
// //text.TextString = "(" + name + ")";
// //text.TextString = name .Substring(name.Length - 3);
// text.TextString = name;
// break;
case "(ididid)":
//text.TextString = "(" + name + ")";
//text.TextString = name .Substring(name.Length - 3);
text.TextString = "(" + name + ")";
break;
case "xlt":
//text.TextString = daihao + xltstr.Substring(0, xltstr.Length - 4);
text.TextString = daihao + xltstr.Substring(0, xltstr.Length - 5);
if (xsws == "1")
text.TextString = daihao + xltstr.Substring(0, xltstr.Length - 4);
break;
case "xlt2":
//text.TextString = xltstr.Substring(xltstr.Length - 4, 4);
text.TextString = xltstr.Substring(xltstr.Length - 5, 5);
if (xsws == "1")
text.TextString = xltstr.Substring(xltstr.Length - 4, 4);
break;
case "ylt":
text.TextString = yltstr.Substring(0, yltstr.Length - 5);
if (xsws == "1")
text.TextString = yltstr.Substring(0, yltstr.Length - 4);
//text.TextString = yltstr.Substring(0, yltstr.Length - 4);
break;
case "ylt2":
text.TextString = yltstr.Substring(yltstr.Length - 5, 5);
//text.TextString = yltstr.Substring(yltstr.Length - 4, 4);
if (xsws == "1")
text.TextString = yltstr.Substring(yltstr.Length - 4, 4);
break;
case "xrt":
//text.TextString = daihao + xrtstr.Substring(0, xrtstr.Length - 4);
text.TextString = daihao + xrtstr.Substring(0, xrtstr.Length - 5);
if (xsws == "1")
text.TextString = daihao + xrtstr.Substring(0, xrtstr.Length - 4);
break;
case "xrt2":
//text.TextString = xrtstr.Substring(xrtstr.Length - 4, 4);
text.TextString = xrtstr.Substring(xrtstr.Length - 5, 5);
if (xsws == "1")
text.TextString = xrtstr.Substring(xrtstr.Length - 4, 4);
break;
case "yrt":
text.TextString = yrtstr.Substring(0, yrtstr.Length - 5);
//text.TextString = yrtstr.Substring(0, yrtstr.Length - 4);
if (xsws == "1")
text.TextString = yrtstr.Substring(0, yrtstr.Length - 4);
break;
case "yrt2":
text.TextString = yrtstr.Substring(yrtstr.Length - 5, 5);
//text.TextString = yrtstr.Substring(yrtstr.Length - 4, 4);
if (xsws == "1")
text.TextString = yrtstr.Substring(yrtstr.Length - 4, 4);
break;
case "xlb":
//text.TextString = daihao + xlbstr.Substring(0, xlbstr.Length - 4);
text.TextString = daihao + xlbstr.Substring(0, xlbstr.Length - 5);
if (xsws == "1")
text.TextString = daihao + xlbstr.Substring(0, xlbstr.Length - 4);
break;
case "xlb2":
//text.TextString = xlbstr.Substring(xlbstr.Length - 4, 4);
text.TextString = xlbstr.Substring(xlbstr.Length - 5, 5);
if (xsws == "1")
text.TextString = xlbstr.Substring(xlbstr.Length - 4, 4);
break;
case "ylb":
text.TextString = ylbstr.Substring(0, ylbstr.Length - 5);
//text.TextString = ylbstr.Substring(0, ylbstr.Length - 4);
if (xsws == "1")
text.TextString = ylbstr.Substring(0, ylbstr.Length - 4);
break;
case "ylb2":
text.TextString = ylbstr.Substring(ylbstr.Length - 5, 5);
//text.TextString = ylbstr.Substring(ylbstr.Length - 4, 4);
if (xsws == "1")
text.TextString = ylbstr.Substring(ylbstr.Length - 4, 4);
break;
case "xrb":
//text.TextString = daihao + xrbstr.Substring(0, xrtstr.Length - 4);
text.TextString = daihao + xrbstr.Substring(0, xrtstr.Length - 5);
if (xsws == "1")
text.TextString = daihao + xrbstr.Substring(0, xrtstr.Length - 4);
break;
case "xrb2":
//text.TextString = xrbstr.Substring(xrbstr.Length - 4, 4);
text.TextString = xrbstr.Substring(xrbstr.Length - 5, 5);
if (xsws == "1")
text.TextString = xrbstr.Substring(xrbstr.Length - 4, 4);
break;
case "yrb":
text.TextString = yrbstr.Substring(0, yrbstr.Length - 5);
//text.TextString = yrbstr.Substring(0, yrbstr.Length - 4);
if (xsws == "1")
text.TextString = yrbstr.Substring(0, yrbstr.Length - 4);
break;
case "yrb2":
text.TextString = yrbstr.Substring(yrbstr.Length - 5, 5);
//text.TextString = yrbstr.Substring(yrbstr.Length - 4, 4);
if (xsws == "1")
text.TextString = yrbstr.Substring(yrbstr.Length - 4, 4);
break;
case "xltxx2":
string xltxx2222 = (Convert.ToDouble(xltstr) + 0.5).ToString(ffff111222);
text.TextString = xltxx2222.Substring(1, xltxx2222.Length - 1);
break;
case "xltxx3":
string xltxx3333=(Convert.ToDouble(xltstr) + 1).ToString(ffff111222);
text.TextString = xltxx3333.Substring(1, xltxx3333.Length - 1);
break;
case "xltxx4":
string xltxx4444=(Convert.ToDouble(xltstr) + 1.5).ToString(ffff111222);
text.TextString = xltxx4444.Substring(1, xltxx4444.Length - 1);
break;
case "xltxx5":
string xltxx5555=(Convert.ToDouble(xltstr) + 2).ToString(ffff111222);
text.TextString = xltxx5555.Substring(1, xltxx5555.Length - 1);
break;
case "ylbyy2":
string ylbyy2222=(Convert.ToDouble(ylbstr) + 0.5).ToString(ffff111222);
text.TextString = ylbyy2222.Substring(2, ylbyy2222.Length - 2);
break;
case "ylbyy3":
string ylbyy3333=(Convert.ToDouble(ylbstr) +1).ToString(ffff111222);
text.TextString = ylbyy3333.Substring(2, ylbyy3333.Length - 2);
break;
case "ylbyy4":
string ylbyy4444=(Convert.ToDouble(ylbstr) + 1.5).ToString(ffff111222);
text.TextString = ylbyy4444.Substring(2, ylbyy4444.Length - 2);
break;
case "ylbyy5":
string ylbyy5555=(Convert.ToDouble(ylbstr) +2).ToString(ffff111222);
text.TextString = ylbyy5555.Substring(2, ylbyy5555.Length - 2);
break;
//case "":
// break;
//case "":
// break;
//case "":
// break;
default: break;
}
#endregion
myentity = text;
}
myentity.TransformBy(mt3d);
}
btrenu.Dispose();
btr.Dispose();
}
bt.Dispose();
myTran.Commit();
myTran.Dispose();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
#endregion
////保存为dwg code
var resultfilename = dwgfilename;
////var resultfilename = @"D:\test\result\1000tk" + i.ToString() + ".dwg";
myDB.SaveAs(resultfilename, DwgVersion.Current);
//myDB.CloseInput(true);
myDB.Dispose();
}
}
}
}
catch (Exception ex0)
{
MessageBox.Show(ex0.ToString());
}
//}
//else
// return;
}
public void InsertDOM()
{
string[] filelist;
string domfilename = string.Empty;
string tfwfilename = string.Empty;
string imageName = string.Empty;
System.Windows.Forms.OpenFileDialog ofd = new System.Windows.Forms.OpenFileDialog();
ofd.Title = "请选择要插入的DOM(必须有相应的.tfw文件且在同一文件夹中)";
ofd.Filter = "(DOM)*tif|*.tif";
ofd.Multiselect = true;
ofd.RestoreDirectory = true;
if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
filelist = ofd.FileNames;
Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
ObjectIdCollection obidcoll = new ObjectIdCollection();
for (int i = 0; i < filelist.Length; i++)
{
domfilename = filelist[i];
imageName = new FileInfo(domfilename).Name;
if (domfilename.Contains("tif"))
tfwfilename = domfilename.Replace(".tif", ".tfw");
else
{
tfwfilename = domfilename.Replace(".TIF", ".tfw");
}
double scale = 0;
double X = 0, Y = 0;
try
{
StreamReader sr = new StreamReader(tfwfilename);
scale = Convert.ToDouble(sr.ReadLine());
sr.ReadLine();
sr.ReadLine();
sr.ReadLine();
X = Convert.ToDouble(sr.ReadLine());
Y = Convert.ToDouble(sr.ReadLine());
sr.Close();
sr.Dispose();
}
catch (System.Exception ex)
{
//MessageBox.Show("警告:"+domfilename +"图像没有相应的.tfw文件,无法正确插入!!!\r\n\r\n" + ex.ToString());
MessageBox.Show("警告:" + domfilename + "图像没有相应的.tfw文件,无法正确插入!!!\r\n\r\n");
continue;
}
using (Transaction tran = db.TransactionManager.StartTransaction())
{
LayerTable lt = tran.GetObject(db.LayerTableId, OpenMode.ForWrite) as LayerTable;
try
{
if (!lt.Has("DOM"))
{
LayerTableRecord ltrec = new LayerTableRecord();
ltrec.Name = "DOM";
ObjectId obid = lt.Add(ltrec);
tran.AddNewlyCreatedDBObject(ltrec, true);
//db.Clayer = obid;
}
}
catch (Autodesk.AutoCAD.Runtime.Exception ex)
{
MessageBox.Show(ex.ToString());
}
tran.Commit();
}
using (Transaction tran = db.TransactionManager.StartTransaction())
{
BlockTable blktbl = tran.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
BlockTableRecord blktblrec = tran.GetObject(blktbl[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
DrawOrderTable dot = tran.GetObject(blktblrec.DrawOrderTableId, OpenMode.ForWrite) as DrawOrderTable;
try
{
#region
//RasterImageDef dom = new RasterImageDef();
////domimage.TransformBy();
//dom.ActiveFileName = domfilename;
////dom.OpenImage();
//dom.Load();
//dom.ImageModified = true;
//dom.OpenImage();
//dom.Embed();
//RasterImage domimage = new RasterImage();
////Matrix3d.Mirroring();//将栅格图像坐标关于Y轴镜像还原
////Matrix3d.Displacement();//在Y轴正方向上移动图像原始高度距离
////domimage.TransformBy();//最后用6参数组织缩放、旋转、移动的变换矩阵
//tran.AddNewlyCreatedDBObject(dom, true);
//tran.Commit();
///////////////////
//RasterImage domimage = new RasterImage();
//PromptEntityOptions prent = new PromptEntityOptions("\n请选择山歌图像");
//prent.SetRejectMessage("\n选择的不是栅格图像");
//prent.AddAllowedClass(typeof(RasterImage), true);
//PromptEntityResult prentres = ed.GetEntity(prent);
//if (prentres.Status != PromptStatus.OK)
// return;
//Matrix3d transform;
//ObjectId imgid = prentres.ObjectId;
//domimage = (RasterImage)tran.GetObject(imgid, OpenMode.ForRead);
//transform = domimage.PixelToModelTransform;
#endregion
//////////////////////创建图像定义对象
ObjectId imgid = RasterImageDef.GetImageDictionary(db);
if (imgid == ObjectId.Null)
imgid = RasterImageDef.CreateImageDictionary(db);
DBDictionary imgdict = tran.GetObject(imgid, OpenMode.ForWrite) as DBDictionary;
RasterImageDef imgdef = new RasterImageDef();
imgdef.SourceFileName = domfilename;
imgdef.Load();
ObjectId imgdefid = imgdict.SetAt(imageName, imgdef);
tran.AddNewlyCreatedDBObject(imgdef, true);
RasterImage image = new RasterImage();
image.ImageDefId = imgdefid;
image.Layer = "DOM";
blktblrec.AppendEntity(image);
tran.AddNewlyCreatedDBObject(image, true);
double height = imgdef.Size.Y;
Vector3d vt1 = scale * image.Orientation.Xaxis;
Vector3d vt2 = scale * image.Orientation.Yaxis;
image.AssociateRasterDef(imgdef);
image.Draw();
image.Orientation = new CoordinateSystem3d(new Point3d(X, Y - height * scale, 0), vt1, vt2);
//影像后置
obidcoll.Add(image.ObjectId);
dot.MoveToBottom(obidcoll);
obidcoll = new ObjectIdCollection();
tran.Commit();
Autodesk.AutoCAD.ApplicationServices.Application.UpdateScreen();
doc.Editor.WriteMessage(imageName + "影像已按照参数正确加载;");
}
catch (Autodesk.AutoCAD.Runtime.Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
}
}
public List getxyscale(string filename)
{
List result = new List();
try
{
StreamReader sr = new StreamReader(filename);
double scale = Convert.ToDouble(sr.ReadLine());
sr.ReadLine();
sr.ReadLine();
sr.ReadLine();
double X = Convert.ToDouble(sr.ReadLine());
double Y = Convert.ToDouble(sr.ReadLine());
sr.Close();
sr.Dispose();
result.Add(X);
result.Add(Y);
result.Add(scale);
return result;
}
catch
{
return new List();
}
}
public void InserDOMbatch2021()
{
string dompath1 = "";
string dwgpath2 = "";
string strdomtype = ".jpg";
string strdomxyztype = ".jgw";
FolderBrowserDialog domfbd1 = new FolderBrowserDialog();
domfbd1.Description = "select dom filepath 111";
FolderBrowserDialog dwgfbd2 = new FolderBrowserDialog();
dwgfbd2.Description = "select dwg filepath 222";
if (domfbd1.ShowDialog() == DialogResult.OK)
{
dompath1 = domfbd1.SelectedPath;
}
if (dwgfbd2.ShowDialog() == DialogResult.OK)
{
dwgpath2 = dwgfbd2.SelectedPath;
}
DirectoryInfo di = new DirectoryInfo(dwgpath2);
foreach (FileInfo fi in di.GetFiles())
{
string filenamedwg = fi.FullName;
string namedwg = fi.Name;
string tfhname = namedwg.Replace(".dwg", "");
//MessageBox.Show(filenamedwg);
if (filenamedwg.Contains(".dwg"))
{
//MessageBox.Show(filenamedwg);
string filenamedom = dompath1 + "\\" + tfhname + strdomtype;
string filenamedomxyz = dompath1 + "\\" + tfhname + strdomxyztype;
string savefile = dompath1 + "\\" + tfhname + ".dwg";
//MessageBox.Show("1 "+filenamedom);
//MessageBox.Show("2 "+filenamedomxyz);
if (File.Exists(filenamedom))
{
//MessageBox.Show(filenamedom);
}
else
{
MessageBox.Show("not " + filenamedom);
continue;
}
if (File.Exists(filenamedomxyz))
{
//MessageBox.Show(filenamedomxyz);
}
else
{
MessageBox.Show("not " + filenamedomxyz);
continue;
}
List xyslist = new List();
xyslist = getxyscale(filenamedomxyz);
//MessageBox.Show(xyslist.Count.ToString());
double X =xyslist[0] ;
double Y=xyslist[1];
double scale=xyslist[2];
if (xyslist.Count < 2)
continue;
//MessageBox.Show(X.ToString()+Y.ToString()+scale.ToString());
ObjectIdCollection obidcoll = new ObjectIdCollection();
Database db = new Database(false, true);
db.ReadDwgFile(filenamedwg, System.IO.FileShare.ReadWrite, false, "");
db.CloseInput(true);
using (var tran = db.TransactionManager.StartTransaction())
{
try
{
//var bt = (BlockTable)(myTran.GetObject(myDB.BlockTableId, OpenMode.ForWrite));
LayerTable lt = tran.GetObject(db.LayerTableId, OpenMode.ForWrite) as LayerTable;
if (!lt.Has("DOM"))
{
LayerTableRecord ltrec = new LayerTableRecord();
ltrec.Name = "DOM";
ObjectId obid = lt.Add(ltrec);
tran.AddNewlyCreatedDBObject(ltrec, true);
//db.Clayer = obid;
//MessageBox.Show("111");
}
//MessageBox.Show("222");
}
catch
{
MessageBox.Show("DOM layer created failed");
}
}
using (var tran = db.TransactionManager.StartTransaction())
{
try
{
//MessageBox.Show("333");
BlockTable blktbl = tran.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
BlockTableRecord blktblrec = tran.GetObject(blktbl[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
DrawOrderTable dot = tran.GetObject(blktblrec.DrawOrderTableId, OpenMode.ForWrite) as DrawOrderTable;
//////////////////////创建图像定义对象
ObjectId imgid = RasterImageDef.GetImageDictionary(db);
if (imgid == ObjectId.Null)
imgid = RasterImageDef.CreateImageDictionary(db);
DBDictionary imgdict = tran.GetObject(imgid, OpenMode.ForWrite) as DBDictionary;
RasterImageDef imgdef = new RasterImageDef();
imgdef.SourceFileName = filenamedom;
imgdef.Load();
ObjectId imgdefid = imgdict.SetAt(tfhname, imgdef);
tran.AddNewlyCreatedDBObject(imgdef, true);
//MessageBox.Show("444");
RasterImage image = new RasterImage();
image.ImageDefId = imgdefid;
//image.Layer = "DOM";
blktblrec.AppendEntity(image);
tran.AddNewlyCreatedDBObject(image, true);
//MessageBox.Show("555");
double height = imgdef.Size.Y;
Vector3d vt1 = scale * image.Orientation.Xaxis;
Vector3d vt2 = scale * image.Orientation.Yaxis;
//MessageBox.Show(vt1.X.ToString() + ',' + vt1.Y.ToString());
//MessageBox.Show(vt2.X.ToString() + ',' + vt2.Y.ToString());
image.AssociateRasterDef(imgdef);
//image.Draw();
//MessageBox.Show(X.ToString() + "+++" + (Y - height * scale).ToString());
//////////////
/////////////////
//dhkjahhdflhkflhkflkflkflkjfflhkjflhkflhkflhk
///////////
image.Orientation = new CoordinateSystem3d(new Point3d(X, Y - height * scale, 0), vt1, vt2);
//image.Orientation = new CoordinateSystem3d(new Point3d(X, Y , 0), vt1, vt2);
//MessageBox.Show("112");
//影像后置
obidcoll.Add(image.ObjectId);
dot.MoveToBottom(obidcoll);
obidcoll = new ObjectIdCollection();
//MessageBox.Show("555");
tran.Commit();
//MessageBox.Show("777");
//Autodesk.AutoCAD.ApplicationServices.Application.UpdateScreen();
//doc.Editor.WriteMessage(imageName + "影像已按照参数正确加载;");
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
//////////////
//MessageBox.Show("666");
//db.Save();
db.SaveAs(savefile, DwgVersion.Current);
db.Dispose();
}
}
}
///end
///
//////////////////////////////////////////////////////////
}
}