| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Программа для подсчета рабочих часов

Программа для подсчета рабочих часов

Ответ
Поиск в этой теме
Непрочитано 23.09.2007, 12:12 #1
Программа для подсчета рабочих часов
Holon
 
CNC
 
Israel
Регистрация: 07.07.2007
Сообщений: 302

Программа для подсчета рабочих часов, предназначена для людей с почасовой оплатой
труда, в архиве WorkDay находится папка WorkDay которую надо скопировать на диск C: файл: WorkDay_C.lsp загрузить в список автоматически загружаемых приложений
List of aplications: программа вызывается с командной строки WD.
Код:
[Выделить все]
;;;-------------------------------------------------------------------------------------------------------
;;;------------------------------ ^C^C^P(load "WorkDay_C.lsp");(c:WD) ------------------------------------
;;;-------------------------------------------------------------------------------------------------------
(defun c:WD
       (/
	j c cdate m d y hh mm ss  dcl_id dcl_id_1 num time
        IN IN_L  OUT_L OUT MONTH
	newday_IN
	newday_IN_L
	newday_OUT_L
	newday_OUT
	on_ed1 on_ed2 on_ed3 on_ed4 on_ed5 on_ed6 on_ed7 on_ed8 on_ed9
	on_ed10 on_ed11 on_ed12 on_ed13
	Real_Data
	Real_Time
	Key1 Key2 Key3 Key4 Key5 Key6 Key7 Key8
	Year Month Day
	H_by_day
	Min_by_day
        H_by_day_L
        Min_by_day
	total_hour_by_day
	total_min_by_day
	sum_min
	sum_hour
	plus_min
	)
  (load
    (findfile "julian.lsp")
  )
  (setq	cdate (jtod (setq j (getvar "date")))
	c     (fix cdate)
	y     (/ c 10000)		
	m     (rem (/ c 100) 100)	
	d     (rem c 100)		
	c     (- cdate (fix cdate))	
	c     (fix (* c 1000000000))	
	hh    (/ c 10000000)	
	mm    (rem (/ c 100000) 100)	
      time    (strcat (itoa hh)(itoa mm))
      IN      (strcat "C:\\WorkDay\\DATA\\IN.dat")
      IN_L    (strcat "C:\\WorkDay\\DATA\\IN_L.dat")
      OUT_L   (strcat "C:\\WorkDay\\DATA\\OUT_L.dat")
      OUT     (strcat "C:\\WorkDay\\DATA\\OUT.dat")
      MONTH   (strcat "C:\\WorkDay\\DATA\\MONTH.dat")
      );_setq
    (if(=(strlen(itoa m))1)
(progn (setq num (strcat (itoa d) "0" (itoa m) (itoa y)))
);_progn
 (setq num (strcat (itoa d)(itoa m)(itoa y)))
);_if  
  
;;;------------------------------------------------------------------------------
 (if
   (not (findfile IN))
   (progn
   (vl-load-com)
   (vl-mkdir (strcat "C:\\WorkDay\\DATA"))
   );_progn
  );_if
  
;;;------------------------------------------------------------------------------  
  (if (not (findfile
	     IN 
	   )
      )
    (progn
       (setq
	newday_IN (open
		 IN
		 "w"
	       )
      )
      (write-line
	(strcat num " "	"0")
	newday_IN 
      )
      (close newday_IN )
      ) ;_progn
  ) ;_if
;;;------------------------------------------------------------------------------
    (if (not (findfile
	     IN_L
	   )
      )
    (progn
       (setq
	newday_IN_L (open
		 IN_L
		 "w"
	       )
      )
      (write-line
	(strcat num " "	"0")
	newday_IN_L 
      )
      (close newday_IN_L )
      ) ;_progn
  ) ;_if
;;;------------------------------------------------------------------------------
  (if (not (findfile
	     OUT_L 
	   )
      )
    (progn
       (setq
	newday_OUT_L (open
		 OUT_L
		 "w"
	       )
      )
      (write-line
	(strcat num " "	"0")
	newday_OUT_L 
      )
      (close newday_OUT_L )
      ) ;_progn
  ) ;_if
;;;------------------------------------------------------------------------------
  (if (not (findfile
	     OUT 
	   )
      )
    (progn
       (setq
	newday_OUT (open
		 OUT
		 "w"
	       )
      )
      (write-line
	(strcat num " "	"0")
	newday_OUT 
      )
      (close newday_OUT )
      ) ;_progn
  ) ;_if
;;;--------------------------------------------------------------------------------
  (if (not (findfile MONTH))
    (progn(setq	MONTH_SP (open MONTH "w"))
      (write-line(strcat num " " "0")MONTH_SP)
      (close MONTH_SP )
      ) ;_progn
  ) ;_if  
;;;--------------------------------------------------------------------------------
  (setq
    dcl_id_1	 (load_dialog "C:\\WorkDay\\WorkData.dcl")
  )
  (if (not (new_dialog "WorkData" dcl_id_1))
    (exit)
      ) ;_if

  (if(=(strlen(itoa m))1)
(progn (setq on_ed12 (strcat "0" (itoa m)))
);_progn
(setq on_ed12 (itoa m))
);_if  

 (setq
    on_ed11 (itoa y)
    on_ed13 (itoa d)
 );_setq
  (set_tile "Year" on_ed11)
  (set_tile "Month" on_ed12)
  (set_tile "Day" on_ed13)
  (action_tile "Year" "(setq on_ed11 $value)")
  (action_tile "Month" "(setq on_ed12 $value)")
  (action_tile "Day" "(setq on_ed13 $value)")
   (if (= 1 (start_dialog))
    (progn

      (setq num  (strcat on_ed13  on_ed12  on_ed11))
;;;-------------------------------------- IN -------------------------------------------
(if(not (value_by_key (atoi(strcat on_ed13  on_ed12  on_ed11))IN))
  (progn
   (new_key  (atoi(strcat on_ed13  on_ed12  on_ed11)) 0 IN)
     );_progn
  );_if
      (setq
on_ed1 (strcat on_ed13 "/" on_ed12 "/" on_ed11)
on_ed3 (itoa(/(value_by_key (atoi(strcat on_ed13  on_ed12  on_ed11))IN)100))
      );_setq
(if(= 2 (strlen (substr(itoa(value_by_key (atoi(strcat on_ed13  on_ed12  on_ed11))IN))2)))
  (progn
    (setq
 on_ed4 (substr(itoa(value_by_key (atoi(strcat on_ed13  on_ed12  on_ed11))IN))2)    
      );_setq
    
    );_progn
      (setq
 on_ed4 (substr(itoa(value_by_key (atoi(strcat on_ed13  on_ed12  on_ed11))IN))3)    
      );_setq
  );_if

;;;-------------------------------------- IN_L ------------------------------------------

(if(not (value_by_key (atoi(strcat on_ed13  on_ed12  on_ed11))IN_L))
  (progn
   (new_key  (atoi(strcat on_ed13  on_ed12  on_ed11)) 0 IN_L)
     );_progn
  );_if
      (setq
on_ed5 (itoa(/(value_by_key (atoi(strcat on_ed13  on_ed12  on_ed11))IN_L)100))
      );_setq
(if(= 2 (strlen (substr(itoa(value_by_key (atoi(strcat on_ed13  on_ed12  on_ed11))IN_L))2)))
  (progn
    (setq
 on_ed6 (substr(itoa(value_by_key (atoi(strcat on_ed13  on_ed12  on_ed11))IN_L))2)    
      );_setq
    
    );_progn
      (setq
on_ed6 (substr(itoa(value_by_key (atoi(strcat on_ed13  on_ed12  on_ed11))IN_L))3)    
      );_setq
  );_if

;;;---------------------------------------- OUT_L ----------------------------------------
(if(not (value_by_key (atoi(strcat on_ed13  on_ed12  on_ed11))OUT_L))
  (progn
   (new_key  (atoi(strcat on_ed13  on_ed12  on_ed11)) 0 OUT_L)
     );_progn
  );_if
      (setq
on_ed7 (itoa(/(value_by_key (atoi(strcat on_ed13  on_ed12  on_ed11))OUT_L)100))
      );_setq
(if(= 2 (strlen (substr(itoa(value_by_key (atoi(strcat on_ed13  on_ed12  on_ed11))OUT_L))2)))
  (progn
    (setq
 on_ed8 (substr(itoa(value_by_key (atoi(strcat on_ed13  on_ed12  on_ed11))OUT_L))2)    
      );_setq
    
    );_progn
      (setq
on_ed8 (substr(itoa(value_by_key (atoi(strcat on_ed13  on_ed12  on_ed11))OUT_L))3)    
      );_setq
  );_if

;;;---------------------------------------- OUT ------------------------------------------
(if(not (value_by_key (atoi(strcat on_ed13  on_ed12  on_ed11))OUT))
  (progn
   (new_key  (atoi(strcat on_ed13  on_ed12  on_ed11)) 0 OUT)
     );_progn
  );_if
      (setq
on_ed9 (itoa(/(value_by_key (atoi(strcat on_ed13  on_ed12  on_ed11))OUT)100))
      );_setq
(if(= 2 (strlen (substr(itoa(value_by_key (atoi(strcat on_ed13  on_ed12  on_ed11))OUT))2)))
  (progn
    (setq
 on_ed10 (substr(itoa(value_by_key (atoi(strcat on_ed13  on_ed12  on_ed11))OUT))2)    
      );_setq
    
    );_progn
      (setq
on_ed10 (substr(itoa(value_by_key (atoi(strcat on_ed13  on_ed12  on_ed11))OUT))3)    
      );_setq
  );_if


;;;------------------------------------------------------------------------------------ 
  (setq
    dcl_id	 (load_dialog   "C:\\WorkDay\\WorkDay.dcl"  )
  )
  (if (not (new_dialog "WorkDay" dcl_id))
    (exit)
      ) ;_if
;;;--------------------------------------------------------------------------------------
(if(=(strlen(itoa mm))1)
(progn (setq on_ed2 (strcat (itoa hh) ":"(strcat "0" (itoa mm))))
);_progn
(setq on_ed2 (strcat (itoa hh) ":" (itoa mm)))
);_if  
  (set_tile "Real_Data" on_ed1)
  (set_tile "Real_Time" on_ed2)
  (set_tile "Key1" on_ed3)
  (set_tile "Key2" on_ed4)
  (set_tile "Key3" on_ed5)
  (set_tile "Key4" on_ed6)
  (set_tile "Key5" on_ed7)
  (set_tile "Key6" on_ed8)
  (set_tile "Key7" on_ed9)
  (set_tile "Key8" on_ed10)
  (action_tile "Real_Data" "(setq on_ed1 $value)")
  (action_tile "Real_Time" "(setq on_ed2 $value)")
  (action_tile "Key1" "(setq on_ed3 $value)")
  (action_tile "Key2" "(setq on_ed4 $value)")
  (action_tile "Key3" "(setq on_ed5 $value)")
  (action_tile "Key4" "(setq on_ed6 $value)")
  (action_tile "Key5" "(setq on_ed7 $value)")
  (action_tile "Key6" "(setq on_ed8 $value)")
  (action_tile "Key7" "(setq on_ed9 $value)")
  (action_tile "Key8" "(setq on_ed10 $value)")
  (if (= 1 (start_dialog))
    (progn
;;;---------------------------------------- IN ---------------------------------------------------------------------------
  (if (=(atoi on_ed3)0)(progn(setq on_ed3 "24")(alert "0-->24")))   
  (if (=(strlen on_ed4)1)(progn (new_key(atoi(strcat on_ed13  on_ed12  on_ed11))(atoi(strcat on_ed3 "0" on_ed4))IN))
  (new_key  (atoi(strcat on_ed13  on_ed12  on_ed11))(atoi(strcat on_ed3 on_ed4))IN));_if
;;;---------------------------------------- IN_L -------------------------------------------------------------------------
  (if (=(atoi on_ed5)0)(progn(setq on_ed5 "24");|(alert "0-->24")|;))   
  (if (=(strlen on_ed6)1)(progn (new_key(atoi(strcat on_ed13  on_ed12  on_ed11))(atoi(strcat on_ed5 "0" on_ed6))IN_L))
  (new_key  (atoi(strcat on_ed13  on_ed12  on_ed11))(atoi(strcat on_ed5 on_ed6))IN_L));_if
;;;---------------------------------------- OUT_L ------------------------------------------------------------------------
  (if (=(atoi on_ed7)0)(progn(setq on_ed7 "24");|(alert "0-->24")|;))   
  (if (=(strlen on_ed8)1)(progn (new_key(atoi(strcat on_ed13  on_ed12  on_ed11))(atoi(strcat on_ed7 "0" on_ed8))OUT_L))
  (new_key  (atoi(strcat on_ed13  on_ed12  on_ed11))(atoi(strcat on_ed7 on_ed8))OUT_L));_if  
;;;---------------------------------------- OUT --------------------------------------------------------------------------
  (if (=(atoi on_ed9)0)(progn(setq on_ed9 "24");|(alert "0-->24")|;))   
  (if (=(strlen on_ed10)1)(progn (new_key(atoi(strcat on_ed13  on_ed12  on_ed11))(atoi(strcat on_ed9 "0" on_ed10))OUT))
  (new_key  (atoi(strcat on_ed13  on_ed12  on_ed11))(atoi(strcat on_ed9 on_ed10))OUT));_if
  
;;;-----------------------------------------------------------------------------------------------------------------------
;;;--------------------------------------- by Day-------------------------------------------------------------------------
  
  (if (>(atoi on_ed3)(atoi on_ed9))
  (progn
      (setq H_by_day
	   (+
	     (- 24 (atoi on_ed3))(atoi on_ed9)
	     )
  );_setq
    );_progn|;
  (setq H_by_day
	 (abs
	 (-
	 (/(value_by_key (atoi(strcat on_ed13  on_ed12  on_ed11))OUT)100)
	 (/(value_by_key (atoi(strcat on_ed13  on_ed12  on_ed11))IN)100)
         )
         );_abs
  );_setq
 );_if
  (if (<(-(atoi on_ed10)(atoi on_ed4))0)
    (progn
      (setq
 H_by_day (1- H_by_day)	
 Min_by_day (-(+(atoi on_ed10)60)(atoi on_ed4))	
      );_setq
    );_progn
   (setq Min_by_day (-(atoi on_ed10)(atoi on_ed4)) )
    );_if
  
;;;-----------------------------------------------------------------------------------------------------------------------
;;;-------------------------------------- Lanch --------------------------------------------------------------------------
   (if (>(atoi on_ed5)(atoi on_ed7))
  (progn
      (setq H_by_day_L
	   (+
	     (- 24 (atoi on_ed5))(atoi on_ed7)
	     )
  );_setq
    );_progn|;
  (setq H_by_day_L
	 (abs
	 (-
	 (/(value_by_key (atoi(strcat on_ed13  on_ed12  on_ed11))OUT_L)100)
	 (/(value_by_key (atoi(strcat on_ed13  on_ed12  on_ed11))IN_L)100)
         )
         );_abs
  );_setq
 );_if
  (if (<(-(atoi on_ed10)(atoi on_ed4))0)
    (progn
      (setq
 H_by_day_L (1- H_by_day_L)
 Min_by_day_L (-(+(atoi on_ed8)60)(atoi on_ed6))	
      );_setq
    );_progn
   (setq Min_by_day_L (-(atoi on_ed8)(atoi on_ed6)) )
    );_if
;;;----------------------------------------------------------------------------------------------------------------------
;;;------------------------------------- total by day--------------------------------------------------------------------
  (if(> H_by_day_L H_by_day)(progn (alert "Hour of Work day < Hour of Lanch")(exit))
(progn
  (setq
    total_hour_by_day (- H_by_day H_by_day_L)
    )
  (if (< Min_by_day Min_by_day_L)
    (progn
  (setq
    total_min_by_day(-(+ Min_by_day 60)Min_by_day_L)
    total_hour_by_day (1- total_hour_by_day)
  );_setq
  );_progn
   (setq
     total_min_by_day (- Min_by_day  Min_by_day_L)
	 );_setq 
    );_if
  );_PROGN
    );_IF
  (if (=  total_min_by_day 0)
  (progn (alert (strcat "by day" " "(itoa total_hour_by_day)":" "00"))) 
(alert (strcat "by day" " "(itoa total_hour_by_day)":" (itoa total_min_by_day)))
  );_if
   (new_key (atoi num) (+(* total_hour_by_day 60) total_min_by_day) MONTH)

	 
;;;------------------------------------------- by Month -----------------------------------------------------------------
  (if (value_by_key (atoi(strcat "1"  on_ed12  on_ed11))MONTH)
  (progn (setq sum_min (value_by_key (atoi(strcat "1"  on_ed12  on_ed11))MONTH)))
    (setq sum_min 0 ))
  (if (value_by_key (atoi(strcat "2"  on_ed12  on_ed11))MONTH)
  (setq sum_min (+ sum_min (value_by_key (atoi(strcat "2"  on_ed12  on_ed11))MONTH))))
    (if (value_by_key (atoi(strcat "3"  on_ed12  on_ed11))MONTH)
  (setq sum_min (+ sum_min (value_by_key (atoi(strcat "3"  on_ed12  on_ed11))MONTH))))
    (if (value_by_key (atoi(strcat "4"  on_ed12  on_ed11))MONTH)
  (setq sum_min (+ sum_min (value_by_key (atoi(strcat "4"  on_ed12  on_ed11))MONTH))))
    (if (value_by_key (atoi(strcat "5"  on_ed12  on_ed11))MONTH)
  (setq sum_min (+ sum_min (value_by_key (atoi(strcat "5"  on_ed12  on_ed11))MONTH))))
    (if (value_by_key (atoi(strcat "6"  on_ed12  on_ed11))MONTH)
  (setq sum_min (+ sum_min (value_by_key (atoi(strcat "6"  on_ed12  on_ed11))MONTH))))
    (if (value_by_key (atoi(strcat "7"  on_ed12  on_ed11))MONTH)
  (setq sum_min (+ sum_min (value_by_key (atoi(strcat "7"  on_ed12  on_ed11))MONTH))))
    (if (value_by_key (atoi(strcat "8"  on_ed12  on_ed11))MONTH)
  (setq sum_min (+ sum_min (value_by_key (atoi(strcat "8"  on_ed12  on_ed11))MONTH))))
    (if (value_by_key (atoi(strcat "9"  on_ed12  on_ed11))MONTH)
  (setq sum_min (+ sum_min (value_by_key (atoi(strcat "9"  on_ed12  on_ed11))MONTH))))
    (if (value_by_key (atoi(strcat "10"  on_ed12  on_ed11))MONTH)
  (setq sum_min (+ sum_min (value_by_key (atoi(strcat "10"  on_ed12  on_ed11))MONTH))))
  (if (value_by_key (atoi(strcat "11"  on_ed12  on_ed11))MONTH)
  (setq sum_min (+ sum_min (value_by_key (atoi(strcat "11"  on_ed12  on_ed11))MONTH))))
  (if (value_by_key (atoi(strcat "12"  on_ed12  on_ed11))MONTH)
  (setq sum_min (+ sum_min (value_by_key (atoi(strcat "12"  on_ed12  on_ed11))MONTH))))
  (if (value_by_key (atoi(strcat "13"  on_ed12  on_ed11))MONTH)
  (setq sum_min (+ sum_min (value_by_key (atoi(strcat "13"  on_ed12  on_ed11))MONTH))))
  (if (value_by_key (atoi(strcat "14"  on_ed12  on_ed11))MONTH)
  (setq sum_min (+ sum_min (value_by_key (atoi(strcat "14"  on_ed12  on_ed11))MONTH))))
  (if (value_by_key (atoi(strcat "15"  on_ed12  on_ed11))MONTH)
  (setq sum_min (+ sum_min (value_by_key (atoi(strcat "15"  on_ed12  on_ed11))MONTH))))
  (if (value_by_key (atoi(strcat "16"  on_ed12  on_ed11))MONTH)
  (setq sum_min (+ sum_min (value_by_key (atoi(strcat "16"  on_ed12  on_ed11))MONTH))))
  (if (value_by_key (atoi(strcat "17"  on_ed12  on_ed11))MONTH)
  (setq sum_min (+ sum_min (value_by_key (atoi(strcat "17"  on_ed12  on_ed11))MONTH))))
  (if (value_by_key (atoi(strcat "18"  on_ed12  on_ed11))MONTH)
  (setq sum_min (+ sum_min (value_by_key (atoi(strcat "18"  on_ed12  on_ed11))MONTH))))
  (if (value_by_key (atoi(strcat "19"  on_ed12  on_ed11))MONTH)
  (setq sum_min (+ sum_min (value_by_key (atoi(strcat "19"  on_ed12  on_ed11))MONTH))))
  (if (value_by_key (atoi(strcat "20"  on_ed12  on_ed11))MONTH)
  (setq sum_min (+ sum_min (value_by_key (atoi(strcat "20"  on_ed12  on_ed11))MONTH))))
  (if (value_by_key (atoi(strcat "21"  on_ed12  on_ed11))MONTH)
  (setq sum_min (+ sum_min (value_by_key (atoi(strcat "21"  on_ed12  on_ed11))MONTH))))
  (if (value_by_key (atoi(strcat "22"  on_ed12  on_ed11))MONTH)
  (setq sum_min (+ sum_min (value_by_key (atoi(strcat "22"  on_ed12  on_ed11))MONTH))))
  (if (value_by_key (atoi(strcat "23"  on_ed12  on_ed11))MONTH)
  (setq sum_min (+ sum_min (value_by_key (atoi(strcat "23"  on_ed12  on_ed11))MONTH))))
  (if (value_by_key (atoi(strcat "24"  on_ed12  on_ed11))MONTH)
  (setq sum_min (+ sum_min (value_by_key (atoi(strcat "24"  on_ed12  on_ed11))MONTH))))
  (if (value_by_key (atoi(strcat "25"  on_ed12  on_ed11))MONTH)
  (setq sum_min (+ sum_min (value_by_key (atoi(strcat "25"  on_ed12  on_ed11))MONTH))))
  (if (value_by_key (atoi(strcat "26"  on_ed12  on_ed11))MONTH)
  (setq sum_min (+ sum_min (value_by_key (atoi(strcat "26"  on_ed12  on_ed11))MONTH))))
  (if (value_by_key (atoi(strcat "27"  on_ed12  on_ed11))MONTH)
  (setq sum_min (+ sum_min (value_by_key (atoi(strcat "27"  on_ed12  on_ed11))MONTH))))
  (if (value_by_key (atoi(strcat "28"  on_ed12  on_ed11))MONTH)
  (setq sum_min (+ sum_min (value_by_key (atoi(strcat "28"  on_ed12  on_ed11))MONTH))))
  (if (value_by_key (atoi(strcat "29"  on_ed12  on_ed11))MONTH)
  (setq sum_min (+ sum_min (value_by_key (atoi(strcat "29"  on_ed12  on_ed11))MONTH))))
  (if (value_by_key (atoi(strcat "30"  on_ed12  on_ed11))MONTH)
  (setq sum_min (+ sum_min (value_by_key (atoi(strcat "30"  on_ed12  on_ed11))MONTH))))
  (if (value_by_key (atoi(strcat "31"  on_ed12  on_ed11))MONTH)
  (setq sum_min (+ sum_min (value_by_key (atoi(strcat "31"  on_ed12  on_ed11))MONTH))))
  
  (setq
    sum_hour (fix( / sum_min 60))
    plus_min (fix(- sum_min (* sum_hour 60)))
  )
  (alert (strcat "Total time by month:" " "(itoa sum_hour)":"(itoa plus_min)))
  

;;;----------------------------------------------------------------------------------------------------------------------
  
  ) ;_progn
  ) ;_if(= 1 (start_dialog))#2
   );_progn    
     );_if(= 1 (start_dialog))#1
   (unload_dialog dcl_id_1)
  (unload_dialog dcl_id)
    (princ)
) ;_Wday

;;;***********************************************************************************************************
(defun test (lst key value)
  (if (assoc key lst)
    (subst (list key value) (assoc key lst) lst)
    lst
  ) ;_ end of if 
) ;_ end of defun 

(defun getvalues (WorkDat / handle str res)
   (if (findfile WorkDat)
    (progn
      (setq handle (open WorkDat "r"))
      (while (setq str (read-line handle))
	(setq res (cons (vl-string-trim " " str) res))
      ) ;_ end of while 
      (close handle)
    ) ;_ end of progn 
  ) ;_ end of if 
  (reverse res)
) ;_ end of defun 

(defun savevalues (WorkDat lst / handle)
  (setq handle (open WorkDat "w"))
  (mapcar '(lambda (x)
	     (write-line
	       (vl-string-trim "()" (vl-princ-to-string x))
	       handle
	     )
	   ) ;_ end of lambda 
	  lst
  ) ;_ end of mapcar 
  (close handle)
) ;_ end of defun

;;;***********************************************************************************************************
(defun new_key (key value WorkDat / handle lst)
  (setq	lst
	 (mapcar (function (lambda (a) (read (strcat "(" a ")"))))
		 (setq lst (GETVALUES WorkDat))
	 ) ;_  mapcar 
  ) ;_setq 
  (if
    (not (cadr (assoc key lst)))
     (progn
       (setq handle (open WorkDat "a"))
       (write-line (strcat (itoa key) " " "2") handle)
       (close handle)
     ) ;_progn
  );_if
  (setq	lst
	 (mapcar (function (lambda (a) (read (strcat "(" a ")"))))
		 (setq lst (GETVALUES WorkDat))
	 ) ;_  mapcar 
  ) ;_setq 
  (savevalues WorkDat (test lst key value))
;;;  (getvalues WorkDat)
) ;_pr_ba

;;;***********************************************************************************************************
(defun value_by_key (key WorkDat / lst)
  (setq	lst
	 (mapcar (function (lambda (a) (read (strcat "(" a ")"))))
		 (setq lst (GETVALUES WorkDat))
	 ) ;_  mapcar 
  ) ;_setq 
  (cadr (assoc key lst))
) ;_pr_ba

;;;***********************************************************************************************************
Код:
[Выделить все]
//WorkData
WorkData :dialog { 
   label = "WorkDay";
   :boxed_column{ label = "Today";
   :boxed_row{
   : edit_box { 
      key = "Year"; 
      label = "Year   "; 
      }
   }//_boxed_row
   :boxed_row{
   : edit_box { 
      key = "Month"; 
      label = "Month"; 
      }
   }//_boxed_row
      :boxed_row{
      : edit_box { 
      key = "Day"; 
      label = "Day    "; 
      }
   }//_boxed_row
   }
   : row { 
      ok_cancel; 
      } 
   }
//_WorkData
Код:
[Выделить все]
//WorkDay 
WorkDay : dialog { label = "WorkDay for AutoCad" ;

   :boxed_column{ label = "by Sandovsky V. [email protected]";
   :boxed_column {label="";
   :row {
   :text{ label = "Today"; }
   :text{ key = "Real_Data"; }
           }
   :row {
   :text{ label = "Time"; }
   :text{ key = "Real_Time"; }
           }
        }
           :boxed_column {label="";
   :row {
   :image{
     key=" ";
     height=0;
     width=10;
     color=-15;
        }
   :text{ label = "Hour"; fixed_width_font=true;  alignment = right;}
   :text{ label = "Min";  fixed_width_font=true;  alignment = right;}
        }
        }
   :boxed_column {label="";        
//------------------------------------------------------------------------------------------------------------
   :row {           
   : edit_box { 
      key = "Key1"; 
      label = "IN             " ; 
      }
   : edit_box { 
      key = "Key2"; 
      label = ":" ; 
      }
      }
//------------------------------------------------------------------------------------------------------------
   :row {
   : edit_box { 
      key = "Key3"; 
      label = "Lanch In   " ; 
      }
   : edit_box { 
      key = "Key4"; 
      label = ":" ; 
      }
      }
//------------------------------------------------------------------------------------------------------------
   :row {
   : edit_box { 
      key = "Key5"; 
      label = "Lanch Out" ; 
      }
   : edit_box { 
      key = "Key6"; 
      label = ":" ; 
      }
      }
//------------------------------------------------------------------------------------------------------------
   :row {
   : edit_box { 
      key = "Key7"; 
      label = "OUT         " ; 
      }
   : edit_box { 
      key = "Key8"; 
      label = ":" ; 
      }
      }
//------------------------------------------------------------------------------------------------------------
   }
   }
:boxed_row {label="Save_Cancel"; fixed_width=true;  alignment = left ;
   ok_cancel;
} //_br Ok_Cancel
} //_WorkDay
Приятного использования
[ATTACH]1190535178.rar[/ATTACH]
Просмотров: 12591
 
Непрочитано 23.09.2007, 13:19
#2
p_sh

новичок
 
Регистрация: 19.06.2005
Ярославль
Сообщений: 3,396


ага можно тогда комп ваще не выключать и запустить прогу робот чтобы мышой водила и кнопки нажимала
p_sh вне форума  
 
Непрочитано 23.09.2007, 14:45
#3
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Только в лиспе не выполняется контроль наличия ЕТ, а файл julian.lsp оттуда.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 23.09.2007, 14:46
#4
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Наш ответ Чимберлену
[ATTACH]1190544372.jpg[/ATTACH]
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 23.09.2007, 15:00
#5
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Вы наверное меня неправильно поняли, это программа для подсчета часов рабочего
времени работника, который каждое утро приходит на работу, изо дня в день из года в год и лучшие годы своеи жизни продает за деньги работодателю
Holon вне форума  
 
Непрочитано 23.09.2007, 15:16
#6
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Не хочу никого оскорблять но, по моему эта такая же дурость как введение эл.карточек при входе и выходе с работы - если работа строго часовая - например охрана или дежурства какие либо - то есть график, если по объему работы - то по факту - а для чего платить по тому времени когда человек делает вид что делает работу???
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 23.09.2007, 15:55
#7
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Ситуация такая, что проэктировщики, техники CNC работают на заводе каждый день
разное кол-во часов по требованию работодателя, и получают почасовую зарплату,
на следуюсщий месяц после получения расщетного листа из бугалтерии, иногда по ошибке той-же бугалтерии рабочих часов нехватает, скажу проще аналогичная программа в мобильном телефоне сэкономила мне сотни долларов.
Holon вне форума  
 
Непрочитано 23.09.2007, 16:05
#8
X-DeViL

Бизнес-шмизнес
 
Регистрация: 26.05.2004
Питер
Сообщений: 1,911


Не стоит на то что лично для кого-то неприемлемо - сразу говорить дурость. Со стороны работника - деньги за пинание балды - это хорошо. со стороны работодателя - плохо... Holon пишет ее со стороны работника )

Какие условия заложены в программе? А то просто код понятен единицам... и то после нескольких часов чтения...

Просто считаю кол-во часов когда активно окно автокада? или какие-то прибамбасы?
__________________
:diablo: Truth is out there
X-DeViL вне форума  
 
Автор темы   Непрочитано 23.09.2007, 16:54
#9
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Все банально просто, человек пришел на работу записал время ушел с работы записал время, если был перерыв (неоплачиваемый) внес время входа выхода на перерыв, получил время за день и за месяц, набрав предыдущий месяц можно увидеть,
кол-во часов за прошлый месяц, для некоторых людей удобно вести статистику часов, что-бы непереработать и не платить более высокие налоги с зарплаты, но это
уже специфика некоторых стран
Holon вне форума  
 
Непрочитано 23.09.2007, 17:32
#10
Огурец

Profan
 
Регистрация: 27.04.2005
Москва
Сообщений: 6,752
Отправить сообщение для Огурец с помощью Skype™


Я вот недавно: часов 10 крутил орбитом картинку восьмерика, по 2-3 раза в час, обдумывая расположение кокошников, тупо глядел в экран, просматривал в интернете и в фотоархиве аналоги, просидел в библиотеке не помню уж сколько. Не начертил за это время ни одного объекта, не говоря уже о чертежах. В конце концов придумал. Это как расценивать - по часам?
[ATTACH]1190554363.dwg[/ATTACH]
Огурец вне форума  
 
Автор темы   Непрочитано 23.09.2007, 17:41
#11
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Я уехал из стран СНГ уже как 10 лет, поэтому представления неимел, что в России
почасовая оплата труда не применяется, все почему-то путают свои часы с производительностью.
Holon вне форума  
 
Непрочитано 23.09.2007, 17:50
#12
Огурец

Profan
 
Регистрация: 27.04.2005
Москва
Сообщений: 6,752
Отправить сообщение для Огурец с помощью Skype™


А вот любопытно, у кого в проектировании применяется почасовая система оплаты труда?
Огурец вне форума  
 
Автор темы   Непрочитано 23.09.2007, 17:56
#13
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Стекольная промышленность ветрины двери из стекла душевые кабинки и т.д.
Holon вне форума  
 
Непрочитано 23.09.2007, 17:59
#14
Огурец

Profan
 
Регистрация: 27.04.2005
Москва
Сообщений: 6,752
Отправить сообщение для Огурец с помощью Skype™


А на качество проектирования эта система оплаты труда как-то влияет?
Огурец вне форума  
 
Автор темы   Непрочитано 23.09.2007, 19:47
#15
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


я нехочу входить в полимику но могу сказать, что летом мы устанавливали,
стеклянное торговое оборудование в одном из торговых центров Москвы, спроектированное нашей фирмой, мы получили этот проэкт из-за того, что наши
цены и скорость понравились заказчику, хотя это никакого отношения к программе
неимеет.
Holon вне форума  
 
Непрочитано 23.09.2007, 20:08
#16
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Код:
[Выделить все]
Команда: wd
23092007 0
; ошибка: неверный тип аргумента: streamp nil
Profan вне форума  
 
Автор темы   Непрочитано 23.09.2007, 20:25
#17
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


можно поподробней какие параметры вводил, у нас эта программа работает успешно у двоих человек уже несколько дней.
Holon вне форума  
 
Непрочитано 23.09.2007, 20:49
#18
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Никаких параметров не удалось ввести. Скачал архив из сообщения 1. Разархивировал. Папку WorkDay прописал в путях доступа AutoCAD к файлам поддержки. Загрузил файл WorkDay_C.lsp. Ввел команду WD и получил вышеприведенное сообщение. AutoCAD 2005 РУС.
Profan вне форума  
 
Автор темы   Непрочитано 23.09.2007, 22:03
#19
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Программа работает на ACad 2006 ACad 2008 ACad Mehanicl 2007 все английские версии, в одном случае была
ошибка в ACad 2006 когда небыл установлен "Express Tool" и программа ненаходила файл "julian.lsp" после
подключения файла и прописи его путей все заработало.
Нет возможности протестировать на русском ACad-е у кого программа работает на русском Автокаде
просьба сообсщить заранее благодарен.
Holon вне форума  
 
Непрочитано 23.09.2007, 22:24
#20
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


Holon
У нас в СНГ нужен такой лисп который выдвал бы это:

1. Количество нарисованных приметивов в день
line-1000шт
circle-234шт
и т.д.
количесвто удаленных приметивов -2332шт.
(если количество удаленных превышает количесвто нарисованных выпадает окошко ДЕНЬ ПРОШЕЛ ЗРЯ НЕ ЖДИ ЗАРПЛАТУ)

2. Время простоя суммарное -- 2часа32мин48сек (автокад включен но ничего не делалось)

3. Количество включений автокада

4. Вычисляется скорость нарисованных приметивов, время на количество, т.е. это и есть производительность

5. Количество отправленных на принтер чертежей

6. Это применимо к одному файлу


7. Эта статистическая таблица выходит по команде
(так можно контролировать самого себя, и свою совесть)


будем ждать лисп
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Программа для подсчета рабочих часов

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск