ПРОМЕБЕЛЬКЛУБФорум профессиональных мебельщиков
Форум мебельщиков

БАЗИС 10 - Скрипты - Страница 44

Обновлено Сообщений: 5Поиск по обсуждениям
#424007
Обмениваемся , задаем вопросы, отвечаем... Все, что касается скриптов в БМ 10 в этой теме.
#478203
Цитата:
Сообщение от TProject
Уважаемые мебельщики, помогите коллеге. Возникла потребность расстановки позиций с помощью скрипта на выделенные детали. Если у кого то есть подобный скрипт, поделитесь пожалуйста.
В скриптах расстановка позиций доступна только на всю модель. Пилить собственную расстановку вряд ли кому приходило в голову, потому что сравнение объектов - задача трудоёмкая. В результате остаётся один вариант:
Цитата:
Сообщение от Ovsyanicov
Выделяете детали и нажимаете кнопку "Расставить позиции заново".
#478204
Цитата:
Сообщение от Letos
В скриптах расстановка позиций доступна только на всю модель. Пилить собственную расстановку вряд ли кому приходило в голову, потому что сравнение объектов - задача трудоёмкая. В результате остаётся один вариант:
Да, представления имел... что переменные, сравнения и т.д. Код возможно даже тяжелый был бы, (не изучал программирования, только поверхностные знания имею) но вдруг, все же кто то делал. В этом и вопрос.
#478632
Как удалить после Action.Commit() ?

p = Model.Selections[0]
pCopy = AddCopy(p);
Action.Commit()

DeleteObject(pCopy); //Здесь не работает.


Или сразу главный вопрос:
Как определить какие именно отверстия из фурнитуры цепляют конкретную панель?
Если, например, в фурнитурине 6 отверстий и больше.
#478643
Цитата:
Сообщение от v22884
Как определить какие именно отверстия из фурнитуры цепляют конкретную панель?
можно получить список фурнитуры, скрепляющей панель через panel.FindConnectedFasteners(). Встроенной функции, определяющей, что отверстие находится в конкретной панели, нет. Здесь есть самописный скрипт для выделения панелей с торцевыми отверстиями. В случае вашей задачи, вам не нужна функция CheckWithPanel() (она проверяет соответсвие направления отверстия с направлениями Х и У в ЛСК панели). Основная нужная функция - CheckHole(hole, fast, panel) вернёт true, если отверстие (hole), принадлежащее фурнитуре (fast) находится в панели (panel).
Цитата:
Сообщение от v22884
Как удалить после Action.Commit() ?

p = Model.Selections[0]
pCopy = AddCopy(p);
Action.Commit()

DeleteObject(pCopy); //Здесь не работает.
После Action.Commit() объекты копируются из временной области модели в саму модель, соответственно объекта pCopy после коммита не существует. Если вы точно знаете, что будет делать ваш код, то можно попробовать следующий трюк:

Т.к. добавление объектов в модель идёт последовательно, то при добавлении 5 объектов скриптом в модель, последние 5 объектов - добавленные скриптом (небольшая оговорочка - если добавлен блок, содержащий 4 объекта, то в модели последним объектом будет блок, а остальные 4 будут внутри блока, согласно иерархии).
Вот небольшой пример по добавлению объекта, применению изменений и удалению объекта:
PHP код:
// Добавление панели
AddPanel(100, 1000).Owner;
// Применение действий скрипта с записью в историю
Action.Commit();
// Удаление последнего объекта в модели (панели, добавленной скриптом)
DeleteObject(Model.Objects[Model.Count - 1]); 

Новые сообщения временно недоступны.