using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Runtime;
using Autodesk.Civil.DatabaseServices;
using Autodesk.AECC.Interop.Pipe;
namespace CivilTest
{
public class FamilySizeTest
{
[CommandMethod("RunComTest", CommandFlags.Modal | CommandFlags.NoBlockEditor)]
public void Run()
{
Document adoc = Application.DocumentManager.MdiActiveDocument;
Database db = adoc.Database;
db.ObjectOpenedForModify -= Db_ObjectOpMod;
db.ObjectModified -= Db_ObjectMod;
db.ObjectOpenedForModify += Db_ObjectOpMod;
db.ObjectModified += Db_ObjectMod;
}
[CommandMethod("StopComTest", CommandFlags.Modal | CommandFlags.NoBlockEditor)]
public void Stop()
{
Document adoc = Application.DocumentManager.MdiActiveDocument;
Database db = adoc.Database;
db.ObjectOpenedForModify -= Db_ObjectOpMod;
db.ObjectModified -= Db_ObjectMod;
}
private void Db_ObjectOpMod(object sender, ObjectEventArgs e)
{
if (e.DBObject is Part)
{
string famName = GetPartFamilyName(e.DBObject as Part);
Application.ShowAlertDialog("Part opened for modify. Part family: " + famName);
}
}
private void Db_ObjectMod(object sender, ObjectEventArgs e)
{
if (e.DBObject is Part)
{
string famName = GetPartFamilyName(e.DBObject as Part);
Application.ShowAlertDialog("Part modified. Part family: " + famName);
}
}
string GetPartFamilyName(Part part)
{
string ret;
try
{
IAeccPipeNetworkPart partCom = (IAeccPipeNetworkPart)part.AcadObject;
IAeccPartFamily partFamilyCom = (IAeccPartFamily)partCom.PartFamily;
ret = partFamilyCom.Name;
}
catch
{
ret = "*ERROR*";
}
return ret;
}
}
}