Penomeran Ruangan Secara Otomatis

Ni coding dibuat untuk memberikan penomeran ruangan berurutan secara otomatis.Masih banyak kekurangan dari coding ini dimana baru bisa membuat urutan dari kiri kekanan. Dan dari atas ke bawah. Dan ruanganpun masih dianggap bujur sangkar. Beberapa nilai variable masih gagal dibuat menjadi default. Anggep ini versi beta masih butuh perbaikan. Tapi dah bisa dipake.

Coding membutuhkan acuan 2 titik untuk mengambil titik tengah. Hampir sama dengan snap mid between 2 point standard.

[sourcecode language=’cpp’]

;Penomeran Ruang Stand
;Dibuat : Afrizanirman
;tgl : 16/10/09
;V.1
;Masih ada kekurangan dimana baru bisa
;Mengurutkan nomer dari kiri ke kanan
;Dan dari atas kebawah
;Data belum bisa di masukan secar default
;Text masih dibuat default setinggi 60 dan 20
;Titik Tengah mengambil 2 titik acuan
;Warna text default warna merah
; Convert value in radians to degrees
(defun RTD (X)
(* 180.0 (/ X pi))
);defun RTD
(defun Text_Nomor_Ruangan (PT VAl)
(entmake
(list
(cons 0 “TEXT”)
(cons 8 (getvar “CLAYER”))
(cons 10 PT)
(cons 62 1)
(cons 40 60.0)
(cons 1 VAL)
(cons 50 0.0)
(cons 7 (getvar “TEXTSTYLE”))
(cons 71 0)
(cons 72 1)
(cons 73 1)
(cons 11 PT)))
);defun Text_Nomor_Ruangan
;——–
(defun Text_Panjang_Lebar_Ruangan (PT TPLR)
(entmake
(list
(cons 0 “TEXT”)
(cons 8 (getvar “CLAYER”))
(cons 10 PT)
(cons 62 1)
(cons 40 20.0)
(cons 1 TPLR)
(cons 50 0.0)
(cons 7 (getvar “TEXTSTYLE”))
(cons 71 0)
(cons 72 1)
(cons 73 2)
(cons 11 PT)))
);defun Text_Panjang_Lebar_Ruangan

(defun c:PRS (/  dVars PT1 PT2 ang PT
OldOsn OldEch CNT VAL ) ;Penomeran Ruangan Stand

(setq dVars ‘(PR LR SN EN ))
(mapcar ‘(lambda (x y) (or (boundp x) (set x y))) dVars ‘(300 300 1 10 ))

(setq PR (getreal (strcat “\nMasukan Panjang Ruangan<" (rtos PR) ">:”))
LR (getreal (strcat “\nMasukan Lebar Ruangan<" (rtos LR) ">:”))
SN (getint (strcat “\nNomor Urut Dimulai Dari<" (rtos SN) ">:”))
EN (getint (strcat “\nNomor Urut Terakhir<" (rtos EN) ">:”))
TPLR (strcat (rtos PR 2 0) ” ” “x” ” ” (rtos LR 2 0))
);setq
(setq PT1 (getpoint “\nTitik Acuan Pertama :”)
PT2 (getpoint “\nTitik Acuan Kedua:”)
ang (angle PT1 PT2)
)
(if (= ang 0 )
(setq ang 0)
(setq ang (/ pi 2))
)

(if (= ang 0)
(setq PT (list (/(+ (car PT1) (car PT2)) 2) (cadr PT1)))
(setq PT (list (car PT1) (/(+ (cadr PT1) (cadr PT2)) 2)))
);if
(setq OldOsn (getvar “osmode”)
OldEch (getvar “cmdecho”)
)
(setvar “osmode” 0)
(setvar “cmdecho” 0)
(setq cnt 0)

(repeat (+(- EN SN)1)
(Text_Nomor_Ruangan  (polar PT ang (* LR  cnt)) (setq VAL (rtos (+ SN CNT) 2 0)))
(Text_Panjang_Lebar_Ruangan (polar PT ang (* LR  cnt)) TPLR)
(setq cnt (1+ cnt))
(princ)
);repeat

(setvar “osmode” OldOsn)
(setvar “cmdecho” OldEch)
(princ)
);defun PRS
(princ)

[/sourcecode]

Yang mau melengkapi silahkan.

Salam,

Afri