Haluk
Özel Üye
- Katılım
- 7 Temmuz 2004
- Mesajlar
- 12,406
- Excel Vers. ve Dili
-
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
- Altın Üyelik Bitiş Tarihi
- ∞
İkinci durumdaki sorunuzu; sol taraftan tam boy çubukla başlayıp, en sonda artık ne kalırsa ..... diye anlıyorum.
Bu durum için hazırladığım çizim + metraj kodu ve görsel aşağıda verilmiştir;
Parametreler B6, B7 ve B8 hücrelerinden alınmaktadır. Bu hücreler, özel biçimlendirme yapılarak 0,00 cm olarak biçimlendirimiştir.
.
Bu durum için hazırladığım çizim + metraj kodu ve görsel aşağıda verilmiştir;
Parametreler B6, B7 ve B8 hücrelerinden alınmaktadır. Bu hücreler, özel biçimlendirme yapılarak 0,00 cm olarak biçimlendirimiştir.
C#:
Sub Test2()
' Haluk - 22/07/2022
' sa4truss@gmail.com
spanLength = Range("B6")
lengthMesh = Range("B7")
Overlap = Range("B8")
For Each xShape In ActiveSheet.Shapes
If Not Application.Intersect(xShape.TopLeftCell, Range("A2:AA6")) Is Nothing Then
xShape.Delete
End If
Next
Range("E8:E11") = ""
' Olcu cizgisinin baslangici
dimensionStart = 200
' Baslangic hasiri
startX = 200
endX = startX + 100
Set ReBar = ActiveSheet.Shapes.AddLine(startX, 40, endX, 40)
ReBar.Line.Weight = 2
LabelTop = 20
LabelLeft = startX + 40
Set firstMemberLabel = ActiveSheet.Shapes.AddLabel(msoTextOrientationHorizontal, LabelLeft, LabelTop, 50, 50)
firstMemberLabel.TextFrame.Characters.Text = lengthMesh
' Orta hasirlar (tam boy) ve son hasır (degisken boy)
Do
i = i + 1
startX = startX + 80
endX = startX + 100
If i Mod 2 = 0 Then
startY = 40
endY = 40
Else
startY = 50
endY = 50
End If
Set ReBar = ActiveSheet.Shapes.AddLine(startX, startY, endX, endY)
ReBar.Line.Weight = 2
LabelTop = endY - 20
LabelLeft = startX + 40
Set memberLabel = ActiveSheet.Shapes.AddLabel(msoTextOrientationHorizontal, LabelLeft, LabelTop, 50, 50)
memberLabel.TextFrame.Characters.Text = lengthMesh
' Bindirme paylarinin belirtilmesi
If i Mod 2 <> 0 Then
Set memberLabel1 = ActiveSheet.Shapes.AddLabel(msoTextOrientationHorizontal, startX, LabelTop + 20, 50, 50)
memberLabel1.TextFrame.Characters.Text = Overlap
memberLabel1.TextFrame2.TextRange.Font.Fill.ForeColor.RGB = RGB(0, 176, 240)
Set memberLabel2 = ActiveSheet.Shapes.AddLabel(msoTextOrientationHorizontal, startX + 80, LabelTop + 20, 50, 50)
memberLabel2.TextFrame.Characters.Text = Overlap
memberLabel2.TextFrame2.TextRange.Font.Fill.ForeColor.RGB = RGB(0, 176, 240)
End If
Loop While lengthMesh + i * (lengthMesh - Overlap) <= spanLength
' Son cubukta sag taraftaki bindirme payi olcusunu yazmayi iptal et
If i Mod 2 <> 0 Then
memberLabel2.TextFrame.Characters.Text = ""
End If
lengthLastBar = spanLength - i * (lengthMesh - Overlap)
memberLabel.TextFrame.Characters.Text = lengthLastBar
' Olcu cizgisinin cizimi
dimensionEnd = endX
Set dimensionLine = ActiveSheet.Shapes.AddLine(dimensionStart, 80, dimensionEnd, 80)
dimensionLine.Line.Weight = 1
dimensionLine.Line.ForeColor.RGB = RGB(255, 0, 0)
dimensionLine.Line.DashStyle = msoLineLongDashDot
dimensionLine.Line.BeginArrowheadStyle = msoArrowheadTriangle
dimensionLine.Line.EndArrowheadStyle = msoArrowheadTriangle
Set dimensionLabel = ActiveSheet.Shapes.AddLabel(msoTextOrientationHorizontal, (dimensionStart + dimensionEnd) / 2, 60, 80, 80)
dimensionLabel.TextFrame.Characters.Text = spanLength
dimensionLabel.TextFrame2.TextRange.Font.Fill.ForeColor.RGB = RGB(255, 0, 0)
' Metraj
Range("E8") = "METRAJ :"
Range("E9") = i & " Adet L = " & lengthMesh
Range("E10") = "1 Adet L = " & lengthLastBar
Range("E11") = "Toplam çubuk boyu = " & i & " X " & lengthMesh & " + 1 X " & lengthLastBar & " = " & i * lengthMesh + lengthLastBar
End Sub
.
Son düzenleme: