Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Николай Коломоец от 02-08-2013, 14:59:51

Название: Просмотр подшивки
Отправлено: Николай Коломоец от 02-08-2013, 14:59:51
Доброго времени суток!

Интересует ответ на такой вопрос - как определить подшивку, к которой относится текущий лист (если относится, конечно)?

Хочу сделать свой аналог формирования ведомости листов по подшивке, но еще не пробовал работать с ACSMCOMPONENTS18Lib, а в сэмплах ObjectARX есть только пример получения списка листов в подшивке.

Просто скажите, куда копать  ???
Название: Re: Просмотр подшивки
Отправлено: Александр Ривилис от 02-08-2013, 18:04:57
Интересует ответ на такой вопрос - как определить подшивку, к которой относится текущий лист (если относится, конечно)?
Мне кажется, что постановка задачи некорректная, т.к. один и тот же лист может входить в несколько подшивок одновременно. Т.е. можно открывая подшивки определить входит ли лист в них или нет, но имея только лист определить в какой подшивке он находится нельзя - возникает неоднозначность.
Название: Re: Просмотр подшивки
Отправлено: Николай Коломоец от 05-08-2013, 14:08:28
Ну вообще AutoCAD не дает включить лист в несколько проектов, если пользоваться командой "импортировать лист..." подшивки. Хотя, конечно, можно просто скопировать и переименовать сам файл подшивки, после чего лист окажется в двух проектах.

Но это нелогично - чертеж по логике является частью только одного проекта. Есть еще прилагаемые документы, конечно, но то немного другая песня...

Тогда получается нужно просто получать список листов той подшивки, которая является активной в диспетчере подшивок в данный момент? Это конечно упрощает задачу, но не факт, что будет понятно для пользователя - человек откроет чертеж с обозначением в штампе "111", даст команду "сделай ведомость документов", а ему выдаст ВД по проекту "222"...

Какой результат выдаст
Код - C# [Выбрать]
  1. AcSmSheetSetMgr.GetParentSheetSet(doc.Name, curLay.LayoutName, out shSet);
(String doc.Name - полное имя файла, String Layout.LayoutName - имя текущего листа, out AcSmSheetSet.shSet - подшивка), если лист входит в две пошивки? Ведь не может же shSet содержать перечень всех подшивок, в которые входит этот лист? Запутался я, в общем...

Неужели надо тупо перебирать все подшивки, чтобы найти все, которые содержат заданный лист?  :o
Название: Re: Просмотр подшивки
Отправлено: Александр Ривилис от 05-08-2013, 14:33:19
Ведь не может же shSet содержать перечень всех подшивок, в которые входит этот лист?
Судя по документации этот метод возвращает только одну подшивку, если сможет её найти.