c# 获取CAD已加载的线型 并且在对话框的下拉列表显示出来

using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 图书管理登录界面WPF.Service
{
public class LineStyleInfo
{
public ObjectId id { get; set; }
public string lineTypename { get; set; }
}

public class GetLineType
{
///


/// 获取线型
///

///
public static List GetLinetype()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Database db = doc?.Database;
Editor ed = doc?.Editor;

using (Transaction trans = db.TransactionManager.StartTransaction())
{
List lineTypeInfo = new List();
try
{
if (doc == null) return (lineTypeInfo);

LinetypeTable linetypeT = trans.GetObject(db.LinetypeTableId, OpenMode.ForRead) as LinetypeTable;

foreach (ObjectId item in linetypeT)
{
LinetypeTableRecord LineTypeRecordName = trans.GetObject(item, OpenMode.ForRead) as LinetypeTableRecord;

lineTypeInfo.Add(new LineStyleInfo
{
id = item,
lineTypename = LineTypeRecordName.Name
});

}
trans.Commit();
}
catch (Exception ex)
{

Debug.WriteLine(ex.Message);
}
return (lineTypeInfo);
}
}
}
}

using Autodesk.AutoCAD.DatabaseServices;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using 图书管理登录界面WPF.Service;

namespace 图书管理登录界面WPF.Mode
{
public class LineTypeData
{
public List DataLineTableR { get; }
public LineTypeData()
{
List LineTypeTableR = GetLineType.GetLinetype();
DataLineTableR = LineTypeTableR;
}
}
}

using Autodesk.AutoCAD.DatabaseServices;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using 图书管理登录界面WPF.Mode;
using 图书管理登录界面WPF.Service;

namespace 图书管理登录界面WPF.ViewMode
{
public class LineTypes:INotifyPropertyChanged
{
LineTypeData lineTypeData;
public LineTypes()
{
lineTypeData=new LineTypeData();
LineTypeList = new ObservableCollection (lineTypeData.DataLineTableR);
LineTypeCount = LineTypeList.Count;

// 可选:默认选中第一个
if (LineTypeList.Any())
{
SelectlineType = LineTypeList.First().id.ToString();
SelectedLineTypeName = LineTypeList.First().lineTypename;
}

}
private ObservableCollection _lineTypeList; //保留完整的数据结构
private string _selectlineType;
public string SelectedLineTypeName { get; set; }

public int LineTypeCount { get; set; }

public ObservableCollection LineTypeList
{
get => _lineTypeList;
set
{ _lineTypeList = value;
OnPropertyChanged();
}
}

public string SelectlineType
{
get => _selectlineType;
set
{
_selectlineType = value;
OnPropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged([CallerMemberName] string PropertyName = null) =>
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(PropertyName));
}
}




posted @ 2026-04-20 02:18  LOSOB  阅读(8)  评论(0)    收藏  举报