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

*

SergeyAB

Смысл такой:
необходимо предоставить работающий пример gdl-скрипта который продемонстрирует работу всех функций аддона XML IN|OUT, а именно:
GDL XML EXTENSION
This extension allows reading, writing and editing XML files.
так написано в мануале, также описан синтаксис всех функций:
channel = OPEN (filter, filename, parameter_string)
INPUT (ch, recordID, fieldID, var1, var2...)
OUTPUT (ch, recordID, fieldID, var1, var2...)
а еще такая фигня написана:
Example:
We want to move backwards on the same level to the 2nd node that is an element or an entity reference and whose name starts with K:
INPUT (ch, "MoveToNode FromPrevSibling K* ELEM+EREF 2", posDesc, name, val, type)
итак, что должен делать пример:
1.Создавать XML документ
2.Создавать в нем дерево данных, коментариев (элементы с аттрибутами #СDATA, #TEXT)
3.Осуществлять движение по дереву указателя в обоих направлениях
4.Отбирать элементы как описано в команде INPUT (ch, "MoveToNode FromPrevSibling K* ELEM+EREF 2", posDesc, name, val, type)

варианты выкладывать в эту тему....

Благодарю всех откликнувшихся, ибо сам уже запарился с этой примочкой...

P/S/ давайте оставим реплики по поводу корыстности и прочих моментов - компетентности и прочего, есть очень большое желание понять как использовать этот аддон, ведь архикадом он используется без всяких проблем - все древовоидные структуры интерфейса сохранены xml -файлами в папке архикада, я почему то думаю что это "работа" этого аддона, если у кого то есть другие соображения - милости прошу...

*

melky

SergeyAB, объясни что ты хочешь получить в итоге ?
Я только обращался к базе данных через параметры PROP,  вот с записью в файл  ничего не пробовал, но там все похоже.

*

Оффлайн Mike_B

  • *****
  • 657
  • Репутация: +77/-2
  • Пол: Мужской
Тема интересная. Например, делаем запрос через SQL, создаем XML файл с данными и можно делать сметы через GDL объекты. Интересно, можно ли делать SQL запрос из GDL?

*

Оффлайн BeArt

  • *****
  • 1013
  • Репутация: +94/-3
  • Пол: Мужской
SergeyAB
Цитировать
необходимо предоставить работающий пример gdl-скрипта который продемонстрирует работу всех функций аддона XML IN|OUT, а именно:
GDL XML EXTENSION
Если можно, укажите ссылочку на Аддон, о котором речь.

*

melky

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

*

Оффлайн ALAKK

  • *****
  • 625
  • Репутация: +55/-7
  • Пол: Мужской
  • Он спорил с модером...
Mike_B
SQL из GDL не поддерживается. А жаль.
BeArt
Речь идет о встроенном расширении ГДЛ "XML I/O". Такое же как и, например, как "TEXT I/O".
melky и Mike_B
Пример такого скрипта я давал на Архилиб. Также в тамошнем посте описывался метод построения запроса и требования к построению иерерхии переменных. Пример давал (вроде бы) в открытых для посетителей ветках. Интересно - посмотри

*

SergeyAB

2 BeArt:
ссылка на адон выглядит вот так:
X://Program Files/Graphisoft/Archicad 10/Расширения Archicad/GDL/XML IN/OUT, он там самый "тяжелый" - 60-кб весит...
Че еще хочется сказать по существу темы - тема возникла не на пустом месте - я сам потратил на "попытки отгадать синтаксис" скажем 3 дня от и до, потом бросил это дело как безнадежное, дальше откапал все что есть по этому вопросу на графисофтовском толчке - см. здесь
http://archicad-talk.graphisoft.com/viewtopic.php?t=10344"highlight=gdl+xml
и вот тогда оптимизм мой иссяк на 100%, осталась надежда на более компетентных чем я людей - именно такой человек и "победит" в конкурсе...(если это вообще возможно)

2 Mike_B
тема уже обсуждалась на машине:
http://cadstudio.ru/forum/index.php/topic,11744.0/
более того есть работающие результаты того о чем было написано...

2 ALL: Люди большая просьба не уходить вглубь и в сторону, идеи они всегда есть, есть что обсудить и.т.д., здесь прошу поучаствовать именно в тех рамках в которых они обозначены в первом посте - если вы имеете работающий скрипт - и вам кажется что циферка 500 не слишком серьезно, можно обсудить по ICQ 195830974

PS// лично мне помешало "отгадать синтаксис" этого аддона отсутствие толковых комментариев к ошибкам в скрипте выдаваемых встроенным GDL-"компилятором"...надеюсь это подскажет компетентным людям направление движения в плане разработки работающего синтаксиса...

*

melky

ALAKK, да я сам как-то обращение к БД Арчика писал для объекта, но после многих попыток внедрить понял, что для объектов с множеством символов (типа Розетки по ГОСТ) слишком длинный код получается. Если одна библиотека = один символ чертежа, то не та трудно. Но я делал только чтение, хотя там есть и запись с обновлением и запись без обновления...
Скрипт обращения к файлам, запись/чтение можно написать в скрипте спецификаций, тогда выполняться они будут именно при выполнении сметы компонент например. То есть ставишь объект в план, скрипт молчит, запускаешь смету компонент  скрипт запускается и сохраняет тебе все в файл, перед сохранением можно выполнять запрос на создание файла как вариант...
Просто ты так и не описал, для чего тебе это нужно.... не зная для чего трудно понять как это делать...

*

SergeyAB

ПРОСЬБА КО ВСЕМ КТО СОБИРАЕТСЯ СЮДА ПИСАТЬ:
не нужно задавать вопросов для чего мне это нужно и как я собираюсь это использовать,
это можно обсудить потом и в другой теме.
Здесь ОЧЧЕНЬ прошу придерживатья первого поста, за ранее спасибо за понятливость...

*

SergeyAB

Всем кто участвует(-вовал) хочу сказать спасибо за внимание к теме!
А также сообщить что путем проб и ошибок разобрался как работает импорт-экспорт xml в ArchiCAD так что ТЕМУ ОБЬЯВЛЯЮ ОФИЦИАЛЬНО ЗАКРЫТОЙ В ПЛАНЕ КОНКУРСА,далее предлагаю обсуждать аспекты возможного применения аддона -XML IN|OUT.
 для тех кто собирается использовать аддон XML IN|OUT, выкладываю кусок скрипта который показывает основные моменты создания xml-документа из gdl скрипта
(копируйте на здоровье):
 
ch= OPEN (`;XML`;,`;er.xml`;,`;w`;)
!создаем новый xml файл(пока пустой) если уже есть то переписываем заново (аттрибут w)
!ищем созданный xml в
!C:\Documents and Settings\Sergey26\Мои документы

OUTPUT ch,"CreateDocument","","Pr1"
!создаем док-т
!создаем корневой элемент xml списка - Pr1-(Root)

!OUTPUT ch,"GetNodeData","root",v1,v2,v3
!пока пропустим...

INPUT (ch,"NewPositionDesc",ignored,posDesc)
! выставляем указатель - на корень xml(на root элемент)

s1=111
s2="ee"

INPUT (ch,"GetLastError","ignored",s1,s2)
!смотрим че поймали по установке указателя...

print s1,s2
 
sr1="1"
sr2="2"
sr3="3"
sr4="4"
sr5="5"
sr6="6"
sr7="7"
sr8="8"

OUTPUT ch,"NewElement AsFirstChild",posDesc,sr1

INPUT (ch,"MoveToNode ToFirstChild",posDesc,v1,v2)
двигаем указатель на первый дочерний от текущего(от корневого)

OUTPUT ch,"NewElement AsFirstChild",posDesc,sr2
OUTPUT ch,"NewElement AsFirstChild",posDesc,sr3
OUTPUT ch,"NewElement AsFirstChild",posDesc,sr4
OUTPUT ch,"NewElement AsFirstChild",posDesc,sr5
OUTPUT ch,"NewElement AsFirstChild",posDesc,sr6
OUTPUT ch,"NewElement AsFirstChild",posDesc,sr7
OUTPUT ch,"NewElement AsFirstChild",posDesc,sr8


!вставляем дочерние(корневому элементу) элементы sr1-sr8

s1=111
s2="ee"

INPUT (ch,"GetLastError","ignored",s1,s2)
!синтаксис работает!!!
!а вот ента хитрая функция возвращает код выполнения последней операции,
 
! коды возврата такие:
!Error codes and messages:

!0:  "Ok" 
!-1:  "Add-on Initialization Failed" 
!-2:  "Not Enough Memory" 
!-3:  "Wrong Parameter String" 
!-4:  "File Dialog Error" 
!-5:  "File Does Not Exist" 
!-6:  "XML Parse Error" 
!-7:  "File Operation Error" 
!-8:  "File Already Exists" 
!-9:  "This channel is not open" 
!-10:  "Syntax Error" 
!-11:  "Open Error" 
!-12:  "Invalid Position Descriptor" 
!-13:  "Invalid Node Type for this Operation" 
!-14:  "No Such Node Found" 
!-15:  "Internal Error" 
!-16:  "Parameter Error" 
!-17:  "No Such Attribute Found" 
!-18:  "Invalid XML Document" 
!-19:  "Unhandled Exception" 
!-20:  "Read-Only Document" 
!-21:  "CreateDocument Not Allowed" 
!-22:  "Document Creation Failed" 
!-23:  "Setting NodeValue Failed" 
!-24:  "Move Not Allowed" 
!-25:  "Delete Not Allowed" 
!-26:  "SetAttribute Not Allowed" 
!-27:  "Format File Error" 
!-28:  "Insertion (or Copy) Not Allowed" 
!-29:  "Node Creation Failed" 
!-30:  "Bad String" 
!-31:  "Invalid Name" 

print s1,s2
!print ch
close ch
!ноу коммент...

Лично для меня осталось 2 непонятных момента -
1.как правильно указывать аттрибут "ignored" или без кавычек, вроде работает и в том и в другом случае...
2.неужели 500 рэ не деньги? ;)

*

SergeyAB

в выше показанном примере необходимо изменить значения переменных sr1-sr8 на текстовые,например на "a","b","c","d","e","f"....просто сохранил предпоследнюю редакцию и на автомате скопировал...
элементы xml-списка не могут иметь имена в виде 1,2,3....это общее для xml правило....

*

Оффлайн ALAKK

  • *****
  • 625
  • Репутация: +55/-7
  • Пол: Мужской
  • Он спорил с модером...
Молодец, Сергей. +1
Это вам не пряники по веткам развешивать и окна в проемы вставлять...

А вот следствие из решенной тобой задачи: (точнее ПОследствие)
Как запустить XML на выполнение из ГДЛ? Смогем?
Запихать туда (в файл) данные SQL запроса и потом сформировать его и запустить на исполнение?
« Последнее редактирование: Июля 31, 2007, 09:28:57 от ALAKK »

*

melky

Продолжим. Ключи при открытии канала
ch = OPEN (`;XML`;, `;d:\file.xml`;, `;здесь ключи и их комбинации`;)
`;r`; - открыть файл в режиме read-only только для использования INPUT команд
`;e`; - связанно с референсами, пока не разбирался
`;v`; - проверка на корректность чтения и записи, без этого флага можно читать и записывать файл но без сообщений об ошибках...что-то у меня что с v что без не выдает ошибку  правильно ли считан файл, вероятно из-за того, что ошибка в синтаксисе в командах.
`;n`; - создать новый файл
`;w`; - переписать существующий файл, если таого файла нет то будет создан новый.
`;d`; - аналог команды DIALOG DATA IN/OUT ADD-on   если файла не существует то будет открыт стандартный диалог открытия или сохранения файлов, не забывайте прописывать расширение. Причем  в строке не должно быть пустого имени в команде открытия канала..
`;f`; - указание полного пути файла как в примере выше
`;l`; - файл должен быть загружен с библиотеками Арчика, тогда он его найдет просто по имени.
.
ключи d,  f,  l  не могут быть вместе, только один из них.
ключи r, n, w так же не могут быть вместе.
пример записи ключей  - `;ndv`;, `;wfv`;, `;rlve`;
аналога команды дозаписи файла увы нет :(

*

SergeyAB

2 melky - благодарю за флаги, а по поводу последнего:

Аналог до записи не нужен потому что есть такая вот функция
!OUTPUT ch,"GetNodeData","root",v1,v2,v3

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

*

melky

SergeyAB, увы, я специально подставил нормальный xml файл и он только по команде CreateDocument был напрочь затерт.
В резултате получил только корень .
Твой скрипт у мея вообще отказывается работать, малейшая ошибка приводит вплоть до свала Арчика....
В чем прикол не могу понять..
Возможно при чтении все это будет работать, но вот при записи увы не пашет, а запись в существующий или новый файл обязывает первой командой выполнять
CreateDocument ....

 

Похожие темы

  Тема / Автор