0 Пользователей и 1 Гость просматривают эту тему.

*

[ab]

Request в Gdl языке
« : Января 31, 2008, 10:18:40 »
Есть потребность производить интерактивно несложные расчеты в среде архикада.
Сметные возможности в основном построены на суммировании и этого бывает не достаточно.
Например нужны соотношение площадей или количество единиц к площади итд.

Функция REQUEST вроде бы как раз для этих целей, но в мануале слишком скудная информация по ней.

цель получить библиотечный элемент который умеет собирать данные по определенным условиям из определенных объектов проекта, производить несложные вычисления и выводить в виде например таблички с конечными показателями.

Помогите решить задачку.

*

Оффлайн Valery W

  • *****
  • 5987
  • Репутация: +630/-14
  • Пол: Мужской
Re: Request в Gdl языке
« Ответ #1 : Января 31, 2008, 14:35:25 »
Цитировать
цель получить библиотечный элемент который умеет собирать данные по определенным условиям из определенных объектов проекта

Над этой проблемой работал (или работает) SergeyAB. Смотри его темы.

Цитировать
Функция REQUEST вроде бы как раз для этих целей, но в мануале слишком скудная информация по ней.

C помощью REQUEST можно запросить многое из основных характеристик объектов, но абсолютно не все, как может показаться. Кое что еще остается недоступным для запроса. И не все запросы можно осуществить из простого библиотечного элемента, некоторые только из специализированного.
Например, начиная с АС10, в специализированных объектах, можно запросить значение любого параметра другого объекта. Надо только записывать в запросе имя этого параметра. Вот этот запрос параметров библ. элементов:
rr = REQUEST ("ASSOCLP_PARVALUE", expr, name_or_index, type, flags, dim1, dim2, p_values)
expr - название запрашиваемого параметра

Запрос работает только в элементах маркеров, выносных надписей и property объектах.


*

Оффлайн Mike_B

  • *****
  • 667
  • Репутация: +77/-2
  • Пол: Мужской
Re: Request в Gdl языке
« Ответ #2 : Января 31, 2008, 20:38:47 »
Когда-то ALAKК загонял данные объектов через интерактивный каталог в текстовый файл, Потом объект считывал данные из него и выдавал таблицу. Думаю именно для таких целей этот метод очень пригодиться.

*

[ab]

Re: Request в Gdl языке
« Ответ #3 : Февраля 01, 2008, 15:33:07 »
спасибо за ответы.
уточню
хочу решить конкретную задачу:
есть количество автомобилей(библиотечный элемент) в проекте автостоянки
есть площадь(инструмент зона(библиотечный элемент зон))
хочу вставить в план библиотечный элемент в виде грубо говоря текста с соотношением машиноместа к площади автостоянки, тем самым не пересчитывать постоянно вручную

если можно - где почитать про этот реквест подробней?
и здесь не только реквест возможно нужен, может кому попадался на глаза подобный готовый библ
из которого можно былобы выцепить принцип действия, а?

*

Оффлайн Valery W

  • *****
  • 5987
  • Репутация: +630/-14
  • Пол: Мужской
Re: Request в Gdl языке
« Ответ #4 : Февраля 01, 2008, 18:22:33 »
Простой библ. элемент не сможет взять данные площади у паспорта зоны.
Делай свой паспорт зоны, в котором будет формула подсчета и параметры, в которые будешь заносить данные.

Второй вариант - это покрывать место автостоянки штриховкой и использовать собственный элемент надписи. Надпись может читать площадь штриховки.

По поводу REQUEST, не знаю где сказано более подробно об этом.
« Последнее редактирование: Февраля 02, 2008, 10:57:46 от Valery W »

*

Оффлайн ALAKK

  • *****
  • 625
  • Репутация: +55/-7
  • Пол: Мужской
  • Он спорил с модером...
Re: Request в Gdl языке
« Ответ #5 : Февраля 02, 2008, 06:35:01 »
Я не понял: ты хочешь отсебятину считать или это требования ГОСТ?
Вроде таких не встречал, хотя и ни разу стоянки не делал. Может и неправ

И что ты вцепился в Request? Это метод запроса по образцу с параметрами. Нужно понять, что под маской этого запроса работает стандартный SQL. Тут только передаются данные для объединения. Он тут тебе как зайцу валенки нужен

Сам пиши свою зону или иной стандартный маркер с нужными тебе параметрами. Это просто - книжку читай. АС построен так, что передает параметры Parent-объекта только в СВОЙ или описанный в АС child. По другому не бывает, если ты не владеешь C++
« Последнее редактирование: Февраля 02, 2008, 07:03:24 от ALAKK »

*

[ab]

Re: Request в Gdl языке
« Ответ #6 : Февраля 04, 2008, 12:08:22 »
Простой библ. элемент не сможет взять данные площади у паспорта зоны.
Делай свой паспорт зоны, в котором будет формула подсчета и параметры, в которые будешь заносить данные.

Второй вариант - это покрывать место автостоянки штриховкой и использовать собственный элемент надписи. Надпись может читать площадь штриховки.

По поводу REQUEST, не знаю где сказано более подробно об этом.

проще всего конечно сделать свою зону в которую вручную вставлять значение(количество машиномест) ну и дальше делать требуемые расчеты, но тогда это не освобождает от "пришивания пуговиц" в динамическом проектировании, короче тож самое что каждый раз пересчитывать на калькуляторе и вводить данные в план или собирать в таблицу например в экселе...

*

[ab]

Re: Request в Gdl языке
« Ответ #7 : Февраля 04, 2008, 12:15:06 »
Я не понял: ты хочешь отсебятину считать или это требования ГОСТ?
Вроде таких не встречал, хотя и ни разу стоянки не делал. Может и неправ

И что ты вцепился в Request? Это метод запроса по образцу с параметрами. Нужно понять, что под маской этого запроса работает стандартный SQL. Тут только передаются данные для объединения. Он тут тебе как зайцу валенки нужен

Сам пиши свою зону или иной стандартный маркер с нужными тебе параметрами. Это просто - книжку читай. АС построен так, что передает параметры Parent-объекта только в СВОЙ или описанный в АС child. По другому не бывает, если ты не владеешь C++

это не отсебятина, а попытка автоматизировать подсчет коэффициентов
например в жилье: общей площади к жилой
в проектировании автостоянок: соотношение общей площади автостоянки к машиноместу
и тд

может есть другие пути решения этих задач?

*

Оффлайн ALAKK

  • *****
  • 625
  • Репутация: +55/-7
  • Пол: Мужской
  • Он спорил с модером...
Re: Request в Gdl языке
« Ответ #8 : Февраля 04, 2008, 13:27:46 »
Так ты объясни задачу - тогда и ответ будет другой. Судя по тому, что ты хочешь считать все данные у тебя уже есть. Просто залезь в скрипт своей зоны, добавь какие надо переменные и подели одну на другую. Все эти данные выводятся стандартными способами ГДЛ скрипта. Если что не понял - давай образец своего скрипта - рассмотрим и подскажем. Никто за тебя твою задачу решать не будет, но всегда подскажут - умельцы тут есть

*

Оффлайн МихалычЪ

  • **
  • 60
  • Репутация: +7/-0
  • Пол: Мужской
Re: Request в Gdl языке
« Ответ #9 : Февраля 01, 2010, 16:46:24 »
Люди добрые! Помогоите всетаки старому дураку разобраться с этой командой REQUEST. Мне нужно выудить некоторые параметры из библиотечного элемента и отобразить их в Object Lable. С самим лейбом и его 2D скриптом все понятно, а вот как правильно написать фразу начинающуюся с REQUEST ("ASSOCLP_PARVALUE", ........ (первое понятно, а далее ни хрена не понятно) expr, name_or_index, type, flags, dim1, dim2, p_values) для параметра, например "par_1", отображающего длину или текст в объекте. Заранее благодарен светлым головам.

*

Оффлайн ALAKK

  • *****
  • 625
  • Репутация: +55/-7
  • Пол: Мужской
  • Он спорил с модером...
Re: Request в Gdl языке
« Ответ #10 : Февраля 01, 2010, 18:06:42 »
2 Михалычу
Собсна сложностев тута нетути
Надо для начала понять, что Request есть просто по-другому написанный SQL запрос, шаблон запроса в своем роде, который имеет унутре себя все параметры фразы (инструкции) SELECT и передает эти данные в сам запрос. Поняв эту нехитрую истину враз в голове все встанет на свои места. Арчик, прочитав весь хлам, который ты собираешься ему скормить в качестве запроса, начнет как-то соображать. Вот тут самое главное: компутер всегда исполняет только то, что ты ему скомандовал сделать. Если, например, ты ему поручил договориться с девушкой, так он только это и сделает. Целоваться и все прочее, что за этим, возможно,  воспоследует,  он делать точно не будет.
Все остальные параметры уже за тебя придуманы давным-давно. Просто напиши правильно запрос

И, кстати, не обижайся на кажущуюся категоричность. Сами написанты языка SQL (это большой коллектив, хотя зачинателей всего пара) говорят о непредсказуемости поведения и результатов разных версий этого языка.

И еще вот что: если надо в чем-то помочь не в глобальном масштабе, то лучше пиши в личку.
« Последнее редактирование: Февраля 04, 2010, 18:50:14 от ALAKK »

*

Оффлайн МихалычЪ

  • **
  • 60
  • Репутация: +7/-0
  • Пол: Мужской
Re: Request в Gdl языке
« Ответ #11 : Февраля 01, 2010, 22:54:27 »
Ни хрена не понял, но все равно спасибо.

*

Оффлайн Valery W

  • *****
  • 5987
  • Репутация: +630/-14
  • Пол: Мужской
Re: Request в Gdl языке
« Ответ #12 : Марта 07, 2010, 18:34:22 »
Цитата: ALAKK
Надо для начала понять, что Request есть просто по-другому написанный SQL запрос,...  
Ага. А как пишутся SQL запросы, мы все в курсе. :) )))

Цитата: ALAKK
Просто напиши правильно запрос
Так вроде, МихалычЪ и спрашивает, как правильно написать запрос.

Михалычу, если еще не разобрался.
Ищи примеры в стандартной библиотеке. Вот например, есть "Выносная надпись объекта 12", в которой применяется этот запрос.
Я понял, что из всего этого списка значений запроса "ASSOCLP_PARVALUE" нам нужно обратить внимание на первое и последнее.

Допустим нас интересует объект в котором есть два параметра. Один - текстовой, и называется "MarkText", а другой - линейная величина, и называется "LSize"
Пишем два запроса, один для текстового параметра, другой для размерного.

nTxt = REQUEST ("ASSOCLP_PARVALUE", "MarkText", name_or_index, type, flags, dim1, dim2, MarkText_values)
nSize = REQUEST ("ASSOCLP_PARVALUE", "LSize", name_or_index, type, flags, dim1, dim2, LSize_values)

Всё. Мы запросили, теперь главное их правильно использовать. Т.е., поскольку у нас выносная надпись, то надо их превратить в текст.

Значение MarkText_values, по-моему, можно сразу использовать в текстовом блоке надписи, поскольку это тоже текст.
Если нет, то пишем:

Txt1 = MarkText_values

А значение LSize_values надо сначала перевести в текстовый формат, задать нужные единицы измерения и количество знаков после запятой.
Пишем:

Txt2 = str(LSize_values, length, fractions) - здесь я не задал значения для length и fractions. Я ведь не знаю что тебе нужно - метры, литры и т.п. И сколько знаков после запятой нужно, тоже не знаю.

Теперь осталось написать текстовой блок выносной надписи.

TEXT2   x, y, Txt1 + ", " + Txt2
« Последнее редактирование: Марта 07, 2010, 20:59:51 от Valery W »

*

Оффлайн ALAKK

  • *****
  • 625
  • Репутация: +55/-7
  • Пол: Мужской
  • Он спорил с модером...
Re: Request в Gdl языке
« Ответ #13 : Марта 08, 2010, 04:06:56 »
Замечательно все тут расписал, только МихалычЪ не об этом спрашивал, как оказалось при личной переписке.
Что же касается запросов, то тут надо поправится немного. Команда REQUEST есть простой построитель таких запросов. Передает данные в спец функцию, которая и строит сам запрос, потом его исполняет.

*

Оффлайн nideKer

  • *****
  • 2600
  • Репутация: +121/-2
  • Пол: Мужской
  • freeRide 4ever
Re: Request в Gdl языке
« Ответ #14 : Июня 13, 2015, 00:41:10 »
Народ а как зареквестить IFC параметр из элемента для маркера?  ASSOCLP_PARVALUE для IFC у меня не работает.

 

Похожие темы

  Тема / Автор