Добро пожаловать!

Войдите или зарегистрируйтесь сейчас!

Войти

Полезные программы от Philin (строительство). VBA

Тема в разделе "Autodesk", создана пользователем Philin, 20 ноя 2010.

  1. Philin

    Форумчанин

    Регистрация:
    1 фев 2008
    Сообщения:
    2.557
    Симпатии:
    2.084
    Адрес:
    Москва
    Под электронной мензулой подразумевается приём точек съёмки (углы-расстояния) и вычерчивание их на чертеже непосредственно во время съёмки? Такое возможно, но писать придётся другую программу. Для этого нужен мануал команд для внешних контроллеров. У меня есть такой на Sokkia SDR и где-то был на Trimble, также на South можно найти т.к. продавцы этого оборудования предоставляют техническую документацию по требованию (Китайцы молодцы, не устраивают секрета на пустом месте).
    Приём данных на лету возможен, но только для реального COM порта (там при приёме/передаче есть контроль достоверности данных). Для USB, USB-COM, WiFi, BlueTooth не имеет смысла... эти интерфейсы рассчитаны на большую скорость приёма/передачи, в связи с чем в них практически отсутствует контроль.
     
    #141
  2. ivsem

    Форумчанин

    Регистрация:
    26 мар 2009
    Сообщения:
    2.475
    Симпатии:
    1.051
    Адрес:
    Киев
    Я думаю, подразумевается передача на защищенный ноутбук (скажем тот же Panasonic ... ) Названия_точки, X, Y, Z и соединение этих точек условными знаками в Автокаде.
     
    #142
  3. SNiP81

    Регистрация:
    15 апр 2012
    Сообщения:
    9
    Симпатии:
    0
    то есть, как понял, для переходников СOM-USB такие манипуляции не пройдут?

    да, но если взять Nikon NPL, то не видел на выходе координат, передаются сырые данные...мензула полезна при плотной застройке при этом потребуется участие ещё одного человека за компьютером(для соединения точек характерными линиями и точечных УЗ) ...система кодировки имеет свои большие плюсы и без мензулы, но с ней не потребовалось бы составление абриса, была бы чёткая визуализация выполняемой работы и 70 % готового цмм
     
    #143
  4. Philin

    Форумчанин

    Регистрация:
    1 фев 2008
    Сообщения:
    2.557
    Симпатии:
    2.084
    Адрес:
    Москва
    Я бы не стал связываться с технологией заведомо противоречащей всем идеям геодезии о двойном контроле и пр. На выходе из прибора одно, а на входе в компьютер может быть нечто иное. Да USB удешевляет производство, да USB увеличивает универсальность, да USB увеличивает скорость передачи. Это маркетологи говорят. А молчат они о том что всё это сделано за счёт того что стандарт предполагает использование интерфейса в идеальных условиях и любая внешняя помеха приводит к искажению бесконтрольных данных. Да можно создать аппаратный внешний контроллер (те, которые продаются), да там программно можно частично устроить контроль при передаче, только в итоге программа стоит 2/3 стоимости такого контроллера (уменьшили издержки производства в одном месте и они увеличились в другом... стоимость контроллеров можете посмотреть у продавцов оборудования, цены там космические).
    У меня нет ни времени, ни желания тратить несколько лет на программное исправление ошибок производителей.

    COM порт это промышленный стандарт, а USB это гражданский стандарт.


    Я так до конца и не понял что требуется.
    Могу сказать что есть в программе COM2ACAD для тахеометров Sokkia:
    - съёмку производим с кодированием (каждой отдельной группе объектов присваиваем свой цифровой, цифро-символьный или символьный код)
    - при приёме с прибора программа АВТОМАТИЧЕСКИ создаёт слои в автокаде с именами кодов, на каждый такой слой помещается вся группа объектов с этим кодом
    - остальные мои программы работают уже с группой объектов, а определяют группу по одному указанному объекту группы

    Формат данных Nikon также допускает кодирование при съёмке. Так что встроить аналог в готовую программу не сложно (при вашем непосредственном участии в процессе отладки программы при её написании). И ещё раз повторяю - писать программу-контроллер для работы на лету во время съёмки, если у вас связь по USB... я не буду. Вы же потом навешаете все ошибки передачи на меня как на разработчика софта, а они совсем в другой плоскости.
     
    #144
  5. SNiP81

    Регистрация:
    15 апр 2012
    Сообщения:
    9
    Симпатии:
    0
  6. Дмитриев Вячеслав

    Форумчанин

    Регистрация:
    6 май 2012
    Сообщения:
    41
    Симпатии:
    1
    В 12- ом тоже не устанавливается.

    А имеется что- нибудь для 12 Автокада?

    Как сделать проги VBA рабочими в AutoCad-2012? (Не загружается ни один файл.)
     
    #146
  7. Philin

    Форумчанин

    Регистрация:
    1 фев 2008
    Сообщения:
    2.557
    Симпатии:
    2.084
    Адрес:
    Москва
    Для начала прочитать инструкцию :) И всё установится. Цитировать здесь в очередной раз инструкцию пользователя смысла не вижу. Там ответ на ваш вопрос. Программа работает на ВСЕХ версиях автокад начиная с версии 2000 и заканчивая ЛЮБОЙ версией автокад выпущенной по сегодняшний день. Способы установки VBA программ отличаются в версиях 2000-20005, далее 2006-2008 и далее 2009-2012. Всё это ПОДРОБНО описано в инструкции прилагаемой к программам.

    PS Отличия версии 2010 и более новых в том что там отсутствует VBA (исключён из автокад) и вместо него встроен vb.net. Этим версиям автокад требуется скачивание с сайта autodesk и установка модуля VBA. В зависимости от версии автокад этот модуль занимает от 100 до 200Мб.
     
    #147
  8. Дмитриев Вячеслав

    Форумчанин

    Регистрация:
    6 май 2012
    Сообщения:
    41
    Симпатии:
    1
    Спасибо за информацию. Попробую.
     
    #148
  9. Philin

    Форумчанин

    Регистрация:
    1 фев 2008
    Сообщения:
    2.557
    Симпатии:
    2.084
    Адрес:
    Москва
    Новая версия программы для приёма через кабель координат из тахеометра в Автокад COM2ACAD 2.0

    Изменения:
    - год в создаваемых программой слоях автокад сокращён до двух последних цифр. Было типа 2012, теперь 12
    - более стабильная обработка данных Sokkia

    Добавления:
    - в программу добавилась возможность принимать координаты с приборов Nikon (формат координат типа "ИМЯ,Север,Восток,высота, КОД")

    В итоге на текущий момент программа принимает через кабель в активный чертёж автокад координаты со следующих приборов:
    - Sokkia (формат SDR33)
    - South (один из видов формата GTS от TOPCON)
    - TOPCON (формат GTS)
    - Nikon (координаты, но не RAW данные)
    - Trimble (формат M5 в beta режиме т.к. нет активных желающих помочь с отладкой)

    PS Программа удалена в связи с выходом новой версии.
     
    #149
  10. Philin

    Форумчанин

    Регистрация:
    1 фев 2008
    Сообщения:
    2.557
    Симпатии:
    2.084
    Адрес:
    Москва
    Проверил работоспособность программ в Windows 7.

    Итак, конфигурация следующая:
    - операционная система "Wiindows 7 Rus максимальная" +SP1 (версия 32 бит)
    - программа COM2ACAD версии 2.0
    - остальные программы последних версий (с ними и так не было ни у кого проблем в Win7)
    - AutoCAD 2011 English (версия 32 бит)

    При попытке запуска, а иногда и при попытке нажать какую-либо кнопку в окне программы COM2ACAD выдавалось сообщение типа "..ошибка 75..."
    Что я сделал для её работы... даже не имея доступа к операционной системе Win7 я давно уже говорил что проблема в системе защиты Win7 и надо просто запускать программу в режиме администратора. Предварительно установил vbaenabler для автокад 2011 32бит с сайта autodesk.com

    Настраиваем запуск автокад от администратора.
    - находим ярлык автокад на рабочем столе
    - жмём на него правой клавишей мыши
    - выбираем пункт "свойства"

    [​IMG]

    - переходим на вкладку "Совместимость"
    - находим там пункт "Выполнять эту программу от имени администратора"
    - ставим галочку на этом пункте
    - жмём Ок

    [​IMG]

    ВСЁ! Теперь все программы работают.

    И в чём проблема-то была? 2 минуты времени на её решение ушло у меня в операционной системе которую я первый раз в глаза увидел.

    Так что отдельную версию под Win7 писать как не собирался, так теперь и точно не буду.

    PS В ближайшее время будут выложены новые версии программ для высотных исполнительных съёмок, а также COM2ACAD.
    - для съёмок добавятся новые объекты (блок, текст)
    - программа приёма данных с тахеометра в автокад сможет читать текстовые файла с дисков/флешек в форматах "ИМЯ,Север,Восток,Высота,Код" и "ИМЯ,Север,Восток,Высота"

    PPS НЕ обращайте внимания на внешний вид окошек Win7 в предоставленных скринах. Для нормальной работы пришлось привести внешний вид Win7 к классическому т.к. в его родном цветастом мареве окошек/финтифлюшек сам чёрт голову сломает... ни фига не понимаю что где находится и куда надо лезть чтобы что-то сделать в родном раздолбайском стиле Win7. Т.е. на скринах Windows7, а не Windows 95 :)
     
    #150
  11. Philin

    Форумчанин

    Регистрация:
    1 фев 2008
    Сообщения:
    2.557
    Симпатии:
    2.084
    Адрес:
    Москва
    Новая версия программы для приёма через кабель координат из тахеометра в Автокад COM2ACAD ver.2.1 (также возможен приём файлов координат некоторых форматов)

    Добавления:
    - в программу добавилась возможность принимать координаты из текстовых файлов-каталогов координат (формат координат в файле "ИМЯ,Север,Восток,высота, КОД", а также "ИМЯ,Север,Восток,высота")
    - добавлен, но отключен приём точек из файлов dxf (требуются люди, которые согласны передать несколько dxf файлов с вашего прибора для окончательной отладки)

    В итоге на текущий момент программа принимает через кабель в активный чертёж автокад координаты со следующих приборов:
    - Sokkia (формат SDR33)
    - South (один из видов формата GTS от TOPCON)
    - TOPCON (формат GTS)
    - Nikon (координаты, но не RAW данные)
    - Trimble (формат M5 в beta режиме т.к. нет активных желающих помочь с отладкой)

    PS Внутри архива программа, иконка на панель инструментов автокад для программы, инструкция по её установке.
    PPS Программа удалена в связи с выходом новой версии
     
    #151
  12. Philin

    Форумчанин

    Регистрация:
    1 фев 2008
    Сообщения:
    2.557
    Симпатии:
    2.084
    Адрес:
    Москва
    Очередная версия VBA программы для приёма координат из тахеометра или файла в активный чертёж Автокад COM2ACAD ver.2.2

    Добавление:
    - при принятии координат из файла появилась возможность вывести таблицу (по умолчанию не выводится) для просмотра принятых точек и выбора тех точек, которые следует отобразить на чертеже

    [​IMG]

    PS Программа удалена в связи с выходом новой версии.
     
    #152
    Дмитрин нравится это.
  13. Philin

    Форумчанин

    Регистрация:
    1 фев 2008
    Сообщения:
    2.557
    Симпатии:
    2.084
    Адрес:
    Москва
    Очередная версия VBA программы для приёма координат из тахеометра или файла в активный чертёж Автокад COM2ACAD ver.2.3

    Добавления:
    • в таблицу добавлен столбец с кодами принятых точек
    • точки съёмки можно сортировать по любому столбцу данных. По имени и коду точек сортировка производится подобиями имён, по координатам сортировка производится от большего к меньшему (сверху-вниз таблицы)
    В текущей версии таблицу выбора можно вызвать только при получении координат из файла. Вывод таблицы при получении координат через COM порт будет реализован позже.

    Пример таблицы с сортировкой точек по их высоте:

    [​IMG]

    PS Программа удалена в связи с выходом новой версии.
     
    #153
    Дмитрин нравится это.
  14. Philin

    Форумчанин

    Регистрация:
    1 фев 2008
    Сообщения:
    2.557
    Симпатии:
    2.084
    Адрес:
    Москва
    Новая версия программы COM2ACAD ver.2.4 (добавлена возможность выводить таблицу выбора также для точек принятых из COM порта)

    VBA программа под AutoCAD версий 2000-2012+ (для версий автокад 2010 и более новых требуется скачать (от 100Мб до 200Мб) и установить патч vbaenabler с сайта autodesk.com ).
    Гарантированно поддерживаются операционные системы 32бит:
    • Windows 95/98
    • Windows 2000
    • Windows XP
    • Windows 7 (при запуске автокад от имени администратора)
    Программа может принять данные из AutoCAD по COM порту либо через интерфейс USB-COM со следующих приборов:
    • Sokkia (формат данных SDR33)
    • South (формат данных типа "+NEW_P31 _ x+000101294_ y+000201929_ z+000837623")
    • TOPCON (формат данных типа "+NEW_P31 _ x+000101294_ y+000201929_ z+000837623")
    • Nikon (координаты, через запятую типа "имя,Север,Восток,Н,код")
    • TRIMBLE (формат данных М5)
    • ZEISS (формат данных М5)
    Программа может принять данные из файлов следующих форматов:
    • sdr-файл формата Sokkia SDR33 (расширение файла *.sdr)
    • текстовый файл, разделённый запятыми формата "имя,Север,Восток,Н,код" (расширение файла любое)
    • текстовый файл, разделённый запятыми формата "имя,Север,Восток,Н" (расширение файла любое)
    Программа может произвести следующие действия с принятыми данными:
    • отобразить точки на текущем активном чертеже текущим активным цветом, на слое, соответствующем коду точки (если приняты данные без кодов, то все точки располагаются на одном созданном программой слое)
    • на соответствующих слоях текстом подписать к точкам: координаты, высоту, имя. Координаты вставки текста соответствуют координате точки, включая высоту точки. По умолчанию точки отображаются без текста
    • по желанию может вывести таблицу-каталог координат принятых точек до их отображения на чертеже
    • в таблице можно выбрать для отображения на чертеже только некоторые из принятых точек (либо выбрать все... ели не вызывать таблицу, то на чертеже отобразятся все принятые точки)
    • в таблице можно отсортировать точки по любому столбцу данных
    PS Программа удалена в связи с выходом новой версии
     
    #154
  15. Максим

    Форумчанин

    Регистрация:
    19 июл 2007
    Сообщения:
    1.557
    Симпатии:
    473
    Здравствуйте, Семён, хочется, чтобы ваша программа Axe...., рисующая стрелки отклонений,
    1) запоминала введенные в поля формы значения как между запусками в пределах 1 сеанса AutoCAD, так и при перезагрузке AutoCAD (напр., записывая их в какой-либо файл либо в реестр)
    2) могла воспринимать точку в качестве разделителя - для этого можно проверять наличие точки в строковой переменной и в положительном случае пользоваться функцией Val(str) для извлечения значения (напр., IF (Instr(1,str,","))>0 THEN Value=Val(str) ELSE.... <ваш вариант считывания значения>)
    3) запоминала состояние объектной привязки ДО запуска программы и восстанавливала его ПОСЛЕ завершения ее работы, сейчас не все варианты выхода из программы, например, какое-нибудь аварийное ее завершение, ведут к восстановлению привязок
    4) на форме имела кнопочку "отмена" и в случае закрытия формы крестиком (в правом верхнем углу формы) завершала свою работу.

    Спасибо за программу, успехов! :)
     
    #155
  16. Philin

    Форумчанин

    Регистрация:
    1 фев 2008
    Сообщения:
    2.557
    Симпатии:
    2.084
    Адрес:
    Москва
    Добрый день.
    1) Если и буду делать, то позже. Сейчас нет желания и времени. Такая возможность программы автоматически настроит Win Vista,7,8 на параноидальный лад и, для работы программы, придётся запускать автокад в этих операционных системах только с правами администратора. Win95 - Win XP не такие параноики и работать будут и в режиме пользователя.
    2) Выкладываю версию 3.8, в ней это реализовано
    3) Состояние всех глобальных параметров автокад и так сохраняются программой до её запуска и восстанавливаются после её завершения. В программу встроен обработчик ошибок и при возникновении любого сбоя все глобальные параметры автокад автоматически восстанавливаются к исходным (до запуска программы). Но возможны варианты которые не включены в обработчик ошибок, тогда завершение программы не восстановит эти значения. Если Вы знаете конкретный пример когда происходит сбой и программа не восстанавливает привязки и т.п., то подробно опишите его (всё учесть невозможно... если будет пример, то можно будет понять где искать в обработчике ошибок). На данный момент мне не удавалось при работе обнаружить некорректную работу обработки ошибок, иначе это было бы исправлено.
    4) В версии 3.8 крестик в правом верхнем углу обрабатывается и закрывает форму. А что должна делать кнопка "отмена"? (надеюсь, что "отмена" не должна дублировать крестик в углу :) )

    Выкладываю AxeAndPointZ ver.3.8 (внутри архива только сама программа)

    PS Программа удалена в связи с выходом новой версии
     
    #156
  17. Максим

    Форумчанин

    Регистрация:
    19 июл 2007
    Сообщения:
    1.557
    Симпатии:
    473
    Здравствуйте, Семён! На любом этапе выполнения программы попробуйте прервать ее двумя нажатиями на <Enter> либо на правую кнопку мыши. Программа завершает работу, при этом привязки не восстанавливаются. И, знаете, такое завершении имеет свои плюсы: при повторном запуске не приходится ОПЯТЬ(!) вводить все данные в форму, что несколько раздражает. Успехов !
     
    #157
  18. Philin

    Форумчанин

    Регистрация:
    1 фев 2008
    Сообщения:
    2.557
    Симпатии:
    2.084
    Адрес:
    Москва
    Добрый день.
    Мне как-то не приходило в голову жать Enter во время работы программы т.к. рабочие клавиши для неё всего две - пробел и ESC... которые находятся вообще на другой стороне клавиатуры и при их нажатии даже случайно невозможно нажать Enter. Аналогично и с правой клавишей мыши. (Думаю, что предложенное решение всё равно будет раздражать... Захочется нажать семь раз F15 или Alt+F34 :) )

    Enter и правая клавиша мыши (в данном случае также обрабатывается самим автокад как Enter) обрабатываются автокад. Автокад имеет более высокий приоритет при обработке действий пользователя чем VBA программа запущенная из-под автокад. Т.е. сначала действие обрабатывается самим автокадом, а потом даётся возможность VBA программе обработать это действие своими средствами.

    Попробую устранить это средствами VBA, но не уверен что обработка этих клавиш будет эффективна в 100% случаев (предварительно считаю что вероятность правильной обработки будет в половине случаев) т.к. обработчик внутри VBA будет обрабатывать эти клавиши ПОСЛЕ обработки их автокадом.

    В теории можно изменить VBA код так, чтобы программа работала напрямую с ядром операционной системы Windows (как это сделано в COM2ACAD). В таком случае обработка любых действий пользователя будет происходить ДО их обработки самим автокадом. Но есть огромный минус этого способа - полная неработоспособность программы в операционных системах 64 бит и параноидальная настроенность операционных систем появившихся после Win XP.

    PS Клавише Enter присвою функции пробела, а вот что делать с правой клавишей мыши пока не решил (возможно тоже пробел будет).
     
    #158
  19. Максим

    Форумчанин

    Регистрация:
    19 июл 2007
    Сообщения:
    1.557
    Симпатии:
    473
    А вы оставьте правую клавишу для завершения работы программы - ведь в этом случае программа запоминает введенные в форму данные (те, что были введены во время предыдущего запуска программы в пределах одного сеанса AutoCAD), а восстановление привязки и других настроек сделайте обязательным в любом случае, т.е. не важно, что вызвало ошибку, необходимые восстановления будут произведены.
     
    #159
  20. Philin

    Форумчанин

    Регистрация:
    1 фев 2008
    Сообщения:
    2.557
    Симпатии:
    2.084
    Адрес:
    Москва
    Введённые в форму данные могут запоминаться только в том случае когда происходит фатальная ошибка которая не учитывается в обработчике ошибок. В таком случае происходит остановка программы без выгрузки из памяти её параметров (это делает автокад в своём обработчике ошибок у которого более высокий приоритет при обработке ошибок чем у обработчика VBA) и при следующем запуске параметры восстанавливаются из памяти. Программа не будет запоминать никаких параметров после включения обработки этой ошибки (в данном случае нажатие правой кнопки мыши) в обработчик ошибок. Восстановление привязок и пр. настроек происходит в обработчике ошибок (если ошибка известна и прописана в обработчике), а также в некоторых штатных случаях при работе программы.

    PS Закрепление за правой клавишей мыши функций клавиши ESC не считаю разумным решением. Нажать её случайно гораздо проще чем Enter.
     
    #160

Поделиться этой страницей

  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление