то есть примитив, первоначально вставленный
status = acedNEntSelP(NULL, usrent, usrpt, FALSE, matrix,
&containers);
if ((status != RTNORM) || (containers == NULL))
return BAD;
containent[0] = containers->resval.rlname[0];
containent[1] = containers->resval.rlname[1];
Имя наиболее удаленного контейнера ( то есть примитив, первоначально вставленный в рисунок) может быть найдено последовательностью типа следующего:
// Проверить это, контейнеры не уже NULL.
rb = containers;
while (rb != NULL) {
prevrb = rb;
rb = containers->rbnext;
}
// Буфер результатов, указанный prevrb теперь содержит имя наиболее удаленного блока.
В следующем примере, текущая система координат - WCS. Использование AutoCAD, создайте блок по имени КВАДРАТ, состоящий из четырех линий.
Command: line
From point: 1,1
To point: 3,1
To point: 3,3
To point: 1,3
To point: c
Command: block
Block name (or ?): square
Insertion base point: 2,2
Select objects: Select the four lines you just drew
Select objects: ENTER
Тогда вставьте блок в UCS, вращал 45 градусов относительно Z оси.
Command: ucs
Origin/ZAxis/3point/Entity/View/X/Y/Z/Prev/Restore/Save/Del/?/
<World>: z
Rotation angle about Z axis <0>: 45
Command: insert
Block name (or ?): square
Insertion point: 7,0
X scale factor <1> / Corner / XYZ: ENTER
Y scale factor (default=X): ENTER
Rotation angle: ENTER
Если ObjectARX-приложение вызывает acedNEntSelP () (или acedNEntSel ()) и
пользователь выбирает левую нижнюю сторону квадрата, эти функции заставляют entres параметр равняться имени выбранной линии. Они устанавливают точку указки (ptres) в (6.46616, -1.0606,0.0) или близлежащее значение точки. Они возвращают матрицу преобразования (xformres) как показано в следующем рисунке.
Наконец, они заставляют список контейнерных примитивов (refstkres) направлять на одиночный буфер результатов содержащий имени примитива блока SQUARE.
0.707107
|
-0.707107
|
0.0
|
4.94975
|
|
0.707107
|
0.707107
|
0.0
|
0.707107
|
0.707107
|
-0.0
|
4.94975
|
|
-0.707107
|
0.707107
|
0.0
|
0.0
|
0.0
|
1.0
|
0.0
|
|
0.0
|
-0.0
|
1.0
|
0.0
|
0.0
|
0.0
|
1.0
|
|
4.94975
|
4.94975
|
0.0
|
ads_nentselp() result ads_nentsel() result
Содержание Назад Вперед