Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
[ Закрыто] В vba определить геометрические размеры атрибута динамического блока в Автокаде, Как можно в vba определить геометрические размеры атрибута в динамическом блоке Автокада
 
Доброго времени суток уважаемые форумчане! В лист автокада вставляю динамический блок. Содержание атрибута беру с листа Excel. После того как вставил и обновил блок, нужно узнать геометрические размеры атрибута " МАРКА_КАБЕЛЯ" или координаты по оси Х и Y. Часть кода прилагаю. Буду благодарен за любую помощь!
Код
' Получаем коллекцию динамических свойств
     Set objBlockRef = acadDoc.ModelSpace.InsertBlock(pntPanel, Name, 1, 1, 1, 0)
     BlkAtts = objBlockRef.GetDynamicBlockProperties
       
       
     BlkAtts = objBlockRef.GetAttributes
     acadDoc.Regen acAllViewports
    acadApp.ZoomExtents


dynProps = objBlockRef.GetDynamicBlockProperties

' Перебираем свойства
For j = LBound(dynProps) To UBound(dynProps)
    'i = 0
    Set prop = dynProps(j)
    Debug.Print j
    Debug.Print "Свойство: " & prop.PropertyName
    If prop.PropertyName <> "Origin" Then Debug.Print "Значение: " & prop.Value
'Для ввода
If prop.PropertyName = "Видимость1" Then
         str = sh.Cells(nrs, 12).text
        dynProps(j).Value = str
         BlkAtts = objBlockRef.GetAttributes
         acadDoc.Regen acAllViewports
    End If
 'Для отходящей группы
    If prop.PropertyName = "Видимость 1" Then
         str = sh.Cells(nrs, 12).text
        dynProps(j).Value = str
         BlkAtts = objBlockRef.GetAttributes
         acadDoc.Regen acAllViewports
    End If
    
     'Для отходящей группы
    If prop.PropertyName = "Вид" Then
         str = sh.Cells(nrs, 13).text
        dynProps(j).Value = str
         BlkAtts = objBlockRef.GetAttributes
         acadDoc.Regen acAllViewports
    End If

               'Получаем атрибуты для блочной ссылки
    str = ""
    varAttributes = objBlockRef.GetAttributes
     If Name = "Шины" Or Name = "Оконечные устройства" Then Exit Sub
       For i = LBound(varAttributes) To UBound(varAttributes)
       
       Debug.Print varAttributes(i).TagString
       Debug.Print varAttributes(i).TextString
 
    If varAttributes(i).TagString = "МАРКА_КАБЕЛЯ" Then
     str = sh.Cells(nrs, 6).text
     varAttributes(i).TextString = str
    
         BlkAtts = objBlockRef.GetAttributes
         acadDoc.Regen acAllViewports
Двойной клик по ячейке, Макрос не работает если F1 объединена
 
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        If Not Intersect(Target, Range("F1")) Is Nothing Then
            Target = Range("F1").MergeArea.Cells(1).Value
            If Range("F1").MergeArea.Cells(1).Value = "Петя" Then
                Range("F1").MergeArea.Cells(1).Value = "Вася"
            Else
                Range("F1").MergeArea.Cells(1).Value = "Петя"
            End If
        Cancel = True
    End If
End Sub
Ура, получилось. Все гораздо проще. Надеюсь кому-то пригодится. Спасибо всем кто откликнулся!
Двойной клик по ячейке, Макрос не работает если F1 объединена
 
Конечно говорит, но хочется понять как можно решить этот вопрос
Двойной клик по ячейке, Макрос не работает если F1 объединена
 
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Cells.Count > 1 Then Exit Sub
        If Not Intersect(Target, Range("F1")) Is Nothing Then
            'Target.Font.Name = "Wingdings 2"
            If Target = "Вася" Then
                Target = "Петя"
            Else
                Target = "Вася"
            End If
        Cancel = True
           'Call InMidStr1
    End If
End Sub
Скрытый текст
Доброго времени суток уважаемые гуру. На просторах инета нашел процедуру которая двойным щелчком мышки изменяет значения ячейки. Если ячейка не объединена, все работает прекрасно. Но если Ф1 объединена, не работает. Подскажите пожалуйста, как можно обратит'ся к объединенной ячейке? Вед', как я понимаю, адрес объединенной ячейки все равно остается как и у первой объединенной ячейки. Или я неправил'но понимаю? Буду очен' признателен если подскажите где можно изучит' етот вопрос. Спасибо.
Изменено: Farit - 16.12.2024 20:48:55 (Не корректно написал код)
Оптимизация фазировки, подбор оптимальных подключений электроприемников в щите, Изменение готовой программы
 
В любой, я готов заплатить за работу. Любой труд должен оплачиваться!
Оптимизация фазировки, подбор оптимальных подключений электроприемников в щите, Изменение готовой программы
 
Добрый день SAS888 в принципе код работает, но он не учитывает 3-х фазные потребители. В остальном все отлично. Для общения можно писать в почту удалено Спасибо за любую помощь.
Изменено: Sanja - 01.03.2026 14:25:50
Оптимизация фазировки, подбор оптимальных подключений электроприемников в щите, Изменение готовой программы
 
 Доброго времени суток уважаемые гуру. Данная тема уже поднималась на этом форуме, но жизнь не стоит на месте. В примере который я скинул в качестве образца заполнена таблица лист "Расчет линии". На втором листе есть код программы (взял с этого форума) который расставляет нагрузку по фазам, но он работает только для однофазных потребителей. Необходимо задать условия для 3-х фазных потребителей. В качестве определения на скольких фазах сидит потребитель, можно узнать из столбца I начиная с 14 строки. Если в ячейке стоит 0,22 значит это однофазный потребитель, если 0,38 значит трехфазный. Естественно трехфазный потребитель загружает фазы ровно. Для того чтобы фазы не перегружать остается манипулировать однофазными.
Прошу помочь в изменении кода. В качестве результата в листе "Расчет линии" в столбце А необходимо вывести к какой фазе подключен потребитель (А, В, С или АВС) и в R4, R5, R6 вычислить нагрузки по фазам.
Изменено: Farit - 21.08.2024 06:57:35
Оптимизация фазировки, подбор оптимальных подключений электроприемников в щите, Изменение готовой программы
 
    Доброго времени суток уважаемые гуру. Данная тема уже поднималась на этом форуме, но жизнь не стоит на месте. В примере который я скинул в качестве образца заполнена таблица лист "Расчет линии". На втором листе есть код программы (взял с этого форума) который расставляет нагрузку по фазам, но он работает только для однофазных потребителей. Необходимо задать условия для 3-х фазных потребителей. В качестве определения на скольких фазах сидит потребитель, можно узнать из столбца I начиная с 14 строки. Если в ячейке стоит 0,22 значит это однофазный потребитель, если 0,38 значит трехфазный. Естественно трехфазный потребитель загружает фазы ровно. Для того чтобы фазы не перегружать остается манипулировать однофазными.
Прошу помочь в изменении кода. В качестве результата в листе "Расчет линии" в столбце А необходимо вывести к какой фазе подключен потребитель (А, В, С или АВС) и в R4, R5, R6 вычислить нагрузки по фазам.
Изменено: Farit - 20.08.2024 20:29:57
Страницы: 1
Наверх