ПредишенСледващото

Как да вмъкнете блок с атрибути в пространството на модела

определение, съдържащо се в Блок BlockTableRecord. Ако блока има качества, те се съдържат в BlockTableRecord как AttributeDefinition - точно като всички други примитиви.

Когато поставите блок в чертежа (или по-точно в пространството на модела), а след това ние поставяме BlockReference. Ако блока има атрибути, след това за всички (с изключение на константа) AttributeDefinition в BlockTableRecord са подходящи AttributeReference приложена към BlockReference. Постоянни атрибути се обработват грешни, тъй като текстът е същият, във всички кутии на блока (във всички BlockReference). Те са в BlockTableRecord, и нямат съответстващи AttributeReference приложена към BlockReference.

По-долу е проста C # -code да поставите блок с атрибути в пространството на модела. Създаване на чертеж, който съдържа блок с името "CHECK", съдържаща няколко атрибута (някои постоянни, някои не), за да се тества на кода.

# 91; CommandMethod # 40; "AddBlockTest" # 41; # 93;

статично обществени невалидни AddBlockTest # 40; # 41;

База данни db = кандидатстване. DocumentManager. MdiActiveDocument. база данни;

използване # 40; Транзакциите Myt = db. TransactionManager. StartTransaction # 40; # 41; # 41;

// Получаване на определението за "Проверка" кутия.

низ blockName = "CHECK";

db. BlockTableId. GetObject # 40; OpenMode. ForRead # 41; като BlockTable;

BT # 91; blockName # 93. GetObject # 40; OpenMode. ForRead # 41; като BlockTableRecord;

// Отваряне на пространството модел - ние добавяме към него ни BlockReference

BT # 91; BlockTableRecord. ModelSpace # 93. GetObject # 40; OpenMode. ForWrite # 41;

// Създаване BlockReference и да го свържем с конкретно блок

Point3d точка = нов Point3d # 40; 2.0. 4.0. 6.0 # 41; ;

използване # 40; BlockReference blockRef =

новият BlockReference # 40; точка, blockDef. ObjectId # 41; # 41;

// Добавяне на вложката блок за моделиране на пространството

мс. AppendEntity # 40; blockRef # 41; ;

Myt. AddNewlyCreatedDBObject # 40; blockRef, вярно # 41; ;

// Loop чрез определянето на устройството, за да търсите всички не-на константи атрибути

foreach # 40; ObjectId номер в blockDef # 41;

DBObject OBJ = Id. GetObject # 40; OpenMode. ForRead # 41; ;

AttributeDefinition attDef = OBJ като AttributeDefinition;

ако # 40; # 40; attDef! = нула # 41; # 40. attDef. постоянен # 41; # 41;

// Това е не-конст AttributeDefinition

// създаване на нов AttributeReference

използване # 40; AttributeReference attRef = нов AttributeReference # 40; # 41; # 41;

attRef. SetAttributeFromBlock # 40; attDef, blockRef. BlockTransform # 41; ;

attRef. TextString = "Hello World";

// Добави в AttributeReference BlockReference

blockRef. AttributeCollection. AppendAttribute # 40; attRef # 41; ;

Myt. AddNewlyCreatedDBObject # 40; attRef, вярно # 41; ;

Подкрепете проекта - споделете линка, благодаря!