А как разместить вид созданный на листе?С помощью статического метода Viewport.Create()
4) а вот и самое интресное... как мне теперь выбрать именно тот новый скопированный вид, и как его разместить именно на лист, который опять же хочу спросит у пользоваетля
(как спросить лист тоже не знаю... ведь лист как таковой нельзя выделить типа выберте лист... можно только что бы пользоваетль выбрал какой то сделал его активным а потом вставить в активный... так вот как прервать выполнени на время пока пользователь счелкает по листам и выбирает нужный ему лист? )
Не прошло и 5ти часов как получилась первая программаЯ не программирую под Revit, однако по диагонали просмотрев твой код, у меня возникает ряд сомнений (возможно ошибочных, т.к. AutoCAD - это всё же не Revit) в его качестве:
4) Хмм.. еще с одной проблемой столкнулся... приложения писал ввиде макросов в стандартном редакторе. потом решил оформить ввиде кнопки... создал файл *.addin но запустить приложение не получается... пишет типа проблма с классом.
так у меня в программе только функции... как на них ссылку седлать?
Мне нужно задать пользователю вопрос: выберите вид (если он на листе то он типа VIewport как я понял)ObjectType.Face говорит о том, что пользователь должен выбрать поверхность элемента. Интересно, почему вы решили, что нужно именно его?:)
пробую таким образом:
Код - C# [Выбрать]
GetElement(uiApp.ActiveUIDocument.Selection.PickObject(ObjectType.Face,"выберите вид"))
а) можно ли таким образом вести диалог с пользоваетелм?
б) как тип Element преобразовать в тип VIewport?
программа не запустилась но я думаю это единственная чать которая у меня получилась:)В этом случае логичнее привести ошибку.
Selection sel = uiApp.ActiveUIDocument.Selection;Чтобы получить вид, можно было просто взять текущий, без использования Viewport. uiApp.ActiveUIDocument.Document.ActiveView.
ICollection<ElementId> elementSet = sel.GetElementIds();
var elem1 = elementSet.First();
Viewport viewPort1;
viewPort1=doc.GetElement(elem1) as Viewport;
View view1;
view1=doc.GetElement(viewPort1.ViewId) as View;
бился бился с get_BoundingBox но так ничего и не вышло.. ошибки ошибки ошибки..BoundingBox здесь конечно не подходит.
Подскажите как на пример моей программы новый вид вставить на лист относительно старого со смещением? как вытащить координаты старого вида? того который копировал?
Если в Revit, класс Transaction реализует IDisposable, подобно тому, как это обстоит в AutoCAD, то использование блока using напрашивается само собой.поддержу. Именно так и нужно делать.
Если возможна ситуация, когда активный документ может быть равен null (как это имеет место быть в AutoCAD), то и здесь напрашивается соответствующая предварительная проверка.Да, активного документа может и не быть, но в данном случае до макроса будет не добраться, когда нет активного документа.