Тема: Библиотечные функции VBA
Посоветуйте где найти?
Спасибо.
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → Библиотечные функции VBA
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
> Fantomas
Спасибо за столь широкий ответ, видимо таков был вопрос...
Для тех кто, возможно, тоже интересуется темой, могу дать ссылу - 54 макроса - думаю можно использовать как основу закладываемой библиотеки.
http://www.activedwg.com/html/VBA.htm
Впечатление складывается такое, что проще потратить время и составить библиотеку функций самому, чем найти что-нибудь готовое и подходящее. Или я неправ?
Простите я подумал что вам нужны вообще "склады функций VBA" коих на просторах интернета очень много, а не конкретно под AutoCAD.
За ссылку спасибо, если что либо подобное обнаружу скину сюда. Я пока в VBA на достаточно начальном уровне, выручает только то что порядочно изучил VBAшный хелп программируя на лиспе. Иногда экспортирую некоторые функции которые могут пригодится позже, но не более того.
Вот, например, библиотечная функция предназначенная для создания набора типа AcadSelectionSet:
Option Explicit ------------------ 'Sub Sample_Test() ' Dim SetTest As AcadSelectionSet ' Dim vSelectMode As Integer ' Dim Point1(0 To 2) As Variant ' Dim Point2(0 To 2) As Variant ' Dim FilterType As Integer ' Dim FilterData As String ' Dim SetName As String ' ' vSelectMode = SelectMode.acSelectionSetCrossing ' ' Point1(0) = -976 ' Point1(1) = 414 ' Point1(2) = 0 ' ' Point2(0) = 4207 ' Point2(1) = 3425 ' Point2(2) = 0 ' ' FilterType = 0 ' FilterData = "INSERT" ' SetName = "SetTest" ' Set SetTest = SelSet_Lib.SS_Select(vSelectMode, Point1, Point2, FilterType, FilterData, SetName) ' MsgBox SetTest.Name 'End Sub '------------------------------------------------------------------------ 'функции: 'SS_Select(vSelectMode [, Point1][, Point2][, FilterType][, FilterData]) '------------------------------------------------------------------------ Public Enum SelectMode acSelectionSetWindow = 0 acSelectionSetCrossing = 1 'acSelectionSetFence=2 acSelectionSetPrevious = 3 acSelectionSetLast = 4 acSelectionSetAll = 5 'acSelectionSetWindowPolygon=6 'acSelectionSetCrossingPolygon=7 End Enum Dim ssetObj As AcadSelectionSet '-------------------------------------------------------- Public Function SS_Select(Optional vSelectMode As Integer, _ Optional Point1 As Variant, Optional Point2 As Variant, _ Optional FilterType As Integer, Optional FilterData As String, _ Optional SetName As String) As AcadSelectionSet ' Create the selection set Call CreateSet(SetName) 'select Dim corner1(0 To 2) As Double Dim corner2(0 To 2) As Double Dim gpCode(0) As Integer Dim dataValue(0) As Variant Dim groupCode As Variant, dataCode As Variant gpCode(0) = FilterType dataValue(0) = FilterData groupCode = gpCode dataCode = dataValue If IsMissing(vSelectMode) Then vSelectMode = SelectMode.acSelectionSetAll If ((Not IsMissing(Point1)) And (Not IsMissing(Point2))) Then corner1(0) = Point1(0) corner1(1) = Point1(1) corner1(2) = 0 corner2(0) = Point2(0) corner2(1) = Point2(1) corner2(2) = 0 End If On Error Resume Next ssetObj.Clear ssetObj.Select vSelectMode, corner1, corner2, groupCode, dataCode Set SS_Select = ssetObj Set ssetObj = Nothing End Function '-------------------------------------------------------- '-------------------------------------------------------- Private Sub CreateSet(Optional SetName As String) ' Create the selection set If (SetName = "") Then SetName = "Anonymous" If (SetExist(SetName)) Then Set ssetObj = ThisDrawing.SelectionSets(SetName) Else Set ssetObj = ThisDrawing.SelectionSets.Add(SetName) End If End Sub Private Function SetExist(SetName As String) As Boolean SetExist = False Dim SelSets As AcadSelectionSets Set SelSets = ThisDrawing.SelectionSets Dim i As Integer For i = 0 To (SelSets.Count - 1) If (SelSets.Item(i).Name = SetName) Then SetExist = True Exit For End If Next i End Function
Простите, вкралась ошибка, вместо -
'Функции:
'SS_Select(vSelectMode [, Point1][, Point2][, FilterType][, FilterData])
следует читать -
'Функции:
'SS_Select([vSelectMode][, Point1][, Point2][, FilterType][, FilterData])
> Leonid
А какие задачи должны выполнять библиотечные функции?
> AVED
Библиотечная функция это просто код многократного использования. Например, практически ни одна программа не обходится без создания набора примитивов, так зачем каждый раз сочинять этот велосипед?! Очевидно, есть смысл сесть и вдумчиво сделать это один раз на века и затем кидать такой блок в программу и применять, применять, применять... Ну надо еще продумать набор аргументов, чтобы функция получилась по возможности универсальной (то что в языках Си называют перегрузкой функции).Вот где-то так.
> Leonid
www.cad.dp.ua/stats/a_vba/ - здесь есть кое-что полезное.
> AVED
Спасибо за ссылку, этот сайт мне известен (стоит в Favorites), но здесь примеры, а не готовые библиотеки.
Честно говоря, я думал что тема найдет бОльший отклик, ведь вопрос абсолютно практический. Неужели народ не осознает своей выгоды?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → Библиотечные функции VBA
Форум работает на PunBB, при поддержке Informer Technologies, Inc