Форум профессиональных мебельщиков PROMEBELclub
 
PROMEBELclub - Форум для мебельщиков: конструкторов, дизайнеров, мастеров, технологов и всех, кто имеет отношение к производству и изготовлению мебели. Программы для конструирования и дизайна мебели. Мебельная литература и обучающие пособия.
 
 

Вернуться   Форум профессиональных мебельщиков PROMEBELclub > Программы для мебельщиков > Программы для конструирования и дизайна мебели > KitchenDraw (KD)

Меню

Маркет


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

Ответ
 
Опции темы Опции просмотра
Старый 04.06.2008, 13:28   #1
KD_RUS
Местный
 
Аватар для KD_RUS
 
Регистрация: 09.01.2008
Сообщений: 479
Сказал(а) спасибо: 121
Поблагодарили 259 раз(а) в 123 сообщениях
Вес репутации: 299
KD_RUS как роза среди колючекKD_RUS как роза среди колючекKD_RUS как роза среди колючек
По умолчанию

Цитата:
Сообщение от kuzma Посмотреть сообщение
Это случайно не то, что прямо в сцене можно открыть скрипт любого блока и с ним поизвращаться, как тебе вздумается? Если да, то немного понятно о чем идет речь. Не понятно провызовы любых функций 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, обходим ограничения.
KD_RUS вне форума   Ответить с цитированием Вверх
Старый 04.06.2008, 13:44   #2
kuzma
Пользователь
 
Аватар для kuzma
 
Регистрация: 08.02.2008
Сообщений: 72
Сказал(а) спасибо: 21
Поблагодарили 25 раз(а) в 14 сообщениях
Вес репутации: 250
kuzma - весьма и весьма положительная личностьkuzma - весьма и весьма положительная личностьkuzma - весьма и весьма положительная личность
По умолчанию

Цитата:
Сообщение от KD_RUS Посмотреть сообщение
Нет. Речь идёт о полноценном скрипте.
Я и имел ввиду полноценный скрипт, просто он изменяется не на уровне каталога, а на уровне сцены. Про Windows всеже не понятно!!!
kuzma вне форума   Ответить с цитированием Вверх
Старый 04.06.2008, 21:35   #3
KD_RUS
Местный
 
Аватар для KD_RUS
 
Регистрация: 09.01.2008
Сообщений: 479
Сказал(а) спасибо: 121
Поблагодарили 259 раз(а) в 123 сообщениях
Вес репутации: 299
KD_RUS как роза среди колючекKD_RUS как роза среди колючекKD_RUS как роза среди колючек
По умолчанию

Цитата:
Сообщение от kuzma Посмотреть сообщение
Я и имел ввиду полноценный скрипт, просто он изменяется не на уровне каталога, а на уровне сцены. Про Windows всеже не понятно!!!
Можно вызывать любые функции Windows. Вводить свои процедуры и т.п. И этот текстовый файл будет исполняться "налету". Компиляции никакой нет.

Формирование выгрузки в xml-файл

Function ZeroFmt(iVal, iLength)
sVal = CStr(iVal)
While Len(sVal) < iLength
sVal = "0" + sVal
Wend
ZeroFmt = sVal
End Function

'==================================== ЧИТАЕМ НАСТРОЙКИ =====================================
strXMLsPath = ""
Set oXMLDoc = CreateObject("MSXML2.DOMDocument.4.0")
oXMLDoc.Load(ProgramDir & "xmlmaker.xml")
oXMLDoc.SetProperty "SelectionLanguage", "XPath"
Set oXMLElem_Path = oXMLDoc.SelectSingleNode("//XMLOutputDir")
strXMLsPath = oXMLElem_Path.Text
Do While InStr(strXMLsPath, "{") > 0
Param = Mid(strXMLsPath, InStr(strXMLsPath, "{")+1, InStr(strXMLsPath, "}") - InStr(strXMLsPath, "{")-1)
strXMLsPath = Replace(strXMLsPath, "{"&Param&"}", Eval(Param))
Loop
strXMLsPath=Replace(strXMLsPath, "\\", "\")

If SDK.Scene.IsLoaded(SessionId) Then

'==================================== СОЗДАЕМ XML-ФАЙЛ =====================================
oXMLDoc.LoadXML("<?xml version=""1.0"" encoding=""utf-8""?><XMLFILE/>")

'=======================================<FILEINFO/>=========================================
Set oXMLElem_FileInfo = oXMLDoc.CreateElement("FILEINFO")
oXMLElem_FileInfo.SetAttribute "Version", 1 ' Версия формата
oXMLElem_FileInfo.SetAttribute "Timestamp", ZeroFmt(Year(Now()),4) & ZeroFmt(Month(Now()),2) _
& ZeroFmt(Day(Now()),2) & ZeroFmt(Hour(Now()),2) & ZeroFmt(Minute(Now()),2) & _
ZeroFmt(Second(Now()),2) ' Дата/время выгрузки
If SDK.Scene.SceneGetKeywordInfo(SessionId, "@Base.SellerName()") <> "" Then
strDesigner = SDK.Scene.SceneGetKeywordInfo(SessionId, "@Base.SellerName()")
Else
strDesigner = SDK.Scene.SceneGetKeywordInfo(SessionId, _
"@Base.SellerIdentifier()")
End If
oXMLElem_FileInfo.SetAttribute "Author", strDesigner ' Дизайнер
Set oNetworkInfo = CreateObject("WScript.Network")
oXMLElem_FileInfo.SetAttribute "Hostname", oNetworkInfo.ComputerName ' Имя компьютера
Set oNetworkInfo = Nothing

oXMLDoc.DocumentElement.AppendChild(oXMLElem_FileI nfo)
Set oXMLElem_FileInfo = Nothing

'=======================================<SCENE/>============================================
Set oXMLElem_Scene = oXMLDoc.CreateElement("SCENE")

'=======================================<CLIENT/>===========================================
Set oXMLElem_Client = oXMLDoc.CreateElement("CLIENT")
oXMLElem_Client.SetAttribute "Company", SDK.Scene.SceneGetKeywordInfo(SessionId, "@Base.CustomerCompany()")
oXMLElem_Client.SetAttribute "LastName", SDK.Scene.SceneGetKeywordInfo(SessionId, "@Base.CustomerName()")
oXMLElem_Client.SetAttribute "FirstName", SDK.Scene.SceneGetKeywordInfo(SessionId, "@Base.CustomerFirstName()")
oXMLElem_Client.SetAttribute "ZIP", SDK.Scene.SceneGetKeywordInfo(SessionId, "@Base.CustomerZIP()")
oXMLElem_Client.SetAttribute "Address1", SDK.Scene.SceneGetKeywordInfo(SessionId, "@Base.CustomerAddress1()")
oXMLElem_Client.SetAttribute "Address2", SDK.Scene.SceneGetKeywordInfo(SessionId, "@Base.CustomerAddress2()")
oXMLElem_Client.SetAttribute "Address3", SDK.Scene.SceneGetKeywordInfo(SessionId, "@Base.CustomerAddress3()")
oXMLElem_Client.SetAttribute "City", SDK.Scene.SceneGetKeywordInfo(SessionId, "@Base.CustomerCity()")
strPhone1 = SDK.Scene.SceneGetKeywordInfo(SessionId, "@Base.CustomerPhone1()")
.......

Ещё куча строк. Смотрите доку по SDK. Всё станет ясно.
KD_RUS вне форума   Ответить с цитированием Вверх
Старый 21.01.2010, 00:08   #4
ViPeS
Модератор
 
Регистрация: 15.12.2009
Сообщений: 1,275
Сказал(а) спасибо: 339
Поблагодарили 1,778 раз(а) в 625 сообщениях
Вес репутации: 719
ViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспорима
По умолчанию

Ладно, начнем ликбез.
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 (синим цветом указана ошибка, допущенная при написании программы).
В результате выполнения программы, по нажатию одной кнопки, во всем каталоге предметы без направления превращаются в предметы с двумя направлениями (см. миниатюры). Какая экономия времени!
Изображения
Тип файла: jpg P1.jpg (41.1 Кб, 61 просмотров)
Тип файла: jpg P2.jpg (43.1 Кб, 63 просмотров)
ViPeS вне форума   Ответить с цитированием Вверх
Старый 22.01.2010, 23:02   #5
ViPeS
Модератор
 
Регистрация: 15.12.2009
Сообщений: 1,275
Сказал(а) спасибо: 339
Поблагодарили 1,778 раз(а) в 625 сообщениях
Вес репутации: 719
ViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспорима
По умолчанию

Продолжение...
Программа, написанная в 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).
Изображения
Тип файла: jpg Order 1.jpg (67.1 Кб, 57 просмотров)
ViPeS вне форума   Ответить с цитированием Вверх
Старый 23.01.2010, 16:38   #6
ViPeS
Модератор
 
Регистрация: 15.12.2009
Сообщений: 1,275
Сказал(а) спасибо: 339
Поблагодарили 1,778 раз(а) в 625 сообщениях
Вес репутации: 719
ViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспорима
По умолчанию

Продолжение...
И третий вид — это "Плагины" (Plugins), которые обсуждались в теме KitchenDraw - plugins.
Цитата:
Сообщение от Влад Степанов;
В общем случае, чтобы использовать Plugin выполните действия:
1) Найти файл Space.ini в рабочей директории KitchenDraw.
2) Если в этом файле нет секции [Plugins] , тогда добавьте ее.
3) В секцию [Plugins] добавьте строку типа: "<НаименованиеФайлаПлагина>=" без кавычек.
...
Например:

[Plugins]
MyPlugin.dll=
При запуске KD этот плагин загрузится и создаст новое меню или новую строчку в меню (подменю). При вызове этого подменю будет выполняться программа, которую вы написали.

Для всех трех случаев необходимо, чтобы ваши библиотеки находились в основной директории KD и были зарегистрированы в ОС.
С теорией покончено.
ViPeS вне форума   Ответить с цитированием Вверх
Старый 26.01.2010, 14:49   #7
ViPeS
Модератор
 
Регистрация: 15.12.2009
Сообщений: 1,275
Сказал(а) спасибо: 339
Поблагодарили 1,778 раз(а) в 625 сообщениях
Вес репутации: 719
ViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспорима
По умолчанию

А теперь приступаем к практике. К сожалению, примеры, приведенные в шапке темы, нерабочие. Но я исправил ошибки в одном из них (одну еще не исправил — не выводится рисунок блока и не работает функция "Открыть", но это дело поправимое).

Цитата:
Сообщение от kuzma Посмотреть сообщение
Это случайно не то, что прямо в сцене можно открыть скрипт любого блока и с ним поизвращаться, как тебе вздумается?
Для всех "извращенцев"!
Распакуйте файл в папку KD. Зайдите в каталог "Мини-база кухни", бросьте на сцену первый шкафчик и "извращайтесь" себе на здоровье (при первом броске или при вызове "Мастер") — все изменения будут происходить только на сцене, не затрагивая каталога.
Вложения
Тип файла: zip sdk_wizard.zip (10.3 Кб, 46 просмотров)
ViPeS вне форума   Ответить с цитированием Вверх
Старый 26.01.2010, 14:59   #8
Yura_Bogoduhov
Модератор
 
Аватар для Yura_Bogoduhov
 
Регистрация: 04.11.2007
Сообщений: 2,224
Сказал(а) спасибо: 751
Поблагодарили 1,544 раз(а) в 546 сообщениях
Вес репутации: 1045
Yura_Bogoduhov репутация неоспоримаYura_Bogoduhov репутация неоспоримаYura_Bogoduhov репутация неоспоримаYura_Bogoduhov репутация неоспоримаYura_Bogoduhov репутация неоспоримаYura_Bogoduhov репутация неоспоримаYura_Bogoduhov репутация неоспоримаYura_Bogoduhov репутация неоспоримаYura_Bogoduhov репутация неоспоримаYura_Bogoduhov репутация неоспоримаYura_Bogoduhov репутация неоспорима
По умолчанию

Цитата:
Сообщение от ViPeS Посмотреть сообщение
Зайдите в каталог "Мини-база кухни", бросьте на сцену первый шкафчик и "извращайтесь" себе на здоровье (при первом броске или при вызове "Мастер") — все изменения будут происходить только на сцене, не затрагивая каталога.
После установки первого шкафчкика на сцену, открывается "новый" мастер с поддержкой изменения скриптов. Если не ставить новые модули на сцену, и снова открыв Мастер, новые модули на сцену не ставятся. Снимается глюк только после удаления первого. Если не заходить сразу в Мастер, и набросать несколько других модулей, то вроде работает нормально...Хотя щас после нескольких "циклов" работает...
Yura_Bogoduhov вне форума   Ответить с цитированием Вверх
Старый 26.01.2010, 16:12   #9
ViPeS
Модератор
 
Регистрация: 15.12.2009
Сообщений: 1,275
Сказал(а) спасибо: 339
Поблагодарили 1,778 раз(а) в 625 сообщениях
Вес репутации: 719
ViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспоримаViPeS репутация неоспорима
По умолчанию

Между прочим, получилось наглядное пособие по написанию скриптов блоков!
Только надо сделать защиту от неправильного применения имен блоков.

---------- Добавлено в 15:12 ---------- Предыдущее сообщение было написано в 15:04 ----------

Цитата:
Сообщение от Yura_Bogoduhov Посмотреть сообщение
Если не ставить новые модули на сцену, и снова открыв Мастер, новые модули на сцену не ставятся. Снимается глюк только после удаления первого.
Ничего не понял, у меня никаких глюков нет!
А менять в скрипте пробовали? Например, 2 полки или два ящика?

Если кто изменил неправильно скрипт, то не будет выводиться картинка (ничего страшного) — сам блок можно удалить со сцены через меню Сцена-> Спецификация...
ViPeS вне форума   Ответить с цитированием Вверх
Старый 26.01.2010, 16:56   #10
Yura_Bogoduhov
Модератор
 
Аватар для Yura_Bogoduhov
 
Регистрация: 04.11.2007
Сообщений: 2,224
Сказал(а) спасибо: 751
Поблагодарили 1,544 раз(а) в 546 сообщениях
Вес репутации: 1045
Yura_Bogoduhov репутация неоспоримаYura_Bogoduhov репутация неоспоримаYura_Bogoduhov репутация неоспоримаYura_Bogoduhov репутация неоспоримаYura_Bogoduhov репутация неоспоримаYura_Bogoduhov репутация неоспоримаYura_Bogoduhov репутация неоспоримаYura_Bogoduhov репутация неоспоримаYura_Bogoduhov репутация неоспоримаYura_Bogoduhov репутация неоспоримаYura_Bogoduhov репутация неоспорима
По умолчанию

Цитата:
Сообщение от ViPeS Посмотреть сообщение
Ничего не понял, у меня никаких глюков нет!
А менять в скрипте пробовали? Например, 2 полки или два ящика?
Сейчас их нет...Полки менял. Нормально)) Вот тока нельзя ли при установке модуля не показывать окно мастера?
Yura_Bogoduhov вне форума   Ответить с цитированием Вверх
Ответ

Нижняя навигация
Вернуться   Форум профессиональных мебельщиков PROMEBELclub > Программы для мебельщиков > Программы для конструирования и дизайна мебели > KitchenDraw (KD)


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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
KitchenDraw 5.0 видеоуроки Yura_Bogoduhov KitchenDraw (KD) 135 31.01.2024 17:25
Как и где используем KitchenDraw Alex989 KitchenDraw (KD) 115 18.10.2013 17:37
KitchenDraw 5.5 Vims KitchenDraw (KD) 41 11.01.2013 22:09
KitchenDraw Construktor KitchenDraw (KD) 44 20.01.2008 11:00


Текущее время: 19:32. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
© 2007-2023 PROMEBEL

џндекс.Њетрика