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

Вернуться   Форум профессиональных мебельщиков PROMEBELclub > Программы для мебельщиков > Программы для конструирования и дизайна мебели > Система БАЗИС > Базис-мебельщик. Скрипты

Меню

Маркет


Ответ
 
Опции темы Опции просмотра
Старый 02.10.2021, 17:36  
Базис + AutoHotkey
 
Аватар для Bystry
Bystry
Новичок
Регистрация: 02.11.2018
Сообщений: 16

Сказал(а) спасибо: 5
Поблагодарили 22 раз(а) в 3 сообщениях
Версия для печати Отправить по электронной почте
Bystry Bystry вне форума 02.10.2021, 17:36
Рейтинг: ()

Добрый день.
Предлагаю тут развивать тему скриптов AutoHotkey для базиса

Я ужа давно работаю в мебельщике с помощью PieMeny написанное на AutoHotkey. Ну и пару своих скриптов... Снял пару роликов на эту тему на ютьюбе. Кому интересно оставлю тут ссылочки

и

Интересно может кто-то еще использует AutoHotkey в работе? Хотелось бы посмотреть примеры использования.

Официальный сайт | Русскоязычная документация

Я попробовал выложить на гугл диск актуальную версию из второго видео, но гугл диск почему-то считает этот архив зло пакостным поэтому если кому надо пишите в телеграмме(@BNikitaG) поделюсь

Последний раз редактировалось Uncle; 05.10.2021 в 16:45.. Причина: ссылка на актуальную версию
Просмотров: 59406
Ответить с цитированием Вверх
20 пользователя(ей) сказали cпасибо:
Старый 09.10.2021, 12:02   #31
sergio1982
Местный
 
Регистрация: 01.09.2019
Сообщений: 424
Сказал(а) спасибо: 52
Поблагодарили 480 раз(а) в 147 сообщениях
Вес репутации: 195
sergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царстве
По умолчанию

Цитата:
Сообщение от toucaner Посмотреть сообщение
выбора иконок, настройки путей
В Radial Menu v4 это есть, пользуйтесь.
Цитата:
Сообщение от toucaner Посмотреть сообщение
А написать какой то простейший интерфейс для выбора иконок, настройки путей и тп какая то сложная и не посильная задача, это возможно ?
Задача не тривиальная, на это потребуется много времени. В случае моего кода, следующий этап, это улучшение внешнего вида.

Если вам это очень нужно сейчас, то разобраться в этом на примере создания меню из 8 пунктов:

PHP код:
Menu.Option({name:"Keys"fontstyle"Comic Sans MS"MarkerBorder5SubMenuBorder3    
    
BlockMouse2RightClickClose2ClickNoClose1ClipCursor1SelectedEmpty1ReturnMouse2
    
textcolor:"000000"margin22wside:140hside80col3fontsize16})


Menu.Add(  {text:   "AAAAAA`nBBBBBBB`nCCCCCCCC" 
funcFunc("MsgBox").Bind("MsgBox 1", , 0x420000.6
bckgpic:"D:\Images\Icons&Avatar\ICO\1ICONs=\76.ico"
bckgbckgpic:1
picalign:"Right"
fontsize:12                          
picfill0    
align:"Left" })

Menu.Add(  {text:   "AAAAA`nBBBBBB`nCCCCCCC"
bckgpic:"Shell32.dll"
bckgbckgpic:1
icon32
picalign:"Left"
align:"Right" 
fontsize:12
funcFunc("MsgBox").Bind("MsgBox 2", , 0x420000.6) }) 

Menu.Add(  {text:   "3"
bckgpic:"D:\Images\Icons&Avatar\ICO\1ICONs=\76.ico"
bckgbckgpic:
fontsize64        
funcFunc("MsgBox").Bind("MsgBox 3", , 0x420000.6)})

Menu.Add(  {text:   "4" 
bckgpic:"..\pics\colortexture.jpg"
picfill:1
fontsize:36        
textcolor"ffffff"
funcFunc("MsgBox").Bind("MsgBox 4", , 0x420000.6) })   

Menu.Add(  {startarea1})

Menu.Add({text"Панель"bckgcolor:"389AE8"funcFunc("ToolTip").Bind("")    } )

Menu.Add( {text"Menu"bold:1000 fontsize:24 bckgcolor:"FFDE8B"func"SubMenu:Option"    } )

Menu.Add({text"Показать`nлинии"bckgcolor:"f4f4f4"align:"Center"spam:0funcFunc("ToolTip").Bind("")    })

Menu.Add({text""bckgpic"Shell32.dll"bckgcolor"2A211C"bckgbckgpic0icon269HideAction1funcFunc("ToolTip").Bind("")} )

Menu3 := new Menu() 
для вас какая то сложная и не посильная задача, это возможно ?

Добавлено через 17 минут
Вот ссылка на файл с минимальным кодом. Меню запускается по кнопке "1" и "2". Во всём что после "Class Menu 14:47 06.10.2021" разбираться не надо.
sergio1982 вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
КА2 (10.10.2021)
Старый 14.10.2021, 23:01   #32
sergio1982
Местный
 
Регистрация: 01.09.2019
Сообщений: 424
Сказал(а) спасибо: 52
Поблагодарили 480 раз(а) в 147 сообщениях
Вес репутации: 195
sergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царстве
По умолчанию

Освежу тему популяризации АНК, суть сего - "разное по одной кнопке в зависимости от того что под курсором мыши" и только при условии активности окна Базиса.

Видео


Тут по кнопке F2, если мышь находится над любой из панелей управления - разворачивает или сворачивает её. Если над редактором скриптов - показывает или скрывает его. Если на модели - выделяет (или отменяет выделение) родительский блок (не как при выключенном "Выделение элементов внутри блоков", а именно родительский). Полноэкранный режим по F12.
sergio1982 вне форума   Ответить с цитированием Вверх
3 пользователя(ей) сказали cпасибо:
AlexBolton (30.12.2021), Ovsyanicov (18.10.2021), PravCom (14.10.2021)
Старый 30.12.2021, 11:11   #33
skromvit
Местный
 
Аватар для skromvit
 
Регистрация: 22.12.2008
Сообщений: 256
Сказал(а) спасибо: 55
Поблагодарили 231 раз(а) в 164 сообщениях
Вес репутации: 258
skromvit - весьма и весьма положительная личностьskromvit - весьма и весьма положительная личностьskromvit - весьма и весьма положительная личность
По умолчанию Сдвиг и поворот + F6

Полезный скрипт, для тех кто использует F6.
Подхватывает выделенное вызывая окно смещения.

Autohotkey


PHP код:
#singleInstance force
#ifWinActive БАЗИС-Мебельщик 11 ;здесь название и версия БМ

;--Сдвиг и поворот Сместить курсор--
sc2C sc2D:: ; нажатие сочетания кнопок Z X
Send 
^{sc32}{Enter} ; Ctrl+здесь сочетание горячих клавиш в БМ на Сдвиг и поворот
Sleep 10
Send 
{F6} ; F6 здесь горячая клавиша в БМ на Сместить курсор
Return 
[свернуть]


Если перемещение нужно с шагом стрелками

Autohotkey


PHP код:
#singleInstance force
#ifWinActive БАЗИС-Мебельщик 11 ;здесь название и версия БМ

;--Сдвиг и поворот--
sc2C sc2E:: ; нажатие сочетания кнопок Z С
Send 
^{sc32}{Enter} ; Ctrl+здесь сочетание горячих клавиш в БМ на Сдвиг и поворот
Return 
[свернуть]
skromvit вне форума   Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
AlexBolton (30.12.2021), kostiaarh (30.12.2021)
Старый 30.12.2021, 12:37   #34
sergio1982
Местный
 
Регистрация: 01.09.2019
Сообщений: 424
Сказал(а) спасибо: 52
Поблагодарили 480 раз(а) в 147 сообщениях
Вес репутации: 195
sergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царстве
По умолчанию Замена F6



В данном коде окно вызывается по кнопке F1.
Если кнопку направления выбрать правой кнопкой, то перед смещением будет нажатие Enter, это два последних смещения в видео.
Также удобно с резиновой нитью. Такой способ гарантирует то что перед вызовом окна не будет смещения курсора.
Поддерживает ввод выражений с + - / * ()
Проверено только в 8ке.


14:05 30.12.2021
Добавил поддержку второго монитора.
15:19 30.12.2021
Добавил по F2 пример с "Сдвиг и поворот".

Код

Код:
#SingleInstance Force
#Persistent
#NoEnv  

#If WinActive("ahk_class TFormMain ahk_exe Bazis_.exe") 
F1:: Bazis_Shift.Go()

; по F2 сначала нажимается "Ctrl+M" Сдвиг и поворот, после при выборе правой кнопкой, будет смещение объектов.
F2::  
	SendInput {LCtrl Down}{sc32}{LCtrl Up}    ;  LCtrl + "M"  Сдвиг и поворот
	Bazis_Shift.Go({Escape: 1})  ; Escape - после действия будет нажато Escape
	Return
#If 



class Bazis_Shift
{   
/* 
Singleton - Bazis_Shift 15:14 30.12.2021
https://promebelclub.ru/forum/showthread.php?p=512760#post512760
*/
	Go(com = "") {
		this.hActive := WinExist("A")
		this.MouseMem()
		for k, v in com
			this[k] := v
		If !this.Start
		{ 
			DetectHiddenWindows, On
			this.BSize := 66
			this.Start := 1
			this.Hotkey_Enter := "~RButton Up"
			this.fOnButtonDown := ObjBindMethod(this, "OnButtonDown") 
			this.fDo := ObjBindMethod(this, "Do") 
			this.fExit := ObjBindMethod(this, "Exit")  
			this.fEnter := ObjBindMethod(this, "Enter")   
			Gui, New
			Gui, -Caption +AlwaysOnTop +hwndhGui
			this.hGui := hGui
			Gui, Margin, 0, 0
			Gui, Color, 409BE0
			Gui, Font, % "s" this.BSize // 2
			Gui, Add, Edit, % "Center x0 y0 w" this.BSize * 3 " h" this.BSize " hwndhShift", 100
			this.hShift := hShift
			Gui, Add, Button, % "Center x" this.BSize " y+0 w" this.BSize " h" this.BSize " hwndhUp", % Chr(0x21D1)  
			Gui, Add, Button, Center x0 y+0 wp hp Section hwndhLeft, % Chr(0x21D0)
			Gui, Add, Button, % "Center x+" this.BSize " yp wp hp hwndhRight", % Chr(0x21D2)
			Gui, Add, Button, % "Center xs+" this.BSize " y+0 wp hp hwndhDown", % Chr(0x21D3) 
			this.Dir := {hUp+0:"Up", hLeft+0:"Left", hRight+0:"Right", hDown+0:"Down"}   
			this.GuiControl(this.hGui ": +g", hUp, this.fDo)
			this.GuiControl(this.hGui ": +g", hLeft, this.fDo)  
			this.GuiControl(this.hGui ": +g", hRight, this.fDo)  
			this.GuiControl(this.hGui ": +g", hDown, this.fDo)  
			Gui, New
			Gui, % "+hwndhBlockGui +Owner -Caption +AlwaysOnTop +E" WS_EX_NOACTIVATE := 0x08000000
			this.hBlockGui := hBlockGui
			Gui, Color, 0xffffff
			WinSet, TransParent, 1, ahk_id %hBlockGui%
			WinSet, TransColor, 409BE0, ahk_id %hGui% 
			Gui, % this.hGui ": Show", Hide
			Gui, % this.hBlockGui ": Show", Hide
			WinGetPos, WinX, WinY, WinWidth, WinHeight, % "ahk_id" this.hGui
			this.WinWidth := WinWidth
			this.WinHeight := WinHeight
			DetectHiddenWindows, Off
		}		
		this.Hotkey("Esc", this.fExit, "On")  
		this.Hotkey(this.Hotkey_Enter, this.fEnter, "On") 
		OnMessage(0x201, this.fOnButtonDown)  ; WM_LBUTTONDOWN 
		this.hWin := WinExist("ahk_class TFormMain ahk_exe Bazis_.exe")
		ControlGet, HCB, Hwnd, , TSpTBXComboBox3  ; Это для 8ки
		this.hEdit := this.CB_GetEditControl(HCB) 
		ControlGetText, StartStep, , % "ahk_id " this.hEdit
		this.StartStep := StartStep
		WinGetPos, WinX, WinY, WinWidth, WinHeight, % "ahk_id" this.hActive
		Gui, % this.hBlockGui ": Show", x%WinX% y%WinY% w%WinWidth% h%WinHeight%
		Gui, % this.hGui ": Show", % "x" WinX + WinWidth // 2 - this.WinWidth // 2 "y" WinY + WinHeight // 2 - this.WinHeight // 2
		GuiControl, % this.hGui ": Focus", % this.hShift
		ControlSend, ahk_parent, {LCtrl Down}{A}{LCtrl Up}, % "ahk_id" this.hShift
		WinGetPos, CtrlX, CtrlY, CtrlW, CtrlH, % "ahk_id" this.hGui   
		this.MouseMove(CtrlX + CtrlW // 2, CtrlY + CtrlH // 2 + this.BSize // 2, 0) 
	}

	Do(Dir) {
		Static doc
		BlockInput, On
		OnMessage(0x201, this.fOnButtonDown, 0)  ; WM_LBUTTONDOWN  
		this.Hotkey("Esc", this.fExit, "Off") 
		this.Hotkey(this.Hotkey_Enter, this.fEnter, "Off")
		KeyWait, LButton
		KeyWait, RButton 
		GuiControlGet, Shift , % this.hGui ":", % this.hShift 
		If (Shift + 0 = "")
		{
			If !doc
				doc := ComObjCreate("htmlfile") 
				, doc.write("<meta http-equiv='X-UA-Compatible' content='IE=9'>") 
				, doc.write("<script>with (Math) var math_eval = function (str) {return eval(str);};</script>")
				
			try Shift := doc.parentWindow.math_eval(Shift)
			
			If (Shift + 0 = "")
			{ 
				this.ToolTip("The expression does not supported", 500) 
				this.MouseMove(this.X_Start, this.Y_Start, 2)
				this.Exit() 
				Return
			}  
			this.ToolTip("math eval = " Shift, 1500) 
		}
		this.Bazis_SetStep(Shift, this.hEdit)  
		Dir := this.Dir[Dir]
		 
		Gui, % this.hGui ": Show", Hide
		Gui, % this.hBlockGui ": Show", Hide
		; ControlFocus, TChildControl3D1, % "ahk_id" this.hWin
		; this.MouseMem(1, 2)  
		this.MouseMove(this.X_Start, this.Y_Start, 2)    
		If this.IsEnter {
			Send {Enter}  
			Sleep 300 ; !!!!шаг меньше 6 не работает  
		} 
		Send {%Dir%}  
		Sleep 200
		Send {Enter}
		If this.Escape
		{
			Sleep 155 
			SendInput {sc1}    ;  "Escape"
		}
		this.Bazis_SetStep(this.StartStep, this.hEdit) 
		BlockInput, Off 
		this.IsEnter := 0
	} 
	Enter() { 
		MouseGetPos, , , Window, Control, 2 
		If Bazis_Shift.Dir[Control]
			Return this.IsEnter := 1, this.Do(Control)
	} 
	Exit() { 
		this.IsEnter := 0
		OnMessage(0x201, this.fOnButtonDown, 0)  ; WM_LBUTTONDOWN  
		this.Hotkey("Esc", this.fExit, "Off") 
		this.Hotkey(this.Hotkey_Enter, this.fEnter, "Off") 
		Gui, % this.hGui ": Show", Hide
		Gui, % this.hBlockGui ": Show", Hide
		BlockInput, Off 
	}
	MouseMem(Set = 0, Speed = 0) {
		Static x, y
		S_CoordModeMouse := A_CoordModeMouse
		CoordMode, Mouse, Screen 
		If Set 
			this.MouseMove(x, y, Speed)
		Else  
		{
			MouseGetPos, x, y 
			this.X_Start := x, this.Y_Start := y
		}
		CoordMode, Mouse, %S_CoordModeMouse% 
	} 
	MouseMove(X, Y, s := 1) {  
		CoordMode, Mouse, Screen 
		MouseMove, X, Y, %s%
	}
	OnButtonDown(wParam, lParam, msg, hwnd) { 
		If (hwnd != this.hBlockGui)
			Return 
		Gui, % this.hGui ": +AlwaysOnTop"
		GuiControl, % this.hGui ": Focus", % this.hShift
	}
	Bazis_SetStep(step, Hwnd) {
		ControlSetText, , % step + 0, ahk_id %Hwnd%
		ControlFocus, , ahk_id %Hwnd% 
		ControlSend, , {Enter}, ahk_id %Hwnd%   
		; EM_SETMODIFY := 0xB9
		; SendMessage, EM_SETMODIFY, 1, 0, ahk_id %hEdit% 
	}

	CB_GetEditControl(HCB) {
	   ; HEDIT: Offset = 40 + A_PtrSize, Type = "UPtr"
	   Return this.CB_GetInfo(HCB, CBBI, 40 + A_PtrSize, "UPtr")
	}

	CB_GetInfo(HCB, ByRef CBBI, OffSet := -1, Type := "") {
	   ; CB_GETCOMBOBOXINFO = 0x0164
	   Static SizeOfCBBI := 40 + (A_PtrSize * 3)
	   VarSetCapacity(CBBI, SizeOfCBBI, 0)
	   NumPut(SizeOfCBBI, CBBI, 0, "UInt")
	   SendMessage, 0x0164, 0, &CBBI, , ahk_id %HCB%
	   Return ((ErrorLevel = 0) || (ErrorLevel = "FAIL")) ? False
			  : ((OffSet > 0) && (Type <> "")) ? NumGet(CBBI, Offset, Type)
			  : True
	   ; Return DllCall("User32.dll\GetComboBoxInfo", "Ptr", HCB, "Ptr", &CBBI, "UInt") ? True : False
	}
	Hotkey(HK, Label, Option = "") {
		Hotkey, %HK%, %Label%, %Option%
		Return ErrorLevel
	}
	GuiControl(SubCommand, ControlID = "", Value = "") {  
		GuiControl, % SubCommand, % ControlID, % Value
	}
	ToolTip(text = "", time = 500) {
		DllCall("GetCursorPos", "int64P", pt)
		X := pt << 32 >> 32
		Y := pt >> 32
		ToolTip, %text%, X-10, Y-45, 20
		If time !=
			SetTimer, this_HideToolTip, -%time%
		Return 1

		this_HideToolTip:
			ToolTip, , , , 20
			Return
	}
}
[свернуть]

Последний раз редактировалось sergio1982; 30.12.2021 в 14:21.
sergio1982 вне форума   Ответить с цитированием Вверх
Старый 01.01.2022, 01:36   #35
toucaner
Новичок
 
Регистрация: 15.01.2009
Сообщений: 19
Сказал(а) спасибо: 38
Поблагодарили 7 раз(а) в 6 сообщениях
Вес репутации: 0
toucaner пока не определено
По умолчанию

Последовательность запуска опиши, не рабоатет это. За старания спасибо, копаеш не туда.
toucaner вне форума   Ответить с цитированием Вверх
Старый 01.01.2022, 10:46   #36
sergio1982
Местный
 
Регистрация: 01.09.2019
Сообщений: 424
Сказал(а) спасибо: 52
Поблагодарили 480 раз(а) в 147 сообщениях
Вес репутации: 195
sergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царстве
По умолчанию

Цитата:
Сообщение от toucaner Посмотреть сообщение
Последовательность запуска опиши, не рабоатет это. За старания спасибо, копаеш не туда.
Можно это всё на русский язык перевести, а то совсем ничего непонятно.
sergio1982 вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
Ovsyanicov (04.01.2022)
Старый 16.01.2022, 13:13   #37
Enigmaman
Новичок
 
Регистрация: 07.01.2020
Сообщений: 9
Сказал(а) спасибо: 1
Поблагодарили 1 раз в 1 сообщении
Вес репутации: 0
Enigmaman пока не определено
По умолчанию

Всем привет! Кто разбирается в скриптах для ahk? Вопрос: как выбрать пункт в форме TTreeView (дерево файлов)?
Enigmaman вне форума   Ответить с цитированием Вверх
Старый 16.01.2022, 14:23   #38
sergio1982
Местный
 
Регистрация: 01.09.2019
Сообщений: 424
Сказал(а) спасибо: 52
Поблагодарили 480 раз(а) в 147 сообщениях
Вес репутации: 195
sergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царстве
По умолчанию

ControlSend может отправлять нажатия когда TTreeView видим.

Скрытый текст

PHP код:

1
::
    
SetKeyDelay5050
    DetectHiddenWindows
On 
    WinExist
("ahk_class TDropTreeForm ahk_exe Bazis_.exe")
    
ControlSendTTreeView1, {Home}
    
Sleep 100
    ControlSend
TTreeView1, {Down 3
    
ControlSendTTreeView1, {Enter}  
    Return 
На 8ке у меня периодически отказывается реагировать на нажатия, в том числе и с клавиатуры, точнее при первом нажатии сразу переходит в выделенную после нажатия папку.
[свернуть]


Это если у вас все папки на местах останутся.

Иначе изучать Accessible, она может получить имена всех папок, а также узнать их вложенность. Тогда выбор можно будет задать указанием пути.
sergio1982 вне форума   Ответить с цитированием Вверх
Старый 16.01.2022, 16:26   #39
Enigmaman
Новичок
 
Регистрация: 07.01.2020
Сообщений: 9
Сказал(а) спасибо: 1
Поблагодарили 1 раз в 1 сообщении
Вес репутации: 0
Enigmaman пока не определено
По умолчанию

Спасибо, буду пробовать! И ещё вопрос: можно ли и как организовать переход в папку выбранную ранее?
Enigmaman вне форума   Ответить с цитированием Вверх
Старый 16.01.2022, 16:38   #40
sergio1982
Местный
 
Регистрация: 01.09.2019
Сообщений: 424
Сказал(а) спасибо: 52
Поблагодарили 480 раз(а) в 147 сообщениях
Вес репутации: 195
sergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царствеsergio1982 - луч света в тёмном царстве
По умолчанию

Да, перед тем как выбирать нужный пункт, надо запомнить выбранный.
Он имеет соответствующий State, или с помощью accSelection.

Добавлено через 4 минуты
Вы какими инструментами пользуетесь, для предварительной "разведки" Accessible?
sergio1982 вне форума   Ответить с цитированием Вверх
Ответ

Нижняя навигация
Вернуться   Форум профессиональных мебельщиков PROMEBELclub > Программы для мебельщиков > Программы для конструирования и дизайна мебели > Система БАЗИС > Базис-мебельщик. Скрипты


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Базис-7,"Народный Базис"и Windows-8 sergeyzak18 "НАРОДНЫЙ" базис 23 16.01.2014 00:37


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


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

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