Тема: Как правильно работать с блоками

Почему нет возможности в свойствах поменять тип линий, цвет, толщину линии у блока?
Хотелось бы увидить программную реализацию (если это возможно) при условии что блок, над которым необходимо делать изменения, уже находиться в SelectionSet.
з.ы. Заранее спасибо.

Re: Как правильно работать с блоками

Очень даже есть такая возможность.

Dim Foo As AcadBlockReference
Foo.Linetype = ...

Определитесь -- вы хотите иметь дело с блоком или с экземпляром блока?

Re: Как правильно работать с блоками

> Ctrl E
1) какая разница?
2) что для этого необходимо?
3) Как програмно создать блок из нескольких акадовских примитивов?

Re: Как правильно работать с блоками

> Дмитрий
1) Почитайте Developer's Help по классам AcadBlock и AcadBlockReference. Посмотрите объектную модель AutoCAD VBA в том же хелпе. Разница принципиальная.
AcadBlock -- не объект чертежа, а определение блока. По своему составу он похож ModelSpace.
AcadBlockReference -- примитив этого блока, вставленный в чертеж. Имеет все, присущее примитиву -- тип линии, слой и т.д.
2) Не понял. Для чего для этого?
3) Команда -block:

ThisDrawing.Utility.SendCommand('-block ' & [Аргументы...])

Re: Как правильно работать с блоками

> Ctrl E
за 1 ответ спс необходим AcadBlockReference скорее всего.
А суть задачи по третьему вопросу такова:
Есть база данных в которой храняться элементы схемы. Элементы отрисовываються как объект состоящий из примитивов. Я хочу сделать так чтоб по клику на объект (с нажатой клавишей TAB, решение по этому вопросу было найдено и работает, см. пред. пост ) он полностью попадал в SelectionSet (для этого, я считаю, что нужно элементы вставлять в чертеж блоком). А вот потом чтоб появлялось окно из моей DLL, на подобии изменения окна свойств ACAD'a.
Дак вот сама проблема такая, когда я в ACAD делаю свой блок вставляю его в чертеж и пытаюсь руками изменять свойства блока (такие как тип линии), они как бя меняються, !! НО !! объект не перерисовываеться с новым типом линии.
з.ы. Надеюсь понятно донес мысль.

Re: Как правильно работать с блоками

Для этого в определении блока (под базой данных, наверно, понимаются файлы .DWG, которые вставляются командой Write Block?) примитивам необходимо назначить свойствам значение ByBlock.

Re: Как правильно работать с блоками

> Ctrl E
Не правильно меня понял по поводу БД. В базе храниться перечень элементов, отрисовку я делаю отдельной процедурой (для каждого типа элементов) вручную.

Re: Как правильно работать с блоками

> Дмитрий
Все равно, значит, надо назначать свойства ByBlock, а не ByLayer.

Re: Как правильно работать с блоками

> Ctrl E
Сделал следующее:
1. Нарисовал руками два примитива
2. Сделал для каждого примитива все параметры ByBlock
3. Создал блок с именем test
4. Изменил тип линии !! О ЧУДО РАБОТАЕТ !!
5. Изменил цвет линии !! О ЧУДО РАБОТАЕТ !!
6. Изменил толщину линии !! ВОТ НЕЗАДЧА НЕ РАБОТАЕТ !!

Re: Как правильно работать с блоками

Lineweight = ByBlock, все должно работать. Ищите ошибку.