Tampilkan postingan dengan label AutoLISP. Tampilkan semua postingan
Tampilkan postingan dengan label AutoLISP. Tampilkan semua postingan

3D AutoCAD to PDMS Converter

3D AutoCAD to PDMS Converter adalah peralatan yang berfungsi untuk menkonversi model 3D dari software AutoCAD ke dalam software PDMS.

Terdapat beberapa cara menkonversi 3D AutoCAD ke 3D PDMS, dapat menggunakan juga software keluaran AVEVA yaitu MEI ( Mechanical Equipment Interface ) silahkan baca Import STP ( STEP - File) into Pdms

Berikut cara menggunakan 3D AutoCAD to PDMS Converter :

1. Buka program AutoCAD dan buka file 3D yang akan di konversikan ke 3D PDMS.
 
2. Drag & drop pada command line file 3dCAD2PDMS.VLX. Dengan mengetikkan perintah 3DTOPDMS pada AutoCAD maka akan tampil menu dari 3D AutoCAD to PDMS Converter.


3. Pilih lokasi Output File yang disitu merupakan letak hasil file macro PDMS.

4. Pilih kualitas konversi, High atau Low.

5. Klik pada Tombol Convert untuk mulai menkonversi 3D solid AutoCAD ke file macro PDMS.

6. Buka program PDMS, dan letakkan CE pada ZONE atau member dari ZONE.

7. Drag & drop file macro hasil konversi ke dalam command line PDMS, atau dengan mengetikkan perintah $M /LokasiFIle.

Berikut contoh hasil konversi 3D AutoCAD to PDMS.




DOWNLOAD

Memasukkan block AutoCAD dengan mudah menggunakan AutoLISP

Memasukkan block gambar Autocad sangatlah mudah dengan digabungkan menggunakan AutoLISP.

Silahkan baca Mengganti perintah / command pada Autocad : Menengah . untuk mempermudah mengikuti penjelasan di tulisan ini.

Sangat cocok bagi para drafter yang menggunakan suatu komponen gambar yang sama secara berulang di dalam suatu gambar yang kompleks. Sebagai contoh kasus yang mudah adalah adanya pekerjaan revisi sebuah gambar yang harus menggunakan gambar segitiga revisi.

Memasukkan block AutoCAD dengan mudah menggunakan AutoLISP
Revision Triangle
Diperlukan command AutoCAD REVCLOUD untuk pekerjaan revisi gambar, dan INSERT block untuk menambahkan segitiga revisi pada gambar.

 Untuk lebih mudahnya dengan membuat command - command baru autocad sebagai berikut :

hanya contoh, command bisa diganti sesuai keinginan.
  1.  Untuk command REVCLOUD ganti dengan command ( angka ) 44 .
  2.  Untuk command INSERT permudah dengan menggukan AutoLISP hanya memilih point pada gambar kerja langsung tampil block gambar.  ganti dengan command ( angka ) 55 .
  3. Simpan block gambar menjadi file dwg , beri nama file REV01.dwg dan simpan file tersebut difolder C:\block\. baca juga tulisan mempermudah Insert file block pada AutoCAD.

berikut sourcecode file yang diperlukan :

(defun C:44 ()
(command : "REVCLOUD")
(princ))

(defun C:55 ()
(setq p (getpoint))  ;untuk menentukan titik
(command : "INSERT" "C:/block/REV01.dwg" p "" "" "")  ;untuk memasukkan block pada titik
(princ))

Atau download file Autolisp langsung di  Autocad LISP Download

Memasukkan block AutoCAD dengan mudah menggunakan AutoLISP

Agar kita tidak melakukan drag and drop kode - kode autoLISP  ke gambar kerja Autocad secara manual maka perlu pengaturan agar kode kita load otomatis, baca Konfigurasi agar AutoLISP load otomatis saat AutoCAD dibuka untuk cara konfigurasinya.

Semoga tulisan ini bermanfaat.

Menggunakan Autocad LISP PolyLine to dblisting Panel PDMS

Sebagai 3D PDMS Designer ataupun modeler sangatlah diperlukan peralatan untuk memudahkan dalam pembuatan model 3D PDMS, untuk mempercepat pembuatan ataupun membuat pekerjaan menjadi lebih ringan. Disini saya coba bagikan tools PolyLine to dblisting Panel PDMS yang berguna untuk membuat 3D Panel PDMS dari polyline Autocad. untuk file bisa didownload di link
http://www.nggokabeh.com/p/autocad-lisp-download.html 
silahkan pilih file NggoPL2Pane.vlx
berikut cara - cara penggunaan PolyLine to dblisting Panel PDMS :


1.  download file NggoPL2Pane.vlx di link diatas.


2. Buka program Autocad dari Autodesk,
buat contoh polyline yang tertutup, sebagai contoh lihat gambar dibawah.
Jangan lupa simpan terlebih dahulu file autocad yang sudah ada gambar polyline.
contoh : beri nama file Test_01.dwg


 3. Drag and drop file NggoPL2Pane.vlx ke dalam area kerja model Autocad, maka akan tampil menu Polyline to Pane.



4. Ketikkan command : NGGOPL2PANE
dan pilih polyline yang telah dibuat. Maka akan tampil informasi bahwa file Macro Panel PDMS sudah terbuat.


5.  Text file yang telah terbuat dengan nama yang sama dengan nama file Autocad Test_01.txt


6.  Sekarang dengan file macro Test_01.txt tersebut kita dapat membuat Panel di 3D Design PDMS dengan cara drag and drop file tersebut ke command line PDMS dan pastikan CE adalah STRU Member (STRU,FRMW,SBFR). Gambar dibawah adalah contoh hasil dari tools PolyLine to dblisting Panel PDMS


Semoga tools tersebut dapat membantu mempermudah atau mempercepat pekerjaan para pembaca, silahkan baca tulisan yang alinnya di  http://www.nggokabeh.com/

Menyalin / mengcopy tabel MTO dari AutoCAD ke Excel

      Tulisan saya kali ini adalah pengalaman diri saya yang pernah menggunakan software Autocad bukan mengenai 3D modeling ataupun PDMS, untuk menggambar gambar yang harus mencantumkan tabel Material Take Off ( MTO ) untuk mempermudah para pekerja lapangan melihat / menggunakan material karena sudah tercantum dalam gambar. Dalam hal ini tabel MTO (seperti contoh gambar dibawah ) sudah dibuat di AutoCAD tetapi tidak memakai menu Table AutoCAD yang bisa terkoneksi dengan file Excel.
Menyalin / mengcopy tabel MTO di AutoCAD ke Excel      Dan saya diharuskan menyalin semua tabel MTO dari dalam gambar Autocad ke file Excel untuk membantu perhitungan semua material. Pengalaman saya yang sedikit mengenai Autocad ini saya tuangkan dalam tulisan yang mungkin bisa dikatakan sebuah tips atau trik engineering dan semoga dapat membantu para drafter pengguna AutoCAD yaitu  Menyalin / mengcopy tabel MTO dari AutoCAD ke Excel.

Baca juga Mengapa Harus Belajar Software Aveva PDMS ?

      Bagi para drafter yang jobs nya menggambar menggunakan software AutoCAD, dan telah terlanjur membuat tabel Material Take Off ( MTO ) atau tabel Bill Of Material ( BOM ) di AutoCAD dalam bentuk Text ataupun MText dan ingin menyalin ke file Excel, luangkan waktu sejenakuntuk membaca tulisan ini, semoga dapat membantu menyelesaikan pekerjaan lebih cepat.

     Dibawah ini adalah contoh gambar tabel Material Take Off  ( MTO ) yang telah dibuat di AutoCAD yang akan kita salin ke Excel :

Menyalin / mengcopy tabel MTO di AutoCAD ke Excel

Hasil yang diharapkan adalah Material Take Off ( MTO ) / tabel dapat disalin kedalam software excel 2010, seperti gambar contoh dibawah ini :

Menyalin / mengcopy tabel MTO di AutoCAD ke Excel

Berikut adalah  step - step menyalin MTO dari AutoCAD ke software Excel :

1. Copy kode - kode / script AutoLisp di tulisan paling bawah di halaman ini, dan simpan dalam bentuk Lsp file dan drag and drop kedalam AutoCAD seperti tulisan saya yang sebelumnya, Mengganti perintah / command pada Autocad : Menengah  pada poin 1, 2, 3 dan 4.

 2. Jika tabel Material Take Off ( MTO ) masih terdiri dalam bentuk object Mtext dan Text atau block, maka Explode terlebih dahulu sehingga menjadi bentuk Text semua.

3. Jika dalam suatu cell / value / tulisan dalam tabel MTO terdapat spasi, ganti semua spasi dengan
 karakter @ . Untuk mempermudah mengganti spasi gunakan menu Find ( ketik Command Autocad Find ). Karena ini adalah syarat agar berhasil untuk copy text AutoCAD ke Excel.

4. Jika dalam suatu cell / value / tulisan dalam tabel MTO tidak terdapat isi, harus diisi dengan tanda - . Dan ini merupakan syarat agar cara dalam tulisan  ini berhasil seperti yang diharapkan.

Menyalin / mengcopy tabel MTO dari AutoCAD ke Excel
Contoh sederhana AutoCAD ke Excel

5. Ketik perintah command Autocad : HT2M   -  Horizontal Convert from Text to MText. 
Pilih / select kata pertama dibaris pertama kemudian pilih semua kata dibaris pertama, tekan enter atau spasi. 

Menyalin / mengcopy tabel MTO dari AutoCAD ke Excel

Lakukan cara ini untuk baris - baris berikutnya dengan diselingi enter atau spasi, sehingga menjadi satu tipe MText, satu baris satu Mtext.

Menyalin / mengcopy tabel MTO dari AutoCAD ke Excel

6.  Explode semua baris yang sudah di konversi menjadi satu MText satu baris sehingga semua menjadi Text.

7.  Ketik perintah command Autocad : VT2M   -  Vertical Convert from Text to MText.
Pilih / select baris pertama kemudian pilih semua baris, tekan enter atau spasi, sehingga menjadi satu baris saja yang bertipe MText.

Menyalin / mengcopy tabel MTO dari AutoCAD ke Excel

8. Copy semua tulisan didalam MText.

9. Buka program Microsoft Office Excel dan tempel / paste tulisan hasil copy dari  AutoCAD ke Excel.

Untuk langkah berikutnya silahkan melanjutkan untuk baca tulisan, Memisahkan text berdasarkan karakter pemisah dengan software Excel 2010

Jika ada cara lain yang lebih mudah dan pembaca ketahui mohon  dibagi pengetahuannya bagi pembaca yang lainnya dan penulis dengan memberi masukkan atau di kolom komentar.

Berikut kode - kode / script AutoLisp menggubah mengkonversi Text menjadi MText sehingga membantu:

(defun col2str (inp)
  (cond
    ((= inp nil)(setq ret "BYLAYER"))
    ((= inp 256)(setq ret "BYLAYER"))
    ((= inp 0)(setq ret "BYBLOCK"))
    ((and (> inp 0)(< inp 255))(setq ret (itoa inp)))
    (t nil)
  )
)

(defun savprop ()
  (setq clayer (getvar "CLAYER"))
  (setq cecolor (getvar "CECOLOR"))
  (setvar "CECOLOR" "BYLAYER")
  (setq celtype (getvar "CELTYPE"))
  (setvar "CELTYPE" "BYLAYER")
  (setq thickness (getvar "THICKNESS"))
  (setvar "THICKNESS" 0)
  (if (>= (atoi (getvar "ACADVER")) 13)
    (progn
      (setq celtscale (getvar "CELTSCALE"))
      (setvar "CELTSCALE" 1.0)
    )
  )
)

(defun resprop ()
  (if (>= (atoi (getvar "ACADVER")) 13)
    (setvar "CELTSCALE" celtscale)
  )
  (setvar "THICKNESS" thickness)
  (setvar "CELTYPE" celtype)
  (setvar "CECOLOR" cecolor)
  (setvar "CLAYER" clayer)
)

(defun textrect (tent / ang sinrot cosrot t1 t2 p1 p2 p3 p4)
  (setq p0 (cdr (assoc 10 tent))
    ang (cdr (assoc 50 tent))
    sinrot (sin ang)
    cosrot (cos ang)
    t1 (car (textbox tent))
    t2 (cadr (textbox tent))
    p1 (list (+ (car p0)
       (- (* (car t1) cosrot) (* (cadr t1) sinrot)))
       (+ (cadr p0)
       (+ (* (car t1) sinrot) (* (cadr t1) cosrot))))
    p2 (list (+ (car p0)
       (- (* (car t2) cosrot) (* (cadr t1) sinrot)))
       (+ (cadr p0)
       (+ (* (car t2) sinrot) (* (cadr t1) cosrot))))
    p3 (list (+ (car p0)
       (- (* (car t2) cosrot) (* (cadr t2) sinrot)))
       (+ (cadr p0)
       (+ (* (car t2) sinrot) (* (cadr t2) cosrot))))
    p4 (list (+ (car p0)
       (- (* (car t1) cosrot) (* (cadr t2) sinrot)))
       (+ (cadr p0)
       (+ (* (car t1) sinrot) (* (cadr t2) cosrot))))
  )
  (list p1 p2 p3 p4)
)

(defun C:HT2M ( / mwid dset ibrk bitm bent sset rect mlay mcol mlst
                      bins bang tang nins num ndis chnd cent nhnd nstr
                      str pt1 pt2 pt3 dis dvx dvy dvz new)
(while
  (if (< (atoi (getvar "ACADVER")) 13)
    (alert "This Function Requires\nRelease 13 or Higher")
    (progn
      (setq cmdecho (getvar "CMDECHO"))
      (setvar "CMDECHO" 0)
      (command "_.UNDO" "_G")
      (setq mwid 0.0)
      (setq dset (ssadd))
      ;
      ;(initget "Y N")
      ;(setq tmp (getkword "\nDS> Include Line Breaks <Y>/N: "))
      ;(if (/= tmp "N")(setq ibrk "Y")(setq ibrk "N"))
      (setq ibrk "N")
      ;
      (setq bitm (car (entsel "\nDS> Pick Base String: ")))
      (setq bent (entget bitm))
      (setq rect (textrect bent))
      (setq chk (distance (car rect)(cadr rect)))
      (if (> chk mwid)(setq mwid chk))
      ;
      (if (= "TEXT" (cdr (assoc 0 bent)))
        (progn
          (redraw bitm 3)
          (princ "\nDS> Select Remaining Text: ")
          (setq sset (ssget '((0 . "TEXT"))))
          (if sset
            (progn
              (setq rect (textrect bent))
              (setq orig rect)
              (setq mlay (cdr (assoc 8 bent)))
              (setq mcol (cdr (assoc 62 bent)))
              (setq mlst (list (cdr (assoc 1 bent))))
              ;
              (if (> (cdr (assoc 72 bent)) 0)
                (setq bins (cdr (assoc 11 bent)))
                (setq bins (cdr (assoc 10 bent)))
              )
              (setq bang (cdr (assoc 50 bent)))
              (setq tang (- bang (/ PI 2)))
              (setq nins bins)
              (ssdel bitm sset)
              (while (> (sslength sset) 0)
                (setq num (sslength sset) itm 0)
                (setq ndis 99999999.9)
                (while (< itm num)
                  (setq chnd (ssname sset itm))
                  (setq cent (entget chnd))
                  (if (> (cdr (assoc 72 cent)) 0)
                    (setq cins (cdr (assoc 11 cent)))
                    (setq cins (cdr (assoc 10 cent)))
                  )
                  (setq cdis (distance bins cins))
                  (if (< cdis ndis)
                    (setq ndis cdis nhnd chnd nent cent)
                  )
                  (setq itm (1+ itm))
                )
                (setq dset (ssadd nhnd dset))
                (ssdel nhnd sset)
                ;
                (setq rect (textrect nent))
                (setq chk (distance (car rect)(cadr rect)))
                (if (> chk mwid)(setq mwid chk))
                ;
                (setq nstr (cdr (assoc 1 nent)))
                (setq mlst (append mlst (list nstr)))
              )
              ;
              (entdel bitm)
              (setq num (sslength dset) itm 0)
              (while (< itm num)
                (setq hnd (ssname dset itm))
                (entdel hnd)
                (setq itm (1+ itm))
              )
              ;
              (savprop)
              (setvar "CLAYER" mlay)
              (if (/= mcol nil)
                (setvar "CECOLOR" (col2str mcol))
              )
              (setq mwid (+ mwid (* mwid 0.025)))
              (setq pt1 (car orig))
              (setq pt2 (cadr orig))
              (setq dis (distance pt1 pt2))
              (setq dvx (/ (- (car pt2)(car pt1)) dis))
              (setq dvy (/ (- (cadr pt2)(cadr pt1)) dis))
              (setq pt3 (list dvx dvy 0.0))
              (setq nins (list (car (cadddr orig))
                         (cadr (cadddr orig))
                         (nth 2 (cdr (assoc 10 bent)))))
              ;
              (setq new '((0 . "MTEXT")(100 . "AcDbEntity")(100 . "AcDbMText")))
              (setq new (append new (list (assoc 7 bent))))
              (setq new (append new (list (assoc 8 bent))))
              (setq new (append new (list (cons 10 nins))))
              (setq new (append new (list (cons 11 pt3))))
              (foreach lin mlst
                (if (= ibrk "Y")
                  (if (/= lin (last mlst))
                    (setq lin (strcat lin "\\P"))
                  )
                  (setq lin (strcat lin "^"))
                )
                (setq new (append new (list (cons 1 lin))))
              )
              (setq new (append new (list (assoc 40 bent))))
              (setq new (append new (list (cons 41 mwid))))
              (setq new (append new (list (cons 71 1))))
              (setq new (append new (list (cons 72 1))))
              (entmake new)
              (resprop)
              ;
              (setq sset nil)
              (setq dset nil)
              (setq lst nil)
              (command "_.UNDO" "_E")
              (setvar "CMDECHO" cmdecho)
            )
            (redraw bitm 4)
          )
        )
      )
    )
  )
  (setq sset nil)
  (setq mlst nil)
  (princ)
)
)

(defun C:VT2M ( / mwid dset ibrk bitm bent sset rect mlay mcol mlst
                      bins bang tang nins num ndis chnd cent nhnd nstr
                      str pt1 pt2 pt3 dis dvx dvy dvz new)
  (if (< (atoi (getvar "ACADVER")) 13)
    (alert "This Function Requires\nRelease 13 or Higher")
    (progn
      (setq cmdecho (getvar "CMDECHO"))
      (setvar "CMDECHO" 0)
      (command "_.UNDO" "_G")
      (setq mwid 0.0)
      (setq dset (ssadd))
      ;
      ;(initget "Y N")
      ;(setq tmp (getkword "\nDS> Include Line Breaks <Y>/N: "))
      ;(if (/= tmp "N")(setq ibrk "Y")(setq ibrk "N"))
      (setq ibrk "N")
      ;
      (setq bitm (car (entsel "\nDS> Pick Base String: ")))
      (setq bent (entget bitm))
      (setq rect (textrect bent))
      (setq chk (distance (car rect)(cadr rect)))
      (if (> chk mwid)(setq mwid chk))
      ;
      (if (= "TEXT" (cdr (assoc 0 bent)))
        (progn
          (redraw bitm 3)
          (princ "\nDS> Select Remaining Text: ")
          (setq sset (ssget '((0 . "TEXT"))))
          (if sset
            (progn
              (setq rect (textrect bent))
              (setq orig rect)
              (setq mlay (cdr (assoc 8 bent)))
              (setq mcol (cdr (assoc 62 bent)))
              (setq mlst (list (cdr (assoc 1 bent))))
              ;
              (if (> (cdr (assoc 72 bent)) 0)
                (setq bins (cdr (assoc 11 bent)))
                (setq bins (cdr (assoc 10 bent)))
              )
              (setq bang (cdr (assoc 50 bent)))
              (setq tang (- bang (/ PI 2)))
              (setq nins bins)
              (ssdel bitm sset)
              (while (> (sslength sset) 0)
                (setq num (sslength sset) itm 0)
                (setq ndis 99999999.9)
                (while (< itm num)
                  (setq chnd (ssname sset itm))
                  (setq cent (entget chnd))
                  (if (> (cdr (assoc 72 cent)) 0)
                    (setq cins (cdr (assoc 11 cent)))
                    (setq cins (cdr (assoc 10 cent)))
                  )
                  (setq cdis (distance bins cins))
                  (if (< cdis ndis)
                    (setq ndis cdis nhnd chnd nent cent)
                  )
                  (setq itm (1+ itm))
                )
                (setq dset (ssadd nhnd dset))
                (ssdel nhnd sset)
                ;
                (setq rect (textrect nent))
                (setq chk (distance (car rect)(cadr rect)))
                (if (> chk mwid)(setq mwid chk))
                ;
                (setq nstr (cdr (assoc 1 nent)))
                (setq mlst (append mlst (list nstr)))
              )
              ;
              (entdel bitm)
              (setq num (sslength dset) itm 0)
              (while (< itm num)
                (setq hnd (ssname dset itm))
                (entdel hnd)
                (setq itm (1+ itm))
              )
              ;
              (savprop)
              (setvar "CLAYER" mlay)
              (if (/= mcol nil)
                (setvar "CECOLOR" (col2str mcol))
              )
              (setq mwid (+ mwid (* mwid 0.025)))
              (setq pt1 (car orig))
              (setq pt2 (cadr orig))
              (setq dis (distance pt1 pt2))
              (setq dvx (/ (- (car pt2)(car pt1)) dis))
              (setq dvy (/ (- (cadr pt2)(cadr pt1)) dis))
              (setq pt3 (list dvx dvy 0.0))
              (setq nins (list (car (cadddr orig))
                         (cadr (cadddr orig))
                         (nth 2 (cdr (assoc 10 bent)))))
              ;
              (setq new '((0 . "MTEXT")(100 . "AcDbEntity")(100 . "AcDbMText")))
              (setq new (append new (list (assoc 7 bent))))
              (setq new (append new (list (assoc 8 bent))))
              (setq new (append new (list (cons 10 nins))))
              (setq new (append new (list (cons 11 pt3))))
              (foreach lin mlst
                (if (= ibrk "Y")
                  (if (/= lin (last mlst))
                    (setq lin (strcat lin "\\P"))
                  )
                  (setq lin (strcat lin "$"))
                )
                (setq new (append new (list (cons 1 lin))))
              )
              (setq new (append new (list (assoc 40 bent))))
              (setq new (append new (list (cons 41 mwid))))
              (setq new (append new (list (cons 71 1))))
              (setq new (append new (list (cons 72 1))))
              (entmake new)
              (resprop)
              ;
              (setq sset nil)
              (setq dset nil)
              (setq lst nil)
              (command "_.UNDO" "_E")
              (setvar "CMDECHO" cmdecho)
            )
            (redraw bitm 4)
          )
        )
      )
    )
  )
  (setq sset nil)
  (setq mlst nil)
  (princ)
)