Category: AutoCAD

[XLS-SVY-24]: Plotting Cross section dari Excel ke Autocad Versi 1.2

Referensi : [XLS-SVY-13]: Plotting Cross Section dari Excel ke AutoCAD Versi 1.1
Platform :  
Lokasi File : download

 

Tulisan ini adalah tindak lanjut dari beberapa comments/komentar dari posting [XLS-SVY-13]: Plotting Cross Section dari Excel ke AutoCAD Versi 1.1. Walaupun tidak semua harapan pembaca terpenuhi

Perbaikan pada versi ini adalah :

  1. Nama program diganti dengan extensi *.xlam dan contoh file dalam format *.xlsx
  2. Mengganti menu dengan menggunakan “Custom UI Editor” sehingga menu baru ditampilkan dalam Ribbon Menu dan bisa di jalankan oleh Microsoft Excel 2007 ke atas.
  3. Merubah coding program menjadi metode “late binding” sehingga diharapkan program bisa dijalankan di Autocad 2000 ke atas tanpa harus setting Autocad Library.

Seperti halnya saat menjalankan program vba excel, pilih “Enable Macro” jika akan menggunakan program

Tampilan menu di Microsoft Excel 2016 :

image

Cara menjalankan program masih sama dengan tulisan pada [XLS-SVY-13]: Plotting Cross Section dari Excel ke AutoCAD Versi 1.1:

 

~~ selamat mencoba ~~

Advertisements

[CAD-LIS-02]: Autolisp untuk Membuat Pendekatan Lingkaran dari Beberapa Titik (Best Fitting Circle from Coordinates)

Referensi : [XLS-SVY-23]: Spreadsheet Excel untuk Menentukan Pusat dan Jari-Jari Lingkaran dari Koordinat
Lokasi File :  
Perangkat Lunak : Autocad

 

Pada tulisan [XLS-SVY-23]: Spreadsheet Excel untuk Menentukan Pusat dan Jari-Jari Lingkaran dari Koordinat, pusat dan jari-jari lingkaran dihitung dengan program excel dan hasilnya ditampilkand dalam bentuk chart excel.

Tulisan kali ini adalah aplikasinya dalam bentuk program autolisp, sehingga hasil hitungan pusat dan jari-jari lingkaran bisa langsung digambar di autocad dari titik-titik / object points yang sebelumnya sudah digambar di autocad.

Berikut list autolispnya:

(defun c:fc()
  ;menentukan batas pemilihan
  (setq p1 (getpoint));batas atas
  (setq p2 (getcorner p1));batas bawah

  ;dipilih hanya object bertype "POINT"
  (setq ss (ssget "_w" p1 p2 ‘((0 . "POINT")))) 
  (setq nPts (sslength ss));jumlah titik yang terplih

  ;jika jumlah titik >= 3 , maka akan diproses perhitungannya
  (if (>= nPts 3)
    (progn
      (setq idx 0)
      (setq ListX (list));list koordinat X
      (setq ListY (list));list koordinat Y
      ;memilah atau mengambil entity titik
      (setq SumX 0 SumY 0)
      (repeat nPts
    (setq ePt (entget (ssname ss idx)))
    (setq X (nth 1 (assoc 10 ePt)))
    (setq Y (nth 2 (assoc 10 ePt)))
    (setq ListX (append ListX (list X)))
    (setq ListY (append ListY (list Y)))

    (setq SumX (+ SumX X))
    (setq SumY (+ SumY Y))
    (setq idx (1+ idx))
    );repeat
      ;perhitungan least square
      (setq Xr (/ SumX nPts))
      (setq Yr (/ SumY nPts))
      (setq idx 0)
      (setq spp 0 sppp 0)
      (setq sqq 0 sqqq 0)
      (setq spq 0 spqq 0 sqpp 0)
      (repeat nPts
    (setq p (- (nth idx ListX) Xr))
    (setq q (- (nth idx ListY) Yr))
    (setq pp (* p p))   
    (setq ppp (* pp p))
    (setq qq (* q q))
    (setq qqq (* qq q))
    (setq pq (* p q))
    (setq pqq (* pq q))
    (setq qp (* q p))
    (setq qpp (* qp p))

    (setq spp (+ spp pp))
    (setq sppp (+ sppp ppp))
   
    (setq sqq (+ sqq qq))
    (setq sqqq (+ sqqq qqq))

    (setq spq (+ spq pq))
    (setq spqq (+ spqq pqq))
    (setq sqpp (+ sqpp qpp))

    (setq idx (1+ idx))
    );end repeat
      ;menghitung invers matrix A (2×2)
      ;|a11 a12| = |spp  spq|
       |a21 a21| = |spq  sqq|;

      (setq det (- (* spp sqq ) (* spq spq)))

      (setq a11 (/ sqq det))
      (setq a12 (/ (* -1.0 spq) det))     
      (setq a21 a12)
      (setq a22 (/ spp det))

      ;matrix L (2×1)
      (setq l11 (/ (+ spqq sppp) 2.0))
      (setq l21 (/ (+ sqqq sqpp) 2.0))

      (setq xx (+ (* a11 l11) (* a12 l21)))
      (setq yy (+ (* a21 l11) (* a22 l21)))

      ;koordinat pusat lingkaran
      (setq Xc (+ xx Xr))
      (setq Yc (+ yy Yr))
      (setq pc (list Xc Yc))

      (setq Sxx (+ (* xx xx) (* yy yy)))
      (setq r (+ sxx (/ (+ spp sqq) nPts)))

      ;jari-jari
      (setq r (sqrt r))
      (command "circle" pc r )
     
      );progn
    (alert "Number of points < 3 points")
    );if 
)

copy list tersebut, kemudian simpan dengan ekstensi .lsp atau download file.

Cara penggunaan program tersebut:

1. Pada ketik menu command:appload

2. Pilih file lisp atau file hasil download.

3. Misal lokasi titik yang akan dibuat lingkarannya adalah:

image

4. ketik pada menu command:fc

5. Kemudian select window mulai dari kiri atas sampai kanan bawah pada semua titik di atas.

6. Hasilnya:

image

#selamat mencoba

[CAD-MAP-13]: Labelling Grid Secara Otomatis dengan Block Attribute

Referensi : [CAD-MAP-06]: Cara Mudah Membuat Label dan Table Koordinat di AutoCAD Bagian #1
Platform : Autocad
Lokasi File :

Pada posting [CAD-MAP-06]: Cara Mudah Membuat Label dan Table Koordinat di AutoCAD Bagian #1 telah dijelaskan cara menggunakan block attribute untuk membuat label dan tabel koordinat. Kali ini akan diterangkan penggunaan block attribute untuk membuat label grid otomatis. Otomatis maksudnya, jika grid dipindah ke koordinat lain, maka label yang ada di pinggir grid secara otomatis berubah.

Misal contoh grid yang akan diberi label adalah

image Keterangan Grid:
1. Unit gambar meter
2. Spasi Grid ke arah X dan Y 100 meter
3. Ukuran text Grid 5 unit (meter)Tahapan yang akan diterangkan selanjutnya adalah untuk membuat label grid di sebelah kiri dan bawah saja. Harapan saya, untuk bagian kanan dan atas bisa Anda buat sendiri.

Tahapan membuat label grid :
1. Membuat block attribute untuk label kordinat X dan label koordinat Y yang berisi field attribute insertion point block.
2. Memasukkan block (insert block) ke grid yang akan diberi label.

1. Membuat block attribute untuk label kooordinat X dan Y

Block attribute akan dibuat dengan design sebagai berikut:

Nama Block Layer Tinggi text Rotasi Text Justification Keterangan
Grid_Y_kiri Grid_Label 5 0 Bottom Right Label koordinat X kiri
Grid_X_bawah Grid_Label 5 90 Bottom Right Label koordinat Y bawah
Grid_Y_kanan Grid_Label 5 0 Bottom Left Label koordinat X kanan
Grid_X_atas Grid_Label 5 90 Bottom Left Label koordinat Y atas

Membuat block Grid_Y_kiri:

  • Buat layer Grid_Label kemudian set sebagai layer active
  • Ketik di menu command: bedit
  • Pada isian [Blocl to create or edit] masukkan nama block : Grid_Y_kiri
  • click tombol [OK] untuk masuk ke area [block editor]
  • Pada menu palette [block authoring palettes] pilih group [paremeters], kemudian pilih [basepoint] image
  • Click sembarang di area block editor
  • click icon image  atau ketik di menu command: attdef
  • di frame attribute, masukkan di isian Tag: y_kiri
  • di pilihain [default], click tombol image
  • Lakukan setting field seperti berikut:
    image maksud dari setting ini adalah :
    “secara default isian di tag y_kiri adalah nilai koordinat Y dari Posisi BlockPlaceHolder (insertion point block) atau nilai Y tergantung posisi block diinserted ke gambar”Note: perhatikan arsir kuning hanya nilai Y yang dipilih. Jika untuk koordinat X maka hanya nilai X yang dipilih
  • clik [OK] untuk kembali ke pengaturan block attribute definition
  • Lakukan setting tinggi text, Justificationd dan rotation, sehingga tampilan block attribute definition sebagai berikut
    image text style bisa dirubah sesuai dengan pilihan.
    Pastikan pilihan Insertion Point adalah [specify on-screen]kemudian click [OK]
  • Posisikan attribute definition di dekat basepoint. Gambar di area block editor menjadi
  • image
  • click icon image untuk menutup block editor, kemudian pilih [save block]
  • ketik di menu command: insert
  • pilih block Grid_x_kiri, kemudian click [OK]
  • Pilih koordinat yang akan diberi label. Jangan lupa diset snap point sehingga didapat lokasi koordinat yang akurat. Contoh di bawah, saya menggunakan object snap node. Gambar kiri saat insertion point, sedangkan gambar kanan adalah block attribute yang otomatis terisi text nilai kordinat X nya.
    image image
  • untuk menghilangkan warna arsiran, ketik di command:fielddisplay
  • kemudian masukkan angka 0
  • Lakukan perintah array untuk mengcopy block ke atas. Jika label tidak beribah, ketik di commmand: regen
  • image
  • dengan langkah yang sama, buat block attribut Grid_X_bawah
  • Gird koordinat menjadi
  • image
  • coba pilih semua grid termasuk labelnya kemudian pindah lokasinya, maka label otomatis juga berubah.
  • Jangan lupa ketik commmand: regen jika label tidak berubah.

Apabila diinginkan ada pemisah ribuan, maka perlu diperlukan trik sebagai berikut.

  • hapus terlebih dahulu label sebelumnya, kemudian
  • ketik di command: bedit
  • pilih blocknya. misal Grid_X_bawah
    image double click tag X_BAWAH
    image Block insertionPoint kemudian click kananPilih [Edit Field]

    Pilih Field Expression kemudian copy ke notepad
    kemudian tutup Field Editor dengan menge-click [OK]

    di notepad, edit field expression :
    semula:
    %<\AcObjProp.16.2 Object(?BlockRefId,1).InsertionPoint \f “%lu6%pt1”>%

    dirubah menjadi:
    %<\AcObjProp.16.2 Object(?BlockRefId,1).InsertionPoint \f “%lu6%pt1%th44“>%

    %th44 artinya memasukkan tanda pemisah ribuan berupa tanda koma (ascii code nomer 44)

    copy field expression yang baru, kemudian paste dengan menimpa tulisan InsertionPoint di [Edit Attribute Definition]

  • Click [OK] kemudian [close block editor]
  • Insesrt block attribut ke gambar kemudian lakukan array
  • Label grid dengan pemisah ribuan:
  • image

===selamat mencoba===

[XLS-SVY-13]: Plotting Cross Section dari Excel ke AutoCAD Versi 1.1

Referensi : [XLS-SVY-007]: Plotting Cross Section dari Excel ke AutoCAD
Platform : Autocad , Excel 2007/Excel 2003
Lokasi File :

Pada posting [XLS-SVY-007]: Plotting Cross Section dari Excel ke AutoCAD, telah diuraikan tahapan untuk membuat gambar cross section dari file excel.

Posting kali ini akan saya akan mencoba untuk versi plotting cross section dari excel ke autocad dengan beberapa fasilitas tambahan. Berikut adalah snap shot program vba-excel / macronya:

image

Fasilitas tambahan seperti yang ditampilkan di atas adalah:

  • Ada tambahan custom menu bar, sehingga tidak lagi menggunakan menu run macro
  • Ada setting parameter skala horizontal, skala vertikal, tinggi huruf dan tinggi band (informasi baris) di bawah cross section
  • Bisa memproses beberapa sheet sekaligus
  • Setting elevasi datum
  • Type labelling bisa di tiap perubahan slope atau di tiap pertambahan jarak.
  • Bisa dilakukan checking cross section di excel dengan cara menggambarkan cross section dalam bentuk grafik atau chart secara otomatis.

Contoh hasil plotting cross section di autocad dengan type labelling yang berbeda

Labelling di tiap perubahan slope Labelling di tiap penambahan jarak
image image
image image

Cara menjalankan program:

1. Download programnya

2. Set security macro ke medium.

Untuk excel 2003, click menu ‘Tool2’>>’Macro’>>’Security’
Pilih Security ‘Medium’. Untuk excel yang lain silahkan di cari di menu help atau bisa dicari lewat om google.

3. Extract kedua zip file hasil download dan tempatkan dalam satu folder. Setelah di-extract terdapat dua file yaitu PlotCrossSection2003.xla dan 0000-2000.xls

Tahapan berikutnya adalah setting autocad library dalam program PlotCrossSection2003.xla. Jika Anda menggunakan autocad versi 2011, maka tidak perlu dilakukan setting ini, karena saat saya membuat program ini, program Autocad Versi 2011 telah terinstall di komputer saya.

Tetapi jika menggunakan autocad versi yang lain, maka perlu dilakukan setting reference excel ke autocad. Setting ini hanya dilakukan sekali saja (langkah nomer 4 sampai 10 di bawah) sepanjang Anda tidak merubah versi autocad.

Apabila anda mempunyai beberapa versi autocad dalam komputer, maka pilih salah satu saja sesuai dengan autocad yang akan dipakai.

4. Dalam program excel, Buka file PlotCrossSection2003.xla. Click [Enable Macros], jika ada notifikasi ‘Microsoft Excel Security Notice’

5. Tekan tombol Alt+F11 untuk mengaktifkan Visual Basic Application (VBA) Editor.

6. Click tanda plus di kiri VBAProject (PlotCrossSection2003.xla)

7. Double click mdlPlot2CAD

8. Dari menu [Tool], pilih [References]

image

Contoh disamping adalah VBA sudah ter-reference ke AutoCAD 2011 Type Library.

Jika Anda menggunakan Autocad  versi lain, maka akan ada pesan error MISSING Library. Uncheck MISSING Library tersebut, kemudian scroll down untuk mencari library yang sesuai dengan AutoCAD yang terintall di komputer.

Contoh : Apabila autocad yang terinstall adalah AutoCAD versi 2006, cari library dengan nama AutoCAD 2006 Type Library

click [OK], jika sudah dilakukan setting library

9. Masih di VBA Editor, click menu [File], pilih [Save PlotCrossSection2003.xla]

10. Tekan Tombol Alt-Q untuk keluar dari VBA Editor.

11. Jalankan program AutoCAD

12. Pada program excel,  buka file contoh cross section [0000-2000.xls]

13. Masih di program excel, click tombol image di menu cadex. Jika Anda menggunakan excel 2007, tombol ini ada di groups ribbon [Add-Ins]

14. Lakukan setting plot cross section, misal sebagai berikut:

image

15. Kemudian click [OK]

16. Jika ingin mengecek lebih dulu gambar cross section berupa chart excel, clik tombol [Yes], jika ingin langsung melihat hasilnya di AutoCAD, click [No]

17. Gambar cross section akan tergambar di autocad.

Ada beberapa pengunjung yang menginginkan jika format angka desimal ditampilkan ditampilkan 3 digit atau ada tiga angka di belakang tanda titk desimal.

Silahkan download  file program terbaru yang sudah aku rubah sedikit codingnya untuk menfasilitasi setting jumlah digit desimal. Tampilan programnya menjadi:

image

Gambar 1: Setting Cross Section

Ada juga beberapa pengunjung yang menanyakan bagaimana kalo untuk menggambar long section?

Program tersebut bisa juga untuk menggambarkan long section dengan cara memasukkan angka dikolom [B] dimulai dengan angka 0 (nol) di baris pertama atau [B2] kemudian dimasukkan stasiun berikutnya ke bawah sampai ke stasiun terakhir. Elevasi untuk masing-masing stasiun tetap dimasukkan di kolom [C].

Contoh format spreadsheet untuk longsection jika adalah:

image

Berikut adalah uraian tahapan setting di Excel 2007 dan AutoCAD 2011 dalam bentuk gambar:

1. Download programnya dari sjydrive / one drive atau dari dropbox

2. Extract zip file dalam satu folder untuk menampilkan dua file contoh data cross dan programnya:

image

3. Jalankan program Excel 2007

CARA SET SECURITY MACRO:

4. Click Tombol [Office] image, kemudian pilih [Excel Options]

image

5. Pada  [Excel Options], pilih [Trus Center] kemudian click [Trust Center Settings…]

image

6. Pada [Trust Center], pilih [Macro Setting], kemudian lakukan setting:

[Macro Settings]: [Disable all macros with notification]

[Developer Macro Setting]: check [Trust access to VBA project object model]

image

7. Click OK

Langkah 4 sampai 7 hanya dilakukan sekali saja, jika security macro sebelumnya belum diset seperti langkah di atas.

MEMBUKAN FILE PROGRAM CROSS SECTION

8. Buka file [PlotCrossSection2003.xla] hasil extract zip file

9. Jika keluar [Security Notice] seperti di bawah, click [Enable Macros]

image

Langkah 9 dilakukan setiap membuka file [PlotCrossSection2003.xla].

CARA SETTING LIBRARY AUTOCAD 2011 DI VBA-EXCEL:

10. Setelah file [PlotCrossSection2003.xla] dibuka dan tombol [Enable Macros] di click, tekan tombol kombinasi Alt+F11 untuk membuka Visual Basic Editor (VBE).

image

11. Double click [mdlPlot2CAD] di bawah VBAProject (PlotCrossSection2003.xla) untuk menampilkan program utama penggambaran cross section.

12. Masih di VBE, pada menu [Tool], pilih [References…]

image

13. Check atau cari di [Available References] kemudian pilih [AutoCAD 2011 Type Library]

Jika sebelumnya, terpilih reference [Missing:AutoCAD 2011 Type Library], uncheck pilihan tersebut, kemudian pilih reference sesuai dengan versi AutoCAD Anda.

— AutoCAD 2006 pilih  AutoCAD 2006 Type Library

— AutoCAD 2010 pilih  AutoCAD 2010 Type Library

— AutoCAD 2011 pilih  AutoCAD 2011 Type Library

— seandainya sudah ada AutoCAD 2020 pilih  AutoCAD 2020 Type Library

image

14. Jika sudah dipilih, click [OK]

15. Masih di VBE click tombol [Save] untuk menyimpan perubahan reference.

Langkah 10 sampai 15 hanya dilakukan sekali saja, jika  sebelumnya belum pernah dilakukan setting reference ke autocad atau ada perubahan versi autocad.

16. Masih di VBE, pada menu [File], pilih [Close and Return to Microsoft Excel]

image

17. Pada Excel 2007, pilih ribbon [Add-Ins] untuk menampilan short cut program cross section.

image

18. Buka file contoh cross section [0000-2000.xls] hasil extract zip

image

19. Buka atau jalankan program AutoCAD dan JANGAN tutup program Excel 2007.

image

20. Click icon image, kemudian lakukan setting cross section seperti di Gambar 1: Setting Cross Section kemudian click [OK]

21. Pilih [Yes] jika cross section akan digambar di Excel sebaliknya pilih [No] jika akan digambar di AutoCAD

image

Jika dipilih [No], maka tampilan cross section di autocad:

image

#silahkan mencoba#

==zainul==

[XLS-MAP-05]: Plotting Koordinat Excel ke Civil 3D

Referensi :
[XLS-MAP-03]: Plotting List Koordinat dari Excel ke AutoCAD
Platform : Excel dan Civil3D 2011
Lokasi File :

Pada post [XLS-MAP-03]: Plotting List Koordinat dari Excel ke AutoCAD telah dijelaskan cara plotting koordinat ke Autocad dengan program visual basic application for excel. Tulisan kali ini akan diuraikan cara plotting koordinat ke AutocadMap atau Civil 3D menggunakan fasilitas ‘Connect a Feature Source’ yang ada di civil 3D atau AutocadMap, tanpa menggunkan visual basic maupun autolisp

Pada tulisan ini, saya menggunakan civil 3D 2011.

Tahapan plotting adalah:

1 Membuat [named range] pada list koordinat di file excel yang akan di plot
image_thumb7
1.1. Block tabel berisi koordinat yang akan diplot.
1.2. Dari menu [Insert], pilih [Define]
1.3. Masukkan Nama range, misal ‘KoordGeo’
1.4. Simpan file Excel, kemudian tutup file excel.
2 Setting ODBC agar connect ke file excel di atas.
Seperti yang telah diuraikan di [GEN-PMG-05]: Pivot Table Excel data dari Query Database MySQL
Ikuti langkah sesuai nomor di gambar berikut : 

image_thumb12

Pada nomor 5 (lima), click tombol [Select Workbook], kemudian pilih file excel yang telah didefinisikan ‘named range’ seperti di langkah 1
Pada langkah ini User data Source telah didefinisikan..

3 Melakukan koneksi AutocadMAP/Civil 3D ke Excel data Source
3.1. Aktifkan civil 3D atau Autocad map
3.2. Jika Command Prompt belum aktif, tekan tombol CTRL+9 untuk mengaktifkannya
3.3. Pada command prompt ketik
Command: mapconnect
image_thumb15
3.4. Setelah diclick tombol [Select] di langkah 5(lima), click tombol [Connect]
3.5. Tidak perlu diisi user name dan password, langsung clik [Login]
4 Melakukan setting system koordinat: 

image_thumb19
image_thumb22

diplih LatLongs, karena koordinat yang dipilih adalah koordinat lintang bujur, jika koordinat yang akan diplot adalah projected coordinat seperti UTM maka harus diseesuaikan datum dan letak zonenya..

5. Setting X dan Y dari field Database Excel
image_thumb25
5.1. Click ruang kosong di bawah field X, kemudian pilih [Bujur]
5.2. Ulang langkah 5.1 untuk field di bawah Y, kemudian pilih [Lintang]
5.3 Click tombol [Add to Map]
6. Titik-titik koordinat sudah tergambar di civil 3D

===selamat mencoba===

[XLS-SVY-007]: Plotting Cross Section dari Excel ke AutoCAD

Referensi : [XLS-MAP-03]: Plotting List Koordinat dari Excel ke AutoCAD
Platform : Excel dan AutoCAD
Lokasi File : xls-svy-007.zip

Rencananya program ini akan saya masukkan ke program perhitungan cut and fill cross section dengan vba/macro. Tetapi mempertimbangkan bahwa untuk melakukan koneksi excel ke autocad harus menggunakan library autocad yang sesuai dengan versi autocad yang sudah terinstall, maka code koneksi ini tidak saya masukkan.

Saat saya menulis program ini, saya menggunakan AutoCAD versi 2011. Versi autocad yang lain dan cara setting di Visual Basic Application, silahkan membaca [XLS-MAP-03]: Plotting List Koordinat dari Excel ke AutoCAD di section ‘Setting Reference ke AutoCAD Library’.

Code dalam visual basic application, saya bagi menjadi dua bagian yaitu Procedure Utama dan Procedure/Function Pendukung. Procedure Utama adalah nama macro yang akan dijalankan melalui menu excel, sedangkan procedure/function pendukung adalah procedure2 yang tidak ditampilkan dalam menu macro di excel.

Procedure Utama:

Option Explicit
Dim appCAD As AcadApplication
Dim acadDoc As AcadDocument
Dim acadMspace As AcadModelSpace
Sub PlotGarisCrossSection()
Dim LstKoordExisting() As Double, LstKoordDesign() As Double
Dim BasePoint As Variant, OK As Boolean
OK = True
‘Membaca list koordinat existing dan design
If Not BacaListKoordinat(LstKoordExisting, “Pilih List Koordinat Existing “) Then Exit Sub
If Not BacaListKoordinat(LstKoordDesign, “Pilih List Koordinat Design “) Then Exit Sub
‘Jika bisa connect autocad, ganti window ke autocad
If ConnectAutoCAD = Not OK Then Exit Sub
GantiWindowKeCAD
BasePoint = GetPointInCAD(“Base Point”) ‘base point untuk menggambar cross section
‘Buat Layer dengan nama Existing
SetLayerAktif “Existing”
‘Plot Garis (Polyline) Existing di layer Existing
PlotGaris2D LstKoordExisting, CDbl(BasePoint(0)), CDbl(BasePoint(1))

‘Buat Layer dengan nama Design
SetLayerAktif “Design”
‘Plot Garis (Polyline) Design di layer Design
PlotGaris2D LstKoordDesign, CDbl(BasePoint(0)), CDbl(BasePoint(1))

‘plot label dengan jarak baris exiting =1, design =1, tinggi huruf=0.1
x_section_label CDbl(BasePoint(0)), CDbl(BasePoint(1)), 1, 1, 0.1
End Sub

Text warna biru adalah procedure atau function pendukung.

Procedure Pendukung (Private):

‘==private sub dan function====
‘=================
‘1. Objects Excel
‘=================
Private Function BacaListKoordinat(rtnListXY() As Double, ByVal strTitle As String) As Boolean
Dim aRange As Range, cr As RangeOn Error GoTo Err_Trap:
Set aRange = Application.InputBox(Prompt:=strTitle, Type:=8)
If aRange.Columns.Count < 2 And aRange.Columns.Count > 2 Then
MsgBox “List Koordinat Harus 2 (Dua) Kolom. Kolom Pertama X, Kolom Kedua Y ”
GoTo Err_Trap
End If

‘membaca koordinat x dan y, hasilnya disimpan di rtnListXY()
Dim i As Integer
i = -1
For Each cr In aRange.Columns(1).Cells
i = i + 2
ReDim Preserve rtnListXY(i)
rtnListXY(i – 1) = cr
rtnListXY(i) = cr.Offset(, 1)
Next
BacaListKoordinat = True
Exit Function
Err_Trap:
Err.Clear
BacaListKoordinat = False
End Function
‘==================
‘2. Objects AutoCAD
‘==================
Private Function ConnectAutoCAD() As Boolean
On Error Resume Next
ConnectAutoCAD = True
Set appCAD = GetObject(, “AutoCAD.Application”)
Set acadDoc = appCAD.ActiveDocument
Set acadMspace = acadDoc.ModelSpace
If Err.Number Then
ConnectAutoCAD = False
Exit Function
End If
End Function
Private Sub GantiWindowKeCAD()
AppActivate appCAD.Caption
End Sub

Private Function GetPointInCAD(strPrompt As String) As Variant
GetPointInCAD = acadDoc.Utility.GetPoint(, strPrompt)
End Function

Private Sub SetLayerAktif(strNamaLayer As String)
Dim aLayer As AcadLayer
On Error Resume Next
Set aLayer = acadDoc.Layers(strNamaLayer)
If Err.Number Then
Err.Clear
Set aLayer = acadDoc.Layers.Add(strNamaLayer)
End If
acadDoc.ActiveLayer = aLayer
End Sub

Private Sub PlotGaris2D(ListTitik() As Double, Optional Xorigin As Double = 0, Optional Yorigin As Double = 0)
Dim i As Integer
For i = LBound(ListTitik) To UBound(ListTitik) Step 2
ListTitik(i) = ListTitik(i) + Xorigin
ListTitik(i + 1) = ListTitik(i + 1) + Yorigin
Next i
acadMspace.AddLightWeightPolyline ListTitik
End Sub
Private Function GetOneEntity(ByVal strPrompt As String) As AcadEntity
Dim objEntity As AcadObject, PickedPoint(0 To 2) As Double
AppActivate appCAD.Caption
acadDoc.Utility.GetEntity objEntity, PickedPoint, strPrompt
Set GetOneEntity = objEntity
End Function
Private Sub x_section_label(Xorigin As Double, Yorigin As Double, _
TinggiBaris1 As Double, TinggiBaris2 As Double, TinggiHuruf As Double)

Dim anEntity As AcadEntity, polyExisting As AcadLWPolyline, polyDesign As AcadLWPolyline
Dim aText As AcadText

Dim i As Integer, stLine(0 To 2) As Double, edLine(0 To 2) As Double, Xmin As Double, Xmax As Double
Dim Existing_XY() As Double, Design_XY() As Double, Ymin As Double
Dim pntText(0 To 2) As Double, textRotation As Double

textRotation = Application.Radians(90)
Ymin = Yorigin – TinggiBaris1 – TinggiBaris2
Set anEntity = GetOneEntity(“Pilih Polyline Existing”)
If anEntity.ObjectName = “AcDbPolyline” Then
Set polyExisting = anEntity
Existing_XY = polyExisting.Coordinates
Xmin = Existing_XY(0)
‘gambar garis vertikal
SetLayerAktif “Grid Existing”
For i = LBound(Existing_XY) To UBound(Existing_XY) Step 2
stLine(0) = Existing_XY(i)
stLine(1) = Existing_XY(i + 1)
Xmax = stLine(0)
edLine(0) = stLine(0)
edLine(1) = Ymin
acadMspace.AddLine stLine, edLine

‘menulis text elevasi dan jarak
pntText(1) = Yorigin – TinggiBaris1
‘Label jarak
pntText(0) = stLine(0) – TinggiHuruf
Set aText = acadMspace.AddText(Format(stLine(0) – Xorigin, “0.00”), pntText, TinggiHuruf)
aText.Rotate pntText, textRotation
‘Label elevasi
pntText(0) = stLine(0) + TinggiHuruf
Set aText = acadMspace.AddText(Format(stLine(1) – Yorigin, “0.00”), pntText, TinggiHuruf)
aText.Rotate pntText, textRotation

Next i
End If

‘Gambar Garis Base Line
SetLayerAktif “Datum”
stLine(0) = Xmin: edLine(0) = Xmax
stLine(1) = Yorigin: edLine(1) = stLine(1)
acadMspace.AddLine stLine, edLine

stLine(0) = Xmin: edLine(0) = Xmax
stLine(1) = Yorigin – TinggiBaris1: edLine(1) = stLine(1)
acadMspace.AddLine stLine, edLine

stLine(0) = Xmin: edLine(0) = Xmax
stLine(1) = Yorigin – TinggiBaris1 – TinggiBaris2: edLine(1) = stLine(1)
acadMspace.AddLine stLine, edLine

Set anEntity = GetOneEntity(“Pilih Polyline Design”)
If anEntity.ObjectName = “AcDbPolyline” Then
Set polyDesign = anEntity
Design_XY = polyDesign.Coordinates

‘menggambar garis vertikal di layer grid design
SetLayerAktif “Grid Design”
For i = LBound(Design_XY) To UBound(Design_XY) Step 2
stLine(0) = Design_XY(i)
stLine(1) = Design_XY(i + 1)

edLine(0) = stLine(0)
edLine(1) = Ymin
acadMspace.AddLine stLine, edLine

‘menulis text elevasi dan jarak
pntText(1) = Yorigin – TinggiBaris1 – TinggiBaris2

‘Label jarak
pntText(0) = stLine(0) – TinggiHuruf
Set aText = acadMspace.AddText(Format(stLine(0) – Xorigin, “0.00”), pntText, TinggiHuruf)
aText.Rotate pntText, textRotation

‘Label elevasi
pntText(0) = stLine(0) + TinggiHuruf
Set aText = acadMspace.AddText(Format(stLine(1) – Yorigin, “0.00”), pntText, TinggiHuruf)
aText.Rotate pntText, textRotation

Next i
End If
End Sub

‘===end private sub dan function”

Download List Program (mdlPlot2CAD.bas)

Download contoh cross section (xls-svy-007.zip)

Menjalankan Makro

1. Buka Excel yang ada di file xls-svy-007.zip dan AutoCAD

2. Pada Program Excel tekan Alt+F11 untuk membuka Microsoft Visual Basic Editor

3. Di Microsoft Visual Basic Editor, tekan Ctr+M kemudian pilih file mdlPlot2CAD.bas yang sudah didownload.

4. Setting library ke AutoCAD yang ada di komputer Anda.

5. Keluar dari Microsoft Visual Basic Editor dengan menekan Alt+Q

6. Pada file xls-svy-007.xls, tekan Alt+F8 kemudian double click macro PlotGarisCrossSection

image

Gunakan Mouse untuk mengeblok koordinat (offset, elevasi) Existing yaitu $Q$7:$R$57, kemudian click OK. Akan muncul kotak dialog seperti di atas lagi, untuk memilih (mengeblok) koordinat design yaitu $S$7:$T$11. Akhiri dengan click OK

7. Pindah ke program AutoCAD, jika program tidak pindah ke AutoCAD secara otomatis.

8. Di Autocad akan muncul prompt

Command: Base Point >> Click sembarang lokasi di AutoCAD
Command: Pilih Polyline Existing >> Pilih Polyline Existing di AutoCAD
Command: Pilih Polyline Design >> Pilih Polyline Design di autoCAD

9. Lakukan setting warna Layer

10. Gambar cross section di AutoCAD, lengkap dengan label offset dan elevasi

image

selamat mencoba

==zainul==

[XLS-MAP-03]: Plotting List Koordinat dari Excel ke AutoCAD

 

Referensi : import point dengan autolisp
Platform : Excel dan AutoCAD
Lokasi File : download

Pada awalnya saya ingin membuat program visual basic application yang ada di Autocad 2011 untuk menggambarkan lokasi titik-titik sesuai dengan list koordinat yang ada di excel. Tetapi saat saya menekan tombol Alt+F11 untuk mengaktifkan visual basic di AutoCAD 2011 muncul pesan “Microsoft Visual Basic for Application Software is no longer installed with AutoCAD”. Sebetulnya masih disupport oleh Autodesk, tetapi harus download dulu di sini.

Daripada download (sebetulnya pingin sih), saya coba cara lain dengan memanfaatkan program Microsoft Visual Basic for Application yang ada di Excel (Macro). Koneksi AutoCAD dan Excel bisa dilakukan dengan cara memilih ‘AutoCAD 2011 Type Library’ di pilihan References-VBA Project. Jika Anda menggunakan versi AutoCAD yang lain, pilihlah library dengan nama ‘AutoCAD xxxx Type Library’, dimana xxxx adalah versi AutoCAD yang sedang Anda gunakan. misal untuk AutoCAD 2010, maka librarynya adalah ‘AutoCAD 2010 Type Library’.

Contoh List Koordinat di Excel yang akan diplot di AutoCAD adalah :

image

Bujur akan diplot sebagai koordinat X, Lintang adalah koordinat Y dan  Elevasi adalah Z. Text Keterangan akan diplot sesuai dengan posisi titik tersebut (XYZ).

 

 

 

 

 

 

1. Buka file Excel yang berisi list koordinat Saat file excel sudah terbuka, pilih sheet yang berisi list koordinatnya, kemudian tekan Alt+F11 untuk mengaktifkan visual basic editor.
Dari Menu ‘Insert’ pilih ‘Module’
2. Jalankan program AutoCAD, tanpa menutup program Excel Jika diinginkan, pilih layer dan text style di AutoCAD.
3. Setting Reference ke AutoCAD Library pada visual basic editor, pilih menu ‘Tools’ kemudian ‘References’.
Pilih AutoCAD Library sesuai dengan versi AutoCAD yang aktif di pilihan available references. 

image
click OK jika library sudah dipilih.

4. Tulis Macro atau Visual basic di module Option Explicit
Sub PlotKeAutocad()
Dim rgKoordinat As Range

‘table list koordinat di sheet yang aktif
Set rgKoordinat = ActiveSheet.UsedRange
rgKoordinat.Select

Dim respon As Long
If MsgBox(“Pilihan Sudah Benar?”, vbYesNo) = vbNo Then Exit Sub

Dim c As Range, i As Integer, j As Integer
Dim lstKoord() As Double, lstDes() As String

‘membaca list koordinat dan nama titik dari excel
i = -1: j = -1
For Each c In rgKoordinat.Columns(1).Cells
If Application.IsNumber(c) Then
i = i + 3
j = j + 1
ReDim Preserve lstKoord(i)
lstKoord(i – 2) = c
lstKoord(i – 1) = c.Offset(, 1)
lstKoord(i) = c.Offset(, 2)

ReDim Preserve lstDes(j)
lstDes(j) = c.Offset(, 3)
End If
Next

‘koneksi ke autocad, program autocad harus sudah dijalankan
Dim appCAD As AcadApplication
On Error Resume Next
Set appCAD = GetObject(, “AutoCAD.Application”)
If Err.Number Then Exit Sub

Dim Koordinat(0 To 2) As Double
Const TinggiHuruf = 0.002 ‘rubah angka sesuai dengan tinggi huruf yang diinginkan
j = -1
For i = LBound(lstKoord) To UBound(lstKoord) Step 3
j = j + 1
Koordinat(0) = lstKoord(i)
Koordinat(1) = lstKoord(i + 1)
Koordinat(2) = lstKoord(i + 2)
With appCAD.ActiveDocument.ModelSpace
.AddPoint Koordinat ‘plot koordinat
.AddText lstDes(j), Koordinat, TinggiHuruf
End With
Next i

appCAD.ZoomExtents
AppActivate appCAD.Caption
Set appCAD = Nothing
End Sub

5. Menjalankan Program atau Macro Kembali ke sheet list koordinat.
Tekan Alt+F8, kemudian pilih macro PlotKeAutocad , kemudian click Run
6. Check di AutoCAD, apakah titik2 tersebut sudah benar possisinya?