Перейти к содержимому


Перенос модуля из AutoCAD


Сообщений в теме: 56

#1 RRoman

    Посетитель

  • Пользователи
  • PipPip
  • 25 сообщений

Отправлено 05 Февраль 2019 - 20:38

Добрых суток, форумчане!

Прошу помощи в решении задачи.
Есть в нашей конторе с десяток проектировщиков, работающих в autocad. Для них давным-давно (под 2010 версию) была написана надстройка - библиотека типовых элементов. Ее функционал невелик - вставить блок в рабочее пространство, пронумеровать его, в доп слой добавить точки подвода питания и составить спецификацию по всем блокам с группировкой по типу оборудования. Вся информация (название, характеристики и т.д.) по объектам хранится в sql.
Т.к. 2010 акад безбожно устарел руководство приняло решение обновиться, причем
1. Надстройка не взлетела в свежих версиях акада,
2. Ценник на на автокад совсем негуманен
3. "У нас есть компьютерщики - они решат все проблемы"

Одним словом закупились NanoCAD+ 10, без всяких надстроек и торжественно вручили мне задачу по переносу функционала (я и есть тот самый главный компьютерщик).

Есть пара проблем - во-первых, я админ, а не программист, а во-вторых я не работаю с CAD и не знаю их функционала.
Придется идти на ощупь.

Прошу дать направление, чтобы с минимальным погружением в тему добиться нужного функционала. Глубоко погружаться нет времени и ресурсов - у меня еще два десятка серверов и 5 сотен пользователей.

Инфу почитал, даже скопипастил vbs скрипт для вставки блока, но до просветления слишком далеко.

Заранее спасибо!

Сообщение отредактировал RRoman: 05 Февраль 2019 - 20:41


#2 Robink

    Активист

  • Пользователи
  • PipPipPipPip
  • 412 сообщений
  • Пол:Мужчина
  • Город:Казань
  • Интересы:САПРостроение

Отправлено 05 Февраль 2019 - 21:51

На чем были написаны Ваши приложения? Есть исходный код?

#3 RRoman

    Посетитель

  • Пользователи
  • PipPip
  • 25 сообщений

Отправлено 05 Февраль 2019 - 23:30

Просмотр сообщенияRobink (05 Февраль 2019 - 21:51) писал:

На чем были написаны Ваши приложения? Есть исходный код?
К сожалению, исходников нет. Судя по информации из dll это .NET, если я правильно понимаю

#4 MCAD

    Активист

  • Пользователи
  • PipPipPipPip
  • 1 129 сообщений
  • Пол:Мужчина

Отправлено 06 Февраль 2019 - 08:16

Просмотр сообщенияRRoman (05 Февраль 2019 - 23:30) писал:

К сожалению, исходников нет.

Интересно чертеж посмотреть. С блоками и итогом функции:

Цитата

составить спецификацию по всем блокам с группировкой по типу оборудования.

«Если мы сумеем определить аэродинамику полета майского жука, мы или обнаружим какое-то несовершенство современной теории полета насекомого, или откроем, что майский жук обладает каким-то неизвестным нам способом создания высокой подъемной силы».

© Леон Беннет

http://www.spds.ru


#5 Ivanco

    Дилер

  • Дилеры
  • PipPipPipPip
  • 348 сообщений
  • Пол:Мужчина
  • Город:Красноярск
  • Интересы:САПР

Отправлено 06 Февраль 2019 - 08:35

Просмотр сообщенияRRoman (05 Февраль 2019 - 20:38) писал:

Прошу дать направление, чтобы с минимальным погружением в тему добиться нужного функционала. Глубоко погружаться нет времени и ресурсов.Инфу почитал, даже скопипастил vbs скрипт для вставки блока, но до просветления слишком далеко. Заранее спасибо!

И как Вы себе представляете решение "с минимальным погружением добиться нужного функционала" ? - впрочем вопрос риторический...
Варианты:
1. Изучить SQL/.NET/CAD/ потребности пользователей - и зафигачить самому.
2. Найти чела/организацию который все это могет - заплатить ему/им денег и написать почти все заново. Плюс надо еще чтобы кто то ставил задачи. (это наиболее цивилизованный вариант, я считаю).
3. Попробовать это средствами СПДС сделать. Нужен nano СПДС и руки с нужного места.
может там какой минимальный функционал, который можно штатными/получштатными средствами сделать.
4. Найти чела который это делал и заплатить ему, если возьмется.
5. Затянуть тему на пару лет "авось рассосется" )

Сообщение отредактировал Ivanco: 06 Февраль 2019 - 08:35

"ИнфоИндастри" г.Красноярск,г.Иркутск,г.Владивосток-официальный дилер Нанософт
YouTube,GitHub - Ivanco21, using:C#/MultiCAD.NET

#6 RRoman

    Посетитель

  • Пользователи
  • PipPip
  • 25 сообщений

Отправлено 06 Февраль 2019 - 14:29

Просмотр сообщенияIvanco (06 Февраль 2019 - 08:35) писал:

Просмотр сообщенияRRoman (05 Февраль 2019 - 20:38) писал:

Прошу дать направление, чтобы с минимальным погружением в тему добиться нужного функционала. Глубоко погружаться нет времени и ресурсов.Инфу почитал, даже скопипастил vbs скрипт для вставки блока, но до просветления слишком далеко. Заранее спасибо!

И как Вы себе представляете решение "с минимальным погружением добиться нужного функционала" ? - впрочем вопрос риторический...
Варианты:
1. Изучить SQL/.NET/CAD/ потребности пользователей - и зафигачить самому.
2. Найти чела/организацию который все это могет - заплатить ему/им денег и написать почти все заново. Плюс надо еще чтобы кто то ставил задачи. (это наиболее цивилизованный вариант, я считаю).
3. Попробовать это средствами СПДС сделать. Нужен nano СПДС и руки с нужного места.
может там какой минимальный функционал, который можно штатными/получштатными средствами сделать.
4. Найти чела который это делал и заплатить ему, если возьмется.
5. Затянуть тему на пару лет "авось рассосется" )

Вопрос не риторический, а вполне конкретный.

Варианты с написанием сторонними компаниями/программерами почти что отпадают - хозяин конторы в глубокой печали, что пришлось оплатить счет на покупку после моего жесткого отказа впилить самый свежий акад "как раньше, без доп финансовых расходов" и почти что забастовки проектировщиков, отказывающихся работать в 2010. А тут я еще с одним счетом на сотню-другую приду.... Буду послан, хорошо если в мягкой форме.
Максимальный бюджет проекта у меня 30К - столько готов заплатить из своих, только кто-ж возьмется-то за такую сумму? Так что придется пилить своими силами.

СПДС у нас нет - наши сказали, что им хватит функционала голого НК - соптимизировали расходы, блин.

Затягивать тему не получится - библиотека у нас на несколько тысяч объектов и врукопашную они с этим делом никак не справятся.

Собственно, "минимальное прогружение" это достаточный (в математическом смысле) для решения задачи минимум знаний плюс направление для раскопок доп инфы. Объемы того, что необходимо (опять же в математическом смысле) знать для решения я прекрасно себе представляю
По аналогии с построением ит-инфраструктуры - я могу любому, кто пару раз в жизни устанавливал винду и подключал комп к сети (этого достаточно) в понятных терминах объяснить как за 1 день собрать масштабируемое кластерное хранилище данных с двойной отказоустойчивостью и объемом, ограниченным только фантазией и имеющимся в наличии железом. А могу отправить изучать стек TCP-IP, курсы администрирования *nix, MS, cisco и т.д и т.п. (это необходимо)

Я имею представление об sql, могу сделать простенький select из БД по id объекта - большее вряд ли понадобится.
Синтаксис какого-нибудь языка и основные приемы кодинга можно втянуть за пару недель. Много не надо - подключить БД, получить параметры от пользователя, вытянуть инфу из БД и выдать набор команд нанокаду.
CAD - вот тут у меня понимания очень мало - на уровне черчения курсачей и диплома 20 лет назад в универе - "кульман", не более того. Командной строкой пользовался только для ввода координат.

Прошу совета вот по каким вопросам:
1. Правильно ли я построил алгоритм? Его я напишу чуть ниже.
2. На каком языке реализовывать? Чтобы не потратить три недели выпиливая код на VB, уперевшись, в результате, в его ограничения по возможностям работы с API нанокада.
3. Что из алгоритма вообще можно сделать через API голой 10-ки нанокада, а что придется выносить в модуль?

Сам алгоритм, каким я его себе вижу:
1. Вызов модуля командой пользователя
2. Запрос каталога объектов из БД
3. Пользователь выбрал объект
4. Параметры объекта вытягиваются из БД
а вот дальше идет завязка на нанокад, функционал которого мне неизвестен
5. Идет проверка на уникальность блока в пространстве документа
6. Блоку присваивается uid в пространстве документа, если такого блока еще не было
7. Изображение блока вставляется в чертеж. В отдельный слой идет выноска с параметрами мощности (инфа динамическая, вытянута из БД)
8. Когда разработка закончена, по команде пользователя блоки нумеруются "насквозь" через весь документ. Порядковый номер блока выводится на чертеж (выноска или просто номер поверх блока). Если была правка (вставка/удаление блоков) - блоки перенумеровываются, чтобы не было пропусков
9. Формируется спецификация - по uid всех блоков считается количество, их характеристики тянутся из БД и инфа выбрасывается в Excel с компановкой по категориям (осветительное оборудование, тепловое и т.п.)

Вот такой минимальный функционал, достаточный для миграции в нанокад мне продемонстрировали проектировщики. Блэкджек со шлюхами будем прикручивать потом, когда они познают встроенные в платформу средства

#7 Robink

    Активист

  • Пользователи
  • PipPipPipPip
  • 412 сообщений
  • Пол:Мужчина
  • Город:Казань
  • Интересы:САПРостроение

Отправлено 06 Февраль 2019 - 16:06

https://sites.google...snetlaboratory/
Вот тут посмотрите для начала

#8 Ivanco

    Дилер

  • Дилеры
  • PipPipPipPip
  • 348 сообщений
  • Пол:Мужчина
  • Город:Красноярск
  • Интересы:САПР

Отправлено 06 Февраль 2019 - 18:57

Просмотр сообщенияRRoman (06 Февраль 2019 - 14:29) писал:

Синтаксис какого-нибудь языка и основные приемы кодинга можно втянуть за пару недель.
для большинства людей НЕТ,для уровня чтобы писать что то работающее и приличное.
будет так. _https://vk.com/public7275?z=photo-7275_456240927%2Falbum-7275_00%2Frev ( извиняюсь за ссылку, мне кажется в тему).

Выскажу свое мнение.Если директор считает , что можно на коленках, без денег, знаний , ресурсов и времени переписать ПО , без исходников, с более менее приличным функционалом, то не правы здесь два человека : директор и человек который на это почему то согласен. Цивилизованный мир так не работает. Классика "ты же компьютерщик" прямо.

По сабжу.

Просмотр сообщенияRRoman (06 Февраль 2019 - 14:29) писал:

Прошу совета вот по каким вопросам:
1. Правильно ли я построил алгоритм? Его я напишу чуть ниже.
2. На каком языке реализовывать? Чтобы не потратить три недели выпиливая код на VB, уперевшись, в результате, в его ограничения по возможностям работы с API нанокада.
3. Что из алгоритма вообще можно сделать через API голой 10-ки нанокада, а что придется выносить в модуль?

эм)).
1. Ваше приложение никто здесь не видели. (приложите видео работы с объяснениями , итоговый .dwg ).Со слов - плюс/минус наверно , как то так.
2. http://forum.nanocad...indpost&p=52159 - в Вашем случае. Либо Vb/vbs или C# наверно)
3. Вы этот вопрос написали , из за не понимания как все это работает, вероятно.

Из положительного:
-У Вас же SQL БД есть , с ней все в порядке надеюсь.
-ну,если .dll не обфусцирована, наверно можно ее "того".
- м.б. не все так сложно .Выкладывайте: видео работы с объяснениями , итоговый .dwg, м.б. БД или схему БД хотя бы.

По итогу: хотите быстро и норм - обычно нужны деньги.хотите сами - пару вагонов времени, зато прогать можно научиться на практике, только быстро это не будет.

P.S много букв написал :blink:

Сообщение отредактировал Ivanco: 06 Февраль 2019 - 19:02

"ИнфоИндастри" г.Красноярск,г.Иркутск,г.Владивосток-официальный дилер Нанософт
YouTube,GitHub - Ivanco21, using:C#/MultiCAD.NET

#9 RRoman

    Посетитель

  • Пользователи
  • PipPip
  • 25 сообщений

Отправлено 08 Февраль 2019 - 09:22

Просмотр сообщенияRobink (06 Февраль 2019 - 16:06) писал:

https://sites.google...snetlaboratory/
Вот тут посмотрите для начала

Буду изучать. Спасибо!

#10 RRoman

    Посетитель

  • Пользователи
  • PipPip
  • 25 сообщений

Отправлено 08 Февраль 2019 - 09:30

Господа, спасибо за интерес к теме!

Выкладываю готовый dwg и сгенерированную спецификацию

Прикрепленный файл  Торты 21 Век Проект.dwg   2,82МБ   10 Количество загрузок:
Прикрепленный файл  Торты 21 Век Проект спец.xls   33К   4 Количество загрузок:

#11 RRoman

    Посетитель

  • Пользователи
  • PipPip
  • 25 сообщений

Отправлено 08 Февраль 2019 - 16:05

Просмотр сообщенияIvanco (06 Февраль 2019 - 18:57) писал:

для большинства людей НЕТ,для уровня чтобы писать что то работающее и приличное.
будет так. _https://vk.com/public7275?z=photo-7275_456240927%2Falbum-7275_00%2Frev ( извиняюсь за ссылку, мне кажется в тему).

О приличном я пока не мечтаю, хотя бы рабочее ))

Просмотр сообщенияIvanco (06 Февраль 2019 - 18:57) писал:

Цивилизованный мир так не работает. Классика "ты же компьютерщик" прямо.

До цивилизованного мира нам еще ой как далеко. Но это лирика...

Просмотр сообщенияIvanco (06 Февраль 2019 - 18:57) писал:

эм)).
1. Ваше приложение никто здесь не видели. (приложите видео работы с объяснениями , итоговый .dwg ).Со слов - плюс/минус наверно , как то так.
2. http://forum.nanocad...indpost&p=52159 - в Вашем случае. Либо Vb/vbs или C# наверно)
3. Вы этот вопрос написали , из за не понимания как все это работает, вероятно.

Из положительного:
-У Вас же SQL БД есть , с ней все в порядке надеюсь.
-ну,если .dll не обфусцирована, наверно можно ее "того".
- м.б. не все так сложно .Выкладывайте: видео работы с объяснениями , итоговый .dwg, м.б. БД или схему БД хотя бы.

Схема БД меня порадовала (во вложении) )) Таблицы между собой не повязаны...
Прикрепленный файл  Снимок1.PNG   57,02К   1 Количество загрузок:

Видео работы запишу в ближайшее время.

dll "того" уже пробовал - первым делом.

Цитата

Public Sub InsDwg() '41B3B8
Code: FatFormat
Start: 41B3C4
Size: 254
Flag: MoreSects InitLocals
Max Stack: 5
Local Variables: 11000055

loc_41B3C4: push "Выберите dwg файл"
loc_41B3C9: push ""
loc_41B3CE: push "dwg"
loc_41B3D3: push "InsDwg"
loc_41B3D8: ldc.i4.8
loc_41B3D9: newobj .ctor
loc_41B3DE: stloc.0
loc_41B3DF: ldloc.0
loc_41B3E0: callvirt ShowDialog
loc_41B3E5: stloc.1
loc_41B3E6: ldloc.1
loc_41B3E7: ldc.i4.1
loc_41B3E8: bne.un loc_41B4C1
loc_41B3ED: call get_DocumentManager
loc_41B3F2: callvirt get_MdiActiveDocument
loc_41B3F7: callvirt get_Editor
loc_41B3FC: stloc.s 4
и т.п. и т.д.

Разбирал через VB Decompiler 10.1

Просмотр сообщенияIvanco (06 Февраль 2019 - 18:57) писал:

По итогу: хотите быстро и норм - обычно нужны деньги.хотите сами - пару вагонов времени, зато прогать можно научиться на практике, только быстро это не будет.

"Денег нет, но вы держитесь" (с) Быстро и красиво я и не надеюсь - "давно тут сидим" (с)
У меня примерно 2 месяца, чтобы выкатить бэту. А так, это проект с открытой датой завершения.
Сырцы планирую выложить тут в свободный доступ - авось пригодятся кому-нибудь. Ваять планирую на VB.

#12 doctorraz

    Посетитель

  • Пользователи
  • PipPipPipPip
  • 1 244 сообщений
  • Пол:Мужчина
  • Город:Волгоград
  • Интересы:всё понемногу

Отправлено 08 Февраль 2019 - 18:18

>Ваять планирую на VB.
ушу VB наны еще хуже чем у папы, но если чувствуется в себе сила, отчего не запилить.
надеюсь открытая дата это не только день месяц, но и год?
с удовольствием понаблюдаю за развитием этого проекта!
ну и чем могу..
>Разбирал через VB Decompiler 10.1
имха конечно, но зная логику программы чего должна делать и учитывая, что
>Синтаксис какого-нибудь языка и основные приемы кодинга можно втянуть за пару недель
при таком раскладе, реально за пару недель въехать в C++ и наваять на нем новую вертикалку на нану... ну электрикал уже есть..(сиэнднанасофт опередили), можно назвать "RRэлектрикал"

Сообщение отредактировал doctorraz: 08 Февраль 2019 - 18:25


#13 doctorraz

    Посетитель

  • Пользователи
  • PipPipPipPip
  • 1 244 сообщений
  • Пол:Мужчина
  • Город:Волгоград
  • Интересы:всё понемногу

Отправлено 08 Февраль 2019 - 18:30

я к тому, что с нуля написать более реально, чем ковыряься в чужом Гкоде и пытаться его повторить...

#14 Ivanco

    Дилер

  • Дилеры
  • PipPipPipPip
  • 348 сообщений
  • Пол:Мужчина
  • Город:Красноярск
  • Интересы:САПР

Отправлено 08 Февраль 2019 - 18:41

схема БД простая... хоть сам блок не строится по параметрам из БД, я так понимаю, там просто параметры/атрибуты на блок навешиваются. исходя из INFO_CAD таблицы, он берется из внешнего файла ?
"ИнфоИндастри" г.Красноярск,г.Иркутск,г.Владивосток-официальный дилер Нанософт
YouTube,GitHub - Ivanco21, using:C#/MultiCAD.NET

#15 RRoman

    Посетитель

  • Пользователи
  • PipPip
  • 25 сообщений

Отправлено 08 Февраль 2019 - 20:34

Просмотр сообщенияdoctorraz (08 Февраль 2019 - 18:18) писал:

>Ваять планирую на VB.
ушу VB наны еще хуже чем у папы, но если чувствуется в себе сила, отчего не запилить.
Рекомендуете посмотреть на шарп, чтобы не пришлось через месяц штурмовать его в срочном порядке?
Насколько я понял, основной функционал надо будет накодить, а в нанокад только выкидывать команды на вставку блоков и их нумерацию.

Просмотр сообщенияdoctorraz (08 Февраль 2019 - 18:18) писал:

надеюсь открытая дата это не только день месяц, но и год?
Главное, чтобы год не был выбит на гранитной плите... )

Просмотр сообщенияdoctorraz (08 Февраль 2019 - 18:18) писал:

с удовольствием понаблюдаю за развитием этого проекта!
ну и чем могу..
Спасибо!

Просмотр сообщенияdoctorraz (08 Февраль 2019 - 18:18) писал:

>Разбирал через VB Decompiler 10.1
имха конечно, но зная логику программы чего должна делать и учитывая, что
>Синтаксис какого-нибудь языка и основные приемы кодинга можно втянуть за пару недель
при таком раскладе, реально за пару недель въехать в C++ и наваять на нем новую вертикалку на нану... ну электрикал уже есть..(сиэнднанасофт опередили), можно назвать "RRэлектрикал"
А если удастся - написать книгу "Как въехать в С++ за две недели и не сойти с ума".
Не, гением я себя не считаю. Все-таки подразумевал VB/VBS/VB.NET/JS. Шарп - это если очень повезет и очень хорошо пойдет. )

#16 RRoman

    Посетитель

  • Пользователи
  • PipPip
  • 25 сообщений

Отправлено 08 Февраль 2019 - 21:02

Просмотр сообщенияIvanco (08 Февраль 2019 - 18:41) писал:

схема БД простая... хоть сам блок не строится по параметрам из БД, я так понимаю, там просто параметры/атрибуты на блок навешиваются. исходя из INFO_CAD таблицы, он берется из внешнего файла ?
да, всё верно.
В БД грузится инфа из текстового файла с разделителями. Могу выложить кусок, но думаю это не принципиально. Каждый блок - отдельный dwg + wpf для превью блока при его выборе перед вставкой в чертеж (в понедельник выложу видео). Список блоков генерится отдельной внешней утилитой и подсовывается модулю в виде xml. Сплошная статика. Из БД тянутся параметры изделия при вставке блока и генерации спецификации.

Нет даже никакого менеджера БД, чтобы подправить ошибку в описании или прибить устаревшую инфу.
Похоже, что сделано на коленке, значит вероятность повторить довольно велика. Это воодушевляет ))

Бд трогать не собираюсь, только надо будет сваять какой-нибудь простенький менеджер. Но это позже, позже...

#17 Robink

    Активист

  • Пользователи
  • PipPipPipPip
  • 412 сообщений
  • Пол:Мужчина
  • Город:Казань
  • Интересы:САПРостроение

Отправлено 09 Февраль 2019 - 08:41

На VB NET в мультикаде можно создать выносную нанокадовскую? (у меня не получилось). А может ее можно через COM API создать на VB?)

#18 doctorraz

    Посетитель

  • Пользователи
  • PipPipPipPip
  • 1 244 сообщений
  • Пол:Мужчина
  • Город:Волгоград
  • Интересы:всё понемногу

Отправлено 09 Февраль 2019 - 09:05

> На VB NET в мультикаде можно создать выносную нанокадовскую? (у меня не получилось)
в нане солянка из его объектов и mccom

#19 MCAD

    Активист

  • Пользователи
  • PipPipPipPip
  • 1 129 сообщений
  • Пол:Мужчина

Отправлено 09 Февраль 2019 - 12:11

Просмотр сообщенияRRoman (08 Февраль 2019 - 21:02) писал:

В БД грузится инфа из текстового файла с разделителями.
А БД дорога как память? Можно же просто разложить блоки по папкам, запихать все данные в атрибуты блоков и вставлять через менеджер файлов или из палитры (Copy && Paste -вроде тоже никто не отменял). Создавать новые и редактировать существующие точно удобнее, чем сохранять (пересохранять) в базе
Прикрепленный файл  img-2019-02-09-15-03-00.png   5,52К   0 Количество загрузок:

Просмотр сообщенияRRoman (08 Февраль 2019 - 21:02) писал:

Бд трогать не собираюсь, только надо будет сваять какой-нибудь простенький менеджер. Но это позже, позже...
Можно попробовать спецификацию собирать непосредственно с чертежа, правд с последующей доводкой некоторых данных, которых в чертеже нет. Да и с автоматической "Экспликацией" , тоже не вопрос.


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

«Если мы сумеем определить аэродинамику полета майского жука, мы или обнаружим какое-то несовершенство современной теории полета насекомого, или откроем, что майский жук обладает каким-то неизвестным нам способом создания высокой подъемной силы».

© Леон Беннет

http://www.spds.ru


#20 doctorraz

    Посетитель

  • Пользователи
  • PipPipPipPip
  • 1 244 сообщений
  • Пол:Мужчина
  • Город:Волгоград
  • Интересы:всё понемногу

Отправлено 09 Февраль 2019 - 12:36

> запихать все данные в атрибуты блоков
думаю это тупиковый путь, по крайней мере автодеск в своем электрике пошел именно по пути, как описалТС, но у них и времени и ресурсов немного больше.
магма пошла еще дальше, геометрию, описание, атрибуты и логику поведения объекта хранит в базе, а в чертеже необходимый минимум,
я к тому,что хранить все в атрибутах... эмм тормоза обеспечены, ну и пользователи с шаловливыми ручками...

Сообщение отредактировал doctorraz: 09 Февраль 2019 - 12:40






Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 скрытых пользователей