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

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

VBA в AutoCAD

Закрытая тема
Поиск в этой теме
Непрочитано 27.12.2005, 21:04 #1
VBA в AutoCAD
alle
 
Регистрация: 11.08.2005
Сообщений: 921

Уважаемые коллеги
Посоветуйте литературу и проч. по использованию VBA для разработки пользовательских приложений применительно к AutoCAD
Просмотров: 17907
 
Непрочитано 27.12.2005, 23:36
#2
C1


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


Мне вполне достаточно примеров в справке AutoCAD и самой этой справки (и опыта в Visual Basic). Копирую пример, вставляю в новый модуль и все проверяю вживую.
C1 вне форума  
 
Непрочитано 28.12.2005, 08:52
#3
p_sh

новичок
 
Регистрация: 19.06.2005
Ярославль
Сообщений: 3,396


в vba получается косовато: нет динамического вида создаваемых объектов (максимум резиновая лента). если есть оригинальные задумки лучше сразу изучать си и писать .arx приложения.
если получится изучить .arx, и понравилась идея: http://dwg.ru/dwl/453 , то можно будет переписать (самому времени не хватает).
p_sh вне форума  
 
Непрочитано 28.12.2005, 10:28
#4
Огурец

Profan
 
Регистрация: 27.04.2005
Москва
Сообщений: 6,761
Отправить сообщение для Огурец с помощью Skype™


Уважаемые коллеги!
Противоположный вопрос - а как отключить VBA в автокаде? У одной из наших сотрудниц он автоматически грузится во все файлы, создаёт ненужные и непонятные макросы, x-refы и откровенно мешает работать. Отключить не сумел, загружаеется и довольно долго при входе в ACAD.
Огурец вне форума  
 
Непрочитано 28.12.2005, 13:07
#5
p_sh

новичок
 
Регистрация: 19.06.2005
Ярославль
Сообщений: 3,396


1. при установке автокада отключите опцию vba.
2. просто удалите acvba.arx из каталога автокада (но это хуже 1)
p_sh вне форума  
 
Непрочитано 28.12.2005, 13:14
#6
Кулик Алексей aka kpblc
Moderator

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


Можно не так жестоко, по-моему:
- поискать файл acad.dvb и снести его, если он находится по путям поддержки када.
- где-то на autocad.ru вроде как была тема по поводу отключения vba-макросов. Но как это делать, я чего-то не усек - даже в какой области копаться.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 28.12.2005, 15:07
#7
p_sh

новичок
 
Регистрация: 19.06.2005
Ярославль
Сообщений: 3,396


может быть в dwt шаблоне есть встроенный макрос, и по этому vba грузится автоматом. (соответственно он есть и вовсех созданных по этому шаблону файлах. и при их загрузке автоматом подгружаются vba.
Выковырять их можно так:
запустить диспетчер vba: сервис->макросы-> диспетчер vba
в диалоговом окне - кнопка в рамке "Рисунок" - ИЗВЛЕЧЬ
или по п 2. см выше.
хотя обычно макросы (хорошие) позволяют несколько расширить акад и повысить производительность.
опущусь до саморекламы
http://dwg.ru/dwl/453
p_sh вне форума  
 
Непрочитано 28.12.2005, 15:26 Re: VBA в AutoCAD
#8
p_sh

новичок
 
Регистрация: 19.06.2005
Ярославль
Сообщений: 3,396


Цитата:
Сообщение от alle
Уважаемые коллеги
Посоветуйте литературу и проч. по использованию VBA для разработки пользовательских приложений применительно к AutoCAD
я частенько заглядывал в Интернет учебники vbnet.ru и т.п. по vb- очень помогало.
p_sh вне форума  
 
Непрочитано 28.12.2005, 20:58
#9
C1


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


Цитата:
Сообщение от p_sh
в vba получается косовато: нет динамического вида создаваемых объектов (максимум резиновая лента). если есть оригинальные задумки лучше сразу изучать си и писать .arx приложения.
Использую для динамической вставки создаваемых объектов буфер обмена через SendCommand:
"_copybase 0,0,0 l "
"_erase l "
"_pasteclip"
C1 вне форума  
 
Непрочитано 04.05.2009, 13:55
#10
Agens


 
Регистрация: 24.06.2007
Minsk
Сообщений: 34


Может есть тут специалисты по VBА, хочу для ACADа на VBA реализовать след. вещь - поиск элементов (линий, блоков и т.д.) аналог команды - "_qselect". Для начала надо найти в чертеже все блоки с именем "*Ux", где х - лубое число от 0 до 1000 и выбрать их... можте кто поможет, подскажет...
или может кто пример скинет, чтобы просто выбирал все линии, а я потом разберусь как нить... Спасибо... Жду...
Agens вне форума  
 
Непрочитано 12.05.2009, 18:00
#11
Сергей Дубина


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


Sub Example()
Dim BlockObj As AcadBlockReference
Dim entry As AcadEntity

For Each entry In ThisDrawing.ModelSpace

If entry.ObjectName = "AcDbBlockReference" Then
Set BlockObj = entry
MsgBox BlockObj.Name 'имя текущего блока, дальше делай с ним что нужно
'(перебираются все вхождения блоков в модели)
End If
Next
End Sub
__________________
КазнитьØнельзяØпомиловать:eek:
Сергей Дубина вне форума  
 
Непрочитано 15.03.2010, 11:16 Вывод координат
#12
Dima13


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


Друзья, подскажите пожалуйста начинающему программисту.
У меня есть фрагмент программного кода, который ищет первый приметив и выводит его имя:
Код:
[Выделить все]
[size=3]Sub FindFirstEntity()[/size]
[size=3]On Error Resume Next[/size]
[size=3]Dim entity As AcadEntity[/size]
[size=3]If ThisDrawing.ModelSpace.count <> 0 Then[/size]
[size=3]Set entity = ThisDrawing.ModelSpace.Item(0)[/size]
[size=3]MsgBox entity.ObjectName + " первый примитив в пространстве модели."[/size]
[size=3]Else[/size]
[size=3]MsgBox "Нет ни одного объекта в пространстве модели."[/size]
[size=3]End If[/size]
[size=3]End Sub[/size]
[size=3]А как мне вывести не имя, а его координаты (x, y)? Заранее благодарю![/size]

Последний раз редактировалось Кулик Алексей aka kpblc, 15.03.2010 в 11:37.
Dima13 вне форума  
 
Непрочитано 15.03.2010, 11:43
#13
Кулик Алексей aka kpblc
Moderator

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


Интересно... а какие координаты должны быть в результате, например, у выноски? Или у размера?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.03.2010, 12:42
#14
Dima13


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Интересно... а какие координаты должны быть в результате, например, у выноски? Или у размера?
Да, вы правы, но меня интересуют координаты только текста.
Dima13 вне форума  
 
Непрочитано 15.03.2010, 13:03
#15
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


Цитата:
Сообщение от Dima13 Посмотреть сообщение
Да, вы правы, но меня интересуют координаты только текста.
Добавь после
Код:
[Выделить все]
Set entity = ThisDrawing.ModelSpace.Item(0)
:
Код:
[Выделить все]
Dim pnt
If TypeName(entity) = "IAcadText" Then
  pnt = entity.InsertionPoint
  MsgBox "X=" & pnt(0) & " Y=" & pnt(1)
End If
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 15.03.2010, 15:02
#16
Dima13


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


Цитата:
Сообщение от AlexV Посмотреть сообщение
Добавь после
Код:
[Выделить все]
Set entity = ThisDrawing.ModelSpace.Item(0)
:
Код:
[Выделить все]
Dim pnt
If TypeName(entity) = "IAcadText" Then
  pnt = entity.InsertionPoint
  MsgBox "X=" & pnt(0) & " Y=" & pnt(1)
End If
Спасибо, получилось
Dima13 вне форума  
 
Непрочитано 15.03.2010, 15:15
#17
Кулик Алексей aka kpblc
Moderator

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


Это "получилось" до тех пор, пока у текста (если, конечно, имеется в виду именно однострочный текст) выравнивание установлено "вниз-влево".
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.03.2010, 16:52
#18
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Это "получилось" до тех пор, пока у текста (если, конечно, имеется в виду именно однострочный текст) выравнивание установлено "вниз-влево".
Ну, ошибки код не выдает и при другом выравнивании..
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 15.03.2010, 20:46
#19
Кулик Алексей aka kpblc
Moderator

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


Ошибку-то он не выдаст. Но вот какие результаты?
Создаем примитив TEXT следующим лиспом (ну так, чтобы запутать ):
Код:
[Выделить все]
(defun test ()
  (entmakex '((0 . "TEXT")
	      (100 . "AcDbEntity")
	      (100 . "AcDbText")
	      (10 0. 0. 0.0)
	      (40 . 2.5)
	      (1 . "qwerty")
	      (50 . 0.0)
	      (41 . 0.75)
	      (51 . 0.0)
	      (71 . 0)
	      (72 . 1)
	      (11 17457.5 15522.3 0.0)
	      (210 0.0 0.0 1.0)
	      (100 . "AcDbText")
	      (73 . 2)
	      )
	    ) ;_ end of entmakex
  ) ;_ end of defun
И прочитай его InserionPoint Я сейчас проверить и написать код не могу, но сильно подозреваю, что результатом будет значение 10 группы...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.03.2010, 22:12
#20
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Ошибку-то он не выдаст. Но вот какие результаты?
Создаем примитив TEXT следующим лиспом (ну так, чтобы запутать ):
И прочитай его InserionPoint Я сейчас проверить и написать код не могу, но сильно подозреваю, что результатом будет значение 10 группы...
...Я не знаю, кто такая Чили... и какое значение у 10 группы.. но у созданного текста есть значение InserionPoint... (фиолетовая точка на рисунке). Можно использовать TextAlignmentPoint, тогда получим координаты зеленой точки. Можно через
Код:
[Выделить все]
entity.GetBoundingBox p1, p2
pnt(0) = (p1(0) + p2(0)) / 2
pnt(1) = (p1(1) + p2(1)) / 2
получить красную точку.. Смотря что нужно..

__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 15.03.2010, 22:31
#21
Кулик Алексей aka kpblc
Moderator

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


http://www.arcada.com.ua/forum/viewtopic.php?t=653
Offtop: Cейчас в раздумках - вносить статью на сайт autolisp или нет...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.11.2014, 21:26
#22
michvp


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


Очень нужно! Раньше с атрибутами не связывался, не было нужды...
Мне нужно, выделив блок, забрать в MsgBox или в текстовое окно на форме значение атрибута блока.
michvp вне форума  
 
Непрочитано 29.11.2014, 21:38
#23
maratovich


 
Регистрация: 12.07.2009
г. Самара
Сообщений: 2,437
Отправить сообщение для maratovich с помощью Skype™


Цитата:
Сообщение от michvp Посмотреть сообщение
Очень нужно!
Вот для начала пример, а далее уже добавите что требуется.
maratovich вне форума  
 
Непрочитано 30.11.2014, 18:12
#24
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Если хотите писать на VBA под 64битный автокад старых версий (вроде в 2014 только новый VBA появился) - то ожидайте "приятных" сюрпризов. Так как нормального 64битного VBA в старых версиях нет, есть лишь обертки над 32битным.. И поэтому может быть все что угодно - у меня "последней каплей" стало периодическое пропадание стандартных функций типа "Mid" во время вызова макросов)
Сергей812 вне форума  
 
Непрочитано 30.11.2014, 19:26
#25
michvp


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


Мне нужно просто переменной присвоить значение атрибута блока, который будет выделен мышкой. На сегодняшний день я вынужден вначале запускать Lisp-программу, которая атрибуты переводит в однострочный текст, а потом МОЕЙ программой на VBA забирать этот текст куда мне надо. Я очень хочу уйти от использования Lisp программы, так как не хочу разрушать блоки.
michvp вне форума  
 
Непрочитано 30.11.2014, 19:39
#26
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Ваше право, хотя чем больше занимаюсь лиспом - тем больше очаровываюсь его элегантностью) Хотя сложные вещи - однозначно NET (из знакомых технологий), имхо.
У вас блок статический, динамический?

----- добавлено через ~9 мин. -----
Точнее атрибут. Для статических атрибутов будет выглядеть примерно так код

Сейчас в блокноте напишу примерный код) А то глючит форма ввода

----- добавлено через ~7 мин. -----
В общем, примерно (написан на коленке) такой код:
Код:
[Выделить все]
Dim lBlock As AcadBlockReference
Dim lAttrBlock As Object
Dim I1 As Integer

'Если у блока есть атрибут
If (lBlock.HasAttributes) Then
	' Получаем атрибуты блока   
	lAttrBlock = lBlock.GetAttributes()
   	For I1 = 0 To UBound(lAttrBlock)
		if(lAttrBlock(I1).TagString = "%Имя атрибута откуда взять значение%")then
			' И получаем значение атрибута
			% Ваша переменная %=lAttrBlock(I1).TextString
                        Exit For
		End If	

   	Next I1
End If
можете оформить в виде функции, принимающей ссылку на блок ( lBlock) и (Название атрибута), можете так использовать.

----- добавлено через ~4 ч. -----
Да, если где то будет ругаться при присваивании - что типа требуется объект, то перед переменной ставите Set %Переменная% = %Выражение%. Выдирал из старого проекта на VB.NET, там чуть синтаксис отличается.

Последний раз редактировалось Сергей812, 30.11.2014 в 19:59. Причина: Добавил выход из цикла
Сергей812 вне форума  
 
Непрочитано 01.12.2014, 07:59
#27
michvp


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


К сожалению код в среде VBA не работает (дает ошибку) VB.net я не знаю. У меня много разных наработок на VBA и очень не хватает теперь этой возможности получить атрибут. Кстати блок у меня динамический, тег у блока например
"WWWW", нужно нажать кнопку на моей форме (немодальной), указать мышкой блок и получить в окне формы значение атрибута
michvp вне форума  
 
Непрочитано 01.12.2014, 08:10
#28
michvp


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


К сожалению код на VBA не работает.
michvp вне форума  
 
Непрочитано 01.12.2014, 08:31
#29
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


Цитата:
Сообщение от michvp Посмотреть сообщение
К сожалению код на VBA не работает.
Какой?
trir вне форума  
 
Непрочитано 01.12.2014, 08:38
#30
michvp


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


Код "Сергей812" на VBA не работает. Мне нужно получит value атрибута блока, который я выделю мышкой

Dim lBlock As AcadBlockReference
Dim lAttrBlock As Object
Dim I1 As Integer

'Если у блока есть атрибут
If (lBlock.HasAttributes) Then
' Получаем атрибуты блока
lAttrBlock = lBlock.GetAttributes()
For I1 = 0 To UBound(lAttrBlock)
if(lAttrBlock(I1).TagString = "%Имя атрибута откуда взять значение%")then
' И получаем значение атрибута
% Ваша переменная %=lAttrBlock(I1).TextString
Exit For
End If

Next I1
End If
michvp вне форума  
 
Непрочитано 01.12.2014, 08:44
#31
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


Цитата:
который я выделю мышкой
Где? Не вижу!
trir вне форума  
 
Непрочитано 01.12.2014, 09:00
#32
michvp


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


У меня есть в модели блоки с атрибутами, например блок в виде круга и атрибут - цифра. Например геодезические отметки. Мне нужно например в MsgBox вывести значение атрибута (цифры-отметки).
michvp вне форума  
 
Непрочитано 01.12.2014, 09:08
#33
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


Цитата:
Сообщение от michvp Посмотреть сообщение
У меня есть в модели блоки с атрибутами, например блок в виде круга и атрибут - цифра. Например геодезические отметки. Мне нужно например в MsgBox вывести значение атрибута (цифры-отметки).
И?

Код:
[Выделить все]
   Dim returnObj As AcadObject
   Dim basePnt As Variant
   ThisDrawing.Utility.GetEntity returnObj, basePnt, "Select an object"
   If returnObj.ObjectName = "AcDbBlockReference" Then
    MsgBox "good"
   End If
trir вне форума  
 
Непрочитано 01.12.2014, 10:02
#34
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от michvp Посмотреть сообщение
К сожалению код на VBA не работает.
Чего именно не работает? И на этапе компиляции программы ругается, или ничего не делает? Если второе - переменной lBlock было присвоено значение?
Сергей812 вне форума  
 
Непрочитано 01.12.2014, 10:02
#35
Кулик Алексей aka kpblc
Moderator

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


trir, может, не GetEntity, а GetSubEntity?
Код:
[Выделить все]
Sub Example_GetSubEntity()
    ' This example prompts the user to select on object on the screen with a mouse click,
    ' and returns some information about the selected object.
    
    Dim Object As Object
    Dim PickedPoint As Variant, TransMatrix As Variant, ContextData As Variant
    Dim HasContextData As String
    
    On Error GoTo NOT_ENTITY
        
TRYAGAIN:
        
    MsgBox "Use the mouse to click on an object in the current drawing after dismissing this dialog box."
        
    ' Get information about selected object
    ThisDrawing.Utility.GetSubEntity Object, PickedPoint, TransMatrix, ContextData
    
    ' Process and display selected object properties
    HasContextData = IIf(VarType(ContextData) = vbEmpty, " does not ", " does ")
    
    MsgBox "The object you chose was an: " & TypeName(Object) & vbCrLf & _
            "Your point of selection was: " & PickedPoint(0) & ", " & _
                                              PickedPoint(1) & ", " & _
                                              PickedPoint(2) & vbCrLf & _
            "This object" & HasContextData & "have nested objects."
    
    Exit Sub
    
NOT_ENTITY:
    ' If you click on empty space or do not select an entity,
    ' this error will be generated
    If MsgBox("You have not selected an object.  Click OK to try again.", _
               vbOKCancel & vbInformation) = vbOK Then
        Resume TRYAGAIN
    End If
End Sub
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 01.12.2014, 11:42
#36
michvp


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


Код работает, только мне нужно, чтобы еще в MsgBox заходило значение атрибута блока, когда я на нем щелкну курсором в виде квадратика.
Данный код пишет, что объект - атрибут и дает координаты, а нужно ЗНАЧЕНИЕ конкретного атрибута
michvp вне форума  
 
Непрочитано 01.12.2014, 11:49
#37
Кулик Алексей aka kpblc
Moderator

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


Получи указатель на вхождение атрибута и сними TextString (кажется, так).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 01.12.2014, 12:02
#38
michvp


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


Не совсем понятно, что нужно сделать...
Если бы у меня был не атрибут, а однострочный текст, то переменной txt присваивается значение:
txt = ActiveDocument.ActiveSelectionSet.Item(0).textString
А как у атрибута это же сделать?
michvp вне форума  
 
Непрочитано 01.12.2014, 12:13
#39
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


michvp, тебе просто надо скрестить код Кулик Алексей aka kpblc и Сергей812 (а именно методом GetSubEntity получить блок в переменую lBlock)
trir вне форума  
 
Непрочитано 01.12.2014, 13:17
#40
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


че то типа где то как то..
Код:
[Выделить все]
Dim returnObj As AcadObject, Attr
Dim basePnt As Variant
ThisDrawing.Utility.GetEntity returnObj, basePnt, "Select an object"
If returnObj.ObjectName = "AcDbBlockReference" Then
 For Each Attr In returnObj.GetAttributes
   If Attr.TagString = "(имя нужного атрибута)" Then
	msgbox Attr.TextString
   End If
 next
End If
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 01.12.2014, 15:05
#41
michvp


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


Спасибо большее. Все получилось. Мне это и нужно было!
michvp вне форума  
 
Непрочитано 02.12.2014, 18:13
#42
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611


Offtop: Вот молодец michvp, ловко провернул.
Сначала сказал что у него есть программа на VBA:
Цитата:
Сообщение от michvp Посмотреть сообщение
а потом МОЕЙ программой на VBA забирать
Ему коды из справки накидали, но он шлангом прикинулся и в итоге за него все написали. Хотя любой, кто написал СВОЮ программу на VBA под автокад или офис, эти куски кода собрал бы в легкую, да и вообще подобного вопроса не задал бы, т.к. как работать с атрибутами в справке написано. Молодец. Я вот так не умею, потому и восхищаюсь.


Вопрос к админам: А название топика разве не нарушает п.4.3 правил форума?
Boxa на форуме  
 
Непрочитано 02.12.2014, 18:55
#43
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


offtop: Низкий КПД однако, я за это время бы написал нормальный импорт txt/xml формата
trir вне форума  
 
Непрочитано 02.12.2014, 19:42
#44
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


толку от того, что он получил значение атрибута?)
Но вот упоминания: я в программировании не силен, нету времени разбираться и т.д. - давно уже пора внести в список отягчающих... ) не видно-что человек хоть что-то пытался сам сделать... в программировании ему делать нечего, имхо
Сергей812 вне форума  
 
Непрочитано 02.12.2014, 22:25
#45
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


Цитата:
Сообщение от Boxa Посмотреть сообщение
[offtop]Вопрос к админам: А название топика разве не нарушает п.4.3 правил форума?
Тема родилась в славные либерально-демократичные времена, когда еще не было бота, отслеживающего нарушение п.4.3 ..
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 03.12.2014, 08:11
#46
michvp


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


Поясняю для BOXA: Атрибуты не использовал, а если встречались, то применял программу <bgtools2.27.lsp>, которая превращала значения атрибутов в однострочный текст.
Затем моей программой на VBA получал координаты нужных мне объектов и однострочного текста, в который превращались атрибуты. Теперь я понял, как можно напрямую получать значение атрибута и, естественно, включил фрагмент этого кода в свою программу. Кстати, хотелось бы все переписать на Lisp, пока его изучаю. Еще раз спасибо за возможность разобраться с кодом для получения атрибутов. В справке было не понятно.

Последний раз редактировалось michvp, 03.12.2014 в 15:16.
michvp вне форума  
 
Непрочитано 03.12.2014, 09:44
#47
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611


Offtop: michvp, Вы оправдываетесь? Так тут не перед кем оправдываться, все и так все видят и понимают. В любом случае, мне понравилось как вы это сделали.
Boxa на форуме  
 
Непрочитано 03.12.2014, 11:26
#48
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


Offtop: Подозреваю, будет проще взять Civil 3D и не мучатся...
trir вне форума  
Закрытая тема
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA в AutoCAD