> Дарья
По-быстрому, проверить некогда
Добавь свой слой и цвет для линий
Option Explicit
Const PI = 3.14159265358979
Const slop As Double = 79# ' угол между засечкой и основной линией
Const leng As Double = 1.12 ' половина длины засечки
Const gap As Double = 0.7 ' расстояние между засечками
Sub Zaseki()
Dim sys, D, InsertPnt
Dim p0, p1, p2
Dim lineObj As AcadLine
Dim ang As Double, ang1 As Double, ang2 As Double
Dim num As Integer, cnt As Integer
With ThisDrawing
.StartUndoMark
sys = .GetVariable("OSMODE")
.SetVariable "OSMODE", 64
InsertPnt = .Utility.GetPoint(, vbCrLf & "УКАЖИТЕ ПОЖАЛУЙСТА ТОЧКУ ВСТАВКИ БЛОКА:")
.SetVariable "OSMODE", 512
D = .Utility.GetPoint(InsertPnt, vbCrLf & "УКАЖИТЕ ПОЖАЛУЙСТА НА КРАЙ ЗДАНИЯ ИЛИ СООРУЖЕНИЯ С ОДНОФАЗНЫМ ВВОДОМ:")
Set lineObj = .ModelSpace.AddLine(InsertPnt, D)
ang = .Utility.AngleFromXAxis(D, InsertPnt)
ang1 = ang + .Utility.AngleToReal(slop, acDegrees)
ang2 = ang1 + PI
p0 = .Utility.PolarPoint(D, ang, gap * 2) '<--gap * 2 - расстояние от конца линии до середины первой засечки
p1 = .Utility.PolarPoint(p0, ang1, leng)
p2 = .Utility.PolarPoint(p0, ang2, leng)
Set lineObj = .ModelSpace.AddLine(p1, p2)
num = CInt(InputBox(vbCrLf & "УКАЖИТЕ ПОЖАЛУЙСТА КОЛИЧЕСТВО ЗАСЕЧЕК", "Ввод параметров", "2"))
If num = 0 Or num < 0 Then
MsgBox "ВВОД НУЛЯ И ОТРИЦАТЕЛЬНЫХ НЕ ДОПУСКАЕТСЯ.", , "АШИПКА"
Exit Sub
End If
While cnt < num - 1
p0 = .Utility.PolarPoint(p0, ang, gap)
p1 = .Utility.PolarPoint(p0, ang1, leng)
p2 = .Utility.PolarPoint(p0, ang2, leng)
Set lineObj = .ModelSpace.AddLine(p1, p2)
cnt = cnt + 1
Wend
.SetVariable "OSMODE", sys
.EndUndoMark
End With
End Sub
~'J'~