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

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

Как получить доступ к свойствам дин. блока в VBA

Ответ
Поиск в этой теме
Непрочитано 30.04.2012, 15:21 #1
Как получить доступ к свойствам дин. блока в VBA
shprot
 
Регистрация: 08.02.2011
Сообщений: 33

Имеется выбранный динамический блок, как получить доступ к его свойствам. Например в блоке есть параметр длина, значение которого видно в свойствах блока, как это значение получить программно в VBA (имя блока известно). Заранее благодарен.
Просмотров: 2908
 
Непрочитано 30.04.2012, 15:45
#2
Олег (jr.)

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


Не помню откуда это:
Edit Dynamic Block Settings
The Insert Dynamic Block Example showed how to insert a Dynamic Block.
It could be possible that Dynamic blocks are already in the drawing.
With the following function its possible to change the parameters of a block without.

Code:


Код:
[Выделить все]
Function editblock(ByVal Parametername, ByVal Newvalue, ByVal Blockname As String)
 Dim ent As AcadEntityDim oBkRef As IAcadBlockReference
Dim oDynProp As AcadDynamicBlockReferenceProperty
Dim v As Variant
Dim I As Long 
For Each ent In ThisDrawing.ModelSpace
If ent.ObjectName = "AcDbBlockReference" Then
Set oBkRef = entIf oBkRef.IsDynamicBlock = True Then
 'Check if it is a dynamic block
 v = oBkRef.GetDynamicBlockProperties
 'Get all Dynamic attributes
 If oBkRef.EffectiveName = Blockname Then   
  For I = LBound(v) To UBound(v)  
   Set oDynProp = v(I)  
  If Not IsArray(oDynProp.Value) Then 
'Not an array  
  If oDynProp.PropertyName = Parametername Then 
    Str (oDynProp.Value)  
   oDynProp.Value = Newvalue
 'Set the new value 
   End If    
End If  
  Next 
End If
End If
End If
Next ent 
 End Function
Call this function using

Code:


Editblock "YourParametername", newvalue, "YourBlockname"

If we take the block from the Insert Dynamic Block Example then we would use

Code:


Editblock "Xvalue", 200, "block"
Editblock "Yvalue", 200, "block"
So all blocks with the name 'Block' are now 200 mm Wide and 200mm Long
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 30.04.2012, 17:04
#3
shprot


 
Регистрация: 08.02.2011
Сообщений: 33


Спасибо, но что то я не разберусь (новичок) где в этом коде сам объект свойство которого ищем? Это v?
shprot вне форума  
 
Непрочитано 30.04.2012, 18:49
#4
Олег (jr.)

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


---> ParameterName
См. здесь:
http://www.caduser.ru/forum/index.ph...#message277793

~'o'~

Последний раз редактировалось Олег (jr.), 30.04.2012 в 19:24.
Олег (jr.) вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как получить доступ к свойствам дин. блока в VBA

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить доступ к таблице Access Cleper Программирование 22 02.02.2016 07:05
Как получить Список файлов в директории (поддиректорий) VBA sf Программирование 2 17.12.2010 12:06
Как получить объекты из блока? ivspec Программирование 4 03.04.2006 15:35
VBA. получить центр окружности HiddenM Программирование 2 24.10.2005 12:54