本文整理汇总了C#中TypedValue.SetValue方法的典型用法代码示例。如果您正苦于以下问题:C# TypedValue.SetValue方法的具体用法?C# TypedValue.SetValue怎么用?C# TypedValue.SetValue使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TypedValue
的用法示例。
在下文中一共展示了TypedValue.SetValue方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: AddLinesToGroup
public void AddLinesToGroup()
{
Editor editor = dwg.Editor;
using (Transaction acadTrans = CurrentDatabase.TransactionManager.StartTransaction())
{
GroupsInformation groupsEntities = new GroupsInformation(acadTrans, CurrentDatabase);
//Спрашиваем имя группы
string GroupName = AskForGroup(true, groupsEntities.GroupList);
if (GroupName != null)
{
// Готовим опции для запроса элементов группы
PromptSelectionOptions acadSelectionOptions = new PromptSelectionOptions();
acadSelectionOptions.MessageForAdding = "\nУкажите объекты группы " + GroupName;
//Выделять будем только линии и полилинии. Создаем фильтр
TypedValue[] acadFilterValues = new TypedValue[4];
acadFilterValues.SetValue(new TypedValue((int)DxfCode.Operator, "<OR"),0);
acadFilterValues.SetValue(new TypedValue((int)DxfCode.Start, "LINE"),1);
acadFilterValues.SetValue(new TypedValue((int)DxfCode.Start, "LWPOLYLINE"),2);
acadFilterValues.SetValue(new TypedValue((int)DxfCode.Operator, "OR>"),3);
SelectionFilter acadSelFilter = new SelectionFilter(acadFilterValues);
//Используем фильтр для выделения
PromptSelectionResult acadSelSetPrompt = dwg.Editor.GetSelection(acadSelectionOptions, acadSelFilter);
//Если выбраны объекты - едем дальше
if (acadSelSetPrompt.Status == PromptStatus.OK)
{
// Формируем коллекцию выделенных объектов
SelectionSet acadSelectedObjects = acadSelSetPrompt.Value;
// Проходим по каждому объекту в выделении
foreach (SelectedObject selectedObj in acadSelectedObjects)
{
if (selectedObj!=null)
{
groupsEntities.AppendGroupToObject(selectedObj.ObjectId, GroupName);
}
}
}
}
acadTrans.Commit();
}
}
示例2: FilterSelectionSet
public static void FilterSelectionSet()
{
Editor acDocEd = AcadApp.Application.DocumentManager.MdiActiveDocument.Editor;
//使用选择过滤器定义选择集规则
//选择过滤器由TypedValue形式的一对参数构成。TypedValue的第一个参数表明过滤器的类型(例如对象),第二个参数为要过滤的值(例如圆)。过滤器类型是一个DXF组码,用来指定使用哪种过滤器。一些常用过滤器类型列表如下。
//选择过滤器可以包含过滤多个属性或对象的条件。可以通过声明一个包含足够数量元素的数组来定义总的过滤条件,数组的每个元素代表一个过滤条件。
TypedValue[] acTypValAr = new TypedValue[1]; // 创建一个TypedValue数组来定义过滤器条件
acTypValAr.SetValue(new TypedValue((int)DxfCode.Start, "CIRCLE"), 0);
//**************
// 创建TypedValue数组定义过滤条件
//TypedValue[] acTypValAr = new TypedValue[3];
//acTypValAr.SetValue(new TypedValue((int)DxfCode.Color, 5), 0);
//acTypValAr.SetValue(new TypedValue((int)DxfCode.Start, "CIRCLE"), 1);
//acTypValAr.SetValue(new TypedValue((int)DxfCode.LayerName, "0"), 2);
//**************
// 将过滤器条件赋值给SelectionFilter对象
SelectionFilter acSelFtr = new SelectionFilter(acTypValAr);
PromptSelectionResult acSSPrompt;
acSSPrompt = acDocEd.GetSelection(acSelFtr);
// 提示状态OK,表示用户已选完
if (acSSPrompt.Status == PromptStatus.OK)
{
SelectionSet acSSet = acSSPrompt.Value;
AcadApp.Application.ShowAlertDialog("Number of objects selected: " + acSSet.Count.ToString());
}
else
{
AcadApp.Application.ShowAlertDialog("Numberof objects selected: 0");
}
}
示例3: CommandAcVol
public static decimal[] CommandAcVol() // Выбор объектов и возврат массива объемов согласно списку слоев в listBoxLayers
{
try
{
Document acDoc = Application.DocumentManager.MdiActiveDocument; //Текущий документ.
Editor acDocEd = acDoc.Editor; // Editor текущего документа.
Database acDocDb = acDoc.Database; // Database текущего документа.
//int layersCount = _form.listBoxLayers.Items.Count;
decimal[] decVolumesArray = new decimal[_form.listBoxLayers.Items.Count];
using (acDoc.LockDocument()) // блокировка документа
{
using (Transaction acTrans = acDocDb.TransactionManager.StartTransaction()) // Начало Транзакции.
{
// Создание TypedValue array для определение параметров фильтра.
var acTypedValueArray = new TypedValue[2];
acTypedValueArray.SetValue(new TypedValue((int)DxfCode.Start, "*POLYLINE"), 0); // Параметр фильтра под номером 0.
acTypedValueArray.SetValue(new TypedValue((int)DxfCode.LayerName, "acVlm_*"), 1); // Параметр фильтра под номером 1.
// Assign the filter criteria to a SelectionFilter object
var acSelectionFilterObject = new SelectionFilter(acTypedValueArray);
// Задание опций выбора объектов.
var acSelectionSetOptions = new PromptSelectionOptions
{
AllowDuplicates = false,
RejectObjectsOnLockedLayers = true,
MessageForAdding = "Выберите контуры для подсчета объемов:"
};
var acSelectionSetPrompt = acDocEd.GetSelection(acSelectionSetOptions, acSelectionFilterObject);
if (acSelectionSetPrompt.Status == PromptStatus.OK)
{
var acSelectionSet = acSelectionSetPrompt.Value;
//int polylineCount = 0;
double sclFactor = 0.0;
switch (_form.comboBoxScale.SelectedIndex)
{
case 0:
sclFactor = 10.0;
break;
case 1:
sclFactor = 5.0;
break;
}
foreach (SelectedObject acSelectedObject in acSelectionSet)
{
if (acSelectedObject != null)
{
var acEnt = acTrans.GetObject(acSelectedObject.ObjectId, OpenMode.ForWrite) as Entity;
if (acEnt != null)
{
var acPolyLine = (Polyline)acEnt;
for (int layerNumber = 0; layerNumber < _form.listBoxLayers.Items.Count; layerNumber++)
{
string layerPostfix = "";
switch ((string)_form.listBoxLayersUnits.Items[layerNumber])
{
case "м2":
layerPostfix = "_msrA";
break;
case "м":
layerPostfix = "_msrL";
break;
}
if (acPolyLine.Layer == "acVlm_" + _form.listBoxLayers.Items[layerNumber] + layerPostfix)
{
if ((string)_form.listBoxLayersUnits.Items[layerNumber] == "м2")
{
decVolumesArray[layerNumber] = decVolumesArray[layerNumber] + (decimal)(acPolyLine.Area / (sclFactor * sclFactor));
}
if ((string)_form.listBoxLayersUnits.Items[layerNumber] == "м")
{
decVolumesArray[layerNumber] = decVolumesArray[layerNumber] + (decimal)(acPolyLine.Length / sclFactor);
}
}
}
}
}
}
}
else
{
acTrans.Abort();
AcVolShowForm();
return null;
}
acTrans.Commit();
return decVolumesArray;
}
}
//.........这里部分代码省略.........
示例4: SelectPk
private static string SelectPk(string msg) //Указание ПК поперечного профиля
{
DBText acDbText = new DBText();
Document acDoc = Application.DocumentManager.MdiActiveDocument; //Текущий документ.
Editor acDocEd = acDoc.Editor; // Editor текущего документа.
Database acDocDb = acDoc.Database; // Database текущего документа.
using (Transaction acTrans = acDocDb.TransactionManager.StartTransaction()) // Начало Транзакции.
{
ReturnIfNullOrEmpty:
// Создание TypedValue array для определение параметров фильтра.
var acTypedValueArray = new TypedValue[1];
acTypedValueArray.SetValue(new TypedValue((int)DxfCode.Start, "TEXT"), 0); // Параметр фильтра под номером 0.
// Assign the filter criteria to a SelectionFilter object
var acSelectionFilterObject = new SelectionFilter(acTypedValueArray);
// Задание опций выбора объектов.
var acSelectionSetOptions = new PromptSelectionOptions
{
AllowDuplicates = false,
RejectObjectsOnLockedLayers = true,
SingleOnly = true,
MessageForAdding = msg
};
// Выбор объектов
var acSelectionSetPrompt = acDocEd.GetSelection(acSelectionSetOptions, acSelectionFilterObject);
if (acSelectionSetPrompt.Status == PromptStatus.OK)
{
var acSelectionSet = acSelectionSetPrompt.Value;
foreach (SelectedObject acSelectedObject in acSelectionSet)
{
if (acSelectedObject != null)
{
var acEnt = acTrans.GetObject(acSelectedObject.ObjectId, OpenMode.ForWrite) as Entity;
if (acEnt != null)
{
acDbText = (DBText)acEnt;
}
}
}
}
if (acSelectionSetPrompt.Status == PromptStatus.Error)
{
MessageBox.Show("ПК не выбран, повторите попытку!", myCommands.msgBoxCaption_acVolume, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
goto ReturnIfNullOrEmpty;
}
if (acSelectionSetPrompt.Status == PromptStatus.Cancel)
{
//MessageBox.Show("Статус Cancel");
//MessageBox.Show("Выбор пикета отменен!\nТаблица объемов не будет привязана к пикету и не будет учитываться при экспорте объемов в Excel.", "acVolume", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
acTrans.Commit();
return "-1";
}
acTrans.Commit();
}
//MessageBox.Show("acDBText = " + acDBText.TextString.Trim());
return acDbText.TextString.Trim();
}
示例5: SelectTables
public static void SelectTables(string msg)
{
Document acDoc = Application.DocumentManager.MdiActiveDocument; //Текущий документ.
Editor acDocEd = acDoc.Editor; // Editor текущего документа.
Database acDocDb = acDoc.Database; // Database текущего документа.
Dictionary<string, string> globalVolumesNamesAndUnits = new Dictionary<string, string>(); //Наименования объемов и единиц измерения
Dictionary<double, ObjectId> globalPKsAndObjectIds = new Dictionary<double, ObjectId>(); //ПК для подсчета объемов и соответвующие им идентификаторы определений блоков с таблицами
using (acDoc.LockDocument()) // блокировка документа
{
using (Transaction acTrans = acDocDb.TransactionManager.StartTransaction()) // Начало Транзакции.
{
//открываем таблицу блоков чертежа для чтения
BlockTable acDocDbBlockTable = (BlockTable)acTrans.GetObject(acDocDb.BlockTableId, OpenMode.ForRead);
// Создание TypedValue array для определение параметров фильтра.
var acTypedValueArray = new TypedValue[2];
acTypedValueArray.SetValue(new TypedValue((int)DxfCode.Start, "INSERT"), 0); // Параметр фильтра под номером 0.
acTypedValueArray.SetValue(new TypedValue((int)DxfCode.LayerName, "acVlm_*"), 1); // Параметр фильтра под номером 1.
// Assign the filter criteria to a SelectionFilter object
var acSelectionFilterObject = new SelectionFilter(acTypedValueArray);
// Задание опций выбора объектов.
var acSelectionSetOptions = new PromptSelectionOptions
{
AllowDuplicates = false,
RejectObjectsOnLockedLayers = true,
//SingleOnly = true,
MessageForAdding = msg
};
// Выбор объектов
var acSelectionSetPrompt = acDocEd.GetSelection(acSelectionSetOptions, acSelectionFilterObject);
if (acSelectionSetPrompt.Status == PromptStatus.OK)
{
var acSelectionSet = acSelectionSetPrompt.Value;
//MessageBox.Show("Количество выбранных объектов = " + acSelectionSet.Count.ToString(), myCommands.msgBoxCaption_acVolume);
// ReSharper disable once LoopCanBeConvertedToQuery
//Перебираем объекты и определяем количество наименований объемов, а так же количество пикетов для посчета объемов
foreach (SelectedObject acSelectedObject in acSelectionSet)
{
if (acSelectedObject != null)
{
Entity acEnt = acTrans.GetObject(acSelectedObject.ObjectId, OpenMode.ForWrite) as Entity;
if (acEnt != null)
{
BlockReference objBlockReference = (BlockReference)acEnt;
if (objBlockReference.Layer.Contains("acVlm_")) // проверяем, принадлежит ли выбранный блок к нужному слою
{
ObjectId btrObjectId = acDocDbBlockTable[objBlockReference.Name]; //получаем ObjectId определения блока по имени его вхождения (objBlockReference.Name)
BlockTableRecord objBlockTableRecord = (BlockTableRecord)btrObjectId.GetObject(OpenMode.ForRead); //Конвертируем объект в определние блока objBlockTableRecord
//определяем количество таблиц с валидными пикетами
foreach (ObjectId objObjectId in objBlockReference.AttributeCollection) //для каждого объекта в коллекции атрибутов objBlockReference.AttributeCollection
{
AttributeReference objAttributeReference = (AttributeReference)acTrans.GetObject(objObjectId, OpenMode.ForRead); //конвертируем объект в AttributeReference
if (objAttributeReference != null)
{
if (objAttributeReference.Tag == "ПК" & ConvertStringToDouble(objAttributeReference.TextString) >= 0) // для каждого атрибута с Тэгом="ПК" и значением >= 0
{
if (!globalPKsAndObjectIds.ContainsKey(ConvertStringToDouble(objAttributeReference.TextString.Trim())))
{
globalPKsAndObjectIds.Add(ConvertStringToDouble(objAttributeReference.TextString.Trim()), btrObjectId);
}
else
{
MessageBox.Show(
"Обнаружены таблицы объемов с одиниковым значением ПК.\nВозможны ошибки в подсчете объемов.\nУдалите дублирующиеся таблицы.",
"acVolume", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
//MessageBox.Show("BlockReference.Name: " + objBlockReference.Name + "\nПК = " + objAttributeReference.TextString);
}
}
}
foreach (ObjectId objObjectIdInBtr in objBlockTableRecord) //перебираем объекты в определении блока
{
try //ловим таблицу
{
Table objTable = (Table)objObjectIdInBtr.GetObject(OpenMode.ForRead);
for (int rowIndex = 1; rowIndex < objTable.Rows.Count; rowIndex++)
{
string volumeName = objTable.Cells[rowIndex, 0].TextString.Trim();
string volumeUnit = objTable.Cells[rowIndex, 1].TextString.Trim();
if (!globalVolumesNamesAndUnits.ContainsKey(volumeName))
{
globalVolumesNamesAndUnits.Add(volumeName, volumeUnit);
}
}
//MessageBox.Show(objTable.Cells[0, 0].TextString);
}
catch
{ //throw;
//.........这里部分代码省略.........
示例6: ConvertTable
public void ConvertTable()
{
List<DwgLine> linelst = new List<DwgLine>();
List<TableText> LstTableText = new List<TableText>();
List<DwgLine> UniqueLineLSt = new List<DwgLine>();
List<TableText> UniqueTableText = new List<TableText>();
linelst.Clear();
LstTableText.Clear();
//Создание фильтров выборки элементов с экрана
TypedValue[] FilterLine = new TypedValue[9];
FilterLine.SetValue(new TypedValue((int)DxfCode.Operator, "<or"), 0);
FilterLine.SetValue(new TypedValue((int)DxfCode.Start, "Line"), 1);
FilterLine.SetValue(new TypedValue((int)DxfCode.Start, "POLYLINE"), 2);
FilterLine.SetValue(new TypedValue((int)DxfCode.Start, "LWPOLYLINE"), 3);
FilterLine.SetValue(new TypedValue((int)DxfCode.Start, "2DPOPYLINE"), 4);
FilterLine.SetValue(new TypedValue((int)DxfCode.Start, "3DPOLYLINE"), 5);
FilterLine.SetValue(new TypedValue((int)DxfCode.Start, "MText"), 6);
FilterLine.SetValue(new TypedValue((int)DxfCode.Start, "Text"), 7);
FilterLine.SetValue(new TypedValue((int)DxfCode.Operator, "or>"), 8);
SelectionFilter filter = new SelectionFilter(FilterLine);
PromptSelectionResult result;
result = ed.GetSelection(filter);
if (result.Status == PromptStatus.OK)
{
ed.WriteMessage("После проверки статуса выбора");
using (Transaction trs = dwg.TransactionManager.StartTransaction())
{
try
{
ObjectId[] objects = result.Value.GetObjectIds();
foreach (ObjectId ObjId in objects)
{
DBObject obj = trs.GetObject(ObjId, OpenMode.ForRead);
Entity ent = obj as Entity;
if (ent.GetType() == typeof(acLine))
{
acLine acl = (acLine)ent;
linelst.Add(new DwgLine((int)acl.StartPoint.X, (int)acl.StartPoint.Y, (int)acl.EndPoint.X, (int)acl.EndPoint.Y));
}
else if (ent.GetType() == typeof(Polyline2d))
{
Polyline2d pl2d = (Polyline2d)ent;
linelst.Add(new DwgLine((int)pl2d.StartPoint.X, (int)pl2d.StartPoint.Y, (int)pl2d.EndPoint.X, (int)pl2d.EndPoint.Y));
}
else if (ent.GetType() == typeof(Polyline3d))
{
Polyline3d pl3d = (Polyline3d)ent;
linelst.Add(new DwgLine((int)pl3d.StartPoint.X, (int)pl3d.StartPoint.Y, (int)pl3d.EndPoint.X, (int)pl3d.EndPoint.Y));
}
else if (ent.GetType() == typeof(Polyline))
{
Polyline pl = (Polyline)ent;
if (pl.NumberOfVertices > 2)
{
for (int i = 0; i <= pl.NumberOfVertices - 2; i++)
{
var PlSegment = pl.GetLineSegmentAt(i);
linelst.Add(new DwgLine((int)PlSegment.StartPoint.X, (int)PlSegment.StartPoint.Y, (int)PlSegment.EndPoint.X, (int)PlSegment.EndPoint.Y));
}
}
else
{
linelst.Add(new DwgLine((int)pl.StartPoint.X, (int)pl.StartPoint.Y, (int)pl.EndPoint.X, (int)pl.EndPoint.Y));
}
}
else if (ent.GetType() == typeof(MText))
{
MText mtx = (MText)ent;
LstTableText.Add(new TableText(mtx.Text, (int)mtx.Location.X, (int)mtx.Location.Y));
}
else if (ent.GetType() == typeof(DBText))
{
DBText dbtxt = (DBText)ent;
LstTableText.Add(new TableText(dbtxt.TextString, (int)dbtxt.Position.X, (int)dbtxt.Position.Y));
}
else
{
ed.WriteMessage("Выбраны неверные типы данных");
}
}
}
catch (Autodesk.AutoCAD.Runtime.Exception ex)
{
ed.WriteMessage(ex.Message);
trs.Abort();
}
UniqueLineLSt = linelst.Distinct().ToList();
UniqueTableText = LstTableText.Distinct().ToList();
GetListOfLine(UniqueLineLSt);
trs.Commit();
}
CreateTable(UniqueLineLSt, UniqueTableText);
}
//.........这里部分代码省略.........