Sub TABLE() Dim lineObj As AcadLine Dim X(0 To 2) As Double Dim Y(0 To 2) As Double Dim D1, D2 As Double On Error Resume Next Nstr = ThisDrawing.Utility.GetInteger("Введите количество строк <1>: ") If Err Then Nstr = 1: Err.Clear 'Если нажимаем Enter,то количество строк=1 'Если ввести "0"- Выход If Nstr = 0 Then Exit Sub Hstr = ThisDrawing.Utility.GetInteger("Введите высоту строк <1>: ") If Err Then Hstr = 1: Err.Clear If Hstr = 0 Then Exit Sub Ns = ThisDrawing.Utility.GetInteger("Введите количество столбцов <1>: ") If Err Then Ns = 1: Err.Clear If Ns = 0 Then Exit Sub Ws = ThisDrawing.Utility.GetInteger("Введите ширину столбцов <1>: ") If Err Then Ws = 1: Err.Clear If Ws = 0 Then Exit Sub Nstr = Abs(Nstr): Hstr = Abs(Hstr): Ns = Abs(Ns): Ws = Abs(Ws) 'Возвращает абсол.значение(MyNumber = Abs(-50.3)-Возвращает 50.3) D1 = Ws * Ns 'D- дистанция angle1 = 0 'angle- угол PN = ThisDrawing.Utility.GetPoint(, "Укажите точку вставки таблицы:") 'Используем метод PolarPoint 'RetVal = PolarPoint(Point, Angle, Distance) B = ThisDrawing.Utility.PolarPoint(PN, angle1, D1) D2 = Hstr * Nstr 'Преобразуем угол, заданный в радианах, в градусы '(Degrees = Radians / PI * 180)(Radians = Degrees / 180 * PI) angle2 = -90 / 180 * 3.141592653 A = ThisDrawing.Utility.PolarPoint(PN, angle2, D2) N1 = (B(0) - A(0)) / Ns N2 = (B(1) - A(1)) / Nstr 'Рисуем линии с использованием счётчика цикла X(1) = A(1): X(2) = A(2): Y(1) = B(1): Y(2) = B(2) For I = 0 To Ns X(0) = A(0) + I * N1: Y(0) = X(0) Set lineObj = ThisDrawing.ModelSpace.AddLine(X, Y) Next I X(0) = A(0): X(2) = A(2): Y(0) = B(0): Y(2) = B(2) For I = 0 To Nstr X(1) = A(1) + I * N2: Y(1) = X(1) Set lineObj = ThisDrawing.ModelSpace.AddLine(X, Y) Next I End Sub |
'Между двумя точками Sub Distance() Dim A, B As Variant Dim x, y, z, D As Double A = ThisDrawing.Utility.GetPoint(, "Укажите 1-ю точку: ") B = ThisDrawing.Utility.GetPoint(A, "Укажите 2-ю точку: ") x = A(0) - B(0) y = A(1) - B(1) z = A(2) - B(2) D = Sqr((Sqr((x ^ 2) + (y ^ 2)) ^ 2) + (z ^ 2)) MsgBox Str(D) End Sub |
'получение переменных активного пространства, пространства модели и Global ACAD_ModelSpace As AcadModelSpace Global ACAD_PaperSpace As AcadPaperSpace Global ACAD_ActiveSpace As AcActiveSpace Public Sub Init()
Public Sub pGetActiveSpace() '--------
'Получение атрибутов (редактируемых) блока и вывод их в MsgBox
'Операции со слоями. Каждый слой закидывается в отдельный файл и |
'Присылайте свои примеры ! |