Тема: Help!!!
Скажите пожалуйста как вместо того чтобы просить у пользователя выбрать на экране объект
acSelSet.SelectOnScreen
в набор добавлялся бы сразу нужный объект.
Что-то вроде additem???
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → Help!!!
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Скажите пожалуйста как вместо того чтобы просить у пользователя выбрать на экране объект
acSelSet.SelectOnScreen
в набор добавлялся бы сразу нужный объект.
Что-то вроде additem???
У меня в конце кода вставки блока есть присвоение этому блоку икс даты. Я хочу чтобы после вставки блока к нему сразу крепилась икс дата, а не требовалось бы выбирать этот блок на экране.
Вот это вставляется блок
insertionPnt = ThisDrawing.Utility.GetPoint(, "Указать точку: ") Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(insertionPnt, BlockName, 1#, 1#, 1#, 0, Rotation)
А следом к нему надо прицепить икс дату:
Dim acSelSet As AcadSelectionSet Dim strString As String Dim intDatGrp(0 To 1) As Integer Dim varDatVal(0 To 1) As Variant Dim acEnt As AcadEntity Dim i As Integer On Error GoTo Exit_Here ' Создаемновый набор объектов Set acSelSet = vbdPowerSet("EntityForBindXData") acSelSet.SelectOnScreen strString = "№" & TextBox7 ' Do While strString = "" ' strString = InputBox("Введите строку сохраняемую " & _ ' "в области расширенных данных", "BindXData", "String 1") ' Loop intDatGrp(0) = 1001 varDatVal(0) = "TESTAPP" intDatGrp(1) = 1000 varDatVal(1) = strString ' Сохраняем введенную строку в области ' расширенных данных всех выбранных примитивов For i = 0 To acSelSet.Count - 1 Set acEnt = acSelSet.Item(i) acEnt.SetXData intDatGrp, varDatVal Next i Exit_Here: ' Освобождаем память Set acSelSet = Nothing Set acEnt = Nothing
Вместо того чтобы выбирать объект
acSelSet.SelectOnScreen
я хочу чтобы икс дата сама "цеплялась" к только что вставленному блоку
Даша, а зачем вам в таком случае вообще набор объектов? Вставили блок
Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(insertionPnt, BlockName, 1#, 1#, 1#, 0, Rotation)
, ну и присоединяйте к нему свою "икс дату"
blockRefObj.SetXData intDatGrp, varDatVal
Вы же знаете я некудышный программист :(
Ничего не могу разобрать.
Мне нужно присоединить при вставке блока к нему икс дату, а затем колличество блоков одного типа и все присоединенные к этому типу икс даты... Затем найти колличество блоков другого типа и все присоединенные икс даты к этому типу...
Самым примитивным способом я попробовала это сделать...Код получился не громадным, а просто необъятным...Даже с трудом можно вообразить какого он огромного размера :(
Голова у меня сейчас просто треснет :(
Дарья,как говорят на некоторых форумах,"учите матчасть"))) Серьезно, скачайте какой-нибудь учебник по VBA или даже по VB,и постарайтесь разобраться хотя бы с основами - типы данных, структура языка. А то часто вы пытаетесь решить серьезные задачи, не понимая более простых вещей. Вот у вас и рождается код на множество страниц там, где можно обойтись десятком строк. Конечно, метод "тыка" тоже хорош,но долог)))
Ну а по задаче - образцы ведь чего-то подобного у вас есть (при подсчете блоков - вводов на дополнительных опорах). Перебираете в цикле набор объектов-блоков, считываете расширенные данные методом GetXData, проверяете их значение на соответствие вашим условиям,ну и т.д.
Я тоже далеко не ас программирования, так что с пол-тыка ваши задачи решить не могу; времени сейчас мало. Да и отпуск скоро!!!
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → Help!!!
Форум работает на PunBB, при поддержке Informer Technologies, Inc