Search

Minggu, 07 Agustus 2011

Mengganti elevasi object ke nol (z point = 0)

Bila anda tidak dapat menjalankan command atau perintah fillet terhadap dua object garis, bisa jadi disebabkan oleh perbedaan Z POINT-nya. Lines are non coplanar, pesan tersebut merupakan hasil dari perintah fillet terhadap dua object garis yang berbeda elevasi atau z point-nya. Agar kita dapat menjalankan perintah fillet tersebut, maka elevasi atau z point dua object garis tersebut harus kita samakan dulu. Berikut ini adalah program autolisp untuk mengganti elevasi object yang dipilih menjadi nol ( z point = 0 ) :

(defun c:z0 ()
  (princ "Select objects: ") (setq ss (ssget) count (1- (sslength ss)) asno 9)
  (command "undo" "mark")
  (while (>= count 0)
    (setq curent (entget (ssname ss count)))
    (while (and
                (setq asno (1+ asno))
                (< asno 19)
                (if (not (assoc asno curent)) (progn ; begin if polyline
                  (setq asno 38)
                  (if (assoc asno curent) (progn
                    (entupd (cdr (assoc -1 (entmod
                      (subst
                        (cons asno 0.0)
                        (assoc asno curent)
                        curent
                      )
                    )))) nil
                  )
                  nil
                )
              )
              T
            ) ; if polyline
          )
      (if (/= 0 (cadddr (assoc asno curent)))
        (entupd (cdr (assoc -1 (setq curent (entmod
          (subst
            (cons asno (list (cadr (assoc asno curent)) (caddr (assoc asno curent)) 0))
            (assoc asno curent)
            curent
          )
        ))))) ; entupd
      ) ; if
    ) ; while and
    (setq count (1- count) asno 9)
  ) ; while count
  (princ)
)

Cara menggunakan program ini :
1. Copy dan paste program tsb ke dalam notepad
2. lalu save file tsb dengan extension .lsp
3. dari dalam program Autocad anda ketikan command / perintah APPLOAD

4. Pilih file lsp anda yg tadi kemudian klik tombol "load"
5. Setelah itu tutup dialog box dengan meng-klik tombol "close"
6. Pada command bar anda bisa masukan perintah z0
Silahkan dicoba.. :D

Kamis, 04 Agustus 2011

Menghitung luasan + text hasil luasannya

Command ini untuk menghitung luasan suatu object polyline tertutup dengan tambahan text hasil luasannya dan nama ruangnya. Berikut program autolispnya :

(defun c:ae (/ pil pt txt)
   (setvar "cmdecho" 0)

   (command "undo" "be")
   (setq pil (ssget))
   (command "area" "e" pil)

   (initget 1)
   (setq pt (getpoint "\nPick point for text: "))
   (setq txt (getstring T "\nNama ruang: "))
   (command "text" "j" "mc" pt "" txt )
   (command "text" "" (strcat (rtos (/ (getvar "area") 1000000) 2 0) "m2"))

   (command "undo" "e")
   (princ)
)

Cara menggunakan program ini :
1. Copy dan paste program tsb ke dalam notepad
2. lalu save file tsb dengan extension .lsp
3. dari dalam program Autocad anda ketikan command / perintah APPLOAD

4. Pilih file lsp anda yg tadi kemudian klik tombol "load"
5. Setelah itu tutup dialog box dengan meng-klik tombol "close"
6. Pada command bar anda bisa masukan perintah ae
Silahkan dicoba.. :D

Rabu, 03 Agustus 2011

Multiple Scale

Command ini untuk mengubah skala object block, xref, text atau mtext dengan titik acuan pada insert point-nya. Pada saat melakukan Select objects kita bisa memilih seluruh object diatas. Berikut program autolispnya :

(defun c:msc ( / 1r ss1 2r num spnt)
  (setvar "cmdecho" 0)
  (command ".undo" "be")
  (setq ss1 (ssget '((-4 . "<OR")(-4 . "<AND")
                       (0 . "TEXT")
                     (-4 . "AND>")(-4 . "<AND")
                       (0 . "MTEXT")
                     (-4 . "AND>")(-4 . "<AND")
                       (0 . "INSERT")
                     (-4 . "AND>")(-4 . "<AND")(0 . "ATTDEF")(-4 . "AND>")(-4 . "OR>"))
            )
  )
  (setq 1r (getreal "\nSkala awal : "))
  (setq 2r (getreal "\nSkala baru : "))
  (setq num 0)
  (repeat (sslength ss1)
    (setq spnt (cdr (assoc 10 (entget (ssname ss1 num)))))
    (command "._scale" (ssname ss1 num) "" spnt "R" 1r 2r)
    (setq num (1+ num))
  )
  (command ".undo" "e")
  (princ)
)

Cara menggunakan program ini :
1. Copy dan paste program tsb ke dalam notepad
2. lalu save file tsb dengan extension .lsp
3. dari dalam program Autocad anda ketikan command / perintah APPLOAD

4. Pilih file lsp anda yg tadi kemudian klik tombol "load"
5. Setelah itu tutup dialog box dengan meng-klik tombol "close"
6. Pada command bar anda bisa masukan perintah msc
Silahkan dicoba.. :D

Freeze layer pada block atau xref

Command ini untuk ng-freeze layer yang menjadi bagian dari suatu block atau xref. Caranya dengan memilih object layer pada block atau xref tsb. Berikut program autolispnya :

(defun c:xf ( / ePick eList sLayer)
  (setq ePick (nentsel "\nSelect nested xref or block object to list: "))
  (setq eList (entget (car ePick)))
  (setq sLayer (cdr (assoc 8 eList)))
  (command "-layer" "freeze" sLayer "")
)

Cara menggunakan program ini :
1. Copy dan paste program tsb ke dalam notepad
2. lalu save file tsb dengan extension .lsp
3. dari dalam program Autocad anda ketikan command / perintah APPLOAD

4. Pilih file lsp anda yg tadi kemudian klik tombol "load"
5. Setelah itu tutup dialog box dengan meng-klik tombol "close"
6. Pada command bar anda bisa masukan perintah xf
Silahkan dicoba.. :D

Selasa, 02 Agustus 2011

Membuat gambar potongan plafond

Berikut ini adalah program autolisp untuk membuat gambar potongan plafond : 

(defun c:plf (/ pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 pt10 pt1a pt1b pt1c pt1d pt1e pt1f pt2a pt2b pt2c pt2d pt2e pt2f jr)
   (command "undo" "be")
   (setvar "cmdecho" 0)

   (initget 1)
   (setq pt1 (getpoint "\nStart Point: "))

   (initget 1)
   (setq pt2 (getpoint pt1 "\nEnd Point: "))
   (setq jr (distance pt1 pt2))
   (setq ang (angle pt1 pt2))
   (setq pt3 (polar pt1 (+ (/ pi 2) ang) 10))
   (setq pt4 (polar pt3 ang jr))
   (setq pt5 (polar pt3 (+ (/ pi 2) ang) 40))
   (setq pt6 (polar pt5 ang jr))
   (setq pt7 (polar pt3 ang 40))
   (setq pt8 (polar pt4 (+ pi ang) 40))
   (setq pt9 (polar pt5 ang 40))
   (setq pt10 (polar pt6 (+ pi ang) 40))

   (setq pt1a (polar pt1 ang 10))
   (setq pt1b (polar pt3 ang 10))
   (setq pt1c (polar pt1 ang 1))
   (setq pt1d (polar pt1c (+ (/ pi 2) ang) 9))
   (setq pt1e (polar pt1d ang 8))
   (setq pt1f (polar pt1c ang 8))

   (setq pt2a (polar pt2 (+ pi ang) 10))
   (setq pt2b (polar pt4 (+ pi ang) 10))
   (setq pt2c (polar pt2 (+ pi ang) 1))
   (setq pt2d (polar pt2c (+ (/ pi 2) ang) 9))
   (setq pt2e (polar pt2d (+ pi ang) 8))
   (setq pt2f (polar pt2c (+ pi ang) 8))

   (setq lama (getvar "osmode"))
   (setvar "osmode" 0)
   (setvar "clayer" "ceiling")
   (command "line" pt1a pt2a "")
   (setvar "clayer" "fin")
   (command "line" pt3 pt9 pt10 pt4 "")
   (command "line" pt5 pt7 pt8 pt6 "")
   (setvar "clayer" "steel")
   (command "pline" pt3 pt7 pt9 pt5 "c")
   (command "pline" pt4 pt8 pt10 pt6 "c")
   (command "pline" pt1 pt3 pt1b pt1a pt1f pt1e pt1d pt1c "c")
   (command "pline" pt2 pt4 pt2b pt2a pt2f pt2e pt2d pt2c "c")
   (setvar "clayer" "0")
   (setvar "osmode" lama)
)

Contoh hasil pembuatannya :


Cara menggunakan program ini :
1. Copy dan paste program tsb ke dalam notepad
2. lalu save file tsb dengan extension .lsp
3. dari dalam program Autocad anda ketikan command / perintah APPLOAD

4. Pilih file lsp anda yg tadi kemudian klik tombol "load"
5. Setelah itu tutup dialog box dengan meng-klik tombol "close"
6. Pada command bar anda bisa masukan perintah plf
Silahkan dicoba.. :D

Membuat notasi denah pintu & jendela


Bagi anda yg ingin mempermudah dalam membuat gambar notasi denah pintu, berikut ini adalah program autolispnya :

(command "undo" "be")

(command "-layer" "new" "kusen" "color" "74" "kusen" "L" "continuous" "kusen" "")
(command "-layer" "new" "hid" "color" "12" "hid" "L" "hidden" "hid" "")
(command "-layer" "new" "glass" "color" "140" "glass" "L" "continuous" "glass" "")


(defun awal ()
   (initget 1)
   (setq pt1 (getpoint "\nStart: "))
   (initget 1)
   (setq pt (getpoint pt1 "\nDirection: "))
   (setq ang (angle pt1 pt))
   (setq angt (angtos ang 4 4))
)

(defun bukaan1 ()
   (initget 7)
   (setq len (getreal "\nOpening: "))
   (setq len1 (+ (/ len 2 ) 50))
   (setq len2 len)
)

(defun bukaan2 ()
   (initget 7)
   (setq len (getreal "\nOpening: "))
   (setq len (/ len 2))
   (setq len1 (+ (/ len 2 ) 50))
   (setq len2 len)
)

(defun titik1 ()
   (setq pt2 (polar pt1 (+ ang (/ pi 2)) 150))
   (setq pt3 (polar pt2 ang 40))
   (setq pt4 (polar pt3 (- ang (/ pi 2)) 40))
   (setq pt5 (polar pt4 ang 10))
   (setq pt6 (polar pt5 (- ang (/ pi 2)) 110))
   (setq pt7 (polar pt1 ang len1))
   (setq pt7a (polar pt6 ang len))
   (setq pt8 (polar pt3 ang (+ len 20)))
   (setq pt8a (polar pt3 ang (+ len 10)))
   (setq pt9 (polar pt7 (+ ang (/ pi 2)) 200))
   (setq pt9a (polar pt7a (+ ang (/ pi 2)) 200))
   (setq pt10 (polar pt3 ang 40))
   (setq pt11 (polar pt10 (+ ang (/ pi 2)) (+ len 20)))
   (setq pt11a (polar pt10 (+ ang (/ pi 2)) (+ len 10)))
   (setq pt12 (polar pt3 (+ ang (/ pi 2)) (+ len 20)))
   (setq pt12a (polar pt3 (+ ang (/ pi 2)) (+ len 10)))
)

(defun titik2 ()
   (setq pt2 (polar pt1 (- ang (/ pi 2)) 150))
   (setq pt3 (polar pt2 ang 40))
   (setq pt4 (polar pt3 (+ ang (/ pi 2)) 40))
   (setq pt5 (polar pt4 ang 10))
   (setq pt6 (polar pt5 (+ ang (/ pi 2)) 110))
   (setq pt7 (polar pt3 ang 100))
   (setq pt8 (polar pt7 (+ ang (/ pi 2)) 40))
   (setq pt9 (polar pt7 (+ ang (/ pi 2)) 20))
   (setq pt10 (polar pt3 ang (+ len 10)))
   (setq pt11 (polar pt10 (+ ang (/ pi 2)) 150))
   (setq pt12 (polar pt7 ang (- (* len 2) 180)))
   (setq pt13 (polar pt8 ang (- (* len 2) 180)))
   (setq pt14 (polar pt9 ang (- (* len 2) 180)))
   (setq pt15 (polar pt6 ang (* len 2)))
)

(defun kusen1 ()
   (command "pline" pt1 pt2 pt3 pt4 pt5 pt6 "c")
   (command "mirror" "L" "" pt7 pt9 "n")
   (command "pline" pt3 pt10 pt11 pt12 "c")
   (command "arc" pt8 "c" pt3 pt12)
   (command "change" "L" "" "P" "layer" "hid" "")
   (setvar "clayer" lama)
)

(defun kusen2 ()
   (command "pline" pt1 pt2 pt3 pt4 pt5 pt6 "c")
   (command "mirror" "L" "" pt7a pt9a "n")
   (command "pline" pt3 pt10 pt11a pt12a "c")
   (command "mirror" "L" "" pt7a pt9a "n")
   (command "arc" pt8a "c" pt3 pt12)
   (command "change" "L" "" "P" "layer" "hid" "")
   (command "mirror" "L" "" pt7a pt9a "n")
   (setvar "clayer" lama)
)

(defun kusen3 ()
   (command "pline" pt1 pt2 pt3 pt4 pt5 pt6 "c")
   (command "mirror" "L" "" pt10 pt11 "n")
   (command "rectang" pt3 pt8)
   (command "mirror" "L" "" pt10 pt11 "n")
   (command "line" pt7 pt12 "")
   (command "line" pt8 pt13 "")
   (command "line" pt6 pt15 "")
   (command "pline" pt9 pt14 "")
   (command "pedit" "last" "w" "6" "")
   (command "change" "L" "" "P" "layer" "glass" "")
   (setvar "clayer" lama)
)

(defun C:d1 (/ pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt7a pt8 pt8a pt9 pt9a pt10 pt11 pt11a pt12 pt12a len len1 len2 pt ang angt)
   (setvar "cmdecho" 0)
   (command "undo" "be")
   (setq lama (getvar "clayer"))
   (setvar "clayer" "kusen")
   (awal)
   (bukaan1)
   (titik1)
   (setq lama1 (getvar "osmode"))
   (setvar "osmode" 0)
   (kusen1)
   (setvar "osmode" lama1)
   (command "undo" "e")
)

(defun C:d2 (/ pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt7a pt8 pt8a pt9 pt9a pt10 pt11 pt11a pt12 pt12a len len1 len2 pt ang angt)
   (setvar "cmdecho" 0)
   (command "undo" "be")
   (setq lama (getvar "clayer"))
   (setvar "clayer" "kusen")
   (awal)
   (bukaan2)
   (titik1)
   (setq lama1 (getvar "osmode"))
   (setvar "osmode" 0)
   (kusen2)
   (setvar "osmode" lama1)
   (command "undo" "e")
)

(defun C:j1 (/ pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 pt10 pt11 pt12 pt13 pt14 pt15 len len1 len2 pt ang angt)
   (setvar "cmdecho" 0)
   (command "undo" "be")
   (setq lama (getvar "clayer"))
   (setvar "clayer" "kusen")
   (awal)
   (bukaan2)
   (titik2)
   (setq lama1 (getvar "osmode"))
   (setvar "osmode" 0)
   (kusen3)
   (setvar "osmode" lama1)
   (command "undo" "e")
)

(setvar "cmdecho" 0)

(command "undo" "e")

Perintah d1 untuk membuat gambar notasi denah pintu single, sedangkan d2 untuk pintu double dan j1 untuk gambar notasi denah jendela bukaan single..
contoh hasil dari perintah tsb :


Cara menggunakan program ini :
1. Copy dan paste program tsb ke dalam notepad
2. lalu save file tsb dengan extension .lsp
3. dari dalam program Autocad anda ketikan command / perintah APPLOAD

4. Pilih file lsp anda yg tadi kemudian klik tombol "load"
5. Setelah itu tutup dialog box dengan meng-klik tombol "close"
6. Pada command bar anda bisa masukan perintah d1, d2 atau j1

Silahkan dicoba.. :D

Shortcut Command Autocad

Buat anda yg belum tau shortcut/singkatan dari command2 di autocad bisa dilihat dengan mengetikan perintah ALIASEDIT di command bar.. setelah itu akan muncul dialog box seperti dibawah ini.


Dsini anda akan melihat singkatan dari perintah/command Autocad.. anda juga dapat mengedit, menghapus
dan menambahkan singkatan baru untuk command yang anda inginkan. Silahkan dicoba.. :D