Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Общие темы > Работа

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

Ответ
 
Опции темы
Старый 11.03.2016, 18:32   #1
DarkInside
Разработчик
 
Аватар для DarkInside
 
Регистрация: 07.08.2011
Сообщений: 504
Написано 190 полезных сообщений
(для 368 пользователей)
Работа в стартапе

Интересно, а остались еще люди, готовые работать на энтузиазме? Есть парочка нишевых стартапов.

1) Первый проект уже был доведен до релиза и зарабатывал деньги. Но потом рынок изменился, проект стал неактуален и теперь либо каждые пол года писать такую программу, либо взять выше и писать систему для быстрой генерации таких программ. Склоняюсь ко второму варианту. Не откажусь от помощи, естественно, не за еду, а за процент.
Вкратце это экспертная система для автоматизации работы проектировщика - генерит чертежи AutoCAD и документацию к ним. Чертежи генерит скрипт на питоне, который надо допиливать. Документацию генерят скрипты AutoIT (тут проблем нет). Расчетный движок на блиц3д.
Самое простое для меня - это формулировать задание следующим образом: нужна функция, у которой на входе такие-то данные, на выходе должны быть такие-то данные. Без объяснения, для чего это надо и как оно будет интегрировано в проект. Грубо говоря, библиотека из функций, которые я мог бы самостоятельно собирать. И без разницы, на чем они, в принципе, написаны. В виде dll или в виде скриптов пайтон.

2) Второй проект более массовый, попроще и пока на стадии идеи. Тут не отказался бы от помощи по дизайну приложения (концепции, картинок и т.д.). То есть нужны свободные художники.

Последний раз редактировалось DarkInside, 12.03.2016 в 13:42.
(Offline)
 
Ответить с цитированием
Старый 11.03.2016, 19:33   #2
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,156
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Работа в стартапе

Забудь про Блитз, нужно хотя бы на тот же питон переписать.
На питон кстати можно все переписать, досканально, коль уже на нем есть генератор.

Я бы смог на питон переписать блитзовский проект, если он за собой не тянет 3d (Хотя есть же Coccos на этот случай)
Хотя кстати и генератор документации на питон не так сложно переписать с AutoIt.
Если это так востребовано, то можно поднять потом сервер, с питоном это не сложно будет
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 11.03.2016, 19:57   #3
DarkInside
Разработчик
 
Аватар для DarkInside
 
Регистрация: 07.08.2011
Сообщений: 504
Написано 190 полезных сообщений
(для 368 пользователей)
Ответ: Работа в стартапе

Сообщение от RegIon Посмотреть сообщение
Забудь про Блитз, нужно хотя бы на тот же питон переписать.
На питон кстати можно все переписать, досканально, коль уже на нем есть генератор.

Я бы смог на питон переписать блитзовский проект, если он за собой не тянет 3d (Хотя есть же Coccos на этот случай)
Хотя кстати и генератор документации на питон не так сложно переписать с AutoIt.
Если это так востребовано, то можно поднять потом сервер, с питоном это не сложно будет
Я то это понимаю. Но в питоне я слишком слаб, только начал изучать. Просто нашел готовую библиотеку на питоне для экспорта в автокад и разобрался, как генерить описание чертежей для этой библиотеки. Но с ней есть проблемы, отсутствуют типы линий (основная, тонкая, штрих-пунктирная и т.д.), у меня сейчас генерится всё тонкими линиями, нужно разобраться в структуре DXF-файла и добавить основную линию. Хотя, может она и есть уже в этой библиотеке, просто я чего-то не понимаю.
Блиц я знаю очень давно, мне в нем проще по-быстрому изложить всю логику, питон еще учить и учить. В AutoIT там совсем немного кода - функции для работы с вордом скомпилированы в экзешники и вызываются из блица. Вот по поводу перевода кода на питон, там логика довольно сложная...переводить, думаю, куча времени уйдет...вот пример нескольких функций на блице (примерно в таком стиле 20 тыс. строк):
В принципе я только за, если весь код будет на питоне, но как-то это надо организовать...
Function perebor()

For i = 1 To kol_objects_mode
	
	If kat_mode$(i) = "III" And Float(s_p_mode$ (i)) <= 660 Then
		
		If Float(s_p_mode$ (i)) <= 330 Then
			rp_kol = rp_kol + 1
			rp_ini (rp_kol) = i
			p_p_rp$ (rp_kol) = p_p_mode$ (i)
			q_p_rp$ (rp_kol) = q_p_mode$ (i)
			s_p_rp$ (rp_kol) = s_p_mode$ (i)
		Else
			rp_kol = rp_kol + 1
			rp_ini (rp_kol) = i
			p_p_rp$ (rp_kol) = Str(Float (p_p_mode$ (i)) / 2)
			q_p_rp$ (rp_kol) = Str(Float (q_p_mode$ (i)) / 2)
			s_p_rp$ (rp_kol) = Str(Float (s_p_mode$ (i)) / 2)
			
			rp_kol = rp_kol + 1
			rp_ini (rp_kol) = i
			p_p_rp$ (rp_kol) = Str(Float (p_p_mode$ (i)) / 2)
			q_p_rp$ (rp_kol) = Str(Float (q_p_mode$ (i)) / 2)
			s_p_rp$ (rp_kol) = Str(Float (s_p_mode$ (i)) / 2)
		EndIf
	EndIf
	
Next

For tp_1 = 1 To kol_objects_mode
	
	If kat_mode$(tp_1) <> "III" Then
		
		For tp_2 = 0 To kol_objects_mode
			
			If (kat_mode$(tp_2) = "II" And tp_2 <> tp_1) Or tp_2 = 0 Then
				
				n% = rp_kol
				
				end_str$ = ""
				str_t$ = ""
				a_dec = 0
				
				For i = 1 To n%
					end_str$ = end_str$ + "1"
				Next
				
				While str_t$ <> end_str$
					
					str_t$ = Bin$(a_dec)
					
					If Len(str_t$) > n% Then
						str_t$ = Right (str_t$, n%)
					ElseIf Len(str_t$) < n% 
						While Len(str_t$) < n%
							str_t$ = "0" + str_t$
						Wend
					EndIf
					
					rp_str$ = ""
					add_kol = 0
					
					For i = 1 To n%
						add_ini$ = Mid$ (str_t$, i, 1)
						If add_ini$ = 1 Then 
							add_kol = add_kol + 1
							If add_kol > 4 Then 
								Exit
							Else
								rp_str$ = rp_str$ + Str(i) + "+"
							EndIf
						EndIf
						
					Next
					
					If add_kol <= 4 Then
						
						If rp_str$ <> "" Then 
							rp_str$ = Left (rp_str$, Len(rp_str$) - 1)
						EndIf
						
						If Instr(rp_str$, "+") <> 0 Then 
							rp_1 = Int(Left (rp_str$, Instr(rp_str$, "+") - 1))
							rp_str$ = Right (rp_str$, Len(rp_str$) - Instr(rp_str$, "+"))
						Else
							rp_1 = Int(rp_str$)
							rp_str$ = ""
						EndIf
						
						If Instr(rp_str$, "+") <> 0 Then 
							rp_2 = Int(Left (rp_str$, Instr(rp_str$, "+") - 1))
							rp_str$ = Right (rp_str$, Len(rp_str$) - Instr(rp_str$, "+"))
						Else
							rp_2 = Int(rp_str$)
							rp_str$ = ""
						EndIf
						
						If Instr(rp_str$, "+") <> 0 Then 
							rp_3 = Int(Left (rp_str$, Instr(rp_str$, "+") - 1))
							rp_str$ = Right (rp_str$, Len(rp_str$) - Instr(rp_str$, "+"))
						Else
							rp_3 = Int(rp_str$)
							rp_str$ = ""
						EndIf
						
						If Instr(rp_str$, "+") <> 0 Then 
							rp_4 = Int(Left (rp_str$, Instr(rp_str$, "+") - 1))
							rp_str$ = Right (rp_str$, Len(rp_str$) - Instr(rp_str$, "+"))
						Else
							rp_4 = Int(rp_str$)
							rp_str$ = ""
						EndIf
						
						calc_k (tp_1, tp_2, rp_1, rp_2, rp_3, rp_4)
						
						tp_rep_kol = tp_rep_kol + 1
						
					EndIf
					
					a_dec = a_dec + 1
					
				Wend
				
			EndIf
			
		Next
		
	ElseIf kat_mode$(tp_1) = "III" Then
		
		n% = rp_kol
		
		end_str$ = ""
		str_t$ = ""
		a_dec = 0
		
		For i = 1 To n%
			end_str$ = end_str$ + "1"
		Next
		
		While str_t$ <> end_str$
			
			str_t$ = Bin$(a_dec)
			
			If Len(str_t$) > n% Then
				str_t$ = Right (str_t$, n%)
			ElseIf Len(str_t$) < n% 
				While Len(str_t$) < n%
					str_t$ = "0" + str_t$
				Wend
			EndIf
			
			rp_str$ = ""
			add_kol = 0
			
			For i = 1 To n%
				add_ini$ = Mid$ (str_t$, i, 1)
				If add_ini$ = 1 Then 
					add_kol = add_kol + 1
					If add_kol > 4 Then 
						Exit
					Else
						rp_str$ = rp_str$ + Str(i) + "+"
					EndIf
				EndIf
				
			Next
			
			If add_kol <= 4 Then
				
				If rp_str$ <> "" Then 
					rp_str$ = Left (rp_str$, Len(rp_str$) - 1)
				EndIf
				
				If Instr(rp_str$, "+") <> 0 Then 
					rp_1 = Int(Left (rp_str$, Instr(rp_str$, "+") - 1))
					rp_str$ = Right (rp_str$, Len(rp_str$) - Instr(rp_str$, "+"))
				Else
					rp_1 = Int(rp_str$)
					rp_str$ = ""
				EndIf
				
				If Instr(rp_str$, "+") <> 0 Then 
					rp_2 = Int(Left (rp_str$, Instr(rp_str$, "+") - 1))
					rp_str$ = Right (rp_str$, Len(rp_str$) - Instr(rp_str$, "+"))
				Else
					rp_2 = Int(rp_str$)
					rp_str$ = ""
				EndIf
				
				If Instr(rp_str$, "+") <> 0 Then 
					rp_3 = Int(Left (rp_str$, Instr(rp_str$, "+") - 1))
					rp_str$ = Right (rp_str$, Len(rp_str$) - Instr(rp_str$, "+"))
				Else
					rp_3 = Int(rp_str$)
					rp_str$ = ""
				EndIf
				
				If Instr(rp_str$, "+") <> 0 Then 
					rp_4 = Int(Left (rp_str$, Instr(rp_str$, "+") - 1))
					rp_str$ = Right (rp_str$, Len(rp_str$) - Instr(rp_str$, "+"))
				Else
					rp_4 = Int(rp_str$)
					rp_str$ = ""
				EndIf
				
				If rp_ini(rp_1) <> tp_1 And rp_ini(rp_2) <> tp_1 And rp_ini(rp_3) <> tp_1 And rp_ini(rp_4) <> tp_1 Then
					calc_k (tp_1, 0, rp_1, rp_2, rp_3, rp_4)
					
					tp_rep_kol = tp_rep_kol + 1
					
				EndIf
				
			EndIf
			
			a_dec = a_dec + 1
			
		Wend
		
	EndIf
	
Next

End Function

Function calc_k(tp_1, tp_2 = 0, rp_1 = 0, rp_2 = 0, rp_3 = 0, rp_4 = 0) 
	
	; tp_2 ТОЛЬКО II категории
	; К одному цеху I, II или III(с ТП -выше 660 кВА) категории подключаем от 0 до 4 РП и резервируемый цех II категории
	
	If kat_mode$(tp_1) = "I" Then
		For n_tr_1 = 2 To 2; Step 2
			s_nom_tr = kz_TP_ini (tp_1, tp_2, rp_1, rp_2, rp_3, rp_4, n_tr_1, 0.7, 0.75)
			If s_nom_tr > 0 Then
				
				If tp_2 > 0 Then
					
					kol_var_II = kz_TP_2_ini (tp_1, n_tr_1, tp_2, rp_1, rp_2, rp_3, rp_4, 0.75, 0.8)
					
					If kol_var_II > 0 Then
						
						For i = 1 To kol_var_II
							
							rp_1_ini = 1
							rp_2_ini = 1
							rp_3_ini = 1
							rp_4_ini = 1
							
							rp_1_t = 0
							rp_2_t = 0
							rp_3_t = 0
							rp_4_t = 0
							
							If rp_1 > 0 And rp_1 <> rp_1_kz_TP_2_ADD_return (i) And rp_1 <> rp_2_kz_TP_2_ADD_return (i) And rp_1 <> rp_3_kz_TP_2_ADD_return (i) And rp_1 <> rp_4_kz_TP_2_ADD_return (i) And rp_1 <> rp_1_kz_TP_2_ini_return (i) And rp_1 <> rp_2_kz_TP_2_ini_return (i) And rp_1 <> rp_3_kz_TP_2_ini_return (i) And rp_1 <> rp_4_kz_TP_2_ini_return (i) Then rp_1_ini = 0
							If rp_2 > 0 And rp_2 <> rp_1_kz_TP_2_ADD_return (i) And rp_2 <> rp_2_kz_TP_2_ADD_return (i) And rp_2 <> rp_3_kz_TP_2_ADD_return (i) And rp_2 <> rp_4_kz_TP_2_ADD_return (i) And rp_2 <> rp_1_kz_TP_2_ini_return (i) And rp_2 <> rp_2_kz_TP_2_ini_return (i) And rp_2 <> rp_3_kz_TP_2_ini_return (i) And rp_2 <> rp_4_kz_TP_2_ini_return (i) Then rp_2_ini = 0
							If rp_3 > 0 And rp_3 <> rp_1_kz_TP_2_ADD_return (i) And rp_3 <> rp_2_kz_TP_2_ADD_return (i) And rp_3 <> rp_3_kz_TP_2_ADD_return (i) And rp_3 <> rp_4_kz_TP_2_ADD_return (i) And rp_3 <> rp_1_kz_TP_2_ini_return (i) And rp_3 <> rp_2_kz_TP_2_ini_return (i) And rp_3 <> rp_3_kz_TP_2_ini_return (i) And rp_3 <> rp_4_kz_TP_2_ini_return (i) Then rp_3_ini = 0
							If rp_4 > 0 And rp_4 <> rp_1_kz_TP_2_ADD_return (i) And rp_4 <> rp_2_kz_TP_2_ADD_return (i) And rp_4 <> rp_3_kz_TP_2_ADD_return (i) And rp_4 <> rp_4_kz_TP_2_ADD_return (i) And rp_4 <> rp_1_kz_TP_2_ini_return (i) And rp_4 <> rp_2_kz_TP_2_ini_return (i) And rp_4 <> rp_3_kz_TP_2_ini_return (i) And rp_4 <> rp_4_kz_TP_2_ini_return (i) Then rp_4_ini = 0
							
							If rp_1_ini = 0 Then
								If rp_to_TP (tp_1, rp_1, Float(s_p_rp$(rp_1))) = 1 Then 
									rp_1_ini = 1
									rp_1_t = rp_1
								EndIf
							EndIf
							
							If rp_2_ini = 0 Then
								If rp_to_TP (tp_1, rp_2, Float(s_p_rp$(rp_2))) = 1 Then 
									rp_2_ini = 1
									rp_2_t = rp_2
								EndIf
							EndIf
							
							If rp_3_ini = 0 Then
								If rp_to_TP (tp_1, rp_3, Float(s_p_rp$(rp_3))) = 1 Then 
									rp_3_ini = 1
									rp_3_t = rp_3
								EndIf
							EndIf
							
							If rp_4_ini = 0 Then
								If rp_to_TP (tp_1, rp_4, Float(s_p_rp$(rp_4))) = 1 Then 
									rp_4_ini = 1
									rp_4_t = rp_4
								EndIf
							EndIf
							
							If rp_1_ini = 1 And rp_2_ini = 1 And rp_3_ini = 1 And rp_4_ini = 1 Then
								
								w_add  = w_add + 1
								
								tp_1_rep(w_add) = tp_1
								n_tr_rep_1 (w_add) = n_tr_1
								s_tr_rep_1 (w_add) = s_nom_tr
								tp_2_rep(w_add) = tp_2
								
								n = step_over (rp_1_t, rp_2_t, rp_3_t, rp_4_t)
								
								For z = 1 To n
									If z = 1 Then rp_1_rep_1(w_add) = rp_add_hz_III(z)
									If z = 2 Then rp_2_rep_1(w_add) = rp_add_hz_III(z)
									If z = 3 Then rp_3_rep_1(w_add) = rp_add_hz_III(z)
									If z = 4 Then rp_4_rep_1(w_add) = rp_add_hz_III(z)
								Next
								
								n = step_over (rp_1_kz_TP_2_ini_return(i), rp_2_kz_TP_2_ini_return(i), rp_3_kz_TP_2_ini_return(i), rp_4_kz_TP_2_ini_return(i))
								
								For z = 1 To n
									If z = 1 Then rp_1_rep_2(w_add) = rp_add_hz_III(z)
									If z = 2 Then rp_2_rep_2(w_add) = rp_add_hz_III(z)
									If z = 3 Then rp_3_rep_2(w_add) = rp_add_hz_III(z)
									If z = 4 Then rp_4_rep_2(w_add) = rp_add_hz_III(z)
								Next
								
								n = step_over (rp_1_kz_TP_2_ADD_return(i), rp_2_kz_TP_2_ADD_return(i), rp_3_kz_TP_2_ADD_return(i), rp_4_kz_TP_2_ADD_return(i))
								
								For z = 1 To n
									If z = 1 Then rp_1_addable_rep_2(w_add) = rp_add_hz_III(z)
									If z = 2 Then rp_2_added_rep_2(w_add) = rp_add_hz_III(z)
									If z = 3 Then rp_3_added_rep_2(w_add) = rp_add_hz_III(z)
									If z = 4 Then rp_4_added_rep_2(w_add) = rp_add_hz_III(z)
								Next
								
							EndIf
							
							TP_1_over_write (tp_1, n_tr_1, s_nom_tr, rp_1_t, rp_2_t, rp_3_t, rp_4_t, tp_2, rp_1_kz_TP_2_ini_return (i), rp_2_kz_TP_2_ini_return (i), rp_3_kz_TP_2_ini_return (i), rp_4_kz_TP_2_ini_return (i), rp_1_kz_TP_2_ADD_return (i), rp_2_kz_TP_2_ADD_return (i), rp_3_kz_TP_2_ADD_return (i), rp_4_kz_TP_2_ADD_return (i))
							
						Next	
						
					EndIf
					
				ElseIf tp_2 = 0 Then
					
					rp_1_ini = 1
					rp_2_ini = 1
					rp_3_ini = 1
					rp_4_ini = 1
					
					If rp_1 > 0 And rp_to_TP (tp_1, rp_1, Float(s_p_rp$(rp_1))) = 0 Then rp_1_ini = 0
					If rp_2 > 0 And rp_to_TP (tp_1, rp_2, Float(s_p_rp$(rp_2))) = 0 Then rp_2_ini = 0
					If rp_3 > 0 And rp_to_TP (tp_1, rp_3, Float(s_p_rp$(rp_3))) = 0 Then rp_3_ini = 0
					If rp_4 > 0 And rp_to_TP (tp_1, rp_4, Float(s_p_rp$(rp_4))) = 0 Then rp_4_ini = 0
					
					If rp_1_ini = 1 And rp_2_ini = 1 And rp_3_ini = 1 And rp_4_ini = 1 Then
						
						w_add  = w_add + 1
						
						tp_1_rep(w_add) = tp_1
						n_tr_rep_1 (w_add) = n_tr_1
						s_tr_rep_1 (w_add) = s_nom_tr
						
						n = step_over (rp_1, rp_2, rp_3, rp_4)
						
						For z = 1 To n
							If z = 1 Then rp_1_rep_1(w_add) = rp_add_hz_III(z)
							If z = 2 Then rp_2_rep_1(w_add) = rp_add_hz_III(z)
							If z = 3 Then rp_3_rep_1(w_add) = rp_add_hz_III(z)
							If z = 4 Then rp_4_rep_1(w_add) = rp_add_hz_III(z)
						Next
						
					EndIf
					
					TP_1_over_write (tp_1, n_tr_1, s_nom_tr, rp_1, rp_2, rp_3, rp_4)
					
				EndIf
				
			EndIf
		Next
	ElseIf kat_mode$(tp_1) = "II" Then
		If tp_2 > 0 Then
			For n_tr_1 = 1 To 2
				s_nom_tr = kz_TP_ini (tp_1, tp_2, rp_1, rp_2, rp_3, rp_4, n_tr_1, 0.75, 0.8)
				If s_nom_tr > 0 Then
					
					kol_var_II = kz_TP_2_ini (tp_1, n_tr_1, tp_2, rp_1, rp_2, rp_3, rp_4, 0.75, 0.8)
					
					If kol_var_II > 0 Then
						
						For i = 1 To kol_var_II
							
							rp_1_ini = 1
							rp_2_ini = 1
							rp_3_ini = 1
							rp_4_ini = 1
							
							rp_1_t = 0
							rp_2_t = 0
							rp_3_t = 0
							rp_4_t = 0
							
							If rp_1 > 0 And rp_1 <> rp_1_kz_TP_2_ADD_return (i) And rp_1 <> rp_2_kz_TP_2_ADD_return (i) And rp_1 <> rp_3_kz_TP_2_ADD_return (i) And rp_1 <> rp_4_kz_TP_2_ADD_return (i) And rp_1 <> rp_1_kz_TP_2_ini_return (i) And rp_1 <> rp_2_kz_TP_2_ini_return (i) And rp_1 <> rp_3_kz_TP_2_ini_return (i) And rp_1 <> rp_4_kz_TP_2_ini_return (i) Then rp_1_ini = 0
							If rp_2 > 0 And rp_2 <> rp_1_kz_TP_2_ADD_return (i) And rp_2 <> rp_2_kz_TP_2_ADD_return (i) And rp_2 <> rp_3_kz_TP_2_ADD_return (i) And rp_2 <> rp_4_kz_TP_2_ADD_return (i) And rp_2 <> rp_1_kz_TP_2_ini_return (i) And rp_2 <> rp_2_kz_TP_2_ini_return (i) And rp_2 <> rp_3_kz_TP_2_ini_return (i) And rp_2 <> rp_4_kz_TP_2_ini_return (i) Then rp_2_ini = 0
							If rp_3 > 0 And rp_3 <> rp_1_kz_TP_2_ADD_return (i) And rp_3 <> rp_2_kz_TP_2_ADD_return (i) And rp_3 <> rp_3_kz_TP_2_ADD_return (i) And rp_3 <> rp_4_kz_TP_2_ADD_return (i) And rp_3 <> rp_1_kz_TP_2_ini_return (i) And rp_3 <> rp_2_kz_TP_2_ini_return (i) And rp_3 <> rp_3_kz_TP_2_ini_return (i) And rp_3 <> rp_4_kz_TP_2_ini_return (i) Then rp_3_ini = 0
							If rp_4 > 0 And rp_4 <> rp_1_kz_TP_2_ADD_return (i) And rp_4 <> rp_2_kz_TP_2_ADD_return (i) And rp_4 <> rp_3_kz_TP_2_ADD_return (i) And rp_4 <> rp_4_kz_TP_2_ADD_return (i) And rp_4 <> rp_1_kz_TP_2_ini_return (i) And rp_4 <> rp_2_kz_TP_2_ini_return (i) And rp_4 <> rp_3_kz_TP_2_ini_return (i) And rp_4 <> rp_4_kz_TP_2_ini_return (i) Then rp_4_ini = 0
							
							If rp_1_ini = 0 Then
								If rp_to_TP (tp_1, rp_1, Float(s_p_rp$(rp_1))) = 1 Then 
									rp_1_ini = 1
									rp_1_t = rp_1
								EndIf
							EndIf
							
							If rp_2_ini = 0 Then
								If rp_to_TP (tp_1, rp_2, Float(s_p_rp$(rp_2))) = 1 Then 
									rp_2_ini = 1
									rp_2_t = rp_2
								EndIf
							EndIf
							
							If rp_3_ini = 0 Then
								If rp_to_TP (tp_1, rp_3, Float(s_p_rp$(rp_3))) = 1 Then 
									rp_3_ini = 1
									rp_3_t = rp_3
								EndIf
							EndIf
							
							If rp_4_ini = 0 Then
								If rp_to_TP (tp_1, rp_4, Float(s_p_rp$(rp_4))) = 1 Then 
									rp_4_ini = 1
									rp_4_t = rp_4
								EndIf
							EndIf
							
							If rp_1_ini = 1 And rp_2_ini = 1 And rp_3_ini = 1 And rp_4_ini = 1 Then
								
								w_add  = w_add + 1
								
								tp_1_rep(w_add) = tp_1
								n_tr_rep_1 (w_add) = n_tr_1
								s_tr_rep_1 (w_add) = s_nom_tr
								tp_2_rep(w_add) = tp_2
								
								n = step_over (rp_1_t, rp_2_t, rp_3_t, rp_4_t)
								
								For z = 1 To n
									If z = 1 Then rp_1_rep_1(w_add) = rp_add_hz_III(z)
									If z = 2 Then rp_2_rep_1(w_add) = rp_add_hz_III(z)
									If z = 3 Then rp_3_rep_1(w_add) = rp_add_hz_III(z)
									If z = 4 Then rp_4_rep_1(w_add) = rp_add_hz_III(z)
								Next
								
								n = step_over (rp_1_kz_TP_2_ini_return(i), rp_2_kz_TP_2_ini_return(i), rp_3_kz_TP_2_ini_return(i), rp_4_kz_TP_2_ini_return(i))
								
								For z = 1 To n
									If z = 1 Then rp_1_rep_2(w_add) = rp_add_hz_III(z)
									If z = 2 Then rp_2_rep_2(w_add) = rp_add_hz_III(z)
									If z = 3 Then rp_3_rep_2(w_add) = rp_add_hz_III(z)
									If z = 4 Then rp_4_rep_2(w_add) = rp_add_hz_III(z)
								Next
								
								n = step_over (rp_1_kz_TP_2_ADD_return(i), rp_2_kz_TP_2_ADD_return(i), rp_3_kz_TP_2_ADD_return(i), rp_4_kz_TP_2_ADD_return(i))
								
								For z = 1 To n
									If z = 1 Then rp_1_addable_rep_2(w_add) = rp_add_hz_III(z)
									If z = 2 Then rp_2_added_rep_2(w_add) = rp_add_hz_III(z)
									If z = 3 Then rp_3_added_rep_2(w_add) = rp_add_hz_III(z)
									If z = 4 Then rp_4_added_rep_2(w_add) = rp_add_hz_III(z)
								Next
								
							EndIf
							
							TP_1_over_write (tp_1, n_tr_1, s_nom_tr, rp_1_t, rp_2_t, rp_3_t, rp_4_t, tp_2, rp_1_kz_TP_2_ini_return (i), rp_2_kz_TP_2_ini_return (i), rp_3_kz_TP_2_ini_return (i), rp_4_kz_TP_2_ini_return (i), rp_1_kz_TP_2_ADD_return (i), rp_2_kz_TP_2_ADD_return (i), rp_3_kz_TP_2_ADD_return (i), rp_4_kz_TP_2_ADD_return (i))
							
						Next	
						
					EndIf
					
				EndIf
			Next
			
		ElseIf tp_2 = 0 Then
			
			For n_tr_1 = 2 To 2; Step 2
				s_nom_tr = kz_TP_ini (tp_1, tp_2, rp_1, rp_2, rp_3, rp_4, n_tr_1, 0.75, 0.8)
				If s_nom_tr > 0 Then
					
					rp_1_ini = 1
					rp_2_ini = 1
					rp_3_ini = 1
					rp_4_ini = 1
					
					If rp_1 > 0 And rp_to_TP (tp_1, rp_1, Float(s_p_rp$(rp_1))) = 0 Then rp_1_ini = 0
					If rp_2 > 0 And rp_to_TP (tp_1, rp_2, Float(s_p_rp$(rp_2))) = 0 Then rp_2_ini = 0
					If rp_3 > 0 And rp_to_TP (tp_1, rp_3, Float(s_p_rp$(rp_3))) = 0 Then rp_3_ini = 0
					If rp_4 > 0 And rp_to_TP (tp_1, rp_4, Float(s_p_rp$(rp_4))) = 0 Then rp_4_ini = 0
					
					If rp_1_ini = 1 And rp_2_ini = 1 And rp_3_ini = 1 And rp_4_ini = 1 Then
						
						w_add  = w_add + 1
						
						tp_1_rep(w_add) = tp_1
						n_tr_rep_1 (w_add) = n_tr_1
						s_tr_rep_1 (w_add) = s_nom_tr
						
						n = step_over (rp_1, rp_2, rp_3, rp_4)
						
						For z = 1 To n
							If z = 1 Then rp_1_rep_1(w_add) = rp_add_hz_III(z)
							If z = 2 Then rp_2_rep_1(w_add) = rp_add_hz_III(z)
							If z = 3 Then rp_3_rep_1(w_add) = rp_add_hz_III(z)
							If z = 4 Then rp_4_rep_1(w_add) = rp_add_hz_III(z)
						Next
						
					EndIf
					
					TP_1_over_write (tp_1, n_tr_1, s_nom_tr, rp_1, rp_2, rp_3, rp_4)
					
				EndIf
			Next
		EndIf
		
	ElseIf kat_mode$(tp_1) = "III" Then
		
		For n_tr_1 = 1 To 2
			s_nom_tr = kz_TP_ini (tp_1, tp_2, rp_1, rp_2, rp_3, rp_4, n_tr_1, 0.8, 0.9)
			If s_nom_tr > 0 Then
				
				rp_1_ini = 1
				rp_2_ini = 1
				rp_3_ini = 1
				rp_4_ini = 1
				
				If rp_1 > 0 And rp_to_TP (tp_1, rp_1, Float(s_p_rp$(rp_1))) = 0 Then rp_1_ini = 0
				If rp_2 > 0 And rp_to_TP (tp_1, rp_2, Float(s_p_rp$(rp_2))) = 0 Then rp_2_ini = 0
				If rp_3 > 0 And rp_to_TP (tp_1, rp_3, Float(s_p_rp$(rp_3))) = 0 Then rp_3_ini = 0
				If rp_4 > 0 And rp_to_TP (tp_1, rp_4, Float(s_p_rp$(rp_4))) = 0 Then rp_4_ini = 0
				
				If rp_1_ini = 1 And rp_2_ini = 1 And rp_3_ini = 1 And rp_4_ini = 1 Then
					
					w_add  = w_add + 1
					
					tp_1_rep(w_add) = tp_1
					n_tr_rep_1 (w_add) = n_tr_1
					s_tr_rep_1 (w_add) = s_nom_tr
					
					n = step_over (rp_1, rp_2, rp_3, rp_4)
					
					For z = 1 To n
						If z = 1 Then rp_1_rep_1(w_add) = rp_add_hz_III(z)
						If z = 2 Then rp_2_rep_1(w_add) = rp_add_hz_III(z)
						If z = 3 Then rp_3_rep_1(w_add) = rp_add_hz_III(z)
						If z = 4 Then rp_4_rep_1(w_add) = rp_add_hz_III(z)
					Next
					
				EndIf
				
				TP_1_over_write (tp_1, n_tr_1, s_nom_tr, rp_1, rp_2, rp_3, rp_4)
				
			EndIf
		Next
		
	EndIf
	
End Function

Function step_over(rp_1, rp_2, rp_3, rp_4)
	
	Dim rp_add_hz_III (5)
	n = 0
	
	If rp_1 > 0 Then 
		n = n + 1
		rp_add_hz_III (n) = rp_1
	EndIf
	
	If rp_2 > 0 Then 
		n = n + 1
		rp_add_hz_III (n) = rp_2
	EndIf
	
	If rp_3 > 0 Then 
		n = n + 1
		rp_add_hz_III (n) = rp_3
	EndIf
	
	If rp_4 > 0 Then 
		n = n + 1
		rp_add_hz_III (n) = rp_4
	EndIf
	
	Return n
	
End Function

Function TP_1_over_write(tp_1, n_tr_1, s_tr_1, rp_1 = 0, rp_2 = 0, rp_3 = 0, rp_4 = 0, tp_2 = 0, rp_1_II = 0, rp_2_II = 0, rp_3_II = 0, rp_4_II = 0, rp_1_II_addble = 0, rp_2_II_add = 0, rp_3_II_add = 0, rp_4_II_add = 0)
	
	kol_var = rp_add_rp(tp_1, rp_1, rp_2, rp_3, rp_4)
	
	If kol_var > 0 Then
		
		For i = 1 To kol_var
			
			If rp_to_TP(tp_1, rp_add_rp_return_rp_1 (i), Float(s_p_rp$(rp_add_rp_return_rp_1(i))) + Float(s_p_rp$(rp_add_rp_return_rp_2(i))) + Float(s_p_rp$(rp_add_rp_return_rp_3(i))) + Float(s_p_rp$(rp_add_rp_return_rp_4(i)))) > 0 Then
				
				rp_1_ini = 1
				rp_2_ini = 1
				rp_3_ini = 1
				rp_4_ini = 1
				
				rp_1_t = 0
				rp_2_t = 0
				rp_3_t = 0
				rp_4_t = 0
				
				If rp_1 > 0 And rp_add_rp_return_rp_1(i) <> rp_1 And rp_add_rp_return_rp_2(i) <> rp_1 And rp_add_rp_return_rp_3(i) <> rp_1 And rp_add_rp_return_rp_4(i) <> rp_1 Then rp_1_ini = 0
				If rp_2 > 0 And rp_add_rp_return_rp_1(i) <> rp_2 And rp_add_rp_return_rp_2(i) <> rp_2 And rp_add_rp_return_rp_3(i) <> rp_2 And rp_add_rp_return_rp_4(i) <> rp_2 Then rp_2_ini = 0
				If rp_3 > 0 And rp_add_rp_return_rp_1(i) <> rp_3 And rp_add_rp_return_rp_2(i) <> rp_3 And rp_add_rp_return_rp_3(i) <> rp_3 And rp_add_rp_return_rp_4(i) <> rp_3 Then rp_3_ini = 0
				If rp_4 > 0 And rp_add_rp_return_rp_1(i) <> rp_4 And rp_add_rp_return_rp_2(i) <> rp_4 And rp_add_rp_return_rp_3(i) <> rp_4 And rp_add_rp_return_rp_4(i) <> rp_4 Then rp_4_ini = 0
				
				If rp_1_ini = 0 Then
					If rp_to_TP (tp_1, rp_1, Float(s_p_rp$(rp_1))) = 1 Then 
						rp_1_ini = 1
						rp_1_t = rp_1
					EndIf
				EndIf
				
				If rp_2_ini = 0 Then
					If rp_to_TP (tp_1, rp_2, Float(s_p_rp$(rp_2))) = 1 Then 
						rp_2_ini = 1
						rp_2_t = rp_2
					EndIf
				EndIf
				
				If rp_3_ini = 0 Then
					If rp_to_TP (tp_1, rp_3, Float(s_p_rp$(rp_3))) = 1 Then 
						rp_3_ini = 1
						rp_3_t = rp_3
					EndIf
				EndIf
				
				If rp_4_ini = 0 Then
					If rp_to_TP (tp_1, rp_4, Float(s_p_rp$(rp_4))) = 1 Then 
						rp_4_ini = 1
						rp_4_t = rp_4
					EndIf
				EndIf
				
				If rp_1_ini = 1 And rp_2_ini = 1 And rp_3_ini = 1 And rp_4_ini = 1 Then
					
					w_add  = w_add + 1
					
					tp_1_rep(w_add) = tp_1
					n_tr_rep_1 (w_add) = n_tr_1
					s_tr_rep_1 (w_add) = s_tr_1
					tp_2_rep(w_add) = tp_2
					
					n = step_over (rp_1_t, rp_2_t, rp_3_t, rp_4_t)
					
					For z = 1 To n
						If z = 1 Then rp_1_rep_1(w_add) = rp_add_hz_III(z)
						If z = 2 Then rp_2_rep_1(w_add) = rp_add_hz_III(z)
						If z = 3 Then rp_3_rep_1(w_add) = rp_add_hz_III(z)
						If z = 4 Then rp_4_rep_1(w_add) = rp_add_hz_III(z)
					Next
					
					n = step_over (rp_add_rp_return_rp_1(i), rp_add_rp_return_rp_2(i), rp_add_rp_return_rp_3(i), rp_add_rp_return_rp_4(i))
					
					For z = 1 To n
						If z = 1 Then rp_1_addable_rep_1(w_add) = rp_add_hz_III(z)
						If z = 2 Then rp_2_added_rep_1(w_add) = rp_add_hz_III(z)
						If z = 3 Then rp_3_added_rep_1(w_add) = rp_add_hz_III(z)
						If z = 4 Then rp_4_added_rep_1(w_add) = rp_add_hz_III(z)
					Next
					
					n = step_over (rp_1_II, rp_2_II, rp_3_II, rp_4_II)
					
					For z = 1 To n
						If z = 1 Then rp_1_rep_2(w_add) = rp_add_hz_III(z)
						If z = 2 Then rp_2_rep_2(w_add) = rp_add_hz_III(z)
						If z = 3 Then rp_3_rep_2(w_add) = rp_add_hz_III(z)
						If z = 4 Then rp_4_rep_2(w_add) = rp_add_hz_III(z)
					Next
					
					n = step_over (rp_1_II_addble, rp_2_II_add, rp_3_II_add, rp_4_II_add)
					
					For z = 1 To n
						If z = 1 Then rp_1_addable_rep_2(w_add) = rp_add_hz_III(z)
						If z = 2 Then rp_2_added_rep_2(w_add) = rp_add_hz_III(z)
						If z = 3 Then rp_3_added_rep_2(w_add) = rp_add_hz_III(z)
						If z = 4 Then rp_4_added_rep_2(w_add) = rp_add_hz_III(z)
					Next
					
				EndIf
				
			EndIf
			
		Next
		
	EndIf
	
End Function

Function kz_TP_ini(tp_1, tp_2, rp_1, rp_2, rp_3, rp_4, n_tr, k_z_1#, k_z_2#)
	
	ras_nagr# = Float(p_p_mode$(tp_2))
	ras_q# = Float(q_p_mode$(tp_2))
	
	For ku = 1 To 32
		If Int(ku_nom%(ku)) >= ((ras_nagr# * (ras_q#/ras_nagr# - 0.33)) * 0.97) Then 
			q_qu_2 = ku_nom%(ku)
			Exit
		EndIf
		If ku = 32 Then q_qu_2 = ku_nom%(32)
	Next
	
	P_sum# = Float(p_p_mode$(tp_1)) + Float(p_p_mode$(tp_2)) + Float(p_p_rp$(rp_1)) + Float(p_p_rp$(rp_2)) + Float(p_p_rp$(rp_3)) + Float(p_p_rp$(rp_4))
	Q_sum# = Float(q_p_mode$(tp_1)) + Float(q_p_mode$(tp_2)) - q_qu_2 + Float(q_p_rp$(rp_1)) + Float(q_p_rp$(rp_2)) + Float(q_p_rp$(rp_3)) + Float(q_p_rp$(rp_4))
	
	tg# = Q_sum# / P_sum#
	
	Qqu# = P_sum# * (tg# - 0.33)
	
	For ku = 1 To 32
		If Int(ku_nom%(ku)) * n_tr >= (Qqu# * 0.97) Then 
			Qqu_2# = ku_nom%(ku)
			Exit
		EndIf
		If ku = 32 Then Qqu_2# = ku_nom%(32)
	Next
	
	S_sum# = Sqr(P_sum#^2 + (Q_sum# - (Qqu_2# * n_tr))^2)
	
	For e = 1 To 8
		k_z# = S_sum# / (n_tr * trans%(e))
		If k_z# >= (k_z_1# - delta_kz#) And k_z# <= (k_z_2# + delta_kz#) Then 
			Return trans%(e)
			Exit
		EndIf
	Next
	
End Function

Function kz_TP_2_ini(tp_1, n_tr_1, tp_2, rp_1, rp_2, rp_3, rp_4, k_z_1#, k_z_2#); ТП-1 и ТП-2 > 0, РП: 0 - 4
	
	If tp_1 > 0 And tp_2 > 0 And k_z_1# > 0 And k_z_2# > 0 Then
		
		Dim rp_1_kz_TP_2_ini_return (900000)
		Dim rp_2_kz_TP_2_ini_return (900000)
		Dim rp_3_kz_TP_2_ini_return (900000)
		Dim rp_4_kz_TP_2_ini_return (900000)
		
		Dim rp_1_kz_TP_2_ADD_return (900000)
		Dim rp_2_kz_TP_2_ADD_return (900000)
		Dim rp_3_kz_TP_2_ADD_return (900000)
		Dim rp_4_kz_TP_2_ADD_return (900000)
		
		Dim rp_add_hz_II (5)
		
		If rp_1 > 0 Then 
			n = n + 1
			rp_add_hz_II (n) = rp_1
		EndIf
		
		If rp_2 > 0 Then 
			n = n + 1
			rp_add_hz_II (n) = rp_2
		EndIf
		
		If rp_3 > 0 Then 
			n = n + 1
			rp_add_hz_II (n) = rp_3
		EndIf
		
		If rp_4 > 0 Then 
			n = n + 1
			rp_add_hz_II (n) = rp_4
		EndIf
		
		If n = 0 Then
			
			P_sum_II# = Float(p_p_mode$(tp_2))
			Q_sum_II# = Float(q_p_mode$(tp_2))
			
			If n_tr_1 = 1 Then
				P_sum_II# = P_sum_II# + Float(p_p_mode$(tp_1))
				Q_sum_II# = Q_sum_II# + Float(q_p_mode$(tp_1))
			EndIf
			
			tg_II# = Q_sum_II# / P_sum_II#
			Qqu_II# = P_sum_II# * (tg_II# - 0.33)
			
			For ku = 1 To 32
				If Int (ku_nom%(ku)) >= (Qqu_II# * 0.97) Then 
					Qqu_2_II# = ku_nom%(ku)
					Exit
				EndIf
				If ku = 32 Then Qqu_2_II# = ku_nom%(32)
			Next
			
			S_sum_II# = Sqr(P_sum_II#^2 + (Q_sum_II# - Qqu_2_II#)^2)
			
			For e_II = 1 To 8
				k_z_II# = S_sum_II# / trans%(e_II)
				If k_z_II# >= (k_z_1# - delta_kz#) And k_z_II# <= (k_z_2# + delta_kz#) Then	
					
					If TP_to_TP (tp_1, tp_2, k_z_II#, trans%(e_II), 0, 0) > 0 Then i_add = i_add + 1
					
					Exit
					
				EndIf
				
			Next
			
		ElseIf n > 0 Then
			
			For i = 1 To n
				end_str$ = end_str$ + "1"
			Next
			
			While str_t$ <> end_str$
				
				str_t$ = Bin$(a_dec)
				
				If Len(str_t$) > n% Then
					str_t$ = Right (str_t$, n%)
				ElseIf Len(str_t$) < n% 
					While Len(str_t$) < n%
						str_t$ = "0" + str_t$
					Wend
				EndIf
				
				rp_1_II = rp_add_hz_II (1)
				rp_2_II = rp_add_hz_II (2)
				rp_3_II = rp_add_hz_II (3)
				rp_4_II = rp_add_hz_II (4)
				
				For i = 1 To n%
					add_ini$ = Mid$ (str_t$, i, 1)
					If i = 1 And add_ini$ = "0" Then rp_1_II = 0
					If i = 2 And add_ini$ = "0" Then rp_2_II = 0
					If i = 3 And add_ini$ = "0" Then rp_3_II = 0
					If i = 4 And add_ini$ = "0" Then rp_4_II = 0
				Next
				
				p_en_II = 0
				
				If rp_1_II > 0 Then p_en_II = p_en_II + 1
				If rp_2_II > 0 Then p_en_II = p_en_II + 1
				If rp_3_II > 0 Then p_en_II = p_en_II + 1
				If rp_4_II > 0 Then p_en_II = p_en_II + 1
				
				P_sum_II# = Float(p_p_mode$(tp_2)) + Float(p_p_rp$(rp_1_II)) + Float(p_p_rp$(rp_2_II)) + Float(p_p_rp$(rp_3_II)) + Float(p_p_rp$(rp_4_II))
				Q_sum_II# = Float(q_p_mode$(tp_2)) + Float(q_p_rp$(rp_1_II)) + Float(q_p_rp$(rp_2_II)) + Float(q_p_rp$(rp_3_II)) + Float(q_p_rp$(rp_4_II))
				
				If n_tr_1 = 1 Then
					P_sum_II# = P_sum_II# + Float(p_p_mode$(tp_1))
					Q_sum_II# = Q_sum_II# + Float(q_p_mode$(tp_1))
				EndIf
				
				tg_II# = Q_sum_II# / P_sum_II#
				
				Qqu_II# = P_sum_II# * (tg_II# - 0.33)
				
				For ku = 1 To 32
					If Int (ku_nom%(ku)) >= (Qqu_II# * 0.97) Then 
						Qqu_2_II# = ku_nom%(ku)
						Exit
					EndIf
					If ku = 32 Then Qqu_2_II# = ku_nom%(32)
				Next
				
				S_sum_II# = Sqr(P_sum_II#^2 + (Q_sum_II# - Qqu_2_II#)^2)
				
				For e_II = 1 To 8
					k_z_II# = S_sum_II# / trans%(e_II)
					If k_z_II# >= (k_z_1# - delta_kz#) And k_z_II# <= (k_z_2# + delta_kz#) Then	
						
						rp_1_ini = 1
						rp_2_ini = 1
						rp_3_ini = 1
						rp_4_ini = 1
						
						If rp_1_II > 0 And rp_to_TP (tp_2, rp_1_II, Float(s_p_rp$(rp_1_II))) = 0 Then rp_1_ini = 0
						If rp_2_II > 0 And rp_to_TP (tp_2, rp_2_II, Float(s_p_rp$(rp_2_II))) = 0 Then rp_2_ini = 0
						If rp_3_II > 0 And rp_to_TP (tp_2, rp_3_II, Float(s_p_rp$(rp_3_II))) = 0 Then rp_3_ini = 0
						If rp_4_II > 0 And rp_to_TP (tp_2, rp_4_II, Float(s_p_rp$(rp_4_II))) = 0 Then rp_4_ini = 0
						
						If rp_1_ini = 1 And rp_2_ini = 1 And rp_3_ini = 1 And rp_4_ini = 1 Then
							
							P_dop_tp_2# = Float(p_p_rp$(rp_1_II)) + Float(p_p_rp$(rp_2_II)) + Float(p_p_rp$(rp_3_II)) + Float(p_p_rp$(rp_4_II))
							Q_dop_tp_2# = Float(q_p_rp$(rp_1_II)) + Float(q_p_rp$(rp_2_II)) + Float(q_p_rp$(rp_3_II)) + Float(q_p_rp$(rp_4_II))
							
							If TP_to_TP (tp_1, tp_2, k_z_II#, trans%(e_II), P_dop_tp_2#, Q_dop_tp_2#) > 0 Then
								
								i_add = i_add + 1
								rp_1_kz_TP_2_ini_return (i_add) = rp_1_II
								rp_2_kz_TP_2_ini_return (i_add) = rp_2_II
								rp_3_kz_TP_2_ini_return (i_add) = rp_3_II
								rp_4_kz_TP_2_ini_return (i_add) = rp_4_II
								
							EndIf
							
						EndIf
						
						If p_en_II >= 2 Then
							
							kol_var = rp_add_rp (tp_2, rp_1_II, rp_2_II, rp_3_II, rp_4_II)
							
							If kol_var > 0 Then
								
								For i = 1 To kol_var
									
									If rp_to_TP (tp_2, rp_add_rp_return_rp_1 (i), Float(s_p_rp$(rp_1_II))) > 0 Then
										
										rp_1_ini = 1
										rp_2_ini = 1
										rp_3_ini = 1
										rp_4_ini = 1
										
										rp_1_t = 0
										rp_2_t = 0
										rp_3_t = 0
										rp_4_t = 0
										
										If rp_1_II > 0 And rp_add_rp_return_rp_1(i) <> rp_1_II And rp_add_rp_return_rp_2(i) <> rp_1_II And rp_add_rp_return_rp_3(i) <> rp_1_II And rp_add_rp_return_rp_4(i) <> rp_1_II Then rp_1_ini = 0
										If rp_2_II > 0 And rp_add_rp_return_rp_1(i) <> rp_2_II And rp_add_rp_return_rp_2(i) <> rp_2_II And rp_add_rp_return_rp_3(i) <> rp_2_II And rp_add_rp_return_rp_4(i) <> rp_2_II Then rp_2_ini = 0
										If rp_3_II > 0 And rp_add_rp_return_rp_1(i) <> rp_3_II And rp_add_rp_return_rp_2(i) <> rp_3_II And rp_add_rp_return_rp_3(i) <> rp_3_II And rp_add_rp_return_rp_4(i) <> rp_3_II Then rp_3_ini = 0
										If rp_4_II > 0 And rp_add_rp_return_rp_1(i) <> rp_4_II And rp_add_rp_return_rp_2(i) <> rp_4_II And rp_add_rp_return_rp_3(i) <> rp_4_II And rp_add_rp_return_rp_4(i) <> rp_4_II Then rp_4_ini = 0
										
										If rp_1_ini = 0 Then
											If rp_to_TP (tp_2, rp_1_II, Float(s_p_rp$(rp_1_II))) = 1 Then 
												rp_1_ini = 1
												rp_1_t = rp_1_II
											EndIf
										EndIf
										
										If rp_2_ini = 0 Then
											If rp_to_TP (tp_2, rp_2_II, Float(s_p_rp$(rp_2_II))) = 1 Then 
												rp_2_ini = 1
												rp_2_t = rp_2_II
											EndIf
										EndIf
										
										If rp_3_ini = 0 Then
											If rp_to_TP (tp_2, rp_3_II, Float(s_p_rp$(rp_3_II))) = 1 Then 
												rp_3_ini = 1
												rp_3_t = rp_3_II
											EndIf
										EndIf
										
										If rp_4_ini = 0 Then
											If rp_to_TP (tp_2, rp_4_II, Float(s_p_rp$(rp_4_II))) = 1 Then 
												rp_4_ini = 1
												rp_4_t = rp_4_II
											EndIf
										EndIf
										
										If rp_1_ini = 1 And rp_2_ini = 1 And rp_3_ini = 1 And rp_4_ini = 1 Then
											
											P_dop_tp_2# = Float(p_p_rp$(rp_add_rp_return_rp_1(i))) + Float(p_p_rp$(rp_add_rp_return_rp_2(i))) + Float(p_p_rp$(rp_add_rp_return_rp_3(i))) + Float(p_p_rp$(rp_add_rp_return_rp_4(i))) + Float(p_p_rp$(rp_1_t)) + Float(p_p_rp$(rp_2_t)) + Float(p_p_rp$(rp_3_t)) + Float(p_p_rp$(rp_4_t))
											Q_dop_tp_2# = Float(q_p_rp$(rp_add_rp_return_rp_1(i))) + Float(q_p_rp$(rp_add_rp_return_rp_2(i))) + Float(q_p_rp$(rp_add_rp_return_rp_3(i))) + Float(q_p_rp$(rp_add_rp_return_rp_4(i))) + Float(q_p_rp$(rp_1_t)) + Float(q_p_rp$(rp_2_t)) + Float(q_p_rp$(rp_3_t)) + Float(q_p_rp$(rp_4_t))
											
											If n_tr_1 = 1 Then
												P_dop_tp_2# = P_dop_tp_2# + Float(p_p_mode$(tp_1))
												Q_dop_tp_2# = Q_dop_tp_2# + Float(q_p_mode$(tp_1))
											EndIf
											
											If TP_to_TP (tp_1, tp_2, k_z_II#, trans%(e_II), P_dop_tp_2#, Q_dop_tp_2#) > 0 Then
												
												i_add = i_add + 1
												
												rp_1_kz_TP_2_ADD_return (i_add) = rp_add_rp_return_rp_1(i)
												rp_2_kz_TP_2_ADD_return (i_add) = rp_add_rp_return_rp_2(i)
												rp_3_kz_TP_2_ADD_return (i_add) = rp_add_rp_return_rp_3(i)
												rp_4_kz_TP_2_ADD_return (i_add) = rp_add_rp_return_rp_4(i)
												
												If rp_1_t > 0 Then rp_1_kz_TP_2_ini_return (i_add) = rp_1_t
												If rp_2_t > 0 Then rp_2_kz_TP_2_ini_return (i_add) = rp_2_t
												If rp_3_t > 0 Then rp_3_kz_TP_2_ini_return (i_add) = rp_3_t
												If rp_4_t > 0 Then rp_4_kz_TP_2_ini_return (i_add) = rp_4_t
												
											EndIf
											
										EndIf
										
									EndIf
									
								Next
								
							EndIf
							
						EndIf
						
						Exit
					EndIf
				Next
				
				a_dec = a_dec + 1
				
			Wend
			
		EndIf
		
		Return i_add
		
	EndIf
	
End Function

Function TP_to_TP(tp_1, tp_2, k_z_2#, s_nom_tr_tp_2, P_dop_tp_2#, Q_dop_tp_2#)
	
	; только если ТП-1 > 0 и ТП-2 > 0 и Кз > 0 и Sном > 0
	; проверка возможности резервирования одной ТП II категории к другой ТП
	; k_z_2# - расчетный коэффициент загрузки резервируемой ТП-2
	; s_nom_tr_tp_2 - номинальная мощность трансформаторов резервируемой ТП-2
	;P_dop_tp_2# - суммарная активная мощность РП, подключенных к резервируемой ТП-2
	;Q_dop_tp_2# - суммарная реактивная мощность РП, подключенных к резервируемой ТП-2
	
	If tp_1 > 0 And tp_2 > 0 And k_z_2# > 0 And s_nom_tr_tp_2 > 0 Then
		
		For i = 1 To 8
			If trans (i) = s_nom_tr_tp_2 Then
				i_add = i
				Exit
			EndIf
		Next
		
		If trans (i_add) = 0 Then Return 0
		
		ras_nagr# = Float(p_p_mode$(tp_2)) + P_dop_tp_2#
		ras_q# = Float(q_p_mode$(tp_2)) + Q_dop_tp_2#
		
		For ku = 1 To 32
			If Int(ku_nom%(ku)) >= ((ras_nagr# * (ras_q#/ras_nagr# - 0.33)) * 0.97) Then 
				q_qu_2 = ku_nom%(ku)
				Exit
			EndIf
			If ku = 32 Then q_qu_2 = ku_nom%(32)
		Next
		
		If tp_type$(tp_2) = "ТСЗ" Then
			delta_p_tp# = delta_p_xx_tsz#(i_add) + (delta_p_kz_tsz#(i_add) * (k_z_2#^2))
			delta_q_xx# = (t_xx_tsz# (i_add) * s_nom_tr_tp_2) / 100
			delta_q_kz# = (u_kz_tsz# (i_add) * s_nom_tr_tp_2) / 100
			delta_q_tp# = delta_q_xx# + (delta_q_kz# * (k_z_2#^2))
		Else
			delta_p_tp# = delta_p_xx_tm#(i_add) + (delta_p_kz_tm#(i_add) * (k_z_2#^2))
			delta_q_xx# = (t_xx_tm# (i_add) * s_nom_tr_tp_2) / 100
			delta_q_kz# = (u_kz_tm# (i_add) * s_nom_tr_tp_2) / 100
			delta_q_tp# = delta_q_xx# + (delta_q_kz# * (k_z_2#^2))
		EndIf
		
		While kl_ini = 0
			
			n_line = n_line + 1
			
			If n_line > 4 Then Return 0
			
			s_nom_tp# = Sqr((ras_nagr# / n_line + delta_p_tp#)^2 + ((ras_q# - q_qu_2) / n_line + delta_q_tp#)^2)
			i_r_nom# = s_nom_tp# / (Sqr(3) * 0.4)
			i_r_nom_dop# = i_r_nom# / k_1_koef#(n_line)
			
			If kl_04_ini(tp_1, tp_2, i_r_nom_dop#) > 0 Then Return 1
			
		Wend
		
	EndIf
	
End Function

Function rp_to_TP(tp, rp, S_sum_rp#) 
	
	; только если ТП и РП больше 0
	; проверка возможности подключения одной РП (или связки) к ТП
	; S_sum_rp# - суммарная мощность связки РП
	
	If tp > 0 And rp > 0 And S_sum_rp# <= 330 Then
		
		While kl_ini = 0
			
			n_line = n_line + 1
			
			If n_line > 2 Then Return 0
			
			i_r# = S_sum_rp# / (n_line * Sqr(3) * 0.4)
			
			If kl_04_ini(tp, rp_ini(rp), i_r#) > 0 Then Return 1
			
		Wend
		
	EndIf
	
End Function

Function kl_04_ini(obj_1, obj_2, i_r#)
	
	l_kl_tp# = min_dist_ceh_to_ceh# (obj_1, obj_2)
	
	For acb = 4 To 12
		
		If Float(tok_acb_04$ (acb)) >= (i_r# * 1.05) Then
			L_dop# = Float(d_p_acb_04$(acb)) * 5 * (Float(tok_acb_04$(acb)) / i_r#)
			If l_kl_tp# < L_dop# Then Return s_acb_04$(acb)
		EndIf
		
		If acb = 12 Then
			Return 0
		EndIf
		
	Next
	
End Function

Function kl_vv_ini(obj_1, obj_2, i_r#)
	
			;If Int(u_raspred$) = 6 Then
			;For acb = 4 To 12
				;If Float(tok_aasv_6$ (acb)) >= (i_r#*1.05) And Float(s_aasv_6$(acb)) >= (I_r_n# / 1.4) * 1.1 Then
					;acb_tp = acb
					;L_dop# = Float(L_dp_aasv_6$(acb_tp)) * 10 * (Float(tok_aasv_6$ (acb)) / i_r#)
					;Exit
				;EndIf
			;Next
		;ElseIf Int(u_raspred$) = 10 Then
			;For acb = 3 To 11
				;If Float(tok_aasv_10$ (acb)) >= (i_r#*1.05) And Float(s_aasv_10$(acb)) >= (I_r_n# / 1.4) * 1.1 Then
					;acb_tp = acb
					;L_dop# = Float(L_dp_aasv_10$(acb_tp)) * 10 * (Float(tok_aasv_10$ (acb)) / i_r#)
					;Exit
				;EndIf
			;Next
		;EndIf
	
End Function

Function rp_to_rp(rp_1, rp_2, S_sum_rp#) 
	
	; только если РП-1 и РП-2 больше 0
	; проверка возможности подключения одной РП (или связки) к РП [addable]
	; S_sum_rp# - суммарная мощность связки РП
	
	If rp_1 > 0 And rp_2 > 0 And S_sum_rp# <= 330 And (rp_ini(rp_1) <> rp_ini(rp_2)) Then
		
		While kl_ini = 0
			
			n_line = n_line + 1
			If n_line > 2 Then Return 0
			i_r# = S_sum_rp# / (n_line * Sqr(3) * 0.4)
			If kl_04_ini(rp_ini(rp_1), rp_ini(rp_2), i_r#) > 0 Then Return 1
			
		Wend
		
	EndIf
	
End Function

Function rp_add_rp(tp, rp_1, rp_2, rp_3, rp_4) 
	
	; учитывает варианты, в которых ТП > 0 и количество РП - 2 и более
	; перебор всех возможных связок из РП (взаимоподключаемых по магистрали и без)
	
	If tp > 0 Then
		
		p_en = 0
		
		Dim rp_add_hz (5)
		
		If rp_1 > 0 Then 
			p_en = p_en + 1
			rp_add_hz (p_en) = rp_1
		EndIf
		
		If rp_2 > 0 Then 
			p_en = p_en + 1
			rp_add_hz (p_en) = rp_2
		EndIf
		
		If rp_3 > 0 Then 
			p_en = p_en + 1
			rp_add_hz (p_en) = rp_3
		EndIf
		
		If rp_4 > 0 Then 
			p_en = p_en + 1
			rp_add_hz (p_en) = rp_4
		EndIf
		
	EndIf
	
	If p_en >= 2 Then
		
		For q = 1 To p_en
			
			If q = 1 Then
				
				n_III = p_en - 1
				end_str_III$ = ""
				str_t_III$ = ""
				a_dec_III = 0
				
				For i = 1 To n_III
					end_str_III$ = end_str_III$ + "1"
				Next
				
				While str_t_III$ <> end_str_III$
					
					str_t_III$ = Bin$(a_dec_III)
					
					If Len(str_t_III$) > n_III Then
						str_t_III$ = Right (str_t_III$, n_III)
					ElseIf Len(str_t_III$) < n_III
						While Len(str_t_III$) < n_III
							str_t_III$ = "0" + str_t_III$
						Wend
					EndIf
					
					rp_2_III = 0
					rp_3_III = 0
					rp_4_III = 0
					
					rp_1_III = rp_add_hz (q)
					
					For i = 2 To p_en
						add_ini_III$ = Mid$ (str_t_III$, (i - 1), 1)
						If i = 2 And add_ini_III$ = "1" Then rp_2_III = rp_add_hz(2)
						If i = 3 And add_ini_III$ = "1" Then rp_3_III = rp_add_hz(3)
						If i = 4 And add_ini_III$ = "1" Then rp_4_III = rp_add_hz(4)
					Next
					
					S_sum_rp# = rp_add_ini (tp, rp_1_III, rp_2_III, rp_3_III, rp_4_III)
					
					If S_sum_rp# > 0 Then 
						
						rp_add_rp_ini = rp_add_rp_ini + 1
						
						rp_add_rp_return_rp_1 (rp_add_rp_ini) = rp_1_III
						rp_add_rp_return_rp_2 (rp_add_rp_ini) = rp_2_III
						rp_add_rp_return_rp_3 (rp_add_rp_ini) = rp_3_III
						rp_add_rp_return_rp_4 (rp_add_rp_ini) = rp_4_III
						
					EndIf
					
					a_dec_III = a_dec_III + 1
					
				Wend
				
			ElseIf q = 2 Then
				
				n_III = p_en - 1
				end_str_III$ = ""
				str_t_III$ = ""
				a_dec_III = 0
				
				For i = 1 To n_III
					end_str_III$ = end_str_III$ + "1"
				Next
				
				While str_t_III$ <> end_str_III$
					
					str_t_III$ = Bin$(a_dec_III)
					
					If Len(str_t_III$) > n_III Then
						str_t_III$ = Right (str_t_III$, n_III)
					ElseIf Len(str_t_III$) < n_III
						While Len(str_t_III$) < n_III
							str_t_III$ = "0" + str_t_III$
						Wend
					EndIf
					
					rp_2_III = 0
					rp_3_III = 0
					rp_4_III = 0
					
					rp_1_III = rp_add_hz (q)
					
					For i = 2 To p_en
						add_ini_III$ = Mid$ (str_t_III$, (i - 1), 1)
						If i = 2 And add_ini_III$ = "1" Then rp_2_III = rp_add_hz(1)
						If i = 3 And add_ini_III$ = "1" Then rp_3_III = rp_add_hz(3)
						If i = 4 And add_ini_III$ = "1" Then rp_4_III = rp_add_hz(4)
					Next
					
					S_sum_rp# = rp_add_ini (tp, rp_1_III, rp_2_III, rp_3_III, rp_4_III)
					
					If S_sum_rp# > 0 Then 
						rp_add_rp_ini = rp_add_rp_ini + 1
						
						rp_add_rp_return_rp_1 (rp_add_rp_ini) = rp_1_III
						rp_add_rp_return_rp_2 (rp_add_rp_ini) = rp_2_III
						rp_add_rp_return_rp_3 (rp_add_rp_ini) = rp_3_III
						rp_add_rp_return_rp_4 (rp_add_rp_ini) = rp_4_III
					EndIf
					
					a_dec_III = a_dec_III + 1
					
				Wend
				
			ElseIf q = 3 Then
				
				n_III = p_en - 1
				end_str_III$ = ""
				str_t_III$ = ""
				a_dec_III = 0
				
				For i = 1 To n_III
					end_str_III$ = end_str_III$ + "1"
				Next
				
				While str_t_III$ <> end_str_III$
					
					str_t_III$ = Bin$(a_dec_III)
					
					If Len(str_t_III$) > n_III Then
						str_t_III$ = Right (str_t_III$, n_III)
					ElseIf Len(str_t_III$) < n_III
						While Len(str_t_III$) < n_III
							str_t_III$ = "0" + str_t_III$
						Wend
					EndIf
					
					rp_2_III = 0
					rp_3_III = 0
					rp_4_III = 0
					
					rp_1_III = rp_add_hz (q)
					
					For i = 2 To p_en
						add_ini_III$ = Mid$ (str_t_III$, (i - 1), 1)
						If i = 2 And add_ini_III$ = "1" Then rp_2_III = rp_add_hz(1)
						If i = 3 And add_ini_III$ = "1" Then rp_3_III = rp_add_hz(2)
						If i = 4 And add_ini_III$ = "1" Then rp_4_III = rp_add_hz(4)
					Next
					
					S_sum_rp# = rp_add_ini (tp, rp_1_III, rp_2_III, rp_3_III, rp_4_III)
					
					If S_sum_rp# > 0 Then 
						rp_add_rp_ini = rp_add_rp_ini + 1
						
						rp_add_rp_return_rp_1 (rp_add_rp_ini) = rp_1_III
						rp_add_rp_return_rp_2 (rp_add_rp_ini) = rp_2_III
						rp_add_rp_return_rp_3 (rp_add_rp_ini) = rp_3_III
						rp_add_rp_return_rp_4 (rp_add_rp_ini) = rp_4_III
					EndIf
					
					a_dec_III = a_dec_III + 1
					
				Wend
				
			ElseIf q = 4 Then
				
				n_III = p_en - 1
				end_str_III$ = ""
				str_t_III$ = ""
				a_dec_III = 0
				
				For i = 1 To n_III
					end_str_III$ = end_str_III$ + "1"
				Next
				
				While str_t_III$ <> end_str_III$
					
					str_t_III$ = Bin$(a_dec_III)
					
					If Len(str_t_III$) > n_III Then
						str_t_III$ = Right (str_t_III$, n_III)
					ElseIf Len(str_t_III$) < n_III
						While Len(str_t_III$) < n_III
							str_t_III$ = "0" + str_t_III$
						Wend
					EndIf
					
					rp_2_III = 0
					rp_3_III = 0
					rp_4_III = 0
					
					rp_1_III = rp_add_hz (q)
					
					For i = 2 To p_en
						add_ini_III$ = Mid$ (str_t_III$, (i - 1), 1)
						If i = 2 And add_ini_III$ = "1" Then rp_2_III = rp_add_hz(1)
						If i = 3 And add_ini_III$ = "1" Then rp_3_III = rp_add_hz(2)
						If i = 4 And add_ini_III$ = "1" Then rp_4_III = rp_add_hz(3)
					Next
					
					S_sum_rp# = rp_add_ini (tp, rp_1_III, rp_2_III, rp_3_III, rp_4_III)
					
					If S_sum_rp# > 0 Then 
						rp_add_rp_ini = rp_add_rp_ini + 1
						
						rp_add_rp_return_rp_1 (rp_add_rp_ini) = rp_1_III
						rp_add_rp_return_rp_2 (rp_add_rp_ini) = rp_2_III
						rp_add_rp_return_rp_3 (rp_add_rp_ini) = rp_3_III
						rp_add_rp_return_rp_4 (rp_add_rp_ini) = rp_4_III
					EndIf
					
					a_dec_III = a_dec_III + 1
					
				Wend
			EndIf	
			
		Next
		
	EndIf
	
	Return rp_add_rp_ini
	
End Function

Function rp_add_ini#(tp = 0, rp_1, rp_2 = 0, rp_3 = 0, rp_4 = 0) 
	
	; только если количество подключаемых РП 2 и более, иначе возвращает 0
	; проверка возможности создания магистралей(связок) из РП, подключенных к ТП
	
	If rp_1 > 0 And (rp_2 > 0 Or rp_3 > 0 Or rp_4 > 0) And (rp_ini(rp_1) <> rp_ini(rp_2)) And (rp_ini(rp_1) <> rp_ini(rp_3)) And (rp_ini(rp_1) <> rp_ini(rp_4)) Then 
		
		S_sum_rp# = Float(s_p_rp$(rp_1))
		
		If rp_2 > 0 Then S_sum_rp# = S_sum_rp# + Float(s_p_rp$(rp_2))
		If rp_3 > 0 Then S_sum_rp# = S_sum_rp# + Float(s_p_rp$(rp_3))
		If rp_4 > 0 Then S_sum_rp# = S_sum_rp# + Float(s_p_rp$(rp_4))
		
		If rp_to_TP (tp, rp_1, S_sum_rp#) = 1 Or (tp = 0 And S_sum_rp# <= 330) Then
			
			rp_2_ini = 1
			rp_3_ini = 1
			rp_4_ini = 1
			
			If rp_2 > 0 And rp_to_rp (rp_1, rp_2, Float(s_p_rp$(rp_2))) = 0 Then rp_2_ini = 0
			If rp_3 > 0 And rp_to_rp (rp_1, rp_3, Float(s_p_rp$(rp_3))) = 0 Then rp_3_ini = 0
			If rp_4 > 0 And rp_to_rp (rp_1, rp_4, Float(s_p_rp$(rp_4))) = 0 Then rp_4_ini = 0
			
			If rp_2_ini = 1 And rp_3_ini = 1 And rp_4_ini = 1 Then
				Return S_sum_rp#
			Else
				Return 0
			EndIf
		Else
			Return -1
		EndIf
	Else
		Return -1
	EndIf
	
End Function

Function min_dist_ceh_to_ceh#(ceh_1, ceh_2, mode = 0)
	
	; mode = 0 - сумма катетов; 1 - гипотенуза
	
	kol_line_do = 0
	kol_line_do_2 = 0
	
	If kol_objects_mode <> kol_objects Then
		ceh_1 = obj_st_2_ini(ceh_1)
		ceh_2 = obj_st_2_ini(ceh_2)
	EndIf
	
	For k = 1 To (ceh_1 - 1)
		kol_line_do = kol_line_do + kol_line (k)
	Next
	
	For k = 1 To (ceh_2 - 1)
		kol_line_do_2 = kol_line_do_2 + kol_line (k)
	Next
	
	Dim l_point#(kol_objects + 1, kol_objects + 1, kol_line (ceh_1) + 1, kol_line (ceh_2) + 1)
	
	For k = 1 To kol_line (ceh_1)
		For kt = 1 To kol_line (ceh_2)
			l_point# (ceh_1, ceh_2, k, kt) = Float(mashtab$) * (Sqr(((x1(kol_line_do + k) - x1(kol_line_do_2 + kt))^2) + ((y1(kol_line_do + k) - y1(kol_line_do_2 + kt))^2)))
			If l_point# (ceh_1, ceh_2, k, kt) = 0 Then l_point# (ceh_1, ceh_2, k, kt) = 20
		Next
	Next
	
	min_dist_c_2_c# = l_point#(ceh_1, ceh_2, 1, 1)
	
	For k = 1 To kol_line (ceh_1)
		For kt = 1 To kol_line (ceh_2)
			If l_point#(ceh_1, ceh_2, k, kt) < min_dist_c_2_c# Then
				min_dist_c_2_c# = l_point#(ceh_1, ceh_2, k, kt)
				min_dist_c_2_c_x_1 = x1(kol_line_do + k)
				min_dist_c_2_c_y_1 = y1(kol_line_do + k)
				min_dist_c_2_c_x_2 = x1(kol_line_do_2 + kt)
				min_dist_c_2_c_y_2 = y1(kol_line_do_2 + kt)
			ElseIf l_point#(ceh_1, ceh_2, k, kt) = min_dist_c_2_c# Then
				min_dist_c_2_c_2# = l_point#(ceh_1, ceh_2, k, kt)
				min_dist_c_2_c_x_1_2 = x1(kol_line_do + k)
				min_dist_c_2_c_y_1_2 = y1(kol_line_do + k)
				min_dist_c_2_c_x_2_2 = x1(kol_line_do_2 + kt)
				min_dist_c_2_c_y_2_2 = y1(kol_line_do_2 + kt)
			EndIf
		Next
	Next
	
	If min_dist_c_2_c_2# <> min_dist_c_2_c#
		min_dist_c_2_c_x_1_2 = 0
		min_dist_c_2_c_y_1_2 = 0
		min_dist_c_2_c_x_2_2 = 0
		min_dist_c_2_c_y_2_2 = 0
	EndIf
	
	;Color 255, 255, 255
	
	;Line min_dist_c_2_c_x_1(ceh_1, ceh_2), min_dist_c_2_c_y_1(ceh_1, ceh_2), min_dist_c_2_c_x_2(ceh_1, ceh_2), min_dist_c_2_c_y_2(ceh_1, ceh_2)
	;Line min_dist_c_2_c_x_1_2(ceh_1, ceh_2), min_dist_c_2_c_y_1_2(ceh_1, ceh_2), min_dist_c_2_c_x_2_2(ceh_1, ceh_2), min_dist_c_2_c_y_2_2(ceh_1, ceh_2)
	
	If mode = 1 Then
		
		Return min_dist_c_2_c#
		
	ElseIf mode = 0 Then
		
		If min_dist_c_2_c_x_1 > min_dist_c_2_c_x_2 Then
			d_x = min_dist_c_2_c_x_1 - min_dist_c_2_c_x_2
		Else
			d_x = min_dist_c_2_c_x_2 - min_dist_c_2_c_x_1
		EndIf
		
		If min_dist_c_2_c_y_1 > min_dist_c_2_c_y_2 Then
			d_y = min_dist_c_2_c_y_1 - min_dist_c_2_c_y_2
		Else
			d_y = min_dist_c_2_c_y_2 - min_dist_c_2_c_y_1
		EndIf
		
		min_dist_c_2_c# = 1.06 * Float(mashtab$) * (d_x + d_y)
		
		If min_dist_c_2_c# = 0 Then min_dist_c_2_c# = 20
		
		Return min_dist_c_2_c#
		
	EndIf
	
End Function
(Offline)
 
Ответить с цитированием
Старый 11.03.2016, 20:26   #4
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,156
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Работа в стартапе

If rp_1 And rp_1 <> rp_1_kz_TP_2_ADD_return (i) And rp_1 <> rp_2_kz_TP_2_ADD_return (i) And rp_1 <> rp_3_kz_TP_2_ADD_return (i) And rp_1 <> rp_4_kz_TP_2_ADD_return (i) And rp_1 <> rp_1_kz_TP_2_ini_return (i) And rp_1 <> rp_2_kz_TP_2_ini_return (i) And rp_1 <> rp_3_kz_TP_2_ini_return (i) And rp_1 <> rp_4_kz_TP_2_ini_return (iThen rp_1_ini 0
                            
If rp_2 And rp_2 <> rp_1_kz_TP_2_ADD_return (i) And rp_2 <> rp_2_kz_TP_2_ADD_return (i) And rp_2 <> rp_3_kz_TP_2_ADD_return (i) And rp_2 <> rp_4_kz_TP_2_ADD_return (i) And rp_2 <> rp_1_kz_TP_2_ini_return (i) And rp_2 <> rp_2_kz_TP_2_ini_return (i) And rp_2 <> rp_3_kz_TP_2_ini_return (i) And rp_2 <> rp_4_kz_TP_2_ini_return (iThen rp_2_ini 0
                            
If rp_3 And rp_3 <> rp_1_kz_TP_2_ADD_return (i) And rp_3 <> rp_2_kz_TP_2_ADD_return (i) And rp_3 <> rp_3_kz_TP_2_ADD_return (i) And rp_3 <> rp_4_kz_TP_2_ADD_return (i) And rp_3 <> rp_1_kz_TP_2_ini_return (i) And rp_3 <> rp_2_kz_TP_2_ini_return (i) And rp_3 <> rp_3_kz_TP_2_ini_return (i) And rp_3 <> rp_4_kz_TP_2_ini_return (iThen rp_3_ini 0
                            
If rp_4 And rp_4 <> rp_1_kz_TP_2_ADD_return (i) And rp_4 <> rp_2_kz_TP_2_ADD_return (i) And rp_4 <> rp_3_kz_TP_2_ADD_return (i) And rp_4 <> rp_4_kz_TP_2_ADD_return (i) And rp_4 <> rp_1_kz_TP_2_ini_return (i) And rp_4 <> rp_2_kz_TP_2_ini_return (i) And rp_4 <> rp_3_kz_TP_2_ini_return (i) And rp_4 <> rp_4_kz_TP_2_ini_return (iThen rp_4_ini 
Капец наркомания....проще будет заново написать наверное, с учетом фишек и финтефлюшек питона.
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 11.03.2016, 20:28   #5
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,156
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Работа в стартапе

Сообщение от DarkInside Посмотреть сообщение
Вот один из чертежей, которые генерит программа
Чет типо такого просил чувак на Unity написать за 300р
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 11.03.2016, 20:35   #6
DarkInside
Разработчик
 
Аватар для DarkInside
 
Регистрация: 07.08.2011
Сообщений: 504
Написано 190 полезных сообщений
(для 368 пользователей)
Ответ: Работа в стартапе

Сообщение от RegIon Посмотреть сообщение
Капец наркомания....проще будет заново написать наверное, с учетом фишек и финтефлюшек питона.
Да, там есть такие моменты
Чет типо такого просил чувак на Unity написать за 300р
Чтоб генерило такие чертежи? тут по-хорошему месяца 3 работы, и то если прижмет и писать по ночам...

Так вот...суть в том, что это единичная программа, которая генерит 9 чертежей и файл ворд на 60 страниц. А сейчас нужно писать программу, которая будет генерить такие программы для автоматического проектирования. То есть гораздо всё сложнее. Я неплохо ориентируюсь во всём этом проектировании, могу расписать логику, как проще сделать и что от чего зависит. Могу даже на блице это всё написать, но в питоне я слаб...
Тут так просто не въехать, это надо часа 1,5, чтобы объяснить, в чем заключается идея и как это должно выглядеть... Можно в мессенджере каком-нибудь или скайпе, если есть интерес...
(Offline)
 
Ответить с цитированием
Старый 11.03.2016, 20:46   #7
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,156
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Работа в стартапе

Сообщение от DarkInside Посмотреть сообщение
Так вот...суть в том, что это единичная программа, которая генерит 9 чертежей и файл ворд на 60 страниц.
А зачем такая программа нужна, когда она генерирует однотипные чертежи всегда?
Не проще вручную написать?

А сейчас нужно писать программу, которая будет генерить такие программы для автоматического проектирования. То есть гораздо всё сложнее. Я неплохо ориентируюсь во всём этом проектировании, могу расписать логику, как проще сделать и что от чего зависит. Могу даже на блице это всё написать, но в питоне я слаб...
Что-то тут не так. Программа для генерации программы?
Не, так не пойдет. Нужна программа, которая на определенные входные данные выдаст определенный чертеж и документацию.
Иначе вообще геморой.

Что-то для меня все это слишком сложным кажется


Вот блин напасть: то никого, то сразу толпа предложений поработать.
За 3 дня уже 4:
  • Одногруппник ищет напарника для продаж
  • Чувак, который торгует медиавизуализацией, ищет программиста
  • Дарксинсйдеру нужен напарник
  • С HH.ru написали о наличии вакансии и хотят рассмотреть меня
А у меня дипломная практика и учеба парралельно.

__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 11.03.2016, 20:59   #8
DarkInside
Разработчик
 
Аватар для DarkInside
 
Регистрация: 07.08.2011
Сообщений: 504
Написано 190 полезных сообщений
(для 368 пользователей)
Ответ: Работа в стартапе

В том то и проблема, что чертежи не однотипные и файлы ворд не однотипные, то есть они постоянно изменяются кардинально. И пришлось бы каждый раз переписывать полностью программу каждые 3 месяца (это слишком долго и трудозатратно). Суть в том, грубо говоря, чтобы создать некий API (с графическим интерфейсом), который позволит без программирования создавать такие программы. То есть "пользователь" открывает пример документации в файле ворд, открывает параллельно нашу программу, выделяет цифровые значения в документации, нажимает кнопочку в программе - эти значения заносятся в базу, далее прописываются все связи этих значений, формулы, условия. Затем то же самое проделывает с чертежами (в большинстве случаев чертежи состоят из повторяющихся блоков, нужно лишь эти блоки занести в базу и назначить, что от чего зависит). Таким образом создается алгоритм проектирования. Далее пользователь использует получившийся алгоритм для автоматизации таких же по типу расчетов.
Ну потому и прибыльно, потому что сложно На самом деле не так уж всё и сложно, просто надо въехать в концепцию, понять смысл...может я слишком сложно объясняю
(Offline)
 
Ответить с цитированием
Старый 11.03.2016, 21:07   #9
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,156
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Работа в стартапе

Сообщение от DarkInside Посмотреть сообщение
В том то и проблема, что чертежи не однотипные и файлы ворд не однотипные, то есть они постоянно изменяются кардинально. И пришлось бы каждый раз переписывать полностью программу каждые 3 месяца (это слишком долго и трудозатратно). Суть в том, грубо говоря, чтобы создать некий API (с графическим интерфейсом), который позволит без программирования создавать такие программы. То есть "пользователь" открывает пример документации в файле ворд, открывает параллельно нашу программу, выделяет цифровые значения в документации, нажимает кнопочку в программе - эти значения заносятся в базу, далее прописываются все связи этих значений, формулы, условия. Затем то же самое проделывает с чертежами (в большинстве случаев чертежи состоят из повторяющихся блоков, нужно лишь эти блоки занести в базу и назначить, что от чего зависит). Таким образом создается алгоритм проектирования. Далее пользователь использует получившийся алгоритм для автоматизации таких же по типу расчетов.
Ну потому и прибыльно, потому что сложно На самом деле не так уж всё и сложно, просто надо въехать в концепцию, понять смысл...может я слишком сложно объясняю
Тогда тебе нужно познать ДЗЕН написания техзадания, так какесли ты не один пишешь софт, то это минимально что нужно сделать.
В любом случае, как бы ты не объяснял человеку, который не владеет этой областью, то он не поймет всего что ты имел ввиду, пока сам не столкнется.
Да и с ТЗ тебе будет проще во много раз самому, так как нужно будет разрозненно модули писать, а не все в одной программе, а в голове все не удержишь.
И да, нужно продумать архитектуру такому проекту очень хорошо, что бы не было как у тебя сейчас в коде. А то даже не стырить, так как без грибов каких не разобраться
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
DarkInside (11.03.2016)
Старый 11.03.2016, 21:17   #10
DarkInside
Разработчик
 
Аватар для DarkInside
 
Регистрация: 07.08.2011
Сообщений: 504
Написано 190 полезных сообщений
(для 368 пользователей)
Ответ: Работа в стартапе

Сообщение от RegIon Посмотреть сообщение
Тогда тебе нужно познать ДЗЕН написания техзадания, так какесли ты не один пишешь софт, то это минимально что нужно сделать.
В любом случае, как бы ты не объяснял человеку, который не владеет этой областью, то он не поймет всего что ты имел ввиду, пока сам не столкнется.
Согласен. Самое простое для меня - это формулировать задание следующим образом: нужна функция, у которой на входе такие-то данные, на выходе должны быть такие-то данные. Без объяснения, для чего это надо и как оно будет интегрировано в проект. Грубо говоря, библиотека из функций, которые я мог бы самостоятельно собирать. И без разницы, на чем они, в принципе, написаны. В виде dll или в виде скриптов пайтон. А чтобы понять концепцию, просто нужно знать историю, как эта вся каша заварилась и для чего она нужна, но это слишком личное и так сразу раскрывать не хотелось бы.

И да, нужно продумать архитектуру такому проекту очень хорошо, что бы не было как у тебя сейчас в коде. А то даже не стырить, так как без грибов каких не разобраться
Потому и выкладываю спокойно, не боюсь, что стырят тк только я могу разобраться, что там понаписано. Но в этом и не нужно никому больше разбираться. Логику я сам напишу, нужно писать библиотеки. Например, нужна функция, которая добавляет стандартную рамку А1 в готовый чертеж DXF.
(Offline)
 
Ответить с цитированием
Старый 12.03.2016, 09:07   #11
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,156
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Работа в стартапе

https://pypi.python.org/pypi/dxfwrite/

Эту библиотеку используешь?
Гугление вывело на эту штуку, ток она под .Net
https://netdxf.codeplex.com

Обновилась в декабре, а та аж в 2011
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 12.03.2016, 09:12   #12
DarkInside
Разработчик
 
Аватар для DarkInside
 
Регистрация: 07.08.2011
Сообщений: 504
Написано 190 полезных сообщений
(для 368 пользователей)
Ответ: Работа в стартапе

Не, вот эту https://github.com/nycresistor/SDXF
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


Часовой пояс GMT +1, время: 14:11.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com