Изменение свойств объектов

Материал из K3-Macro
Макро | Редактирование объектов | Перемещение | Размножение | Поворот | Масштабирование | Зеркальное отражение | Гибка | Проецирование | Помещение в систему координат | Редактирование примитива | Редактирование объекта | Обрезка | Разрыв | Редактирование поверхности | Редактирование отрезка | Редактирование дуги | Редактирование сплайна | Редактирование полилинии и плоской области | Редактирование контура | Создание фаски | Создание скругления | Изменение свойств | Удаление

Команда chprop изменяет значения различных свойств объектов. Возможные значения свойств объектов представлены в следующих разделах.

Изменение цвета объектов

chprop color [partly|wholly] <Objects> <N>

Команда изменяет цвет объектов <Objects> на цвет с кодом <N>. Код цвета <N> должен быть в пределах от 0 до 239 или 242. Цвет 242 - это прозрачный цвет, который можно назначать структурным объектам (группам), чтобы входящие в состав группы подобъекты не изменяли свой цвет.

Изменение типа линии линейных объектов

chprop ltype [partly|wholly] <Objects> <N>

Команда изменяет тип линии линейных объектов <Objects> на тип линии с кодом <N>.

Изменение толщины линии

chprop lwidth [partly|wholly] <Objects> <N>

Порговая толщина линий

Команда изменяет толщину линии объектов <Objects>, устанавливая ее равной <N>. Однако следует иметь ввиду, что в K3 существует два типа отображения линий на видовом окне в зависимости от их толщины – в один пиксел и в два пиксела. Порог толщин линии устанавливается через карточку параметров (команда Установки/Параметры) в закладке Сцена/Состояние (см. рисунок).

Изменение свойства «Инструмент»/«Не инструмент»

chprop tool <Objects>

chprop not_tool <Objects>

Команды устанавливают для объектов <Objects> свойство «инструмент» (tool) или «не инструмент» (not_tool). Это свойство определяет, будет ли объект удаляться при выполнении булевых операций. Объекты, имеющие свойство «инструмент» остаются при выполнении булевых операций, а сама операция производится с копиями этих объектов.

Изменение свойств отображения объектов

chprop frame <Objects>

Команда включает отображение объектов <Objects> каркасом на всех видах.

chprop renderframe <Objects>

Команда включает отображение объектов <Objects> каркасом на видах, где установлено полутоновое отображение.

chprop nonerenderframe <Objects>

Команда включает отображение объектов <Objects> каркасом на видах, где установлено векторное отображение.

chprop normal <Objects>

Команда включает нормальное отображение объектов <Objects> на всех видах.

Данные команды управляют режимом отображения твердотельных объектов.

Заливка объектов

Заливка объектов

chprop mapping [partly|wholly] [List] <Objects>

Команда осуществляет заливку объектов <Objects> по параметрам в интерактивном режиме. В диалоговом окне (см. рисунок «Заливка объектов») необходимо указать секцию для закрашивания и материал. Поскольку данная команда использует диалоговое окно, применять эту команду в макропрограммах не рекомендуется.

Если задан ключ List, команда показывает множество использованных в объектах <Objects> материалов в формате Название материала (индекс материала). Если использован материал из неподключенной библиотеки материалов, то название материала — пустая строка, а индекс — нормальная строка.

Возможен синтаксис:

#var chprop mapping [partly|wholly] List <Objects>

В этом случае переменной var присваивается 0, если в выбранных объектах не используются материалы, или 1, если используются.

chprop mapping [partly|wholly] [Rename] <Objects> <String1> <String2>

Команда заменяет используемые материалы в объектах <Objects>, в индексе (полном имени текстуры) которых существует подстрока <String1> на материал, индекс которого получается из индекса используемого материала заменой подстроки <String1> на подстроку <String2> при условии, что такой материал существует. Команда выдает протокол сделанных замен материалов.

Возможен синтаксис:

#var chprop mapping [partly|wholly] [Rename] <Objects> <String1> <String2>

Переменной var присваивается 0, если не было сделано ни одной замены, или 1, если была сделана хотя бы одна замена.

Примеры:

 // Заменить в выбранных объектах используемые материалы из библиотеки pkm6_0 
 //      на материалы из библиотеки pkm6_3 с теми же номерами.
 ChProp mapping Rename : "pkm6_0" "pkm6_3";
 
 // Заменить в выбранных объектах используемый материал из библиотеки pkm6_0_imp.#86 ДСП Ольха темная 
 //      на материал из библиотеки pkm6_3_iml.#12 Дерево Ольха рыжая.
 
 ChProp mapping Rename : "pkm6_0_imp.#86" "pkm6_3_imp.#12";

chprop mapbypars [partly|wholly] <Objects> <Params>

Команда осуществляет заливку объектов <Objects> по параметрам <Params>.

Заливка распространяется только на объекты типа тело или пленка. При выборе на верхнем уровне объектов типа группа, заливка будет распространятся на все тела и пленки внутри этой группы.

Ввод параметров заливки представляет собой зацикленную последовательность пар:

<ParameterCode> <ParameterValue>

и завершается либо ключевым словом done, либо знаком ;

<ParameterCode> — целое число. Допустимые коды приведены в таблице (см. ниже).

Значение параметра зависит от кода и может быть либо целым числом, либо числом с плавающей точкой, либо строкой. При неверном задании кода или значения ошибка не выдается, просто эта пара игнорируется. У выбранных для заливки объектов будут изменяться только те параметры, которые введены в команде. Остальные останутся такими, какими были до вызова команды.

В графе таблицы «Умолчание» приведены значения параметров заливки у объектов, созданных стандартными корневыми средствами системы.

Параметры заливки и их значения
Код параметра
Расшифровка кода
Значение параметра
Умолчание
0

Номер текстурной секции раскрашивания

Номер конкретной секции раскрашивания. Либо:

-1 — Для всех секций

0 — Для остальных секций

0
1

Имя материала

Строка с именем материала, или число с индексом материала в библиотеке материалов

0
2

Масштаб текстуры по U — координате

Число с плавающей точкой по абсолютной величине больше чем 0.0000001

1
3

Масштаб текстуры по V – координате

Число с плавающей точкой по абсолютной величине больше чем 0.0000001

1
4

Сдвиг текстуры по U — координате

Любое число с плавающей точкой

0
5

Сдвиг текстуры по V — координате

Любое число с плавающей точкой

0
6

Угол поворота текстуры в градусах

Любое число с плавающей точкой

0
7

Сглаживание текстуры

0 – не сглаживать

1 – сглаживать

1
8

Размножение текстуры

0 – не размножать

1 – размножать

1
9

Смешивание текстуры и цвета

0 – Использовать только цвет

1 – Использовать только текстуру

2 – Модулировать белым цветом

3 — Смешивать текстуру и цвет

4 – Модулировать цветом

2
11

Локальная прозрачность в процентах

от 0 (полностью не прозрачный) до 100 (полностью прозрачный)

0
12

Режим подсветки ребрами

0 – Не подсвечивать

1 – Подсвечивать цветом по умолчанию

2 – Подсвечивать цветом каркаса

3 – Подсвечивать заданным цветом

0
13

Цвет ребер (используется, если предыдущий параметр равен 3)

0 – 239 (Индекс в 240-цветной палитре K3)

0
14

Режим вычисления масштабов текстуры

0 – Задаются вручную (смотри параметры 2, 3)

1 – Вычисляются по габаритам текстурной секции

2 — Вычисляются по габаритам координатной плоскости

3 — Вычисляются по габаритам объекта

0
15

Режим вычисления сдвигов текстуры

0 – Задаются вручную (смотри параметры 4, 5)

1 – Вычисляются по габаритам текстурной секции

2 — Вычисляются по габаритам координатной плоскости

3 — Вычисляются по габаритам объекта

0
17

Показ задних граней у прозрачных секций

0 – Не показывать

1 – Показывать

1

В описываемой команде код 0 задает секцию раскрашивания. Все остальные параметры будут воздействовать именно на эту секцию, до тех пор, пока не будет задана другая секция. Кроме конкретного номера секции можно задать значения:

-1 — Для всех секций

0 — Для остальных секций

Пример.

 ChProp MapByPars All Done
 
  0, -1           // Для всех секций 
  1, In.Met.m3  // Меняем код материала на “In.Met.m3” 
                  //    – имя материала в таблице материалов 
  0,  3           // А для 3й секции
  1, 12           // Меняем код материала на 12-й 
                  //    в текущей библиотеке материалов 
 14, 1            // Режим вычисления масштабов и
 15, 1            //    сдвигов – по габаритам текстурной секции
  9, 1            // Режим наложения – только текстура
done;      // Больше ничего не меняем, команда закончилась
Пример заливки по образцу


chprop mapbydropper onlyaddinfo|notuseaddinfo|useaddinfo <SectionFrom> textsection <SectionTo1>, textsection <SectionTo2>, …, textsection <SectionToN>

chprop mapbydropper onlyaddinfo|notuseaddinfo|useaddinfo <SectionFrom> objects [partly|wholly] <Objects>

Команда осуществляет заливку объектов (objects <Objects>) или текстурной секции объекта (textsection <SectionTo1>, textsection <SectionTo2>, ..., textsection <SectionToN>) по образцу материала <SectionFrom>, взятого из текстурной секции другого материала.

Дополнительные ключи:

onlyaddinfo — только общая информация. Из исходного объекта берется только общая информация о наложении материала (локальная прозрачность, отображение задних граней у прозрачных объектов, подсветка каркасных линий);
notuseaddinfo — без общей информации. Использовать только информацию о материале из исходной текстурной секции;
useaddinfo — с общей информацией. Использовать информацию о материале из исходной текстурной секции и общую информацию о наложении материала.

В данной команде вместо указания объекта или секции для раскрашивания возможно использование ключа other, который позволяет сменить образец для раскрашивания. То есть, его использование аналогично повторному вызову команды.

О секциях раскрашивания

Любое тело или пленка в K3 разбиты на несколько секций раскрашивания, каждая из которых имеет свой номер. Объекты конкретных приложений обычно имеют смысловые секции. Например: торец и боковая часть бревна; Декоративная поверхность и вспомогательная поверхность пола и т.п. Номер конкретной секции у конкретного объекта зависит от приложения (Мебель, Коттедж и пр.).

У объектов, созданных корневыми средствами системы, секции формируются по геометрическому принципу наименьшей вырожденности по отношению к одной из координатных плоскостей локальной системы координат объекта. У таких объектов номер секции может принимать одно из следующих значений (см. таблицу):

Секции раскрашивателя
Номер секции
Название
Ориентация
1
Спереди
(+y)
2
Сзади
(-y)
3
Слева
(+x)
4
Справа
(-x)
5
Сверху
(+z)
6
Снизу
(-z)

brepmapper <Object> <Section>

Команда brepmapper позволяет явно задать всем секциям объекта <Object> типа "Тело" номер секции <Section>.

Функции работы с библиотекой материалов

Int MatIDByPath(string <MatName>)

Функция MatIDByPath возвращает номер материала в организаторе материалов по названию, заданному строкой <MatName>.

Пример.

=MatIDByPath("Lb.pkm6_0_iml.#11");
207

Данная команда в макропрограммах не используется.

Изменение графического масштаба

chprop grfcoeff [partly|wholly] <Objects>

Команда меняет графический масштаб (коэффициент) у объектов <Objects>.

Изменение слоя объектов

chprop layer [partly|wholly] <Objects> done <LayerName>

Команда меняет слой объектов <Objects> на слой с именем <LayerName>.


Макро | Редактирование объектов | Перемещение | Размножение | Поворот | Масштабирование | Зеркальное отражение | Гибка | Проецирование | Помещение в систему координат | Редактирование примитива | Редактирование объекта | Обрезка | Разрыв | Редактирование поверхности | Редактирование отрезка | Редактирование дуги | Редактирование сплайна | Редактирование полилинии и плоской области | Редактирование контура | Создание фаски | Создание скругления | Изменение свойств | Удаление