Приложения
Приложение А. Функции, константы и структуры RDS
А.5. Сервисные функции и макросы RDS
А.5.6. Операции с блоками и связями
А.5.6.14. rdsFindNextConnectedLine – найти отрезок связи, соединенный с точкой
Функция rdsFindNextConnectedLine находит внутри связи или шины очередной отрезок, соединенный с точкой с указанным номером.
int RDSCALL rdsFindNextConnectedLine( RDS_CHANDLE Conn, // Связь int PointNum, // Номер точки int StartLineNum, // Начальный номер отрезка RDS_PLINEDESCRIPTION pLDescr, // Заполняемое описание int *pNextPoint // Номер точки на другом конце );
Тип указателя на эту функцию
RDS_IChIILdpI
Параметры
- Conn (RDS_CHANDLE)
- Идентификатор связи, внутри которой ищется отрезок.
- PointNum (int)
- Номер точки, с которой найденный отрезок должен соединяться одним из своих двух концов. Нумерация точек в связи начинается с нуля.
- StartLineNum (int)
- Номер отрезка, начиная с которого (включительно) производится поиск. Если отрезок StartLineNum соединен с точкой PointNum, функция вернет StartLineNum. Нумерация отрезков в связи начинается с нуля.
- pLDescr (RDS_PLINEDESCRIPTION)
- Указатель на структуру описания отрезка связи RDS_LINEDESCRIPTION, которую функция должна заполнить параметрами найденного отрезка. Если вызывающей программе не нужно это описание, в этом параметре можно передать NULL.
- pNextPoint (int*)
- Указатель на целую переменную, в которую функция запишет номер точки, находящейся на противоположном от точки PointNum конце найденного отрезка. Если вызывающей программе не нужен этот номер, в параметре pNextPoint можно передать NULL.
Возвращаемое значение
Номер найденного отрезка внутри связи Conn. Если отрезок не найден, возвращается значение −1.
Примечания
Функция rdsFindNextConnectedLine позволяет анализировать геометрию связи Conn. Связь в RDS состоит из точек и соединяющих их отрезков, причем к каждой точке может подходить один отрезок (для конечных точек связи), два отрезка (для точек излома) или больше двух отрезков (для точек ветвления). Отрезок связи может быть прямой линией или кривой Безье. Общее число точек и отрезков в связи можно получить из структуры RDS_CONNDESCRIPTION, заполняемой функцией rdsGetConnDescription.
Зная номер точки в связи, можно перебрать все подходящие к ней отрезки последовательными вызовами rdsFindNextConnectedLine: при первом вызове нужно в параметре StartLineNum передать 0, а при каждом следующем – число, на единицу большее возвращенного функцией, до тех пор, пока она не вернет −1. Возвращаемые функцией числа будут номерами найденных отрезков, причем функция одновременно будет заполнять структуру описания отрезка, указатель на которую передается в параметре pLDescr, и возвращать через параметр pNextPoint номер точки на другом конце найденного отрезка. Таким образом, двигаясь от точки к точке, можно проанализировать граф связи Conn со всеми ее внутренними точками и отрезками.
См. также
rdsGetConnDescription, RDS_CONNDESCRIPTION, RDS_LINEDESCRIPTION, rdsGetLineDescription.