Цитата:
Сообщение от 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]);