using CIV_APS = Autodesk.Civil.ApplicationServices;
using CIV_DBS = Autodesk.Civil.DatabaseServices;
using CIV_RTM = Autodesk.Civil.Runtime;
// Команда копирования стиля метки
[CAD_RTM.CommandMethod("PSM_CIVIL_COPY_STYLE")]
public void COMM_SET_STYLE()
{
CAD_DBS.Entity ent = null;
bool ret = false;
acad_Func.get_ent("Укажите элемент, метку-источник", out ret, out ent);
if (!ret) return;
if (ent == null) return;
if (!(ent is CIV_DBS.Label))
return;
CAD_APS.Document doc = CAD_APS.Application.DocumentManager.MdiActiveDocument;
CAD_DBS.Database db = doc.Database;
// В бесконечном цикле присваиваем стили меткам, пока не надоест
while (true)
{
CAD_DBS.Entity ent1 = null;
bool ret1 = false;
acad_Func.get_ent("Укажите элемент метку-приемник", out ret1, out ent1);
if (!ret1) return;
if (ent1 == null) return;
if (ent1 is CIV_DBS.Label)
{
using (doc.LockDocument())
{
using (CAD_DBS.Transaction tr = db.TransactionManager.StartTransaction())
{
var obj = tr.GetObject(ent1.ObjectId, CAD_DBS.OpenMode.ForWrite);
if (obj != null)
{
(obj as CIV_DBS.Label).StyleId = (ent as CIV_DBS.Label).StyleId;
}
tr.Commit();
}
}
}
}
}
public static CAD_DBS.ObjectId get_ent(string msg,
out bool ret,
out CAD_DBS.Entity ent)
{
ret = false;
CAD_DBS.ObjectId id = new CAD_DBS.ObjectId();
CAD_DBS.Database db = CAD_APS.Application.DocumentManager.MdiActiveDocument.Database;
ent = null;
using (CAD_DBS.Transaction trans = db.TransactionManager.StartTransaction())
{
try
{
CAD_EDI.PromptEntityOptions entityOpts = new CAD_EDI.PromptEntityOptions("\n" + msg);
CAD_EDI.PromptEntityResult entityRes = CAD_APS.Application.DocumentManager.MdiActiveDocument.Editor.GetEntity(entityOpts);
CAD_DBS.Entity entObject = (trans.GetObject(entityRes.ObjectId, CAD_DBS.OpenMode.ForRead) as CAD_DBS.Entity);
id = entObject.ObjectId;
ent = entObject;
trans.Commit();
ret = true;
}
catch
{
}
}
return id;
}