[XLS-CIV-01]: Menghubungkan Excel ke Land Development Desktop dengan Visual Basic Application

 

Referensi : Help di Excel dan Help di LDD
Platform : Excel 2003/2007 Land Development Desktop 2006
Lokasi File :

 

Posting kali ini merupakan janji saya yang pernah aku tulis di wall Facebook Group Land Desktop Indonesia.

Waktu itu aku berjanji untuk menulis langkah-langkah di visual basic application khususnya di program excel (VBA-Excel) agar bisa meng-akses database, membuat, mengedit ataupun meng-update object-object Land Development Desktop (LDD).

Sebelumnya mohon maaf dalam posting kali ini tidak disajikan snap shot atau print screen dari program LDD karena saya sudah tidak mempunyai program tersebut walaupun sebelumnya saya pernah membuat di VBA-Excel untuk LDD. VBA-Excel tersebut sangat membantu para drafter dalam hal otomasi penggambaran long profile, cross section dan perhitungan cut and fill. Program tersebut sudah tidak saya pakai lagi setelah saya bermigrasi ke civil 3D.

Dalam posting ini akan diuraikan tahapan-tahapan sebagai berikut:

  • Setting references di VBA-Excel
  • Membuat code atau macro sederhana untuk membuat object di land development desktop

Setting References di VBA-Excel

1. Jalankan program Excel, kemudain tekan tombol Alt+F11 untuk membuka Visual Basic Application Editor (Macro) atau bisa disebut VBAIDE (VBA Integrated Development Environment)

2. Di VBAIDE, klik menu [Insert] kemudian pilih [Module]. Hasil proses ini akan muncul module baru yang secara default diberi nama Module1

3. Pilih atau click Module1. Kemudian dari menu [Tool], pilih [References]. Secara default VBA-Excel akan menampilkan referenses yang sedang dipakai seperti gambar di bawah:

image

Pada gambar di samping reference ‘Microsoft Excel 12.0 Object Library’ dan ‘Microsoft Office 12.0 Object Library’ secara default terpilih karena saya menggunakan excel 2007.

Jika menggunakan Microsoft Office 2003, maka referencenya menjadi ‘Microsoft Excel 11.0 Object Library’ dan ‘Microsoft Office 11.0 Object Library’

4. Scroll down sampai ditemukan reference ‘AutoCAD 2006 Type Library’, click check box

5. Scroll down lagi dan pilih reference sbb:

5.1. Autodesk Civil Engineering Land 3.0 Object Library (AeccXLand30)
5.2. Autodesk Civil Engineering UI Land 3.0 Object Library (AeccXUiLand30)

5.3 AEC Base 4.7 Application Library (AecXUiBase47)
5.4 AEC Base 4.7 Object Library (AecXBase47)

 

6. Dari langkah 4 sampai 5 VBAIDE sudah terreferensikan dengan LDD versi 2006. Jika Anda menggunakan versi yang lain, carilah reference dengan nama seperti di atas yang membedakan hanya versi angkanya saja. Jika ada beberap program LDD terinstall, maka pilih salah satu saja. Saya tidak menyarankan beberapa program LDD beda versi terinstall dalam satu komputer karena pada saat running program biasanya ada masalah.

Membuat Code atau Visual Basic Code

1. Double click Module1 kemudian copy atau tulis syntax berikut:

Option Explicit ‘cek variable hrs sudah didefinisikan explicitly
Dim acadApp As AcadApplication ‘object autocad application
Dim LddApp As AeccApplication ‘object LDD application 
Dim actProject As AeccProject ‘object project active di LddApp 
Dim projDoc As AeccDocument ‘object document active di actProject

Fungsi untuk koneksi ke Aplikasi Autocad
‘InPut: tidak ada
‘OutPut: TRUE jika Autocad Diaktifkan 
Function ConnectCAD() As Boolean
On Error Resume Next
Set acadApp = GetObject(, “AutoCAD.Application”)
If Err.Number Then
MsgBox “Autocad Belum diaktifkan”, vbCritical
Err.Clear
ConnectCAD = False
Exit Function
End If
ConnectCAD = True
End Function
‘=====End ConnectCAD===============

Fungsi untuk koneksi ke LDD 2006
‘InPut: tidak ada
‘OutPut: TRUE/FALSE
‘References:
‘1. AutoCAD 2006 Type Library
‘2. Autodesk Civil Engineering Land 3.0 Object Library (AeccXLand30)
‘3. Autodesk Civil Engineering UI Land 3.0 Object Library (AeccXUiLand30)
‘4. AEC Base 4.7 Application Library (AecXUiBase47)
‘5. AEC Base 4.7 Object Library (AecXBase47)

Function InitializeLandDevelopment(AcadApp As AcadApplication, _
LddApp As AeccApplication) As Boolean
On Error Resume Next
Set LddApp = AcadApp.GetInterfaceObject(“Aecc.Application”)
If Err Then
InitializeLandDevelopment = False
Err.Clear
Debug.Print Err.Description
Else
InitializeLandDevelopment = True
End If
End Function

‘========End InitializeLandDevelopment===================================

‘Contoh Aplikasi Macro untuk Melist Station alignment

Sub ListStationDariAligment()
If Not ConnectCAD Then Exit Sub ‘keluar dr program jika tidak bisa connect ke AutoCAD
If Not InitializeLandDevelopment Then Exit Sub ‘keluar dr program jika tidak bisa connect ke LDD

Set actProject = LddApp.ActiveProject
Set projDoc = LddApp.ActiveDocument

Dim Aligns As AeccAlignments, aLg As AeccAlignment
Set aLg = aProj.Alignments(1) ‘memilih alignment pertama
Dim STA() As Double, XY() As Double, i As Integer, j As Integer
i = 0
ReDim Preserve STA(i)
STA(i) = aLg.AlignEntities(0).StartingStation ‘mengambil station pertama
For Each algEntt In aLg.AlignEntities
i = i + 1
ReDim Preserve STA(i)
STA(i) = algEntt.EndingStation ‘mengambil station berikutnya
    Next
‘List station ke activesheet di kolom A
    n As Integer
n = UBound(STA) + 2
Range(“A1”) = “Station”
Range(“A2:A” & n) = WorksheetFunction.Transpose(STA())
End Sub

Fungsi yang lain, silahkan berlatih dan dikembangkan sendiri.

Dulu saya berlajar dari Help tentang vba/activex customization dan juga tidak malu untuk bertanya ke http://forums.autodesk.com/t5/AutoCAD-Land-Desktop/bd-p/83

===Selamat Mencoba===

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s