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

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

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

Изменение цвета объектов[править | править код]

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

Команда изменяет цвет объектов <Objects> на цвет с кодом <N>. Код цвета <N> должен быть в пределах от 0 до 239.

Изменение типа линии линейных объектов[править | править код]

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 box <Objects>

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

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 texcrd [partly|wholly] <Objects>

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









Изменение графического масштаба[править | править код]

chprop grfcoeff [partly|wholly] <Objects>

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

Изменение слоя объектов[править | править код]

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

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


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