Помогу бесплатно разработать любую программу на autolisp.

Тема в разделе "Autodesk", создана пользователем Германup, 3 фев 2014.

  1. Krovlaf

    Krovlaf Форумчанин

    Приветствую! Насчет задачи. Есть с топоплан с горными выработками в виде блоков. Этих блоков 1000 шт. Блоки расположены линейными группами по 20 - 30 шт. Информация по выработкам сидит в атрибутике - 4 параметра: НТ, НП, СП, СМ (для примера). Проще говоря это план разведочных работ с буровыми линиями, траншеями и результатами опробования. Результаты опробования вынесены в таблицы Excel. Первичный план содержит блоки скважин, но не содержит результатов опробования - они все в таблицах. Теперь вопрос - как вынести информацию из таблиц на план, а потом, если надо менять ее (предварительные результаты, уточненные, окончательные и пр.). По одному блоку в окне свойств..... НУ, НУ...
    Надо выделить максимум - все, минимум - по линии скважин, и скопировав результаты анализов из таблиц вставить ее в блоки. Всё на свои места.
    Grid Editor для этого в общем потянет.
    Grid List посмотрел. Никаким боком для этой задачи.
    Civil. Если легально для конторы или лично - дешевле заплатить умельцу за VBA, ARX, или lisp приложение решающее конкретно эту задачу. ИМХО. В остальном, Civil делает базы данных для поверхностей (точки, отметки). Работает ли он с посторонними блоками со свободным набором атрибутов - незнаю. Почитаю форумы, может чего-нибудь найду.
     
  2. Qvinto

    Qvinto Форумчанин

    Не только для поверхностей, а и для точек COGO. С посторонними блоками работает, атрибуты, и иные условия можно задавать Ищи на форуме по слову: ключи описатели.
    Цивил можно и триал версию на месяц с офсайта скачать. Месяц работать спокойно, а там уже решать: покупать или нет?
    Задачу немного прояснил. Тебе бы ещё попробовать с базами данных в Автокаде поработать. Но, тут я не подскажу.
    Выложи кусок файла с блоками, и табличку, в каком она у тебя виде. Программу писать не буду, попробую твою задачу в Цивиле решить.
     
  3. ivsem

    ivsem Форумчанин

    Krovlaf, выложи фрагментик dwg с выработками и соответсвующую этим выработкам таблицу Excel, бо лучше один раз увидеть, чем сто раз домыслить.
     
    Qvinto нравится это.
  4. Krovlaf

    Krovlaf Форумчанин

    Спасибо всем за участие! Вот два файла. Чертеж (А2007) и табличка с данными. Изначально в чертеже данных в атрибутике нет. Исключение могут составить только номера выработок, которые проставляются отдельно (программно или в сложных случаях - вручную). Требуется вставить атрибутику из таблицы в чертеж. (Возможно, для облегчения задачи, понадобится добавление в блоки атрибута с номером линии). Направление заполнения блоков надо задавать самому в чертеже (выделение по ломанной линии). Требуется "дуплексная" связь с таблицей. Таблица может быть в отдельном окне. Возможность найти на чертеже выделенные строки.
     

    Вложения:

  5. ivsem

    ivsem Форумчанин

    Krovlaf, могут ли однотипные выработки иметь одинаковые номера на чертеже?
    Или другими словами, могут ли несколько одноименных блоков иметь одинаковые значения в атрибуте N?
     
    Последнее редактирование: 15 окт 2014
  6. Krovlaf

    Krovlaf Форумчанин

    В пределах линии однотипные выработки не могут иметь одинаковых номеров.
     
  7. ivsem

    ivsem Форумчанин

    Исходя из вашего ответа для реализации в программе однозначной идентификации нужно иметь в блоках атрибут с номером линии. Если атрибута с номером линии в ближайшее время не предвидится, то можно заложить в программу функцию определения однотипных выработок (блоков) с одинаковыми номерами. И в эти блоки потом заносить информацию вручную. Если таких блоков будет пара на весь чертеж, то это напрягать сильно не будет.
    Для разработки программы нужно создать "исскуственный" чертеж в котором будут находится все используемые Вами блоки-выработки по несколько штук каждого вида. Создать так же соответствующую этим блокам-выработкам таблицу в Excel.
    Так же нужно расписать соответствие примерно в таком виде:
    борозда - имя блока, шурфоскважина - имя блока, скважина - имя блока и т. д.
    Как Вы производите идентификацию одноименных блоков с одинаковыми номерами в "ручном" режиме?
     
    Последнее редактирование: 15 окт 2014
  8. Krovlaf

    Krovlaf Форумчанин

    Приветствую! Создать атрибут с номером линии в блоках выработок - пара минут, не проблема. Я исправлю блоки в представленном примере. Он пойдет в качестве "искуственного" чертежа?
    Одинаковых номеров в пределах одной линии в одинаковых выработках не должно быть так-как это противоречит методике. У разных типов выработок случается, но очень редко. Так что совпадение номеров одинаковых блоков в одной линии можно смело вписывать в ошибку ввода данных.

    Есть один принципиальный момент. Речь идет не о частном случае редактирования разведочных данных по россыпным месторождениям. Информация на чертеже может быть любой, она представлена атрибутами и ее много. Планы горных работ, схемы электроснабжения, инженерные сети, карты фактического материала и прочее. Основная идея программы (групповой редактор атрибутов блоков - можно и так назвать) заключается в том, чтобы выделив на чертеже n-ное количество любых блоков имеющих атрибуты, увидеть их в отдельном окне, в табличном виде, и отсортированными желаемым образом (по значению атрибутов, по оси Х, по оси У, или по заданной трассе).
    В этом окне, в таблице вида - HANDLE / BLOCKNAME / Att1 / Att2 / Att n,
    где HANDLE - идентификатор каждого блока,
    BLOCKNAME - имя блока
    Att1, Att2, Attn - имена атрибутов. Нечто подобное реализовано в Express Tools, команда attout. Только в нашем случае экспорт нужен не в текстовый файл а в окно программы.
    В таблице можно как непосредственно вводить информацию, так и обмениваться через буфер с внешними данными. Возможность создавать и сохранять при этом связи (чертеж - редактор - БД) было-бы вообще идеально, но это уже более сложный уровень. Основные задачи - находить и выделять на чертеже блоки соответствующие выбранным в редакторе строкам, сортировка таблицы по любому столбцу, экспорт/импорт с Екселем.


    Есть очень близкая к этой задаче штука - ToolPac - Attribute - Grid Editor. Критичные минусы - нельзя отсортировать данные в таблице в порядке выделения блоков. Некорректная сортировка номеров. (сортирует сначала десятки потом единицы) При пересортировке данных таблицы в екселе, не сохраняет изначальный порядок данных. В итоге на чертеже все данные блоков перемешаны. Из мелочей - не понимает кириллицу.
     
  9. Krovlaf

    Krovlaf Форумчанин

    Тут вот какое дело... Информация по выработкам ограничена несколькими тегами: НТ, НП, НМ, СП, СМ. Соответственно мощность торфов, мощность песков, мощность массы, содержание на пески, содержание на массу. В зависимости от способа отработки месторождения, задач разведки или принятых ведомственных стандартов по однотипным выработкам может содержаться разная информация. Например есть скважины с отображением НТ, НП, СП, СМ, а есть скважины отображающие НМ, СМ. При этом информация должна отображаться компактно и читабельно. Чтобы не нагружать блоки громоздкой динамикой, проще сделать несколько вариантов блоков. Вот и получается, что скважине может соответствовать блок "скв.", "скв1", "скв2". И у всех будет отличаться набор атрибутов.
     

    Вложения:

  10. ivsem

    ivsem Форумчанин

    Я думаю нужно написать программу устанавливающую связь между екселем и чертежом. Произвели изменения в чертеже, нажали кнопку синхронизации чертеж-> ексел и нужная информация поступила в листы екселя.
    Произвели изменения в екселе, нажали кнопку синхронизации ексель->чертеж и получили изменения данных в чертеже.
    Для однозначной идентификации выработок можно хранить в екселе их координаты.
     
    Последнее редактирование: 16 окт 2014
    Lex K-G нравится это.
  11. Krovlaf

    Krovlaf Форумчанин

    Ок. А если попробовать использовать HANDLE (идентификатор) блоков? Может быть полезной информация отсюда? Извиняюсь, я в этом не силен, но думаю это будет полезно. Я для примера экспортировал атрибуты нескольких блоков с помощью Express Tools - attout. В полученном текстовом файле изменил данные, закрыл Кад с сохранением. Открыл заново Кад, команда attin - атрибуты в чертеже изменились согласно измененным данным в тексте. То есть handl уникален, сохраняется, и информацию о нем можно хранить в стороннем файле. Кстати, инфа из текстового файла вполне корректно ложится в екселе и возвращается назад в текст. Я вообще этим пользуюсь давно и постоянно, но возникает ощущение того, что ты всякий раз прыгаешь через забор и надо бы сделать нормальную калитку... ...Макрос, который бы брал на себя копирование инфы из текста и вставки ее в ексель, ну и обратный путь из Ёкселя в чертеж.
     
  12. Philin

    Philin Форумчанин


    Это стандартная функция автокад (связь эксель и чертёж автокад). Если не ошибаюсь, то впервые введена в 2009 или 2010 автокад.
    Ничего писать не надо. Надо просто прочитать инструкцию пользователя автокад ;)
     
    Steinar нравится это.
  13. ivsem

    ivsem Форумчанин

    Возможно уважаемый Philin имел ввиду связь между Excel и таблицами в Autocad?
    А уважаемому Krovlaf нужна связь между данными в Еxcel и атрибутами блоков.
     
  14. Philin

    Philin Форумчанин

    Оффтоп

    Для меня любая задача формирования чего-либо в экселе из автокад (и наоборот) выглядит дико :)
    Автокад последних версий позволяет неплохо работать с таблицами. Не понимаю зачем городить огород и использовать что-то внешнее для автокад.

    Если я правильно понял, то требуется грамотный редактор атрибутов с полными возможностями сортировки, выбора и т.п. Некий "быстрый выбор" автокад, заточенный под атрибуты блоков, но с гораздо бОльшими возможностями. Он же и таблицы может строить в самом чертеже автокад и синхронизировать данные между таблицами (при использовании недокументированных особенностей DWG не придётся ничего синхронизировать, синхронизация происходит автоматически средствами автокад)...

    Нечто подобное я писал года 2 назад, только задачи стояли немного иные и таблицы мне в эксель были не нужны (они строились в диалоговых окнах, с расчётами).

    Задача была в создании программы расчёта армирования ЖБ конструкций. Может использоваться прорабами или ПТО.

    Все данные хранятся в самом чертеже, никаких внешних источников, только стандартные (частично недокументированные) функции DWG.
    Написаны всякие редакторы, калькуляторы, сортировщики и т.п. атрибутов. Изменение атрибутов в спецификации автоматически влечёт за собой их изменение во всех объектах.

    Для начала создаётся спецификация
    [​IMG]

    Потом, на её основе, присваиваются части спецификации различным объектам...
    [​IMG]

    Возможны различные выборы, редактирование, сортировка и т.п. объектов по требуемым параметрам.... расчёты для выбранных объектов и предоставление всё в табличном виде...
    [​IMG]

    PS для решения вышеозвученной задачи это всё абсолютно не подходит ввиду узкой специализации программы под другие задачи, но в общем - она решает бОльшую часть из них (если переделать под другие задачи).
     
  15. ivsem

    ivsem Форумчанин

    Если бы Вы адаптировали вашу табличную разработку к требованиям форумчанина Krovlaf было бы просто замечательно.
    У меня к сожалению программ по работе с автокадовскими таблицами нет, бо я в основном тружусь в древнем Autocad 2002 и с новыми версиями автокадов работаю ну очень эпизодически.
    Оффтоп

    У нас частенько заказчик требует графическую часть объекта в Автокаде, а табличные данные в Ексел.
    И по неволе приходится городить связи между Автокадом и Екселем.
     
    Последнее редактирование: 16 окт 2014
  16. Philin

    Philin Форумчанин

    Оффтоп

    Врядли это когда-либо получится. Хорошо представляю сколько времени это займёт т.к. уже решал схожую задачу. Около 900 часов кодинга без желания этим заниматься (добавление связи с эксель только увеличит время разработки).... Здесь с нуля надо писать, частично используя ранее проверенные функции.

    Т.е. я бы не взялся за решение задачи т.к. представляю как она решается :)
     
  17. Krovlaf

    Krovlaf Форумчанин

    Оффтоп

    Вполне резонно, но...
    Чтобы понять зачем городить огород, нужно помнить, что задач на свете очень много, все они разные и далеко не всегда решение для одних подходят для решения других.
    Вы представляете себе таблицу в каде на 2000 строк и далее? Вот как раз это и
    А 3000 точек опробования с информацией по 10 элементам по каждой, в виде блоков с атрибутикой, в модели с попутной нагрузкой вполне себе нормально ворочается. И вот для редактирования этого роя, связь с внешними источниками логична и естественна как дышать.
    Excel то как БД - штука очень ограниченная, на больших списках подвисать начинает, а Вы про Кадовские таблицы говорите!
     
  18. Philin

    Philin Форумчанин

    Оффтоп

    Если нужна скорость, то программа не должна быть на LISP.

    Для справки (скорости работы программ, средние показатели):
    • LISP (равно скорости работы автокад). Полностью зависим от версии автокад и частично зависим от локализации автокад и Windows.
    • VBA (в 20 раз быстрее автокад). Независим от автокад, но невозможно его использовании в версиях автокад до 2000i. Для автокад он является скриптом, а это даёт возможность внедрить его внутрь любого DWG документа и не таскать с собой лишние файлы (запускать на любом компьютере в автокад прямо из самого документа).
    • .Net (в 200-700 раз быстрее автокад). Независим от автокад, но зависим от версии .Net... Его использование возможно только в версиях автокад от 2010 (включительно).
    • ARX (в теории намного быстрее автокад, но из-за некоторых особенностей, в большинстве случаев гораздо медленнее его и замедляет работу автокад. Можно написать код, который будет быстрее, но для этого надо специально заморачиваться и затачивать код под скорость). Зависим от версии автокад.
    Excel штука с невероятными возможностями :) В нём есть макроязыки, которые расширяют стандартные функции и ограничен он только фантазией пользователя (впрочем как и автокад... который вышел в лидеры в какой-то степени именно из-за возможности программирования действий в нём).

    Для решения вашей задачи наиболее всего подходит VBA.
    Почему?
    VBA был разработан фирмой Microsoft как скриптовый язык для автоматизирования действий в Microsoft Office (это родной язык для Excel). Впоследствии (по обмену... Microsoft заставила внедрить VBA в AutoCAD в обмен на раскрытие некоторых недокументированных возможностей Windows) он стал частью AutoCAD (с версии 2000i). Это значит, что программа может быть написана как для эксель, так и для AutoCAD, причём работать одна и таже программа может и там и там. Это касается версий автокад до 2010 и старых версий Эксель. Для новых версий автокад и эксель родным аналогом является .Net (Хотя VBA до сих пор никто не отменял ввиду его широкой распространённости и невозможности написания некоторых программ на новом .Net).

    :)
    А для решения этой задачи у вас уже есть многоядерный сервер, который позволит "не умереть" рабочему компу во время работы по осуществлению "связи с внешним источником".
    Вы говорите, что он помирает в однозадачном Excel, но при этом ставите выполнение задачи так, что на обработку её решения потребуются гораздо бОльшие процессорные мощности.

    PS Использование любой внешней базы данных рационально только когда самих данных насчитывается минимум миллионы позиций. В остальных случаях это нерационально.
    Внешние базы значительно увеличивают потребности в процессорных мощностях, памяти, затрачиваемого времени на их обработку (верификация, индексирование, сортировка, восстановление...) и, в конечном итоге, стоимость системы.
     
    Последнее редактирование: 17 окт 2014
  19. ivsem

    ivsem Форумчанин

    Krovlaf, накатал в первом приближении программку dwg2csv02.fas сброса атрибутов блоков в текстовый файл Test.csv.
    Файл создается в папке из которой загружается чертеж. Программку можно запустить перетащив мышкой файл dwg2csv02.fas в рабочее окно автокада. Исходный рабочий файл с блоками пересохранен в формат autocad 2000.
    Выбор блоков можно производить стандартными способами автокада ( рамка, по одному и т.д.)
    Двойным щелчком файл Test.csv загружается в Excel.
    В таблице екселя создается дополнительная колонка с метками (handel) блоков.
    Программка требует тестирования и очевидно доработки.
    Программу тестируйте на копиях чертежей, бо гарантии никакие не даются и претензии не принимаются.
     

    Вложения:

    • dwg2csv02.ZIP
      Размер файла:
      243,8 КБ
      Просмотров:
      9
    Последнее редактирование: 18 окт 2014
  20. ivsem

    ivsem Форумчанин

    Пару слов по алгоритму работы программы dwg2csv.fas.
    Перед запуском программы сторонние блоки с атрибутами должны быть отключены (заморожены). Программа выбирает из чертежа только блоки с атрибутами. Далее из блоков программой выбираются атрибуты указанные в шапке екселесвского файла-образца. В тагах атрибутов должна использоваться латиница. Порядок следования атрибутов в блоке может быть произвольным. Так же программа извлекает из dwg метку (handel) обьекта и сбрасывает ее в текстовый файл csv.
     
    Последнее редактирование: 18 окт 2014
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление