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

*

Оффлайн Valery W

  • *****
  • 5987
  • Репутация: +629/-14
  • Пол: Мужской
Первые шаги в GDL
« : Февраля 15, 2007, 22:35:41 »
Давно хотел начать эту тему. Привести кое-какие рекомендации от Graphisoft. Поделится своими заготовками и своими скромными знаниями. Чтобы те, кто только начинает, не наступали на те же грабли и потеряли меньше времени на освоение, чем я. Ну а потерять его все равно придется.

*

Оффлайн Int

  • *****
  • 3699
  • Репутация: +364/-5
  • Пол: Мужской
Re: Первые шаги в GDL
« Ответ #1 : Февраля 15, 2007, 22:39:53 »
интересно-интересно!
внимательно слушаем)
с чего начнете? :)

*

Оффлайн Valery W

  • *****
  • 5987
  • Репутация: +629/-14
  • Пол: Мужской
Re: Первые шаги в GDL
« Ответ #2 : Февраля 15, 2007, 22:43:15 »
Конечно хотел начать с чего-нибудь более полезного. Но в свете нынешней активизации интереса к созданию элементов и их появлению как грибов после дождя (к сожалению еще маленьких и кривеньких), возникла небольшая полемика, как им толстеть, по максимуму или по минимуму. Ладно, шутки в сторону. Речь о количестве параметров, которое хочет видеть в своих элементах программист. Здесь программист - абстрактное, а не конкретное лицо.
Наметились две тенденции. Первая - как можно меньше. Вплоть до урезания того, что относится к разделу настройки 2D-Представления(2D-Representetion) или Шрифт(Font). Вторая - как можно больше. Вплоть до того, что нужно избегать выполнение какой-нибудь незначительной или однозначной функции без соответствующего доступа к ее управлению через открытый параметр настройки.
Вот мое мнение. Заранее прошу простить за эмоции.

По поводу минимализма.
Он уместен, когда он уместен.
Если программист мыслит в радиусе собственных предпочтительных настроек в программе, то пусть не надеется, что его работа будет востребована. Еще простительно, если он отдает свои произведения бесплатно. Но когда он начинает размещать их в интернет-магазинах или делает библиотеку для какой-нибудь компании, тут, я думаю, любой пользователь готов размазать его мозги по клавиатуре. С чего он взял, что мы тоже должны пользоваться номером пера, штриховкой, размером шрифта и т.д. и т.п. каким он указал и которые нельзя поменять. Хочется не только мозги размазать, но и еще что-нибудь сделать, тем, кто не только не дает настроить, но считает, что без его комплекта штриховок и материалов нам, ну никак, не обойтись. Наверно замечали, что установив чью-нибудь библиотеку, вы поимели еще пару десятков шриховок или материалов, никоим образом не отличающихся от стандартных, только с финскими, немецкими или др. названиями. Вот. Благодарите того програмера, который делал эту библиотеку.
Так что, не надо обделять пользователя параметрами отвечающими за вид элемента и навязывать ему свое, ради минимизации настроек. Не добавляйте к профессии проектировщика еще и специальность подрывника (поставил элемент в чертеж, взорвал, переделал... поставил, взорвал, переделал...)
И настройку по умолчанию этих параметров делайте опираясь на стандартные профили, а не на свои собственные. По вашим профилям никто не работает, все работают по своим, а большинство, по стандартным.
Там где есть явная однозначность, тогда можно и нужно избегать лишнего параметра. К примеру, маркер в виде точки или стрелки может быть заполнен только сплошной шриховкой. Тут нет необходимости вводить настройку этой шриховки. Достаточно прописать в скрипте ее номер. Но ни в коем случае не название. Названия у каждого пользователя могут быть разные. А номера основных типов штриховки неизменяемые. Таких номеров три: 1, 64, 65. А вот если вы используете не их, то будте добры, предоставьте настройку.
И если вас напрягает разрастание количества параметров... То тут надо подумать о их подаче. Не надо писать все единым списком. Разделители то же не придадут окну "Параметры" приличный вид (максимум - один разделитель). Выдвигайте основные и часто используемые параметры на передние строки. Остальные группируйте по темам и принципу одновременной настройки, и прячьте их в разворачиваемые списки. Также переходите на использование панели "Спец. параметры". Пиктограмная информация воспринимается проектировщиками лучше, чем строчная текстовая. После третьего обращения к панели "Спец. параметры" уже четко помнится, что и где лежит. А если оно лежит почти как в стандартном оформлении, то тут вообще нет проблем.
Проблема, когда просматриваешь длинный монотонный список.


По поводу максимализма. Отделаюсь лишь сравнением.
Представляю сколько бы появилось новых кноп с одной единственной командой, если бы им назначить по одной функции из всех, которыми владеет "Бегущая рамка". Или "Волшебная палочка". Вау... Кноп то сколько... Во крутая прога. Вот где раздолье для толкователей программ. Какие увесистые талмуды бы писались, посвящая пользователя в одну единственную функцию каждой кнопки.

Во всем, хороша ЗОЛОТАЯ СЕРЕДИНА, основанная на заботе о пользователе.
Вы вправе не согласится с вышесказанным, если вы собираетесь быть единственным пользователем своего произведения.
« Последнее редактирование: Февраля 15, 2007, 23:28:01 от Valery W »

*

Оффлайн Int

  • *****
  • 3699
  • Репутация: +364/-5
  • Пол: Мужской
Re: Первые шаги в GDL
« Ответ #3 : Февраля 15, 2007, 23:11:16 »
эээм, неплохое такое начало)

комментировать и заново обсуждать все не буду, а просто скажу прямо: спасибо за ценный совет по номерам штриховок!!!
уже исправил(применил 64) ко всем своим объектам..там стояло solid fill - каюсь, не подумал...

теме жить!

*

Оффлайн and

  • ****
  • 418
  • Репутация: +22/-2
  • Пол: Мужской
Re: Первые шаги в GDL
« Ответ #4 : Февраля 16, 2007, 00:34:06 »
Отлично  :)
В целом согласен практически со всем и спасибо за то что Вы поделились своим опытом и своими взлядами и видением...
Разрешите немного пофилософствовать. Это на самом деле очевидные вещи но позволю себе повториться. Есть некая абсолютная истина. И на самом деле у нас нет ни единого шанса найти ее(попасть в нее). Мы можем оказаться только немного ближе и немного дальше. В зависимости от нашего  местоположения   относительно этой абсолютной истины.
К чему это я?
никто вроде не нападает а хочется защищаться :-) дурацкая ситуация :-)
История  создания: был создан некий библ исключительно для себя. В нем был минимум :-) и настройки перьев действительно были таковыми. Не понимая GDL теоретически нельзя было изменить перо.  Хотя я лично старался описывать свои телодвижения  в скрипте и искренне надеюсь что особой проблемы у "уверенных пользователей это не вызовет"  на других оно и расчитано то не было. Я не понимаю откуда такая уверенность в полной тупости пользователей?  Конечно я подозреваю что в области GDL знаю много меньше вашего. Чего стоит только строка
cs = (customstyle="Жирный") + 2*(customstyle="Курсив") + 3*(customstyle="Жирный курсив")
минимум +1 хотя за такие вещи надо давать +10 :-)

Я думаю что вы немного не понимаете что я делаю.  Точно не помню но гдето в середине 90х годов у нас в украине на одном телеканале 2 национальном  транслировалось две студии. Студия 1+1 и Студия Золотые ворота.  Мне тогда запомнился спор между главами этих студий.  Ал. Роднянский и теперь уже не помню как звали другого чифа. Так вот Глава ЗВ упрекал Раднянского в том что тот засоряет эфир зарубежным контентом. Типа того что нужно развивать свое  украинское. На что Роднянский объяснял что мы с вами занимаемся одним делом. Мы стремимся дать качество вопреки национализму. И заработав на ихних западных контентах  мы будем создавать свое украинское но достойного качества.

Мое(в данном случае и в целом я стараюсь не акцентировать внимание на Я - это констатация)  предложение состоит в том чтобы сделать полный минимум и при содействии сообщества выяснить реальную необходимость тех или иных настроек, добавляя только нужное (которое будет признано сообществом)  Я против того чтоб вычитать. Вы предлагаете сделать полный фарш какого нибудь библиотечного элемента. А потом посовещавшись убирать? ИМХО это не логично, сложно выполнимо (вы сами можете увидеть что уровень программирования большинства "энтузиастов" ниже чем у вас) В данном случае вижу гораздо бОльшую пользу от большОго количества недоработанных библов чем от двух-трех вылизанных ИМХО.  Плюс к этому уровень этих самых энтузиастов очень быстро вырастет. Потому что каждый повертит в руках чужой недоработанный библ и тд надеюсь направление ясно.

В любом случае 100% +1

Огромная просьба к Вам Валерий. Дело в том что я страдаю крайне патологической разновиднойстью мании преследования, поэтому лично для меня будте так добры писать что это для меня наример "2and" можно даже nd еще меньше букв.  А то я в каждой строке вашего поста читаю для меня и мне становится страшно и  я збиваюсь в угол :-)

Я надеюсь что могу адекватно реагировать на критику :-) хотя Вам со стороны виднее. Иногда машу шашкой не по делу.
« Последнее редактирование: Февраля 17, 2007, 01:52:17 от Valery W »

*

Оффлайн Ilia

  • *****
  • 980
  • Репутация: +64/-0
  • Пол: Мужской
  • ужеНЕпЭонер...
Re: Первые шаги в GDL
« Ответ #5 : Февраля 16, 2007, 06:10:58 »
отлично! понеслась!!!
GDL знаю на очень поверхностном уровне. Раньше это было - повернуть объект, изменить перья и материалы, иногда редко приложив уйму усилий я могу какойнить битый объект поковырять и если ошибка поверхностная вылечить его, ну и вот это всё, на этом мои познания заканчиваюца.
Это к тому что в общем то я не "полной тупости пользователь",  не всякий раз получаю удовольствие от копания в gdl. А теперь подумайте, что есть таварищи которые и столько не понимают… а еще есть дамы, пользующиеся архикадом, которые в принципе несклонны к копанию в объектах.

Ну все таки, раз этот топик для интересующихся GDL, тогда опишу как я вижу ситуацию.

Когда появилась первая версия "Отметка уровня ГОСТ 10" Valery W, мне она показалась удобной и я стал её использовать. Затем появилось сентябрьское обновление этой отметки, и в ней появились интерактивные узлы, т.е. можно было менять ориентацию стрелки  верх-низ не заходя в параметры объекта!!! чувствуете каково это? То-то!
Сейчас появилась новая "Отметка высоты (ГОСт)", гляньте как она оформленна... :)

К сути:
Просьба, если вы делаете объект с дальнейшим распространением оного, тогда:


1)   Называйте объекты названиями которые не встречаются в стандартной библиотеке (библиотеке по ГОСТ)

2)   В скрипте указывайте себя - автора объекта, можно даже с координатами для связи! 

3)   Еще одно замечание, вот по форуму многие нам знакомы по Никам \ именам. А в объектах вы прописываете свои Фамилии и Имена, и зачастую если объект попал в руки через кого-то и прошло уже немало времени после создания, то сложно найти автора. Я это опять к тому что указывать координаты нужно (можно еще ключи и записку где деньги лежат) а также по возможности указывать ху-из-ху, типа: Вася Пупкин aka -=PUPOK=-. Хотя опять же на разных форумах многие сидят под разными Никами и черт ногу сломит )))))

4)   Если предполагаются изменения, последующие доработки, тогда ЛИБО называйте объект версиями # КРУЖОЧЕК_v.01.1.gdl, ЛИБО в скрипте указывайте версию объекта и дату создания и обновления.

5)   Старайтесь как можно доходчивее и лаконичнее описывать процедуры в скрипте (всё что идет после знака «!»), это облегчит вам в дальнейшем как авторам, так и тем, кто будет смотреть объекты, учится, а может давать дельные советы по оптимизации!!!

2And, пожелания имеюца к выложенному тобою объекту RUMARK 0.03. Пожелание простое, хоцца чтоб объект мог менять свой радиус за счет изменения габаритов плане, потянул за какую нить узловую точку и круг увеличиваеца… СРАЗУ этот объект можно приобщить для Обозначения узлов – Буква в круге
И сразу вопрос знатокам, возможно ли сделать такойже объект чтоб порядковый № расставлялся автоматом и БЫЛ БУКВЕННЫМ (а,б,в… А, Б, В… I,II,III,IV,V,VI и тд )???



6)   Вот и подошли к тому что необходимо создавать такие объект  которые ОБЛЕГЧАЮТ нам порой механическую, нудную работу!!!

7)   УЖЕ необходимо! забивать окно «Спец. параметры» («Custom Settings»), Как уже сказали это более наглядно для пользователя. Мне лично не в лом тыкать настройки в поле Параметры. НО сами посудите к этому все идет. Даже стандартные библиотеки становяца все более настраиваемыми через это меню («Спец. параметры» («Custom Settings»).

Никто не говорит что выкладывая объект на обсуждение народу, он изначально должен быть отточен и быть со всеми финтифлюшками… пример развития отметки высоты

__________________________________________________
пока писал это сообщения 10ка впервые вылетела… :-(
___________________________________________________

8.)   НУЖНО! создавать объекты параметрируемыми и настраиваемыми 
 не только из меню «параметры объектов» но также чтоб какието элементарные действия над объектом можно было производить на плане! Если круг тогда можно будет менять радиус, если это выносная надпись тогда пусть будет возможность менять положения линий и излом… итд


В основном объекты делаюца именно для себя и под себя, и возникает необходимость в нем, когда часто сталкиваешься с задачей, а выполнят её какимито другим средствами либо тяжко, либо муторно, либо некрасиво, вот и создают ДЛЯ СЕБЯ, СВОИ необходимые объекты. Но, если вам интересно изучать GDL, тогда я полагаю можно развивать дальше любой устраивающий Вас объект до такой степени чтоб он устраивал и многих!!! + всем автор набираеца опыта, выслушивает советы, критику, а пользователи получают объект который они смогут использовать, который сможет улучшить работу в ArchiCAD, а может сделать эту работу более интересной!


КАК обычно настрочил много, аж ArchiCAD устал ждать и отправился на покой, извиняйте, если много и нудно.
Думаю, тема интересная и найдет своего читателя...
« Последнее редактирование: Февраля 16, 2007, 06:15:59 от Ilia »

*

lakk

Re: Первые шаги в GDL
« Ответ #6 : Февраля 16, 2007, 11:58:23 »
Проблема интерфейса всегда стояла и стоять будет как земля русская... У меня к ней подход очень простой: Пользователю надо позволить делать с объектом все в пределах разумного. Степень разумности определяет программист, когда указывает интервал проверки вводимого значения переменной (в нашем случае в списках значений параметров или в конструкции if..else..endif. Другое дело в том, что программист обязан написать код так, чтоб использовались лишь допустимые значения, а лучше значения по умолчанию. Простейший пример, Валерий, я тебе высылал в своей отметке высоты - там есть элементарная проверка: а влезет ли дополнительная надпись под полку при введенных значениях высоты ноги. Если значение высоты ноги меньше, чем сумма высот шрифта и зазоров, то по умолчанию принимается второй вариант. Пользователю знать об этом не надо, но когда он уберет дополнительную надпись, то увидит сам свою ошибку и врукопашную поправит ее. А вообще параметризация объекта - вопрос канительный, но чаще всего необходимый. Невозможно учесть всех ситуаций, в которых будет работать объект и задать ему абсолютно жесткие хар-ки. Но есть еще нормативка...

*

Оффлайн nideKer

  • *****
  • 2583
  • Репутация: +121/-2
  • Пол: Мужской
  • freeRide 4ever
Re: Первые шаги в GDL
« Ответ #7 : Февраля 16, 2007, 14:41:58 »

4)   Если предполагаются изменения, последующие доработки, тогда ЛИБО называйте объект версиями # КРУЖОЧЕК_v.01.1.gdl,


Илья - в имени использовать версию... это баян! - имя должно быть всегда одно и тоже... т.к. если ты первую версию обжекта используеш... потом заменять на другую... - негоже -  ИМХО только в крипте версию писать... или ещ где нибудь...

*

Оффлайн BeArt

  • *****
  • 1012
  • Репутация: +94/-3
  • Пол: Мужской
Re: Первые шаги в GDL
« Ответ #8 : Февраля 16, 2007, 21:54:57 »



Valery W
Цитировать
Про количество настоек, можно поговорить в новой теме:  GDL и Бибилиотечные элементы  |  Первые шаги в GDL.

Вторая часть Марлезонского балета!

Для чего создается библиотечный элемент?

Вы никогда не задумывались, например, почему на лестничных маршах количество ступеней нечетное…?
А, просто все в строительстве подчинено одному в конечном итоге, чтобы человек жил занимался любимым делом и не сбивался с ритма жизни, проходя по лестнице, поэтому с какой ноги ступил на марш, такой и вышел. (Let it be) :rolleyes:

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

С этих позиций и должны быть созданы библиотечные элементы, особенно по ГОСТ – Все самое необходимое.
При этом обязательно хорошее знание возможностей ArchiCad.
Например, где то проскакивало «…Обновил отметку уровня, теперь она может вертеть хвостом и вправо, и влево» (Сам, одно время, грешил этим же.)
При помощи ArchiCad это можно сделать одним кликом, а так же вверх и вниз (это менее удобно т.к. надо вводить 180 град.), причем, не открывая и не настраивая никаких параметров.
Ну а использование так называемого Геометрического варианта – диагонально, открывают неисчерпаемые возможности при создании и использовании библиотечного элемента.

Но главное алгоритм. От него зависит и скорость работы библиотечного элемента.
И, конечно же, безглючность работы. Люблю «красивые» алгоритмы.
……………………………………………………………
После второй части Марлезонского балета я к Вашим услугам.
« Последнее редактирование: Февраля 16, 2007, 21:57:06 от Beart »

*

Оффлайн Valery W

  • *****
  • 5987
  • Репутация: +629/-14
  • Пол: Мужской
Re: Первые шаги в GDL
« Ответ #9 : Февраля 17, 2007, 01:50:47 »
end пишет:
Цитировать
никто вроде не нападает а хочется защищаться :-) дурацкая ситуация :-)
Привожу свою цитату: "Здесь программист - абстрактное, а не конкретное лицо." Никого конкретно, под этим лицом я не подразумевал. Я обобщил собственный опыт использования чужих библ.элементов, правда с эмоциональной окраской, за которую сразу извинился. Не берите на свой счет.
Еще end пишет:
Цитировать
Дело в том что я страдаю крайне патологической разновиднойстью мании преследования, поэтому лично для меня будте так добры писать что это для меня наример "2and" можно даже nd еще меньше букв.
Обязательно. Если я к кому-то обращаюсь или имею кого-то ввиду, я привожу его Логин.
Вот...
 2end. Вы пишите:
Цитировать
Хотя я лично старался описывать свои телодвижения  в скрипте и искренне надеюсь что особой проблемы у "уверенных пользователей это не вызовет"  на других оно и расчитано то не было. Я не понимаю откуда такая уверенность в полной тупости пользователей?
Сделаю сравнение. В учебном заведении есть обязательные предметы, а есть факультативные. Если студент "уверенный" хорошист или отличник, это не значит что он посещает факультатив. И даже бывает, что "тупой" студент околочивает груши на факультативе. Так вот, знание принципов работы в ArchiCAD - это обязательные предметы, а знание GDL - это факультатив. Так что давайте не будем записывать уверенных пользователей в знатоков GDL.
Согласны с такой трактовкой "уверенного пользователя"?

Еще одно сравнение. Директор газеты заявил: "Люди не получают свежую информацию! Наша газета берет на себя почин исправить этот недостаток." И люди стали получать быстрее свежие новости. Но вот беда, с трудом понимают они, то что написано. На что, затем, директор отвечает: "Мы сделали все, чтобы сократить время выхода новостей. Новости в газету попадают прямо с листа корреспондентов, минуя редактора. Поэтому, наши новости расчитаны на продвинутых читателей, которые сами исправят ошибки, допишут и вклеют недостающее, или уберут лишнее."
Если вы затеваете библиотеку для разного уровня пользователей ArchiCAD, то зачем делать элементы, которые расчитаны только на тех, кто соображает в GDL. Ну допустим найдутся соображающие. Им что приятно пользоваться такими элементами, которыми надо управлять не только через настройки, но и ковырять скрипт?
А если элемент позиционируется как "сырой", то давайте его не выкладывать в раздел Download, который в какой-то мере представляет (презентует) сайт. Выкладываем и обсуждаем на форуме. После того, как он будет доведен до ума, удаляем все промежуточные версии из темы и ставим в Download. "До ума", это не значит "до совершенства". Это значит, что в нем нет явных ляпов.
Согласны с таким предложением?

Цитировать
Вы предлагаете сделать полный фарш какого нибудь библиотечного элемента.
Нет, не предлагаю. Я предлагаю не лишать пользователя необходимых настроек, особенно тех, что относятся к разделу 2D-Представления(2D-Representetion).

Цитировать
Есть некая абсолютная истина. И на самом деле у нас нет ни единого шанса найти ее(попасть в нее). Мы можем оказаться только немного ближе и немного дальше.
Я бы не сказал, что созданная тема для поиска истины. Скорее, для быстрого накопления первоначального опыта на пути к совершенству. Для этого и создал тему. Чтобы опираясь на мой опыт или другого гуру, который примет участие в теме, начинающие смогли быстро их догнать.
Вот уже один принял участие. Я о lakk. Хотя его опыт базируется на работе с другими языками программирования, но основные принципы интерфейса, наверно, везде одинаковые. Все им сказанное, поддерживаю. (+1). Только к фразе "Пользователю надо позволить делать с объектом все в пределах разумного." добавлю "и необходимого".
Илье как пользователю, Спасибо за предоставление этой самой позиции пользователя.
Beart, и тебя благодарю. Хотя, как всегда, тебя не понял. То ли в противовес сказанному мной твой пост, то ли в поддержу, то ли просто свое мнение высказал.

И в заключении.
End пишет:
Цитировать
В данном случае вижу гораздо бОльшую пользу от большОго количества недоработанных библов чем от двух-трех вылизанных ИМХО.  Плюс к этому уровень этих самых энтузиастов очень быстро вырастет. Потому что каждый повертит в руках чужой недоработанный библ и тд надеюсь направление ясно.

А чтобы не гробить время этих энтузиастов на понимание чужой писанины, давайте поговорим об оформлении скрипта. На эту тему я и сделаю следующее сообщение.

*

Оффлайн BeArt

  • *****
  • 1012
  • Репутация: +94/-3
  • Пол: Мужской
Re: Первые шаги в GDL
« Ответ #10 : Февраля 21, 2007, 13:00:58 »
Хотелось бы поговорить о программировании.

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

Не хочу никого обидеть, но то, что сейчас выкладывается в разделе Download, за некоторым исключением,  законченным библиотечным элементом можно назвать с большой натяжкой.
И совет, не спешите после того, как создали какую-нибудь,  линию или кружочек или и еще чего сразу выкладывать её в раздел Довнлоад. Подумайте, все ли сделано,  для того чтобы библиотечный элемент был полноценным, уникальным, работоспособным, выполнен с учетом всех возможностей  ArchiCad, не проще ли и быстрее обычными инструментами ArchiCad создать, то, что создано Вами, а так же соответствие Вашего библиотечного элемента ГОСТу, или его необходимости.

Поверьте, проверять и исправлять библиотечный элемент в два раза сложнее.
Для того чтобы проверить алгоритм, практически надо переписать его заново, т.е. разработать его сначала, мало того надо ещё понять логику автора,  а это порой, просто невозможно... Я вообще считаю, что написание алгоритма – это личное, а копаться в чужих «мозгах» дело неблагодарное. Задавайте вопросы, консультируйтесь на форумах, в том числе и на официальном Graphisoft, там очень мудрые советчики  :p, но доводите свой библиотечный элемент до кондиции самостоятельно.

Переходите на более высокий уровень программирования. Задайте себе вопрос: А достаточно ли я подкован для создания библиотечных элементов?Знание операторов или их понимание не означает, что вы можете программировать.
При создании нового элемента берите за основу алгоритмы и принципы создания стандартных библиотечных элементов – по аналогии.

Программирование я всегда сравниваю с игрой в шахматы. Та же логика. Необходимо продумывать все на несколько ходов вперед. Знать, как ходят фигуры,  это не значит  уметь играть. И когда надо решить трёхходовку – ходов, должно быть не больше.

Обязательно знание математики. Порой бывает достаточно при программировании придумать или применить формулу, чем плодить кучу операторов и проверок (если –тогда).
Старайтесь сделать алгоритм компактным и работоспособным, ищите закономерности. Программирование - это искусство. Почитайте литературу.

*

Оффлайн and

  • ****
  • 418
  • Репутация: +22/-2
  • Пол: Мужской
Re: Первые шаги в GDL
« Ответ #11 : Февраля 21, 2007, 17:43:51 »
в связи с тем что размещение объектов и организация работы  к теме никак не относится предлагаю обсуждение по теме перенести в обсуждение манифеста. Здесь продолжаем обсуждение "первые шаги GDL". Очень сложно писать ответ в три темы с одним содержимым :-( да и не нужно это никому.


*

Оффлайн nideKer

  • *****
  • 2583
  • Репутация: +121/-2
  • Пол: Мужской
  • freeRide 4ever
Re: Первые шаги в GDL
« Ответ #12 : Февраля 21, 2007, 18:47:00 »
Дык тебе и карты в руки ... тыж модер! ;)

*

Оффлайн Valery W

  • *****
  • 5987
  • Репутация: +629/-14
  • Пол: Мужской
Re: Первые шаги в GDL
« Ответ #13 : Февраля 25, 2007, 01:41:52 »
2 end
Я согласен с Beart. По большому счету, он имел ввиду создание элементов вообще, а не в частности, для конкретной библиотеки по ГОСТу.
Ложить... или не ложить... в Download?...Предлагаю не возвращаться к этому вопросу.
В разделе форума Книга жалоб и предложений .::SOFTMACHINE.RU::. создаем или ищем существующую тему о Download. И там продолжаем. Тогда и админы подключатся.

Beart пишет:
Цитировать
Поверьте, проверять и исправлять библиотечный элемент в два раза сложнее.
Сложнее чего? Если сложнее написания, то не согласен. Плохо читаемый скрипт, затрудняет его понимание. Это да.
Но... Тема оформления скрипта еще впереди. Надеюсь убедительно рассказать о его пользе.

По поводу этих абзацев:
Переходите на более высокий уровень...
Обязательно знание математики

Хочу сказать так: Beart, не пугай людей. Т.е. не распугивай начинающих. Это уже в топик Библиотека "секретов" по GDL-програмированию. Делать объекты GDL, достаточно нужные и хорошие, можно и без знания GDL. Давид Никольсон-Коль для этого целую книгу написал, Введение в создание объектов. Пусть будет больше пользователей Архикад, для которых достаточно азов GDL и знания работы в GDL-редакторе, но которые будут делать это качественно.

Пока все.

*

Оффлайн Valery W

  • *****
  • 5987
  • Репутация: +629/-14
  • Пол: Мужской
Re: Первые шаги в GDL
« Ответ #14 : Мая 02, 2007, 00:26:25 »
Сага про HOTSPOTы.
Надеюсь, что расскажу более понятно, чем описано в GDL Reference Guide.

=============================================

HOTSPOT2 x, y [, unID [, paramReference, flags [, displayParam]]]
В прямоугольные скобки заключено то, что является дополнительным, а не обязательным компонентом. Использование дополнительных компонентов дают расширенные возможности. Скобки показывают принцип использования: что, без чего, не может существовать. Вариант трактовки зависимости отличается от приведенного в GDL Reference Guide, где, мне кажется, присутствует описка. В скрипте, сами скобки не пишутся.
Вот возможные варианты:
HOTSPOT2 x, y
HOTSPOT2 x, y , unID
HOTSPOT2 x, y , unID , paramReference, flags
HOTSPOT2 x, y , unID , paramReference, flags, displayParam


x, y: координаты точки. Вместо четко прописанных координат, могут использоваться переменные типа "Линейная величина". Другие типы не поддерживаются. Если подставлять переменные типа "Действительное число" или "Целое число", то они интерпретируются как "Линейная величина".

paramReference: параметр, который может быть отредактирован этой горячей точкой. Поддерживается переменная типа "Линейная величина" и "Угловая величина". Если подставлять переменные типа "Действительное число" или "Целое число", то они интерпретируются как "Линейная величина" или  и "Угловая величина". Редактирование происходит как графически, растягиванием за точку, так и вводом числового значения в табло слежения.

displayParam: это параметр, который можно назвать "маской", под которой прячется paramReference. Т.е., при графическом редактировании объекта за точку, в табло слежения показывается изменяемое значение не paramReference, а displayParam. Для правильной работы этой связки двух параметров, в скрипте нужно прописывать их взаимное влияние друг на друга. В displayParam можно использовать переменные типа "Линейная величина", "Угловая величина", "Действительное число" или "Целое число".

paramReference и displayParam могут использовать члены массивов.

unID: уникальный идентификатор, который должен быть уникален для каждой горячей точки, определенной в библиотечном элементе. В основном, он нужен для правильной привязки размеров к библиотечному элементу.
Чтобы не следить за нумерацией всех точек, придуман простой способ написания скрипта. В начале каждого скрипта, который использует горячие точки (2D или 3D срипт), объявляется начальное число от которого начинать отсчет: unID=?, затем идет чередование выражений unID и unID=unID+1.
Например:
unID=1
HOTSPOT2 x1, y2, unID ! 1
unID=unID+1           ! 1+1=2
HOTSPOT2 x2, y2, unID ! 2
unID=unID+1           ! 2+1=3
HOTSPOT2 x3, y3, unID ! 3
Или в одной строке через знак двоеточия.
unID=1
HOTSPOT2 x1, y1, unID : unID=unID+1 ! 1 : 1+1=2
HOTSPOT2 x2, y2, unID : unID=unID+1 ! 2 : 2+1=3
HOTSPOT2 x2, y2, unID : unID=unID+1 ! 3 : 3+1=4

flags: определяет за какой тип редактирования (редактирование длины или угла) отвечает горячая точка и ее роль (атрибут) в редактировании.
1: редактирование длины / точка отсчета, от которой начинается длина.
2: редактирование длины / конечная точка, та которая перемещается удлиняя элемент.
3: редактирование длины / точка задания вектора (всегда невидимая).

4: редактирование угла / точка отсчета, от которой начинается угол. Должна быть отдалена от центра.
5: редактирование угла / точка изменения величины угла.
6: редактирование угла / точка центра угла (всегда невидимая).
7: редактирование угла / точка задания вектора плоскости в которой лежит угол (всегда невидимая). Применяется в 3D-скрипте.

К атрибутам 1 и 4 можно прибавить 256. Тогда эти точки тоже смогут менять свое положение, изменяя начало и одновременно значение длины/угла.
Если к атрибутам 1,2,4,5 прибавить 128, то точки с этими атрибутами станут невидимыми.
Если к атрибуту 6 прибавить 512, то изменится направление угла.

=============================================
Про использование  paramReference довольно хорошо рассказано в GDL Reference Guide.
Поэтому подробнее расскажу только про использование displayParam.
Попытаюсь объяснить как с ним работать. Разберем пример с парковочными местами.
Задача: Изменять длину парковки автомобилей на плане за гор.точку и видеть в табло слежения не общую длину, а количество мест.
Нам нужны параметры отвечающие за длину парковки и количество мест.
ParkingLth - тип "Линейная величина" - Длина Парковки
nSite - тип "Целое число" - Количество Мест

Parameter script
Переменную длины парковки (ParkingLth) нужно заставить изменяться по заданной ширине места (2.5 м) и задать минимальное значение.
VALUES "ParkingLth" RANGE [2.5, ] STEP 0, 2.5
Это означает:
   - минимальное значение длины парковки будет равным одной ширине парковочного места (2.5 м)
   - максимальное значение может быть бесконечным
   - шаг растягивания будет равным одной ширине парковочного места (STEP 0, 2.5)

Также введем ограничение для количества мест.
IF nSite < 1 THEN PARAMETERS nSite = 1

Далее прописываем взаимосвязь переменных:
IF GLOB_MODPAR_NAME = "ParkingLth" THEN   PARAMETERS nSite = ParkingLth/2.5
IF GLOB_MODPAR_NAME = "nSite" THEN   PARAMETERS ParkingLth = nSite * 2.5


Это означает, что если вносится изменение в ParkingLth, то nSite должен тоже изменить свое значение по формуле ParkingLth/2.5.
И наоборот. Если вносится изменение в nSite, то ParkingLth должен тоже изменить свое значение по формуле nSite * 2.5
На плане эта взаимосвязь работает так. Когда вы растягиваете за точку редактирования, то работает ParkingLth изменяя nSite (GLOB_MODPAR_NAME = "ParkingLth"). Когда вы вводите значение в табло слежения, то работает nSite изменяя ParkingLth (GLOB_MODPAR_NAME = "nSite").

2D script
LINE2 0, 0, ParkingLth, 0

FOR i = 0 TO nSite
      LINE2 0, 0, 0, 3
   ADD2 2.5, 0
NEXT i

HOTSPOT2  0, 0, 1, ParkingLth, 1
HOTSPOT2  ParkingLth, 0, 2, ParkingLth, 2, nSite
HOTSPOT2 -1, 0, 3, ParkingLth, 3


Если нужно чтобы парковка растягивалась в обе стороны, то добавим 256 к атрибуту 1. Затем можно поставить запятую и добавить displayParam (наш nSite). Если его не добавлять, то при растягивании парковки в другую сторону, в табло слежения будет отображатся длина парковки.

Парковка готова к растягиванию с указанием мест.

=============================================

Еще один пример. Запрограммируем линию с кругом на конце. Длина линии будет масштабируемой, а размер круга будет фиксированным. Напомню, что фиксированный, это размер, который задается в единицах измерения бумаги.
Длина линии будет регулироваться переменными A и B. Для радиуса круга создаем два параметра:

RadiusScl - тип "Линейная величина" - Радиус
RadiusFix - тип "Действительное число" - Радиус (мм)
Переменную RadiusScl сделайте невидимой в окне параметров.

Parameter script
IF GLOB_MODPAR_NAME = "RadiusScl" THEN   PARAMETERS RadiusFix = RadiusScl *1000/A_
IF GLOB_MODPAR_NAME = "RadiusFix" THEN   PARAMETERS RadiusScl = RadiusFix *A_/1000


Можно ввести ограничение на минимальный размер радиуса. Например, 0,5 мм.
Ограничение придется вводить для обоих переменных.
IF RadiusFix < 0.5 THEN   PARAMETERS RadiusFix = 0.5
IF RadiusScl < 0.5/1000*A_ THEN   PARAMETERS RadiusScl = 0.5/1000*A_


2D script
Делаем значение переменных незавимыми от масштаба.
RadiusScl = RadiusFix /1000*A_
RadiusFix = RadiusFix /1000*A_


Далее все просто.
HOTSPOT2  A, B

LINE2 0, 0, A, B

HOTSPOT2  0, 0, 1, RadiusScl, 1
HOTSPOT2  0, RadiusScl, 2, RadiusScl, 2, RadiusFix
HOTSPOT2  0, -1, 3, RadiusScl, 3

CIRCLE2 0, 0, RadiusScl


Линия с кругом на конце готова.
=============================================

Оба примера в прикрепленном файле.
« Последнее редактирование: Декабря 01, 2007, 22:11:44 от Valery W »

 

Похожие темы

  Тема / Автор