Ref: Autocad2008 Help + Objectarx for 2008
1.参考编辑属性块命令:eattedit,实现双击属性块执行自定义宏命令ShowDeviceAtt。
[CommandMethod(
"
dblclick
"
)]
public void doubleClick()
{
string mgName = " mxMenuGroups " ; // 宏组
string mmName = " DblblockMacro " ; // 宏
string command = " ShowDeviceAtt " ; // 对应属性块编辑查看宏命令
string dblclickEID = " DCU_myBlockdblclick " ;
// 菜单宏
MenuMacro oMenuMacro1 = cs.FindMenuMacro(mmName);
if (oMenuMacro1 == null )
{
// 先自定义宏组
MacroGroup oMacroGroup = cs.MenuGroup.FindMacroGroup(mgName);
if (oMacroGroup == null )
oMacroGroup = new MacroGroup(mgName, cs.MenuGroup);
oMenuMacro1 = new MenuMacro(oMacroGroup, mmName, command, " DblblockMacro " , MacroType.Any);
}
foreach (DoubleClickAction dblclick in cs.MenuGroup.DoubleClickActions)
{
if (dblclick.ElementID == dblclickEID)
{
ed.WriteMessage( " 已经添加属性块双击自定义动作 " );
return ;
}
}
DoubleClickAction dblClickAction = new DoubleClickAction(cs.MenuGroup, " mxBloc dblclick " , - 1 ); // 定义双击动作
dblClickAction.Description = " 元件属性编辑查看 " ; // 说明
dblClickAction.ElementID = dblclickEID; // 元素ID
dblClickAction.DxfName = " ATTBLOCKREF " ; // (双击)对象名称
DoubleClickCmd dblClickCmd = new DoubleClickCmd(dblClickAction); // 双击命令
dblClickCmd.MacroID = oMenuMacro1.ElementID; // 宏ID
dblClickAction.DoubleClickCmd = dblClickCmd;
saveCui();
ed.WriteMessage( " 属性块双击自定义动作添加成功 " );
}
public void doubleClick()
{
string mgName = " mxMenuGroups " ; // 宏组
string mmName = " DblblockMacro " ; // 宏
string command = " ShowDeviceAtt " ; // 对应属性块编辑查看宏命令
string dblclickEID = " DCU_myBlockdblclick " ;
// 菜单宏
MenuMacro oMenuMacro1 = cs.FindMenuMacro(mmName);
if (oMenuMacro1 == null )
{
// 先自定义宏组
MacroGroup oMacroGroup = cs.MenuGroup.FindMacroGroup(mgName);
if (oMacroGroup == null )
oMacroGroup = new MacroGroup(mgName, cs.MenuGroup);
oMenuMacro1 = new MenuMacro(oMacroGroup, mmName, command, " DblblockMacro " , MacroType.Any);
}
foreach (DoubleClickAction dblclick in cs.MenuGroup.DoubleClickActions)
{
if (dblclick.ElementID == dblclickEID)
{
ed.WriteMessage( " 已经添加属性块双击自定义动作 " );
return ;
}
}
DoubleClickAction dblClickAction = new DoubleClickAction(cs.MenuGroup, " mxBloc dblclick " , - 1 ); // 定义双击动作
dblClickAction.Description = " 元件属性编辑查看 " ; // 说明
dblClickAction.ElementID = dblclickEID; // 元素ID
dblClickAction.DxfName = " ATTBLOCKREF " ; // (双击)对象名称
DoubleClickCmd dblClickCmd = new DoubleClickCmd(dblClickAction); // 双击命令
dblClickCmd.MacroID = oMenuMacro1.ElementID; // 宏ID
dblClickAction.DoubleClickCmd = dblClickCmd;
saveCui();
ed.WriteMessage( " 属性块双击自定义动作添加成功 " );
}
2.参考 ObjectARX 2008\samples\dotNet\CuiSamp例子‘修改Polyline双击命令’,即可实现属性块双击自定义。
[CommandMethod(
"
dblclick
"
)]
public void doubleClick()
{
// 自定义宏命令
MacroGroup oMacroGroup = new MacroGroup( " mxMenuGroups " , cs.MenuGroup);
MenuMacro oMenuMacro1 = new MenuMacro(oMacroGroup, " DblblockMacro " , " ShowDeviceAtt " , " DblblockMacro " , MacroType.Any); // ShowDeviceAtt为对应属性块编辑查看宏命令
DoubleClickAction dblClickAction = new DoubleClickAction(cs.MenuGroup, " mxBloc dblclick " , - 1 ); // 定义双击动作
dblClickAction.Description = " 元件属性编辑查看 " ; // 说明
dblClickAction.ElementID = " DCU_myBlockdblclick " ; // 元素ID
dblClickAction.DxfName = " ATTBLOCKREF " ; // (双击)对象名称
DoubleClickCmd dblClickCmd = new DoubleClickCmd(dblClickAction); // 双击命令
dblClickCmd.MacroID = oMenuMacro1.ElementID; // 宏ID
dblClickAction.DoubleClickCmd = dblClickCmd;
}
public void doubleClick()
{
// 自定义宏命令
MacroGroup oMacroGroup = new MacroGroup( " mxMenuGroups " , cs.MenuGroup);
MenuMacro oMenuMacro1 = new MenuMacro(oMacroGroup, " DblblockMacro " , " ShowDeviceAtt " , " DblblockMacro " , MacroType.Any); // ShowDeviceAtt为对应属性块编辑查看宏命令
DoubleClickAction dblClickAction = new DoubleClickAction(cs.MenuGroup, " mxBloc dblclick " , - 1 ); // 定义双击动作
dblClickAction.Description = " 元件属性编辑查看 " ; // 说明
dblClickAction.ElementID = " DCU_myBlockdblclick " ; // 元素ID
dblClickAction.DxfName = " ATTBLOCKREF " ; // (双击)对象名称
DoubleClickCmd dblClickCmd = new DoubleClickCmd(dblClickAction); // 双击命令
dblClickCmd.MacroID = oMenuMacro1.ElementID; // 宏ID
dblClickAction.DoubleClickCmd = dblClickCmd;
}
说明:执行dblclick、savecui ,只需要第一次使用时注册双击命令即可,适合在安装包中注册与恢复。
测试打开属性块编辑窗口2种方式:
1.双击属性块
2.输入命令ShowDeviceAtt=》选择属性块
体现Autocad自身特性,用户易使用。