Тема: Библиотечные функции VBA

Посоветуйте где найти?
Спасибо.

Re: Библиотечные функции VBA

www.google.com

Re: Библиотечные функции VBA

> Fantomas
Спасибо за столь широкий ответ, видимо таков был вопрос...
Для тех кто, возможно, тоже интересуется темой, могу дать ссылу - 54 макроса - думаю можно использовать как основу закладываемой библиотеки.
http://www.activedwg.com/html/VBA.htm
Впечатление складывается такое, что проще потратить время и составить библиотеку функций самому, чем найти что-нибудь готовое и подходящее. Или я неправ?

Re: Библиотечные функции VBA

Простите я подумал что вам нужны вообще "склады функций VBA" коих на просторах интернета очень много, а не конкретно под AutoCAD.
За ссылку спасибо, если что либо подобное обнаружу скину сюда. Я пока в VBA на достаточно начальном уровне, выручает только то что порядочно изучил VBAшный хелп программируя на лиспе. Иногда экспортирую некоторые функции которые могут пригодится позже, но не более того.

Re: Библиотечные функции 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

Re: Библиотечные функции VBA

Простите, вкралась ошибка, вместо -
'Функции:
'SS_Select(vSelectMode [, Point1][, Point2][, FilterType][, FilterData])
следует читать -
'Функции:
'SS_Select([vSelectMode][, Point1][, Point2][, FilterType][, FilterData])

Re: Библиотечные функции VBA

> Leonid
А какие задачи должны выполнять библиотечные функции?

Re: Библиотечные функции VBA

> AVED
Библиотечная функция это просто код многократного использования. Например, практически ни одна программа не обходится без создания набора примитивов, так зачем каждый раз сочинять этот велосипед?! Очевидно, есть смысл сесть и вдумчиво сделать это один раз на века и затем кидать такой блок в программу и применять, применять, применять... Ну надо еще продумать набор аргументов, чтобы функция получилась по возможности универсальной (то что в языках Си называют перегрузкой функции).Вот где-то так.

Re: Библиотечные функции VBA

> Leonid
www.cad.dp.ua/stats/a_vba/ - здесь есть кое-что полезное.

Re: Библиотечные функции VBA

> AVED
Спасибо за ссылку, этот сайт мне известен (стоит в Favorites), но здесь примеры, а не готовые библиотеки.
   Честно говоря, я думал что тема найдет бОльший отклик, ведь вопрос абсолютно практический. Неужели народ не осознает своей выгоды?

Re: Библиотечные функции VBA

http://www.cadvault.com/index.php?page=code