2013-07-05 1 views
4

В настоящее время я работаю над преобразованием приложения VBA AutoCAD в VB.NET, и текущая команда, над которой я работаю, создает простой лидер с кодом, подобным этому:Изменение цвета лидера в AutoCad

Set leaderObj = ThisDrawing.ModelSpace.AddLeader(points, blockRefObj, leaderType) 
leaderObj.ArrowheadType = acArrowDotSmall 
leaderObj.ArrowheadSize = 2.5 * varDimscale 
leaderObj.DimensionLineColor = acWhite 

Я был в состоянии создать Лидер строку в .NET с использованием

Dim l = New Leader() 
For Each point In jig.LeaderPoints 
    l.AppendVertex(point) 
Next 
l.Dimldrblk = arrId 

The arrId я получил от использования функции нашла here, но я не смог понять, как установить цвет лидера до белого (по умолчанию он отображается красным), и также как установить размер стрелки. Если бы кто-нибудь мог мне помочь, я был бы очень благодарен.

ответ

2

Хорошо, после многих проб и ошибок я понял, что решение было довольно простым. Мне не пришлось переопределять какие-либо стили измерений (что я, честно говоря, даже не знаю, что есть, у меня был короткий курс начинающих в AutoCAD, прежде чем я получил этот проект), мне просто нужно было установить неявное свойство на Leader -объект , Для будущих ссылок, и для тех, кто еще пытается сделать то же самое, вот свойства я в конечном итоге с помощью:

leader.Dimclrd
Цвет лидера линии. Стенды для чего-то вроде «размерной линии цвета».
руководитель.Dimasz
Шкала лидера-головы.
1

Как тип BlockReference, он должен иметь свойство цвета, а свойство должно быть Autodesk.Autocad.Colors.Color или Integer. Также причиной, по которой вы получаете объект для чтения, является то, что в вашей транзакции вы открываете базу данных с помощью

OpenMode.ForRead 

И это правильно. Но для редактирования объекта в базе данных, вы должны получить объект, как показано ниже

var obj = Thetransaction.GetObject(theobjectid,OpenMode.ForWrite) as BlockReferance; 

Это делается внутри

using(var trans = TransactionManager.StartTransaction()){} 

я делаю это на камеру, так что проверить случай верблюда и синтаксис, потому что я пишу в C#, но это должно быть довольно близко.

Возможно, вам захочется узнать, есть ли свойство масштаба, чтобы изменить размер.

Надеемся, это перенесет вас в правильном направлении.

Сообщите мне, если у вас есть какие-либо проблемы. :)

+0

Я пробовал установить цвет с свойством цвета, и он не имеет никакого эффекта. И «default to read» был опечаткой с моей стороны (теперь исправлено), предполагается, что он будет читать «красный» (как в цвете). – Alxandr

+0

Кроме того, я не редактирую существующий объект, я создаю новый ('New Leader()'), поэтому я не использую 'transaction.GetObject' вообще в этой области. Я использую транзакцию только для добавления лидера. – Alxandr