Ассоциативность контура штриховки отменена что делать
Имеется возможность редактирования образцов и контуров штриховки (и сплошной закраски).
Кроме того, можно редактировать закрашенные элементы чертежа; при этом способ редактирования зависит от их типа. Закрашенными могут выглядеть сплошные заливки, двумерные фигуры, широкие полилинии и кольца. Также можно изменить порядок следования для штриховки.
Управление плотностью образца штриховки
При нанесении штриховки может образовываться очень большое число отрезков и объектов-точек. Хотя штриховка хранится как единый объект, все же каждый его отрезок и точка занимает место на диске и требует определенного времени на обработку. При использовании относительно малого масштабного коэффициента во время штрихования области могут создаваться миллионы отрезков и объектов-точек, отнимающих длительное время на прорисовку и поглощающих практически все доступные ресурсы. Этой проблемы можно избежать, ограничив число объектов, создаваемых однократным выполнением команды ШТРИХОВКА. Если предполагаемое число объектов, необходимое для определенной штриховки (учитывая длину контура, образец и масштаб), превышает ограничение, команда ШТРИХОВКА выдает сообщение о том, что масштаб штриховки или длина пунктира слишком малы, и штрихование отменяется. В таком случае необходимо изменить параметры штрихования; например, поменять масштабный коэффициент.
Максимальное допустимое число объектов, создаваемых штрихованием, задается в записи MaxHatch системного реестра. По умолчанию количество объектов ограничивается числом 10000. Это предельное значение можно изменить, задав значение переменной MaxHatch системного реестра с помощью команды (setenv «MaxHatch» «n«), где n — число от 100 до 10000000 (десять миллионов).
Примечание При вводе команды MaxHatch необходимо вводить буквы M и H в верхнем регистре, а остальные буквы — в нижнем регистре.
Изменение свойств имеющейся штриховки
Можно изменять такие свойства имеющейся штриховки, как массив, масштаб и угол. Можно использовать:
- диалоговое окно «Редактирование штриховки» (рекомендуется)
- палитру свойств
Можно копировать свойства одной штриховки в другую штриховку. Используя кнопку «Копирование свойств» диалогового окна «Редактирование штриховки», можно копировать все свойства, включая исходную точку штриховки, из одной штриховки в другую. Для копирования общих свойств и свойств штриховки (кроме исходной точки штриховки) из одной штриховки в другую используется диалоговое окно «Копировать свойства».
Для разделения штриховки на исходные объекты можно использовать команду РАСЧЛЕНИТЬ.
Редактирование контура штриховки
Имеется возможность редактировать контуры штриховки, как и другие объекты. Для этого можно использовать ручки, позволяющие растягивать, перемещать, поворачивать, масштабировать и зеркально отображать заштрихованные области и их контуры. Ассоциативная штриховка при редактировании замкнутого контура автоматически обновляется. Если в результате редактирования контур стал разомкнутым, то штриховка перестает быть ассоциативной и, следовательно, больше не зависит от формы контура. Ассоциативность штриховки может быть потеряна также в том случае, если во время редактирования контура оказался недоступен файл образца штриховки. Также при обрезке штриховки, если файл образца штриховки (PAT-файл) недоступен, штриховка не отображается.
Ассоциативность штриховки зависит от поднятия флажка «Ассоциативная» в диалоговых окнах «Штриховка и градиент» (ШТРИХОВКА) и «Редактирование штриховки» (РЕДШТР). Неассоциативные штриховки при изменении контуров не обновляются.
Ассоциативность штриховки в любой момент можно отменить, но после этого ассоциативность существующей штриховки восстановить будет уже нельзя. Необходимо повторно создать штриховку для восстановления ассоциативности или создать новый контур и ассоциировать его со штриховкой.
Для создания контура вокруг неассоциативной штриховки или штриховки, созданной с помощью указания точек, используйте параметр «Восстановить контур» диалогового окна «Штриховка и градиент». С помощью этого параметра можно также задать ассоциативность нового контура со штриховкой.
Редактирование закрашенных элементов
Закрашенными элементами могут быть:
- сплошные штриховки-заливки
- двумерные фигуры
- градиентные заливки
- широкие полилинии и кольца
Эти закрашенные объекты редактируются так же, как и другие штриховки, 2D фигуры, широкие полилинии и кольца. Кроме команды ОКОНСВ, можно использовать команду РЕДШТРИХ для работы с закрашенными штриховками и градиентными заливками, ручки для редактирования 2D фигур, а также команду ПОЛРЕД для широких полилиний и колец.
Изменение порядка следования для штриховки
Во время редактирования штриховки можно изменить ее порядок прорисовки таким образом, чтобы она отображалась за контуром, перед контуром, на заднем или на переднем плане.
Редактирование штриховки
В этом разделе рассматривается редактирование штриховки с помощью команды РЕДШТРИХ.
В большую часть проектов вносятся изменения, и иногда изменения затрагивают штриховку, поэтому нужно уметь быстро и эффективно ее редактировать.
Для эффективного изменения штриховки необходимо понимать, когда ассоциативность образца и границы теряется. Неправильное редактирование может привести к необходимости создания штриховки заново.
Правила поддержания ассоциативности
- • Если ассоциативность потеряна, то ее нельзя восстановить: нужно создать штриховку заново.
- • Штриховка областей с незамкнутой границей неассоциативна.
Разрывы в границе области
Если в границе заштрихованной области появляется разрыв, то штриховка теряет ассоциативность. В этом случае появляется сообщение «Ассоциативность контура штриховки отменена». Штриховка теперь не заполняет отредактированную область.
Диалоговое окно Редактирование штриховки аналогично окну Штриховка и градиент: при редактировании штриховки используются те же настройки, что при создании.
После ввода команды РЕДШТРИХ появляется запрос выбора штриховки. После выбора появляется диалоговое окно Редактирование штриховки, в котором отображаются параметры выбранной штриховки/залив-ки. Можно изменить параметры штриховки и посмотреть результат.
Редактирование штриховки — Ж
Командная строка: РЕДШТРИХ.
Меню: Редактировать Объект -> Штриховка.
Панель: Редактирование II.
Двойной щелчок по штриховке.
Пример к Главе 6: создание и редактирование штриховки
В этом примере показано, как использовать команду ШТРИХ для оформления чертежа плана подстанции. При штриховке нескольких областей используется опция Отдельные штриховки.
- 1. Откройте Глава6_план подстанции.dwg.
- 2. В списке слоев на панели инструментов включите отображение и сделайте текущим слой Кабельные каналы.
- 3. Добавьте к кабельным каналам штриховку.
- • Отключите все слои кроме слоя Кабельные каналы для удобства создания штриховки.
- • Введите команду ШТРИХ Ж
- • В списке Образец выберите ANSI31.
- • В поле Масштаб введите 1.
- • Установите флаг Создавать отдельные штриховки.
- • Нажмите клавишу Добавить: точки выбора.
- • Последовательно укажите все внутренние области геометрии кабельных каналов.
Ассоциативность контура штриховки отменена что делать
Определение контуров штриховки
Выбор образцов штриховки и сплошной заливки
Нанесение штриховки, не имеющей контура
- Штриховку можно нанести с помощью команды ШТРИХ, а затем стереть все или некоторые объекты контура.
- Штриховку можно нанести с помощью команды ШТРИХ, убедившись, что объекты контура не находятся на том же слое, что и штриховка. Затем нужно отключить или заморозить слой, на котором находятся объекты контура. Это единственный способ, поддерживающий ассоциативность штриховки.
- Можно обрезать существующую штриховку объектами, созданными в качестве контура обрезки. После обрезки штриховки необходимо стереть эти объекты.
- В командной строке можно задать контур штриховки, указав точки контура с помощью параметра построения -ШТРИХ.
Например, может понадобиться показать, что значительная область чертежа заполняется образцом путем заполнения всего лишь маленькой части этой области, как это показано на следующем рисунке.
Имеется возможность сохранения контура после нанесения штриховки; здесь контур не сохранен.
- Выбор образцов штриховки и сплошной заливки
- Определение контуров штриховки в сложных чертежах
не могу замкнуть контур полилинии
Вот собственно код:
COleSafeArray points;
points.CreateOneDim(VT_R8, 1);
points.ResizeOneDim(15);
long index;
double value;
points.PutElement(&(index = 0), &(value = 0.0));
points.PutElement(&(index = 1), &(value = 0.0));
points.PutElement(&(index = 2), &(value = 0.0));
AutoCAD::IAcad3DPolylinePtr pline = m_AcadApplication->ActiveDocument->ModelSpace->Add3DPoly(points);
pline->Closed = true;
Во-первых, последняя точка в массиве такая же, как и первая. Во-вторых, явно устанавливаем Closed в true.
Тем не менее, в контекстном меню построенного полигона есть пункт «Замкнуть».
Это приводит к тому, что при использовании этого полигона в качестве контура для заливки получаю сообщение «Ассоциативность контура штриховки отменена»:
double angle =0 + 2 * 3.14159 / 4;
double spacing = 0.1;
AutoCAD::IAcadHatchPtr hatch = m_AcadApplication->ActiveDocument->ModelSpace->AddHatch(0, _bstr_t(L»ANSI31″), FALSE);
hatch->put_PatternAngle(angle);
hatch->put_PatternScale(spacing);
hatch->put_HatchStyle(AutoCAD::acHatchStyleNormal);
COleSafeArray objects;
objects.CreateOneDim(VT_DISPATCH, 1);
objects.PutElement(&(index = 0), pline.GetInterfacePtr());
#2 Ответ от Александр Ривилис 17 мая 2011г. 09:54:13
Re: не могу замкнуть контур полилинии
1. Зачем использовать 3D-полининию в качестве контура штриховки?
2. Зачем задавать одинаковые начальную и конечные точки, а затем еще и задавать свойство CLOSE?
#3 Ответ от slavick 17 мая 2011г. 13:15:20
Re: не могу замкнуть контур полилинии
В рабочем коде используется IAcadPolyline. В документации я прочитал, что этот тип предназначен для обратной совместимости и лучше использовать IAcad3DPolyline либо IAcadLightWeightPolyline. Т.к. в исходном коде использовались 3-мерные координаты, то в примере кода я просто заменил IAcadPolyline на IAcad3DPolyline, без переделки массива точек. Но IAcadLightWeightPolyline я тоже пробовал, результат тот же.
Насчет первой и последней точек — я раньше не использовал свойство Closed, по-этому начальная и конечная точка одинаковые. Да и вы в каком-то посте писали, что это один из способов замкнуть полилинию.
У меня не работают ни первый, ни второй, ни оба вместе.
#4 Ответ от Александр Ривилис 17 мая 2011г. 13:55:30
Re: не могу замкнуть контур полилинии
1) 3D-полилиния для таких вещей не предназначена.
2) Убери повторяющуюся точку
3) Попробуй или:
pline->Closed = VARIANT_TRUE;
pline->put_Closed(VARIANT_TRUE);
И для того, чтобы штриховка была ассоциативной:
AutoCAD::IAcadHatchPtr hatch = m_AcadApplication->ActiveDocument->ModelSpace->AddHatch(0, _bstr_t(L"ANSI31"), VARIANT_TRUE);
#5 Ответ от slavick 17 мая 2011г. 14:48:39
Re: не могу замкнуть контур полилинии
Спасибо, вечером попробую.
PutClosed и put_Closed я пробовал, и VARIANT_BOOL(true) тоже. А вот до VARIANT_TRUE не додумался.
#6 Ответ от Александр Ривилис 17 мая 2011г. 14:55:41
Re: не могу замкнуть контур полилинии
Вот переделанный код, который у меня создаёт ассоциативную штриховку:
void CTestCOMApp() < CLSID clsid; CLSIDFromProgID(L"AutoCAD.Application", &clsid); AutoCAD::IAcadApplicationPtr app; app.CreateInstance(clsid); if (app) < app->put_Visible(VARIANT_TRUE); AutoCAD::IAcadDocumentPtr doc = app->ActiveDocument; COleSafeArray points; points.CreateOneDim(VT_R8, 1); points.ResizeOneDim(12); long index; double value; points.PutElement(&(index = 0), &(value = 0.0)); points.PutElement(&(index = 1), &(value = 0.0)); points.PutElement(&(index = 2), &(value = 0.0)); points.PutElement(&(index = 3), &(value = 5.0)); points.PutElement(&(index = 4), &(value = 0.0)); points.PutElement(&(index = 5), &(value = 0.0)); points.PutElement(&(index = 6), &(value = 5.0)); points.PutElement(&(index = 7), &(value = 5.0)); points.PutElement(&(index = 8), &(value = 0.0)); points.PutElement(&(index = 9), &(value = 0.0)); points.PutElement(&(index = 10), &(value = 5.0)); points.PutElement(&(index = 11), &(value = 0.0)); AutoCAD::IAcad3DPolylinePtr pline = doc->ModelSpace->Add3DPoly(points); pline->Closed = VARIANT_TRUE; double angle =0 + 2 * 3.14159 / 4; double spacing = 0.1; AutoCAD::IAcadHatchPtr hatch = doc->ModelSpace->AddHatch(0, _bstr_t(L"ANSI31"), VARIANT_TRUE); hatch->put_PatternAngle(angle); hatch->put_PatternScale(spacing); hatch->put_HatchStyle(AutoCAD::acHatchStyleNormal); COleSafeArray objects; objects.CreateOneDim(VT_DISPATCH, 1); objects.PutElement(&(index = 0), pline.GetInterfacePtr()); hatch->AppendOuterLoop(objects); hatch->Evaluate(); > >