Tag: cross section

[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 ~~

[XLS-SVY-21]: Menampilkan Cross Section 3D dengan Chart Excel

 

Referensi :  
Platform : Excel 2007
Lokasi file : download

Sebenarnya di Excel sudah menyediakan type "Surface Chart" yang bisa menampilkan grafik dengan data input 3 dimensi (XYZ) termasuk kemampuan untuk merubah properties sudut putarnya. Surface Chart bisa menampilkan grafik atau surface 3D jika nilai data X dan Y mempunyai nilai increment yang tetap atau dengan sistem grid karena dalam Surface Chart X dan Y tidak ditampilkan sebagai data numeric sehingga bukan nilai actual X dan Y itu sendiri.

Berikut contoh input data untuk Surface Chart dan tampilan hasilnya dalam chart:

image

Data di atas mempunyai nilai X dan Y yang tetap.

Untuk menampilkan data cross section dimana data X dan Y nya tidak teratur, seharusnya ada type chart tambahan yaitu 3D XYZ (scattered) tetapi sampai saat ini saya belum menemukan type chart yang dimaksud. Agar tampilan cross section 2D dapat ditampilkan 3D, maka data XYZ cross section dimanipulasi dengan matrik rotasi kemudian diplotkan di grafik XY (Scattered).

Format data cross section yang dipakai untuk simulasi ini adalah sama dengan data yang pernah dibahas di posting [XLS-SVY-007]: Plotting Cross Section dari Excel ke AutoCAD dan [XLS-SVY-13]: Plotting Cross Section dari Excel ke AutoCAD Versi 1.1. Dalam contoh cross section terlampir terdapat 3 buah cross section 2D yang akan diplot menjadi cross 3D. Nilai koordinat X diambil dari nama station dalam bentuk numeric. Misal untuk station 0+000 dan 100+000, maka koordinat X nya berturut-turut adalah 0 dan 100. Sedangkan koordinat Y mengacu jarak dari centerline atau offset dan nilai Z mengacu ke elevasi.

Berikut adalah cuplikan data yang dimaksud berikut dengan Chart 2D :

Station/Sheet Data & Chart 2D
0 image
50 image
100 image

Tampilan data dan 3D cross :

image

Semua proses pembentukan tabel dan perhitungan menggunakan fungsi formula excel tanpa menggunakan macro.

Uratan perhitungan adalah sebagai berikut:

1. Menghitung jumlah record dari sheet yang akan ditamplikan di chart 3D   image
 

[A3:A5]

List nama sheet dari masing-masing data 2D cross section. Diisi dengan numeric

  [B3] =COUNT(INDIRECT("’"&A3&"’!B1:B300"))
menghitung jumlah record di sheet A3. Maksimal record 300
Copy rumus [B3] ke bawah untuk menghitung record di sheet lainnya
  [C3:C5] cell bantu untuk menunjukkan lokasi perpindahan cross di table baru. Tabel baru adalah tabel gabungan dari beberapa data cross
  [B1] =SUM(B3:B5)
jumlah record di tabel baru
  [C1] =COUNT(A3:A50)
jumlah sheet yang akan ditampilkan
2. Menggabungkan record dalam satu tabel baru   image[E3]=IF(ROWS($E$2:E2)<=$B$1,ROWS($E$2:E2))
[F3]=LOOKUP(E3,$C$3:$C$5,$A$3:$A$5)
[G3]=OFFSET(INDIRECT("’"&$F3&"’!$B$1"),COUNTIF($F$3:$F3,$F3),)
[H3]=OFFSET(INDIRECT("’"&$F3&"’!$c$1"),COUNTIF($F$3:$F3,$F3),)

[E3] membuat nomer urut record di tabel baru. Bernilai FALSE jika nomer urut melebihi dari hitungan jumlah record di $B$1
[F3] menampilkan angka STA (koordinat X), berdasarkan cell bantu di cell [$C$3:$C$5]
[G3] menambil nilai offset (Y) dari berdasarkan nama sheet di cell [F3]
[H3] menambil nilai offset (Z) dari berdasarkan nama sheet di cell [F3]
copy rumus [E3:H3] ke bawah sampai nilai di [E3]=FALSE

3. Setting Matriks Rotasi   image
  [K3],[K4] dan [K5] Masukkan sudut rotasi dalam satuan derajat
  [L3] =RADIANS(K3)
  [L4] =RADIANS(K4)
  [L5] =RADIANS(K5)
    Buat "Named Range" rx, ry dan rz yang mengacu ke range [L3], [L4] dan [L5]
  [J9] =COS(ry)*COS(rz)
  [J10] =-COS(ry)*SIN(rz)
  [J11] =SIN(ry)
     
  [K9] =COS(rx)*SIN(rz)+SIN(rx)*SIN(ry)*COS(rz)
  [K10] =COS(rx)*COS(rz)-SIN(rx)*SIN(ry)*SIN(rz)
  [K11] =-SIN(rx)*COS(ry)
     
  [L9] =SIN(rx)*SIN(rz)-COS(rx)*SIN(ry)*COS(rz)
  [L10] =SIN(rx)*COS(rz)+COS(rx)*SIN(ry)*SIN(rz)
  [L11] =COS(rx)*COS(ry)
4. Perkalian Matrix Asal dengan Matrix Rotasi   Matrix Asal adalah matrix yang dibentuk dari tabel baru dengan mangambil nilai X,Y dan Z. Jumlah baris di matrix adalah=banyaknya record=[B1], sedangkan jumlah kolomnya=3. Dari contoh di atas, Matrix asalah adalah dimulai dari F3, dengan jumlah baris sebanyak B1 ke bawah dan lebar ke kanan 3 kolom atau kalo dinyatakan dalam rumus excel adalah =OFFSET($F$3,,,$B$1,3).
Formula bawah ini named range dan formula yang dipakai untuk perhitungan perkalian matrix:
  _3dCross =OFFSET($F$3,,,$B$1,3)
matrix asal
  _2DPlot =MMULT(_3dCross,TRANSPOSE($J$9:$L$10))
perkalian matrix asal ke matrix rotasi. Hasil dari perkalian ini adalah matrix dengan dimensi (n x 2), n= jumlah record dan 2 adalah absis x dan y yang akan diplot di chart 2D xy scattered
5. Setting series untuk chart XY Scattered _x =OFFSET($F$3,,,$B$1)
  _sta =OFFSET($A$3,,,$C$1)
  _xPlot =INDEX(_2DPlot,,1)
  _yPlot =INDEX(_2DPlot,,2)
  __x1 =IF(_x=INDEX(_sta,1),_xPlot,NA())
  __x2 =IF(_x=INDEX(_sta,2),_xPlot,NA())
  __x3 =IF(_x=INDEX(_sta,3),_xPlot,NA())
  __y1 =IF(_x=INDEX(_sta,1),_yPlot,NA())
  __y2 =IF(_x=INDEX(_sta,2),_yPlot,NA())
  __y3 =IF(_x=INDEX(_sta,3),_yPlot,NA())

Rangkuman named range yang dipakai dalam perhitungan dan chart adalah

image

Untuk setting chart dan bentuk box, silahkan dipelajari lebih lanjut dari file terlampir.

==selamat mencoba==

[XLS-SVY-006]:Menghitung Luas Cross Section dengan Visual Basic Application Excel (Macro)

Referensi : https://cadex.wordpress.com/2010/12/05/xls-svy-004membuat-grafik-dan-menghitung-luas-cross-section-dengan-excel-bagian-2/
Platform : Excel
File :

Pada post [XLS-SVY-004]:Membuat Grafik dan Menghitung Luas Cross Section dengan Excel Bagian #2, telah diuraikan tahapan menghitung luas cross section dengan menggunakan rumus / fungsi excel (tanpa macro). Pada hitungan metode ini, untuk mengurangii panjangnya rumus diperlukan beberapa cell bantu. Penggunakaan cell bantu tentunya akan memperbesar ukuran file excel, apalagi kalo data yang akan diolah terdiri dari beberapa station.

Dengan visual basic application, cell bantu tersebut dapat dihilangkan, sehingga didapat fungsi baru (user defined function/UDF) yang lebih simple.

Download file Download program & contoh cross. Setelah didownload dan diextract filenya, buka file xs.xla, kemudian file contoh cross sectionnya. Click [Enable Macro] saat membuka file xs.xla

Contoh cross section :

image

Dalam file xs.xla ada dua UDF yaitu:

1. xCatchPoint()

2. xCutFill()

1. Format Fungsi xCatchPoint():

=CatchPoint(PolylineExisting ,OffsetTemplateKiri ,OffsetTemplateKanan,ElevasiTemplateKiri ,ElevasiTemplateKanan ,SlopeCatchPointKiri ,SlopeCatchPointKanan)

Fungsi ini akan menghasilkan 4 (empat) angka yaitu Offset, Elevasi catch point Kiri dan Offset Elevasi catch point kanan.

[B11]=Index(xCatchPoint($Q$7:$R$27,$B$7,$C$7,$B$9,$C$9,$B$10,$C$10),1)
[B12]=Index(xCatchPoint($Q$7:$R$27,$B$7,$C$7,$B$9,$C$9,$B$10,$C$10),2)
[C11]=Index(xCatchPoint($Q$7:$R$27,$B$7,$C$7,$B$9,$C$9,$B$10,$C$10),3)
[C12]=Index(xCatchPoint($Q$7:$R$27,$B$7,$C$7,$B$9,$C$9,$B$10,$C$10),4)

2. Format Fungsi xCutFillX():

=xCutFill(PolylineExisting, PolylineDesign, TypeRtn)

TypeRtn=0, untuk menampilkan hasil hitungan luas Cut dan Fill. Gunakan index=1, untuk mengambil luas Cut, dan index=2 untuk mengambil lus Fill.

[G8]=INDEX(xCutFill($Q$7:$R$27,$S$7:$T$11,0),1)
[H8]=INDEX(xCutFill($Q$7:$R$27,$S$7:$T$11,0),2)

Coba rubah-rubah parameter design di seperti elevasi design, slope, grade, offset template dll, maka otomatis luas cross section dan grafik akan terupdate

Dalam contoh data cross section ada dua contoh cross section sehingga masing-masing dapat dihitung luas cut dan luas fillnya. Ada tambahan satu sheet [Resume] untuk menghitung volume cut dan fill seperti gambar di bawah:

image

Catatan Penting:

1. Program ini memerlukan fungsi UDF yang disimpan dalam file xs.xla sehinga apabila file cross section dicopy ke tempat lain yang tidak mempunyai file xs.xla, maka graphic dan hitungan luas tidak bisa dihitung” Tampilan jika file xs.xla belum dibuka adalah:

image

2. Copy >> Paste >> Value rumus yang menggunakan fungsi xCatchPoint() dan xCutFill() sebelum didistribusikan.

3. Jika diinginkan setiap kali menjalan program excel file xs.xla otomatis terbuka lakukan pengatuan setting Add-In. Kalo pakai Excel 2007 lakukan pengaturan sebagai berikut:

  • Click tombol image , kemudian pilih [Excel Option] kemudian [Add-Ins]
  • Dalam pilihan [Manage], pilih [Excel Add-Ins] kemudian click tombol [Go]
  • Pada pilihan [Add-Ins], click tombol [Browse]
  • Pilih lokasi file xs.xla, sehingga tampilan Add-Ins yang aktif menjadi

image

 

Note: 8 Feb 2014

the xla program (xs.xla) has been revised since the previous program had “calculation errors” on the right catch point.

thanks for Khalid Maqbool for finding these errors.

 

‘============== 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-SVY-004]:Membuat Grafik dan Menghitung Luas Cross Section dengan Excel Bagian #2

 

Referensi : Bagian #1
Platform : Excel
Lokasi File :

Pada Bagian #1, informasi offset dan elevasi disajikan dalam format horisontal, maka pada bagian #2 ini informasi offset dan elevasi disajikan dalam format vertikal atau penambahan detail offset dan elevasi, bertambah ke bawah bukan ke samping. Hal ini dilakukan dengan pertimbangan bahwa penambahan data dalam excel bisa ditampung lebih banyak jika tambah ke bawah bukan ke samping.

Conoh data yang akan dihitung luasnya adalah:

image

Bentuk cross section-nya dengan keterangan cut and fill Area :

image

Cara perhitungan DesignOffset dan DesignElvasi sudah diuraikan di Bagian #1

Tabulasi tahapan perhitungan area cut dan area fill adalah:

image

Masih menggunakan persamaan dasar garis lurus dan perpotongan garis:

y=mx+c persamaan garis <Rumus.1>
m=(y2-y1)/(x2-x1) rumus gradien (m) <Rumus.2>
c=y-mx konstanta garis (c) <Rumus.3>
xt=(c1-c2)/(m2-m1) perpotongan garis di x <Rumus.4>
Tahapan Perhitungan :
[T] dan [U] : menghitung gradien persamaan garis sepanjang polyline existing dengan Rumus.2 dan kontanta garis dengan Rumus.3
[V] : menghitung titik potong antara garis catch point kiri dan catch point kanan dengan persamaan garis sepanjang polyline existing <Rumus.4>
[W] dan [X] : menghitung gradien dan konstanta garis, sepanjang polyline design.
[Y] : menghitung titik potong antara polyline existing dan polyline design. Diambil dari kolom [AK]
[AK] : mengambil koordinat X dari range [AM:AP]
[AM2:AM3] : Gradien (m) dan kontanta garis (c) penggal garis pertama dari polyline design
[AM4:AM5] : koordinat X awal dan akhir penggal garis pertama dari polyline design
[AM7:AM16] : mencari titik potong penggal garis pertama dari polyline design dengan polyline existing. Titik potong yang dipilih adalah yang terletak di [AM4:AM5] dan [P7:Q7]
[AN:AP] : dengan cara yang sama seperti di atas, dicari titik potong polyline existing dan design
[Z] : hasil sorting titik potong [Y]
[AA] : menggabungkan koordinat titik potong [Z] dan [R]
[AB] : hasil sorting kolom [AA]
[AC] : mengambil koordinat X existing (offset existing) yang terletak di bawah garis polyline design
[AD] : hasil sorting kolom [AC]
[AE] : gabungan koordinat X (offset) existing dan design yang teletak di bawah garis polyline design
[AF] : hasil sorting kolom [AE]
[AG] : koordinat Y (elevasi) design, dihitung dengan <Rumus.1>
[AH] : koordinat Y (elevasi) existing.
[AI] : Perhitungan luas, dengan menggunakan rumus trapesium yaitu [Jumlah Garis Sejajar]x[0.5 Tinggi][Jumlah Garis Sejajar]=Y2+Y1
[Tinggi]=X2-X1
Area=0.5*(Y2+Y1)*(X2-X1)

[Luas Cut atau Fill]=[Luas Trapesium Design]-[Luas Trapesium Existing]
jika hasilnya negatif, didapat Luas Cut, jika posisitf didapat Luas Fill

Detail rumus silahkan didownload filenya di sini

==selamat mencoba===