- UID
- 5043
- 积分
- 1347
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2002-5-13
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
ssue
How can I force the attribute dialog box to display for an _INSERT issued with acedCommand using ObjectARX?
Solution
You need to use a global function in ObjectARX called acedInitDialog. This is parallel to how the initdia function in AutoLISP must be called prior to issuing the INSERT command.
When dialog initialization occurs before acedCommand, both the "insert" and "Enter Attributes", dialog boxes will display during command execution.Because the "insert" fields do not normally require modification, it is only desirable to display the attributes dialog for user input. In order to display the attribute dialog box instead of command line prompts, divide the command sequence into two parts so that the initialization call is made shortly before
attribute values are solicited.
static void testOut()
{
//set vars first
struct resbuf rb;
rb.restype = RTSHORT;
rb.resval.rint = 1;
acedSetVar(L"ATTDIA", &rb);
acedSetVar(L"ATTREQ", &rb);
//block position
ads_point pt1;
pt1[X] = pt1[Y] = 4.0;
//call command
int rterr = acedCommand ( RTSTR, L"_.insert", RTSTR, L"myBlock", RTPOINT,
pt1, RTNONE );
// ask to display attribute dialog
acedInitDialog(Adesk::kTrue);
// continue the command
acedCommand(RTREAL, 1.0, RTREAL, 1.0, RTREAL, 0.0, RTNONE);
}
|
|