C# CAD坐标转换程序
尚未解决的问题:
1、polyline2D和polyline3D这类图元如何获取节点坐标进行转换?
2、属性块怎么转换,比如像CASS高程点之类的数据?
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.DatabaseServices;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
using System.Security.Cryptography;
using System.Reflection;
using System.Management;
namespace transfertoCGCS2000
{
/// <summary>
/// 转换坐标系
/// ff;
/// </summary>
public class Class1
{
[CommandMethod("Ff")]
public void Ff()
{
//打开数据表
Database db = HostApplicationServices.WorkingDatabase;
//打开事件
using (Transaction tr = db.TransactionManager.StartTransaction())
{
string strMac = string.Empty;
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
if ((bool)mo["IPEnabled"] == true)
{
strMac = mo["MacAddress"].ToString();
}
}
//打开块表记录
try
{
if (strMac == "K0:9A:48:02:93:D1")//比较mac地址是否匹配
{
BlockTableRecord btRecord = (BlockTableRecord)tr.GetObject(SymbolUtilityServices.GetBlockModelSpaceId(db), OpenMode.ForRead);
//打开图层
LayerTable acLyrTbl;
acLyrTbl = tr.GetObject(db.LayerTableId, OpenMode.ForWrite) as LayerTable;
LayerTableRecord acLyrTblRcd;
//解锁所有图层、打开所有图层
foreach (ObjectId id1 in acLyrTbl)
{
acLyrTblRcd = (LayerTableRecord)id1.GetObject(OpenMode.ForWrite);
if (acLyrTblRcd.IsOff == true)//打开图层
{
acLyrTblRcd.IsOff = false;
}
if (acLyrTblRcd.IsFrozen == true)//解冻图层
{
acLyrTblRcd.IsFrozen = false;
}
if (acLyrTblRcd.IsLocked == true)//解锁图层
{
acLyrTblRcd.IsLocked = false;
}
}
//新建文字输出
Editor editor = Autodesk.AutoCAD.ApplicationServices.Application