Страница 1 из 2
CreateCircle
Добавлено: 31 май 2012, 12:39
Krom
Здравствуйте. Помогите пожалуйста разобраться. Задача создать окружность с возможностью изменять радиус, изменяя значение в таблице.
С помощью вот такого кода научился создавать окружность в нужном месте и нужного радиуса:
Open Table "rad"
Insert Into rad (obj)
Values ( CreateCircle(-72, 42, 10000) )
Но я не могу найти как добавить в таблицу значение радиуса для последующего интерактивного редактирования. Буду очень благодарен за подсказку
Re: CreateCircle
Добавлено: 31 май 2012, 12:47
dab
Код: Выделить всё
Insert Into rad (obj, field_name) Values ( CreateCircle(-72, 42, 10000), 10000 )
Естественно, поле field_name должно присутствовать в таблице rad.
Re: CreateCircle
Добавлено: 31 май 2012, 12:57
Krom
dab, спасибо Вам большое, работает!
Я поменял теперь радиус в таблице, как обновить карту чтобы новый радиус применился?
Re: CreateCircle
Добавлено: 31 май 2012, 13:22
dab
Например так
Код: Выделить всё
Update rad Set obj = CreateCircle(CentroidX(obj), CentroidY(obj), field_name)
Re: CreateCircle
Добавлено: 31 май 2012, 13:40
Krom
хм. не обновляет. ошибок не выдает но и ничего не меняется. в геоинформации прежнее значение
Re: CreateCircle
Добавлено: 31 май 2012, 13:47
dab
Krom писал(а):хм. не обновляет. ошибок не выдает но и ничего не меняется. в геоинформации прежнее значение
Смотрите предложение CoordSys относительно карты и таблицы rad.
Я прежде чем писать код на форуме всегда пробую у себя.
Моя таблица rad в Долготе-Широте. Всё работает, радиус окружностей меняется.
Попозже ещё в метрах проверю.
Re: CreateCircle
Добавлено: 31 май 2012, 13:54
Krom
Я пробовал в план-схеме, а теперь сделал заново в долготе/широте и все работает. Спасибо Вам огромное, очень выручили.
Re: CreateCircle
Добавлено: 31 май 2012, 14:21
dab
Krom писал(а):Я пробовал в план-схеме, а теперь сделал заново в долготе/широте и все работает. Спасибо Вам огромное, очень выручили.
Работать будет и с план-схемой, только предварительно нужно выполнить
Код: Выделить всё
Set Map XY Units "m" CoordSys NonEarth Units "m"
Re: CreateCircle
Добавлено: 31 май 2012, 16:04
SergS
dab писал(а):
Работать будет и с план-схемой, только предварительно нужно выполнить
Код: Выделить всё
Set Map XY Units "m" CoordSys NonEarth Units "m"
не-е, это не пройдет, (точнее, если пройдет, то случайно). требуется так:
Код: Выделить всё
set coordsys table rad
set distance units "m"
это дает возможность не выяснять специально как выглядит строка проекции для данной таблицы, а просто использовать заданную в ней же. кроме того, для createcircle() требуется задать единицы измерения расстояний, в примере - метры, строка установки СК на этот параметр не влияет. а что там по умолчанию в MI установлено - уже забыл, т.к. всегда принудительно ставлю по необходимости.
Re: CreateCircle
Добавлено: 31 май 2012, 18:08
dab
SergS писал(а):[
Код: Выделить всё
set coordsys table rad
set distance units "m"
это дает возможность не выяснять специально как выглядит строка проекции для данной таблицы, а просто использовать заданную в ней же. кроме того, для createcircle() требуется задать единицы измерения расстояний, в примере - метры, строка установки СК на этот параметр не влияет. а что там по умолчанию в MI установлено - уже забыл, т.к. всегда принудительно ставлю по необходимости.
+100500

Re: CreateCircle
Добавлено: 07 июн 2012, 10:16
Krom
А можно ли создавать окружность не в конкретной координате а в центроиде другого объекта?
Я привык что слой является представлением таблицы. Одна таблица - один слой. А возможно ли что есть два слоя и они описываются одной таблицей? Мне нужно чтобы в одном слое были допустим квадраты а в другом - круги посаженные по центроидам квадратов...
Re: CreateCircle
Добавлено: 07 июн 2012, 10:49
Игорь Белов
Вычислите координаты центроидов квадратов как CentroidX(obj), CentroidY(obj) и воспользуйтесь ими.
Re: CreateCircle
Добавлено: 07 июн 2012, 10:54
Krom
ErnieBoyd писал(а):Вычислите координаты центроидов квадратов как CentroidX(obj), CentroidY(obj) и воспользуйтесь ими.
Вы имеете ввиду вычислить координаты и вбить их вручную при создании окружности? Мне надо чтобы положение кругов было привязано к положению квадратов. Подвинули квадрат - подвинулись круги. Или я не так Вас понял может быть...
Я думал может иметь место конструкция вида
Insert Into rad (obj, field_name) Values ( CreateCircle(-72, 42, 10000), 10000 )
но вместо -74, 42 прописывается что-то вроде ссылки на центроид квадрата...
Re: CreateCircle
Добавлено: 07 июн 2012, 11:04
Игорь Белов
Как-то так:
Код: Выделить всё
Dim square_table, circle_table As String
Dim square_obj As Alias
...
square_obj = square_table + ".Obj"
...
Update circle_table
Set Obj = CreateCircle(CentroidX(square_obj), CentroidY(square_obj), radius)
Where RowID = TableInfo(circle_table, TAB_INFO_NROWS)
Re: CreateCircle
Добавлено: 07 июн 2012, 11:18
Krom
ErnieBoyd, объясните пожалуйста поподробнее.
То есть у меня одна таблица должна быть circle_table и колонки в ней square_table и circle_table?
Для меня это тема честно говоря нова поэтому Ваш код понятен только местами