Рассмотрим работу с выделением на примере размера в чертеже. В данном примере рассматривается выделение объекта пользователем, не кодом.
IDisplayDimension swDispDim;
ISelectionMgr swSelMgr = swModel.ISelectionManager;
IDimension DP;
IDimensionTolerance swDimensionTolerance;
string Prefix, Suffix, CalloutBelow, TextAll;
double DPValue, maxValueTolerance, minValueToleranse;
int DimPrec;
if (swSelMgr.GetSelectedObjectCount2(0) == 1) //определяем, что выделен только один объект
{
int selType = swSelMgr.GetSelectedObjectType3(1,-1); //узнаем тип выделенного объекта
if (selType == (int)swSelectType_e.swSelDIMENSIONS) //если размер, то работаем дальше
{
label1.Text = string.Empty; //очищаем текст всех лейблов
label2.Text = string.Empty;
label3.Text = string.Empty;
label5.Text = string.Empty;
label6.Text = string.Empty;
swDispDim = (IDisplayDimension)swSelMgr.GetSelectedObject6(1,-1); //получаем выделенный объект
Prefix = swDispDim.GetText((int)swDimensionTextParts_e.swDimensionTextPrefix); //префикс
label1.Text = Prefix;
Suffix = swDispDim.GetText((int)swDimensionTextParts_e.swDimensionTextSuffix); //суффикс
label2.Text = Suffix;
CalloutBelow = swDispDim.GetText((int)swDimensionTextParts_e.swDimensionTextCalloutBelow); //вторая строка
label3.Text = CalloutBelow;
DP = swDispDim.IGetDimension();
DPValue = DP.GetValue2(""); //значение размера
label5.Text = DPValue.ToString(); //стандартное преобразование в строку
DimPrec = swDispDim.GetPrimaryPrecision2(); //точность размера
swDimensionTolerance = DP.Tolerance; //получаем от размера его объект допуска
maxValueTolerance = swDimensionTolerance.GetMaxValue(); //максимальное значение допуска
label13.Text = (maxValueTolerance * 1000).ToString();
minValueToleranse = swDimensionTolerance.GetMinValue();//минимальное значение допуска
label14.Text = (minValueToleranse * 1000).ToString();
label6.Text = DimPrec.ToString();
}
else
{
MessageBox.Show("Выберите размер");
swDispDim = null;
}
}
IDisplayDimension swDispDim;
ISelectionMgr swSelMgr = swModel.ISelectionManager;
IDimension DP;
IDimensionTolerance swDimensionTolerance;
string Prefix, Suffix, CalloutBelow, TextAll;
double DPValue, maxValueTolerance, minValueToleranse;
int DimPrec;
if (swSelMgr.GetSelectedObjectCount2(0) == 1) //определяем, что выделен только один объект
{
int selType = swSelMgr.GetSelectedObjectType3(1,-1); //узнаем тип выделенного объекта
if (selType == (int)swSelectType_e.swSelDIMENSIONS) //если размер, то работаем дальше
{
label1.Text = string.Empty; //очищаем текст всех лейблов
label2.Text = string.Empty;
label3.Text = string.Empty;
label5.Text = string.Empty;
label6.Text = string.Empty;
swDispDim = (IDisplayDimension)swSelMgr.GetSelectedObject6(1,-1); //получаем выделенный объект
Prefix = swDispDim.GetText((int)swDimensionTextParts_e.swDimensionTextPrefix); //префикс
label1.Text = Prefix;
Suffix = swDispDim.GetText((int)swDimensionTextParts_e.swDimensionTextSuffix); //суффикс
label2.Text = Suffix;
CalloutBelow = swDispDim.GetText((int)swDimensionTextParts_e.swDimensionTextCalloutBelow); //вторая строка
label3.Text = CalloutBelow;
DP = swDispDim.IGetDimension();
DPValue = DP.GetValue2(""); //значение размера
label5.Text = DPValue.ToString(); //стандартное преобразование в строку
DimPrec = swDispDim.GetPrimaryPrecision2(); //точность размера
swDimensionTolerance = DP.Tolerance; //получаем от размера его объект допуска
maxValueTolerance = swDimensionTolerance.GetMaxValue(); //максимальное значение допуска
label13.Text = (maxValueTolerance * 1000).ToString();
minValueToleranse = swDimensionTolerance.GetMinValue();//минимальное значение допуска
label14.Text = (minValueToleranse * 1000).ToString();
label6.Text = DimPrec.ToString();
}
else
{
MessageBox.Show("Выберите размер");
swDispDim = null;
}
}Основная цель: получить объект IDisplayDimension. Именно с помощью него можно вытянуть все значения размера.
Создаём новый проект: форма, кнопка и 7 лейблов. В обработчике нажатия кнопки пишем такой код:
Начнем с того, что надо вычислить количество выделенных объектов с помощью метода GetSelectedObjectCount2. Это нужно для того, чтобы при преобразовании не возникли ошибки, когда выделено несколько объектов. Узнаём тип выделенного объекта с помощью функции GetSelectedObjectType3, если он соответствует размеру — получаем объект IDisplayDimension и все необходимые данные: