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; ;