Autodesk programozók közössége a FÁK-ban

Hogyan építsünk be egy blokkot attribútumokkal a modelltérbe

A blokkdefiníció a BlockTableRecord-ban található. Ha a blokknak attribútumai vannak, akkor a BlockTableRecord attribútum-meghatározásként szerepelnek - mint bármely más primitív.

Amikor egy blokkot beilleszünk a rajzon (pontosabban a modelltérbe), akkor egy BlockReference-t helyezünk be. Ha a blokknak attribútumai vannak, akkor a BlockTableRecord minden (kivéve a permanens) AttributeDefinition attribútumokat, a megfelelő attribútumnak megfelelő BlockReference csatolva van. Az állandó attribútumokat nem kezelik, mert a szövegük ugyanaz a blokk összes betűje (minden BlockReference). Ezek a BlockTableRecord-ban vannak, és nem rendelkeznek a megfelelő AttributeReference-el a BlockReference-hez.

Az alábbiakban egy egyszerű C # kód található, amelybe blokk beillesztése a modelltérben található attribútumokkal. Hozzon létre egy olyan rajzot, amely egy "CHECK" nevű blokkot tartalmaz, amely több attribútumot tartalmaz (a konstansok egy része, a rész nem), hogy ellenőrizze a kódot.

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

statikus public void AddBlockTest # 40; # 41;

Adatbázis db = Alkalmazás. DocumentManager. MdiActiveDocument. adatbázis;

használva # 40; Tranzakció myT = db. TransactionManager. StartTransaction # 40; # 41; # 41;

// Szerezd meg a "Check" blokk meghatározását.

string blockName = "CHECK";

db. BlockTableId. GetObject # 40; OpenMode. ForRead # 41; mint BlockTable;

bt # 91; blockName # 93;. GetObject # 40; OpenMode. ForRead # 41; mint BlockTableRecord;

// A modell tér megnyitása - hozzáadjuk a BlockReference-ot hozzá

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

// Create a BlockReference és hozzárendelje a blokkdefinícióhoz

Point3d point = új Point3d # 40; 2.0. 4.0. 6.0 # 41; ;

használva # 40; BlockReference blockRef =

új BlockReference # 40; pont, blokkDef. ObjectId # 41; # 41;

// Adja hozzá a blokkbeillesztést a modelltérhez

ms. AppendEntity # 40; BLOCKREF # 41; ;

MYT. AddNewlyCreatedDBObject # 40; blockRef, igaz # 41; ;

// A blokk definíciója a nem konstans attribútumok keresésére szolgál

foreach # 40; ObjectId id a blockDef-ben # 41;

DBObject obj = id. GetObject # 40; OpenMode. ForRead # 41; ;

AttributeDefinition attDef = obj attribútum definíció;

ha # 40; # 40; attDef! = null # 41; # 40;. ATTDEF. konstans # 41; # 41;

// Ez egy nem konstans attribútum-meghatározás

// Hozzon létre egy új AttributeReference-t

használva # 40; AttributeReference attRef = új AttributeReference # 40; # 41; # 41;

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

attRef. TextString = "Hello World";

// Attribútum attribútum hozzáadása BlockReferencehez

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

MYT. AddNewlyCreatedDBObject # 40; AttRef, igaz # 41; ;