;; 아래의 모든 리습은 'KiKO Lisp Version 2023.10(B)'에 모두 포함된 리습입니다.
;; 통합 리습 모음을 사용중이면 필요 없습니다.

(vl-bb-set 'NickName_Host "KiKO") ;; 블럭 이름 정의에 사용되는 접두사

;;== BLOCK MAKE ============================================================
(defun C:BLO (/) (KiKO:Block_Create_Ori) (princ))     ;; 블럭 생성
(defun C:BLS (/) (KiKO:Block_Create_Color) (princ))   ;; 블럭 생성 색상 변경 (색상 : ByBlock)
(defun C:BLH (/) (KiKO:Block_Create_Hidden) (princ))  ;; 블럭 생성 숨김 속성 (색상 : ByBlock  ,  라인타입 : ByBlock)

(defun C:MB  (/) (KiKO_BlockNoName_A nil nil T nil) (princ)) ;; 이름 없는 블럭을 생성
(defun C:MBL (/) (KiKO_BlockNoName_A nil nil T T)   (princ)) ;; 이름 없고 분해 안되는 블럭을 생성
;(KiKO_BlockNoName_A Code1 Code2 Code3 Code4)
; - Code1  :  Block base point. < ex. (getpoint) >  or nil
; - Code2  :  Object selection set < ex. (ssget) >  or nil
; - Code3  :  Added to Block object < ex. T > Only
; - Code4  :  Block object as Lock < ex. T >  or nil
;(princ "\n: BLO | BLS | BLH | MB | MBL for Block make                         :")
;;==========================================================================

;;== BLOCK EXPLODE LOCK ====================================================
(defun C:BEY (/) (KiKO:Block_Explode_Lock T)   (princ)) ;; 블럭을 분해가 가능한 상태로 변경
(defun C:BEN (/) (KiKO:Block_Explode_Lock nil) (princ)) ;; 블럭을 분해가 불가능한 상태로 변경
;;==========================================================================

;;== BLOCK COLOR CHANGE  ===================================================
(defun C:BCC (/) (KiKO_Block_Color_Change nil nil) (princ))
;(KiKO_Block_Color_Change Code1 Code2)
; - Code1  :  Block object selection set. < ex. (ssget) >  or nil
; - Code2  :  Color number - int 0 ~ 256  < ex. 3 > or nil
;;==========================================================================

;;== BLOCK OBJECT PROPERTY CHANGE (Layer, Color, Linetype and Line scale) ==
;(KiKO_Block_Layer_Change "G-code1" "G-code2" "G-code3" "G-code4" "G-code5")
; - "G-code1"  :  Object selection set < ex. (ssget) >  or nil
; - "G-code2"  :  Layer name - text    < ex. "Layer0" > or nil
; - "G-code3"  :  Color number - int 0 ~ 256  < ex. 3 > or nil
; - "G-code4"  :  Linetype - text  < ex. "HIDDEN" > or nil
; - "G-code5"  :  Linetype scale - int  < ex. 1 > or nil
(defun C:BLC (/) (KiKO_Block_Layer_Change nil nil nil nil nil) (princ))
(defun C:BLL (/) (KiKO_Block_Layer_Change nil "0" 0 "ByBlock" 1) (princ))
;; 레이어 이름 : 0 // 색상 : ByBlock // 라인타입 : ByBlock // 라인스케일 : 1

(defun C:BBL (/ nn ss b_lay b_col) ;; 블럭 자체의 레이어로 블럭 내부 객체의 레이어를 변경
  (setq nn 0)
  (and
    (princ "\n블럭 선택")
    (setq ss (ssget '((0 . "insert"))))
    (repeat (sslength ss)
      (setq b_lay (cdr (assoc 8 (entget (ssname ss nn)))))
      ;(setq b_col (cdr (assoc 8 (entget (ssname ss nn))))) ;; 색상 변경
      (KiKO_Block_Layer_Change (ssadd (ssname ss nn)) b_lay nil nil nil)
      (setq nn (1+ nn))
    )
  )
  (princ)
)
;(princ "\n: Block Color Change - BCC | Block Layer Change - BLC :")
;;==========================================================================
(defun C:BBP (/) (KiKO:Block_Base_Point_Change) (princ))  ;; 블록의 삽입 기준점 변경
(defun C:A2B (/) (KiKO:Add2Block))    ;; 블록에 객체 추가
(defun C:R2B (/) (KiKO:Remove2Block)) ;; 블록에 객체 제거
;(princ "\n: BLO | BLS | BLH | MB | MBL | BEY | BEN | BCC | BLC for Block Lisp :")
;;== BLOCK RENAME ==========================================================
(defun C:REBN (/) (KiKO_BlockRename nil nil) (princ)) ;; 블럭 이름 변경
(defun C:REBA (/) (KiKO:BlockRename) (princ))  ;; 블럭 이름 변경 (유사 문자열 탐색하여 일괄 변경)
;(princ "\n: REBN  ||  REBA   for Block rename :")
;;==========================================================================

;;== GROUP TOOLS ===========================================================
(defun C:GC (/) (KiKO_Group_Creat_W nil) (princ)) ;; 그룹 생성
(defun C:GA (/) (KiKO_Group_Add_W) (princ)) ;; 기존 그룹에 객체 추가
(defun C:GS (/) (KiKO_Group_Subject_W) (princ)) ;; 기존 그룹에서 객체 제거
(defun C:GX (/) (KiKO_Group_eXplode_W) (princ)) ;; 그룹 분해
;(princ "\n: KiKO Group Lisp | GC  ||  GA  ||  GS  ||  GX :")
;;==========================================================================
(princ)