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

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

Изменение таблицы свойств дин. блока в VBA

Ответ
Поиск в этой теме
Непрочитано 04.05.2012, 11:59 #1
Изменение таблицы свойств дин. блока в VBA
shprot
 
Регистрация: 08.02.2011
Сообщений: 33

Подскажите пожалуйста, возможно ли программно добавлять, заполнять, удалять строки в таблице свойств динамического блока. (имя блока известно, сам параметр создан)

Миниатюры
Нажмите на изображение для увеличения
Название: Скрин.jpg
Просмотров: 151
Размер:	54.9 Кб
ID:	79646  

Просмотров: 5046
 
Непрочитано 04.05.2012, 22:23
#2
Олег (jr.)

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



Покажи чертеж в версии не выше 2010
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 04.05.2012, 23:12
#3
shprot


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


Извините не понял, поясните пож. Нужен скрин с более ранней версии AutoCAD?
shprot вне форума  
 
Непрочитано 04.05.2012, 23:15
#4
Кулик Алексей aka kpblc
Moderator

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


Объясняю: нужен dwg-файл с образцом блока, записанный в формате dwg2010 или более ранней.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.05.2012, 00:21
#5
Олег (jr.)

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


Посмотри ещё здесь, год назад делал:
http://forums.autodesk.com/autodesk/...ssage.id=95256
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 05.05.2012, 16:47
#6
shprot


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


Цитата:
Объясняю: нужен dwg-файл с образцом блока, записанный в формате dwg2010 или более ранней.
У меня только 2011 и 2008, в 2008 этого параметра я вообще не обнаружил. Задача стоит программно менять какой либо выпадающий список. А в таком случае устроит и редактирование просто параметра "Выбор", точнее просто наполнять удалять его позиции, параметров для этих позиций не будет. см. приложенный блок.
А зачем вам файл именно в 2010 и ранее. Ведь насколько я помню файлы созданные в 2011 открываются 2010 AutoCAD. В файле Чертеж 2011 два параметра, один это "Выбор" а второй это "Таблица свойств блока", вполне устроит редактирование любого из них.
Вложения
Тип файла: dwg
DWG 2007
Чертеж 2008.dwg (30.9 Кб, 1325 просмотров)
Тип файла: dwg
DWG 2010
Чертеж 2011.dwg (309.7 Кб, 1312 просмотров)
shprot вне форума  
 
Непрочитано 05.05.2012, 17:33
#7
Олег (jr.)

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


Я тебе показал уже как делать, неужели нельзя было изменить
название параметра самостоятельно?

Код:
[Выделить все]
Option Explicit


Public Sub ChangeDynProps()

     Dim ss As AcadSelectionSet
     Dim ent As AcadEntity
     Dim bname As String
   Dim props() As AcadDynamicBlockReferenceProperty
     Dim pvalue As Variant
     Dim blkref As AcadBlockReference
     Dim n As Long
     
     
     With ThisDrawing.SelectionSets
          While .Count > 0
               .Item(0).Delete
          Wend
          Set ss = .Add("$DynBlocks$")
     End With

     Dim ftype(0) As Integer
     Dim fdata(0) As Variant

     ftype(0) = 0
     fdata(0) = "INSERT"
     ss.SelectOnScreen ftype, fdata
     
  If ss.Count = 0 Then
  MsgBox "No blocks selected...Exit"
  Exit Sub
  End If
  
For n = 0 To ss.Count - 1
  Set blkref = ss.Item(n)
  If blkref.IsDynamicBlock Then

  Dim i As Integer
  props = blkref.GetDynamicBlockProperties
 
  Dim prop As AcadDynamicBlockReferenceProperty
  ReDim propArray(UBound(props), 1)
  
For i = LBound(props) To UBound(props)
Set prop = props(i)
If prop.PropertyName = "Выбор" Then '<--- Change a property name here
prop.Value = "Монолит"   '"Плита" <--- Change a property value
Exit For
End If

Next i

End If

Next n

End Sub
~'o'~
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 05.05.2012, 19:48
#8
shprot


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


К Олег (jr.) Спасибо а помощь, но это не совсем то что мне надо. В Вашем коде происходит выбор одной из позиций параметра "Выбор"
Код:
[Выделить все]
rop.Value = "Монолит"
А нужна возможность удаления, добавления этих позиций. Грубо говоря сейчас есть две позиции "Монолит" и "Плита", нужно что-бы:
1. эти (существующие) позиции были удалены
2. добавлены другие (их кол-во может быть уже другим)
Если знаете, подскажите пожалуйста.
shprot вне форума  
 
Непрочитано 05.05.2012, 21:00
#9
Олег (jr.)

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



Только вручную, про код забудь, мой тебе совет
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 05.05.2012, 21:46
#10
shprot


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


Понял, жаль. Может есть какие то другие идеи? Нужно сделать возможность пользователю, делать ввыбор одной из позиций списка, который программно можно было бы менять. Не обязательно что-бы пользователь этот выбор делал используя параметры дин. блока, возможно через свойство блока как то.... Если есть мысли, поделитесь.
shprot вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Изменение таблицы свойств дин. блока в VBA

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить доступ к свойствам дин. блока в VBA shprot Программирование 3 30.04.2012 18:49
Lisp. Изменение свойств у ячеек таблицы. Не могу докопаться до vla объекта. Kirzaa LISP 2 21.09.2009 10:32
Изменение свойств атрибута в составе блока rzinnurov AutoCAD 9 24.04.2009 15:17
как с помощью vba начертить линию vasyavip Программирование 77 09.10.2008 23:17
Изменение параметров дин блока ch-viktor Программирование 5 23.05.2008 21:38