накопились вопросы.. набросал некий код. вот отрывок из него(продолжение так сказать):
else if (tr.GetObject(obid, OpenMode.ForRead) is BlockReference bl)
{
Autodesk.AutoCAD.DatabaseServices.AttributeCollection atCol = bl.AttributeCollection;
foreach(ObjectId atid in atCol)
{
AttributeReference att = tr.GetObject(atid, OpenMode.ForWrite) as AttributeReference;
if (!notObliq.Checked) att.Oblique = 0;
if (!notColor.Checked) att.Color = Autodesk.AutoCAD.Colors.Color.FromRgb(255, 255, 255);
}
ObjectId btid;
if (bl.IsDynamicBlock) btid = bl.DynamicBlockTableRecord;
else btid = bl.BlockTableRecord;
BlockTableRecord bt = tr.GetObject(btid, OpenMode.ForRead) as BlockTableRecord;
foreach(ObjectId p in bt)
{
if (tr.GetObject(p,OpenMode.ForRead) is BlockReference bl2)
{
atCol = bl2.AttributeCollection;
foreach (ObjectId atid in atCol)
{
AttributeReference att = tr.GetObject(atid, OpenMode.ForWrite) as AttributeReference;
if (!notObliq.Checked) att.Oblique = 0;
if (!notColor.Checked) att.Color = Autodesk.AutoCAD.Colors.Color.FromRgb(255, 255, 255);
}
}
}
}
нужен ли здесь att.UpdateMTextAttribute для Mtext?
поможет ли att.Oblique = 0 в случае с многострочным аттрибутом(color работает)? или нужно лезть в contents
этот код вроде работает но есть один странный момент - цвет как многострочного так и однострочного меняется на белый НО!! если откатить действие то у однострочного возвращается а у многострочного нет( почему?