Привязать штриховку к прямоугольнику

Автор azeshko, 05.02.17, 11:19:43

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

azeshko

Здравствуйте. Подскажите, как привязать штриховку к прямоугольнику (как во вложенном файле)

Дормидонт Евпатьевич

меню Сервис, Параметры, Текущий фрагмент или чертеж, Параметризация, включить опцию Ассоциировать при вводе-Штриховку и заливку, ОК

после этого отрисовать прямоугольник, заштриховать его - штриховка будет привязана


azeshko

Цитировать
после этого отрисовать прямоугольник, заштриховать его - штриховка будет привязана

Только путем перерисовки? А привязать штриховку к прямоугольнику никак нельзя?
У меня эти прямоугольники со штриховкой отрисовываются программно. Я ассоциацию не включал. Но, тем не менее, некоторые элементы получились связаными, а некоторые - нет. Мне как раз нужно добиться, что бы они были связаны.

Вот код С#, который отвечает за отрисовку....



   class workOperation
    {
        /// <summary>
        /// Класс для построения одной операции - заштрихованный промоугольник с текстовым кодом операции
        /// </summary>
        /// <param name="kompas">Текущий документ</param>
        /// <param name="x">Абсцисс</param>
        /// <param name="y">Ординат</param>
        /// <param name="width">Продолжительность работы</param>
        /// <param name="height">Количество агрегатов х10</param>
        ///

        public void drawWorkOperation(KompasObject kompas, int x, int y, int width, int height, string workIndex, string keyCode, string workCode, string tbl_name)
        {

            ksDocument2D doc = (ksDocument2D)kompas.ActiveDocument2D();
            ksRectangleParam param = kompas.GetParamStruct((short)StructType2DEnum.ko_RectangleParam);

            xmlCreateWriteReader xml = new xmlCreateWriteReader();
            xml.ReadXMLDocument("settings.xml");

            //считываем значение стиля штриховки
            int indShading = Convert.ToInt32(xml.IndexShading);
            int style = indShading;
            int Angle = 45;
            int step = 3;

            //задаем параметры прямоугольника
            if (param != null)
            {
                param.x = x;
                param.y = y;
                param.ang = 0;
                param.height = height;
                param.width = width;
                param.style = 1;
            }

            // создать модельную группу 1
            reference gr1 = doc.ksNewGroup(0);
            reference p1, p2, p3;

            if (style < 4)
            {
                //строим штриховку
                doc.ksHatch(style, Angle, step, 0, x, y);
                doc.ksRectangle(param);

                p1 = doc.ksEndObj();
                p2 = doc.ksRectangle(param);
                doc.ksAddObjGroup(gr1, p1);
                doc.ksAddObjGroup(gr1, p2);
            }
            else
            {
                //повтроная обрисовка контура?
                p2 = doc.ksRectangle(param);
                doc.ksAddObjGroup(gr1, p2);
            }


            //строим текст
            ksParagraphParam par = (ksParagraphParam)kompas.GetParamStruct((short)StructType2DEnum.ko_ParagraphParam);
            if (par != null)
            {
                par.x = x + width / 4;
                par.y = y + height / 2;
            }
            doc.ksParagraph(par);

            ksTextItemParam itemParam = (ksTextItemParam)kompas.GetParamStruct((short)StructType2DEnum.ko_TextItemParam);
            if (itemParam != null)
            {
                itemParam.Init();

                ksTextItemFont itemFont = (ksTextItemFont)itemParam.GetItemFont();
                if (itemFont != null)
                {
                    itemFont.Init();
                    itemFont.height = 3;
                    itemParam.s = workIndex;
                    doc.ksTextLine(itemParam);

                }
            }

            p3 = doc.ksEndObj();
            doc.ksAddObjGroup(gr1, p2);

            //создаем псевдослучайные числа для исключения одноименности группы
            Random random = new Random();
            int randomNumber = random.Next(0, 1000);


            //рабочую группу сохраняем как именную, которая хранится в документе
            if (doc.ksSaveGroup(gr1, workIndex + " " + keyCode + " " + workCode+" "+randomNumber) != 1)
            {
                return;
            }

            //запись данных в xml
            groupManager grManager = new groupManager();
            grManager.WriteXMLDocument("groups.xml", workIndex + " " + keyCode + " " + workCode,
                x.ToString(), y.ToString(), width.ToString(), height.ToString());

            doc.ksRebuildDocument();

            writeDataToDatabase(workIndex, keyCode, workCode, x.ToString(), y.ToString(), width.ToString(), height.ToString(), tbl_name);

        }