当前位置: 首页>>代码示例>>C#>>正文


C# TypedValue.SetValue方法代码示例

本文整理汇总了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();
     }
 }
开发者ID:bargool,项目名称:BargElectro,代码行数:40,代码来源:ElectroLines.cs

示例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");

            }

        }
开发者ID:freudshow,项目名称:raffles-codes,代码行数:54,代码来源:Class1.cs

示例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;
                    }
                }
//.........这里部分代码省略.........
开发者ID:Paravozzz,项目名称:acVolume,代码行数:101,代码来源:myCommands.cs

示例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();
        }
开发者ID:Paravozzz,项目名称:acVolume,代码行数:69,代码来源:myCommands.cs

示例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;
//.........这里部分代码省略.........
开发者ID:Paravozzz,项目名称:acVolume,代码行数:101,代码来源:myCommands.cs

示例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);
            }
//.........这里部分代码省略.........
开发者ID:TheBlackLynx,项目名称:Helloworld,代码行数:101,代码来源:Program.cs


注:本文中的TypedValue.SetValue方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。