|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
31.10.2010, 14:36 | #1 | |
Перенос числовых данных из чертежа в программу
Регистрация: 30.10.2010
Сообщений: 5
|
||
Просмотров: 9549
|
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
Возможно вам поможет INCDEC
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,846
|
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Инженер Регистрация: 02.10.2008
С-Пб
Сообщений: 3,686
|
Julius, ну дак код-то уже есть какой-то или ты с нуля его хочешь получить? "макрос для автокада", - на VBA значит пишешь? Выбираешь программно тексты и мтексты, затем перебираешь полученный набор, проверяя свойство textstring.. Алгоритм получения суммы зависит от твоих задач: - что за тексты надо "собирать", - содержащие только числа, или все ( только "1", "2", "33", либо еще и "12АБВ", "12АБВ123" и т.д.). Для mtext надо наверное еще учитывать возможность наличич форматирования внутри него (т.е в нем может быть текст из цифр "111", но подчеркнутых-надчеркнутых-с другим шрифтом, цветом и т.д., тогда textstring может содержать к примеру значение "{\fCurlz MT|b0|i0|c0|p82;\C1;1111}", и искомые "111" надо еще отсюда выдернуть..
__________________
...Не пытайся гнуть ты ложку, Не вяжи её узлом. Ложка - ложка понарошку, А по правде, - это лом! |
|||
|
||||
Регистрация: 30.10.2010
Сообщений: 5
|
Кулик Алексей, спасибо за полезную ссылку. Нашел программу, почти ту, что мне нужно. Поменял одну строку, вот что получилось:
Sub SummaMText() Dim SelSetColl As AcadSelectionSets Dim CirSet As AcadSelectionSet Dim item As AcadMText Dim Summa As Double Set SelSetColl = ActiveDocument.SelectionSets Set CirSet = SelSetColl.Add("Mt") CirSet.SelectOnScreen For Each item In CirSet Summa = Summa + CDbl(item.TextString) Next item CirSet.Delete Set CirSet = Nothing Set SelSetColl = Nothing MsgBox Summa End Sub Но столкнулся с такой проблемой: когда я вставляю код в редакторе VBA в окно "Thisdrawing", то все работает отлично. А когда я создал форму и повесил этот же код на нажатие кнопки, то автокад стал выдавать ошибку "Главное окно AutoCAD невидимо" и и показывает, что ошибка в строке CirSet.SelectOnScreen Кто знает в чем причина? Подскажите. Последний раз редактировалось Julius, 31.10.2010 в 21:55. |
|||
|
||||
Инженер Регистрация: 02.10.2008
С-Пб
Сообщений: 3,686
|
Ну дак выложи, чего написал-то уже.. В чем затрудненья?
__________________
...Не пытайся гнуть ты ложку, Не вяжи её узлом. Ложка - ложка понарошку, А по правде, - это лом! |
|||
|
||||
Инженер Регистрация: 02.10.2008
С-Пб
Сообщений: 3,686
|
Цитата:
__________________
...Не пытайся гнуть ты ложку, Не вяжи её узлом. Ложка - ложка понарошку, А по правде, - это лом! |
|||
|
||||
Инженер Регистрация: 02.10.2008
С-Пб
Сообщений: 3,686
|
Ну и еще, если исходить из кода в #5, еще несколько замечаний.. SelectOnScreen производится без фильтра, а переменная item объявляется As AcadMText. Если пользователь выберет любой другой примитив (даже AcadText, который вроде тоже должен учитываться), то в цикле выскочит ошибка. Ну, это конечно легко лечится вставкой в начале кода строки "On Error Resume Next", но грамотней использовать фильтры.. Чего-то типа такого:
Код:
Set CirSet = SelSetColl.Add("Mt") Если в файле вдруг уже есть набор с именем "Mt", тоже выскочит ошибка.. Можно перед этой строкой проверить: Код:
__________________
...Не пытайся гнуть ты ложку, Не вяжи её узлом. Ложка - ложка понарошку, А по правде, - это лом! |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,846
|
Почему item объявлен как AcadMText, а не как AcadEntity?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 18.02.2015
Сообщений: 90
|
Подскажите, а если складывать десятичные числа с дробной точкой вылетает ошибка "Type mismatch", что делать?
------------------------------------------------------------------- Решил так, заменил строчку (проблема была с десятичной точкой): Summa = Summa + Val(item.TextString) Последний раз редактировалось scad2015, 25.04.2015 в 17:27. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,846
|
scad2015, ты не ошибся темой или разделом? Если нет, то на какой вопрос отвечал? И почему в таком случае не использовал "Цитировать" или "Цитировать выделенное"?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 18.02.2015
Сообщений: 90
|
Offtop: Я все понял, о чем ты. Я имел ввиду изначально, что эта программа не работает корректно. (может потому что у меня х64)
Я не с потолка вопрос задал. Цитата:
Я решил доработать этот пример, умножить несколько чисел и вставить в другой текст, и сделать все это в цикле , поэтому решил писать сюда. Может доработанный код многим пригодится. Создать новую тему? ---------------------------- 1) Проблема не решилась, при использовании Val. Теперь при перемножении чисел с разделителем дробной части запятой, отбрасывается дробная часть. Может в VBA есть что-то типа Parse? 2) Как реализовать не бесконечный цикл Do Loop , пробовал отловить завершение через GetInput, но ничего не получилось, почитал по форумам, но ничего толкового не нашел. Код кривой, но выкладываю как есть, надеюсь на помощь. Код:
Последний раз редактировалось scad2015, 25.04.2015 в 20:43. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,846
|
Используй Replace, в чем проблема-то?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Команда для экспорта ряда числовых значений из чертежа в Excel | *AllA* | AutoCAD | 1 | 20.09.2010 10:22 |
Перенос данных из таблицы Автокада в Excel - дубль2 | Таня. | AutoCAD | 1 | 02.03.2009 16:08 |
Создание базы данных атрибутов текста чертежа в VBA | -still alive- | Программирование | 4 | 26.08.2008 15:10 |
Параметрическое черчение в AutolLisp с использованием базы данных чертежа | Danger_pgs | LISP | 31 | 02.04.2008 08:38 |