| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Определение площади слоя AutoCAD на VBA.

Определение площади слоя AutoCAD на VBA.

Ответ
Поиск в этой теме
Непрочитано 27.02.2012, 17:40 #1
Определение площади слоя AutoCAD на VBA.
LexaMV
 
Регистрация: 20.02.2009
Сообщений: 70

Из за различных изменений в проекте, часто приходится менять площади, приходиться все время пересчитывать. Есть ли программа позволяющая посчитать площадь слоя, и занести данные в таблицу?
Просмотров: 3583
 
Непрочитано 27.02.2012, 17:47
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


1. В AutoCAD у слоя площади нет.
2. Понятие поля существует с версии 2005.
3. Поиск пока никуда не делся.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.02.2012, 16:03
#3
lovial

Инженер
 
Регистрация: 12.11.2008
Днепропетровск
Сообщений: 525


http://forum.dwg.ru/showthread.php?t=14528
lovial вне форума  
 
Непрочитано 29.02.2012, 17:26
#4
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813


Цитата:
Сообщение от LexaMV Посмотреть сообщение
Из за различных изменений в проекте, часто приходится менять площади, приходиться все время пересчитывать. Есть ли программа позволяющая посчитать площадь слоя, и занести данные в таблицу?
Тестируем
Код:
[Выделить все]
Option Explicit
Function GetTableCell(ByVal oTable As AcadTable, ByVal varPt As Variant, _
                      ByRef rowIndex As Long, ByRef colIndex As Long) As Variant
     Dim wviewVec As Variant
     Dim resVar(1) As Long
     wviewVec = ThisDrawing.GetVariable("VIEWDIR")
     oTable.HitTest varPt, wviewVec, rowIndex, colIndex

    resVar(0) = rowIndex
    resVar(1) = colIndex
    GetTableCell = resVar
    
End Function

Public Sub Duvar()

Dim oSset As AcadSelectionSet
Dim oEnt As AcadEntity
Dim oPLine As AcadLWPolyline
Dim ftype(2) As Integer
Dim fdata(2) As Variant
Dim dxftype As Variant
Dim dxfdata As Variant
Dim pickPt As Variant

On Error GoTo Err_Control
    ftype(0) = 0: fdata(0) = "LWPOLYLINE"
    ftype(1) = 70: fdata(1) = 1
    ftype(2) = 8

          With ThisDrawing.SelectionSets
               While .Count > 0
                    .Item(0).Delete
               Wend
          Set oSset = .Add("Plines")
          End With
    
    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
ThisDrawing.Utility.GetEntity oEnt, pickPt, vbCrLf & "Выбрать единичный контур нужного слоя"
If Not TypeOf oEnt Is AcadLWPolyline Then
MsgBox "Это не полилиния"
Exit Sub
End If
    Dim strLayer As String
    strLayer = oEnt.Layer
    fdata(2) = strLayer
    dxftype = ftype
    dxfdata = fdata
    ZoomAll
    MsgBox "Выбрать всю видимую область рамкой"
    oSset.SelectOnScreen dxftype, dxfdata
    ZoomPrevious
    
    Dim sumLen As Double

    For Each oEnt In oSset
    Set oPLine = oEnt
    sumLen = sumLen + oPLine.Length
    Next
    
    Set oSset = Nothing
    
    Dim oRange As Variant, _
    oTable As AcadTable, _
    iPt As Variant, _
    lngRow As Long, _
    lngColm As Long
    
    With ThisDrawing.Utility
    .GetEntity oEnt, iPt, "Выбери таблицу: "
    pickPt = .GetPoint(, "Укажи ячейку: ")
    End With
    If Not TypeOf oEnt Is AcadTable Then
    MsgBox "Это не таблица"
    Exit Sub
    End If
    Set oTable = oEnt
    oRange = GetTableCell(oTable, pickPt, lngRow, lngColm)

      lngRow = CLng(oRange(0))
      lngColm = CLng(oRange(1))
      
oTable.SetText lngRow, lngColm, CStr(Round(sumLen, 3))

Err_Control:

End Sub
~'o'~
Олег (jr.) вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Определение площади слоя AutoCAD на VBA.

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
VBA в AutoCAD alle Программирование 47 03.12.2014 11:26
Взлом пароля VBA для Autocad Didar Программирование 6 03.12.2010 11:58
как зделать кнопочку на VBA программу в меню AutoCAD meugen Программирование 4 25.06.2010 17:44
AutoCAD LT 2005 и VBA Macros Vidas Программирование 10 03.05.2005 11:00
подскажите кто может где взять литературу по VBA for AutoCad er Программирование 2 28.10.2003 14:08