KitchenDraw (KD)KitchenDraw - программа для мебели (компьютерное моделирование) С помощью KitchenDraw можно быстро подготовить пакет документов для ваших клиентов, поставщиков мебели, рабочих мебельного цеха и для менеджера магазина мебели.
Это случайно не то, что прямо в сцене можно открыть скрипт любого блока и с ним поизвращаться, как тебе вздумается? Если да, то немного понятно о чем идет речь. Не понятно провызовы любых функций Windows. Если можно немного просвятите.
Нет. Речь идёт о полноценном скрипте.
Пример: Из артикула с Лв(Пр) формирует Лв и Пр соответственно.
Set Articles = Tables(CATTABLE_ARTICLES)
For i = Articles.RowCount To 1 Step -1
If InStr(Articles.Cells(i, 1), "Лв(Пр)") Then
ThisCluster = SDK.Catalog.TableGetClusterRankFromLineRank(Sessio nId, CATTABLE_ARTICLES, i)
ClusterLineRank = i - SDK.Catalog.TableGetFirstLineRankFromClusterRank(S essionId, CATTABLE_ARTICLES, ThisCluster) + 1
Articles.Cells(i,1) = Replace(Articles.Cells(i,1), "Лв(Пр)", "Пр")
Articles.Cells(i,2) = "R"
SDK.Catalog.TableInsertLines SessionId, CATTABLE_ARTICLES, ThisCluster, ClusterLineRank, 1
Articles.Cells(i,1) = Replace(Articles.Cells(i+1,1), "Пр", "Лв")
Articles.Cells(i,2) = "L"
Articles.Cells(i,3) = Articles.Cells(i+1,3)
Articles.Cells(i,4) = Articles.Cells(i+1,4)
Articles.Cells(i,5) = Articles.Cells(i+1,5)
Articles.Cells(i,6) = Articles.Cells(i+1,6)
End If
Next
Set Articles = Nothing
===============
Загрузка фасадов Панорама в фасады, шкафы-купе за 2-3 клика, выгрузка в 1С, Axapta, Базис, загрузка артикулов и блоков из шахматки клиента и т.п. - всё мы делаем на KDScript. Мы дополняем возможности стандартного KD, обходим ограничения.
Ладно, начнем ликбез. Yura_Bogoduhov, если Вам все-таки не трудно, поменяйте шапку темы, как я предлагал — это мой перевод цитаты из английского документа по KitchenDraw SDK кроме двух последних предложений. И советую всем ее внимательно прочитать!
И удалите, пожалуйста, этот пост:
Цитата:
Сообщение от Yura_Bogoduhov
Описание скрипта связи KDVB1C и 1С Предприятие 7.7:
так как он ничего общего с нашей темой не имеет. Это попытка связать KD и 1C:"... для передачи данных использован язык скриптов VBScript, входящий в комплект Windows" — как написал сам разработчик этой программы, без использования KitchenDraw SDK.
Цитата:
Сообщение от Yura_Bogoduhov
Разработкой SDK люди вроде бы занимаются на этом сайте(естественно за оплату) http://e-st.ru/
Эти люди, которых здесь представляет KD_RUS, не занимаются разработкой SDK. Они используют SDK в своих разработках и зарабатывают деньги, как и мы зарабатываем деньги, используя KD.
KitchenDraw SDK разработан создателями самой KD — PRAGMA Informatique, и поставляется вместе с ней — это библиотека Kdsdk.dll.
А теперь я хочу прокомментировать сообщение:
Цитата:
Сообщение от KD_RUS
Нет. Речь идёт о полноценном скрипте.
Пример: Из артикула с Лв(Пр) формирует Лв и Пр соответственно.
Set Articles = Tables(CATTABLE_ARTICLES)
For i = Articles.RowCount To 1 Step -1
If InStr(Articles.Cells(i, 1), "Лв(Пр)") Then
ThisCluster = SDK.Catalog.TableGetClusterRankFromLineRank(SessionId, CATTABLE_ARTICLES, i)
ClusterLineRank = i - SDK.Catalog.TableGetFirstLineRankFromClusterRank(SessionId, CATTABLE_ARTICLES, ThisCluster) + 1
Articles.Cells(i,1) = Replace(Articles.Cells(i,1), "Лв(Пр)", "Пр")
Articles.Cells(i,2) = "R"
SDK.Catalog.TableInsertLines SessionId, CATTABLE_ARTICLES, ThisCluster, ClusterLineRank, 1 'кстати, здесь пропущены (), в которые заключают аргументы функций
Articles.Cells(i,1) = Replace(Articles.Cells(i+1,1), "Пр", "Лв")
Articles.Cells(i,2) = "L"
Articles.Cells(i,3) = Articles.Cells(i+1,3)
Articles.Cells(i,4) = Articles.Cells(i+1,4)
Articles.Cells(i,5) = Articles.Cells(i+1,5)
Articles.Cells(i,6) = Articles.Cells(i+1,6)
End If
Next
Set Articles = Nothing
Я еще раз повторюсь, но считаю некорректным использование в приведенной цитате слова "скрипт", потому что понятие скрипта в KD и приведенное выше — совершенно разные вещи, и вводят в заблуждение пользователей KD. Я предлагаю использовать понятие "модуль" или "программа".
В приведенной части программы, написанной на языке Visual Basic, мной красным цветом выделен вызов функций KitchenDraw SDK (синим цветом указана ошибка, допущенная при написании программы).
В результате выполнения программы, по нажатию одной кнопки, во всем каталоге предметы без направления превращаются в предметы с двумя направлениями (см. миниатюры). Какая экономия времени!
Продолжение...
Программа, написанная в VB с вызовом функций KD SDK, компилируется и получается библиотека — файл с расширением .dll, который связывается с (или вызывается из) KD тремя способами (это которые я знаю — может есть и другие) в зависимости от класса (вида). Класс "Мастер" ("Wizard") — вызов осуществляется через скрипт блока, добавляя в его конец строчку @DLL("DLL file name"). Пример приведен в каталоге "Мини-база кухни" ("KITCHEN TUTORIAL") — это самый первый блок (тумба BT 40G). Вот его скрипт:
B(CLASSE="BU") [1PB 1E](H=H-C59)+1T(H=C59) @CF("1D1d")
&REFPOS(X=L) &_BGD(SSENS) &_1E(INTER) &_1PB(SSENS,H=H-C59) &_1T(SSENS,H=C59) @DLL("sdk_wizard.dll")
При установке этой тумбы на сцену или при вызове меню Объект --> Мастер выполняется код программы, которую вы написали. Можно даже вывести текст самого скрипта блока и здесь его изменить не меняя скрипта в самом каталоге (о чем мечтают многие участники форума), а можно и с заменой в каталоге — как напишите в программе.
Класс "Заказ" ("Order") — исполнение вашей программы осуществляется при генерации заказа при вызове меню Файл --> Заявки поставщикам --> Создать --> Генерация. Но перед этим нужно выбрать ваш созданный файл (см. Руководство пользователя KD — "9.Передача заказов через Интернет (e-mail)"), где вы описали свою форму бланка заказа (например, sdk_order.dll).
Продолжение...
И третий вид — это "Плагины" (Plugins), которые обсуждались в теме KitchenDraw - plugins.
Цитата:
Сообщение от Влад Степанов;
В общем случае, чтобы использовать Plugin выполните действия:
1) Найти файл Space.ini в рабочей директории KitchenDraw.
2) Если в этом файле нет секции [Plugins] , тогда добавьте ее.
3) В секцию [Plugins] добавьте строку типа: "<НаименованиеФайлаПлагина>=" без кавычек.
...
Например:
[Plugins]
MyPlugin.dll=
При запуске KD этот плагин загрузится и создаст новое меню или новую строчку в меню (подменю). При вызове этого подменю будет выполняться программа, которую вы написали.
Для всех трех случаев необходимо, чтобы ваши библиотеки находились в основной директории KD и были зарегистрированы в ОС.
С теорией покончено.
А теперь приступаем к практике. К сожалению, примеры, приведенные в шапке темы, нерабочие. Но я исправил ошибки в одном из них (одну еще не исправил — не выводится рисунок блока и не работает функция "Открыть", но это дело поправимое).
Цитата:
Сообщение от kuzma
Это случайно не то, что прямо в сцене можно открыть скрипт любого блока и с ним поизвращаться, как тебе вздумается?
Для всех "извращенцев"!
Распакуйте файл в папку KD. Зайдите в каталог "Мини-база кухни", бросьте на сцену первый шкафчик и "извращайтесь" себе на здоровье (при первом броске или при вызове "Мастер") — все изменения будут происходить только на сцене, не затрагивая каталога.
Зайдите в каталог "Мини-база кухни", бросьте на сцену первый шкафчик и "извращайтесь" себе на здоровье (при первом броске или при вызове "Мастер") — все изменения будут происходить только на сцене, не затрагивая каталога.
После установки первого шкафчкика на сцену, открывается "новый" мастер с поддержкой изменения скриптов. Если не ставить новые модули на сцену, и снова открыв Мастер, новые модули на сцену не ставятся. Снимается глюк только после удаления первого. Если не заходить сразу в Мастер, и набросать несколько других модулей, то вроде работает нормально...Хотя щас после нескольких "циклов" работает...
Между прочим, получилось наглядное пособие по написанию скриптов блоков!
Только надо сделать защиту от неправильного применения имен блоков.
---------- Добавлено в 15:12 ---------- Предыдущее сообщение было написано в 15:04 ----------
Цитата:
Сообщение от Yura_Bogoduhov
Если не ставить новые модули на сцену, и снова открыв Мастер, новые модули на сцену не ставятся. Снимается глюк только после удаления первого.
Ничего не понял, у меня никаких глюков нет!
А менять в скрипте пробовали? Например, 2 полки или два ящика?
Если кто изменил неправильно скрипт, то не будет выводиться картинка (ничего страшного) — сам блок можно удалить со сцены через меню Сцена-> Спецификация...