Jump to content

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


Recommended Posts

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

 

Прошу помощи в решении задачи.

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

Т.к. 2010 акад безбожно устарел руководство приняло решение обновиться, причем

1. Надстройка не взлетела в свежих версиях акада,

2. Ценник на на автокад совсем негуманен

3. "У нас есть компьютерщики - они решат все проблемы"

 

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

 

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

Придется идти на ощупь.

 

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

 

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

 

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

Edited by RRoman
Link to comment
Share on other sites

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

К сожалению, исходников нет. Судя по информации из dll это .NET, если я правильно понимаю

Link to comment
Share on other sites

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

 

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

 

составить спецификацию по всем блокам с группировкой по типу оборудования.
Link to comment
Share on other sites

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

 

И как Вы себе представляете решение "с минимальным погружением добиться нужного функционала" ? - впрочем вопрос риторический...

Варианты:

1. Изучить SQL/.NET/CAD/ потребности пользователей - и зафигачить самому.

2. Найти чела/организацию который все это могет - заплатить ему/им денег и написать почти все заново. Плюс надо еще чтобы кто то ставил задачи. (это наиболее цивилизованный вариант, я считаю).

3. Попробовать это средствами СПДС сделать. Нужен nano СПДС и руки с нужного места.

может там какой минимальный функционал, который можно штатными/получштатными средствами сделать.

4. Найти чела который это делал и заплатить ему, если возьмется.

5. Затянуть тему на пару лет "авось рассосется" )

Edited by Ivanco
  • Like 4
Link to comment
Share on other sites

Прошу дать направление, чтобы с минимальным погружением в тему добиться нужного функционала. Глубоко погружаться нет времени и ресурсов.Инфу почитал, даже скопипастил 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 с компановкой по категориям (осветительное оборудование, тепловое и т.п.)

 

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

Link to comment
Share on other sites

Синтаксис какого-нибудь языка и основные приемы кодинга можно втянуть за пару недель.

для большинства людей НЕТ,для уровня чтобы писать что то работающее и приличное.

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

 

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

 

По сабжу.

Прошу совета вот по каким вопросам:

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:

Edited by Ivanco
  • Like 3
Link to comment
Share on other sites

для большинства людей НЕТ,для уровня чтобы писать что то работающее и приличное.

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

 

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

 

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

 

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

 

эм)).

1. Ваше приложение никто здесь не видели. (приложите видео работы с объяснениями , итоговый .dwg ).Со слов - плюс/минус наверно , как то так.

2. http://forum.nanocad...indpost&p=52159 - в Вашем случае. Либо Vb/vbs или C# наверно)

3. Вы этот вопрос написали , из за не понимания как все это работает, вероятно.

 

Из положительного:

-У Вас же SQL БД есть , с ней все в порядке надеюсь.

-ну,если .dll не обфусцирована, наверно можно ее "того".

- м.б. не все так сложно .Выкладывайте: видео работы с объяснениями , итоговый .dwg, м.б. БД или схему БД хотя бы.

 

Схема БД меня порадовала (во вложении) )) Таблицы между собой не повязаны...

post-72718-0-99189100-1549629094.png

 

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

 

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

 

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

 

"Денег нет, но вы держитесь" (с) Быстро и красиво я и не надеюсь - "давно тут сидим" (с)

У меня примерно 2 месяца, чтобы выкатить бэту. А так, это проект с открытой датой завершения.

Сырцы планирую выложить тут в свободный доступ - авось пригодятся кому-нибудь. Ваять планирую на VB.

  • Like 2
Link to comment
Share on other sites

>Ваять планирую на VB.

ушу VB наны еще хуже чем у папы, но если чувствуется в себе сила, отчего не запилить.

надеюсь открытая дата это не только день месяц, но и год?

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

ну и чем могу..

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

имха конечно, но зная логику программы чего должна делать и учитывая, что

>Синтаксис какого-нибудь языка и основные приемы кодинга можно втянуть за пару недель

при таком раскладе, реально за пару недель въехать в C++ и наваять на нем новую вертикалку на нану... ну электрикал уже есть..(сиэнднанасофт опередили), можно назвать "RRэлектрикал"

Edited by doctorraz
  • Like 1
Link to comment
Share on other sites

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

  • Like 1
Link to comment
Share on other sites

схема БД простая... хоть сам блок не строится по параметрам из БД, я так понимаю, там просто параметры/атрибуты на блок навешиваются. исходя из INFO_CAD таблицы, он берется из внешнего файла ?

Link to comment
Share on other sites

>Ваять планирую на VB.

ушу VB наны еще хуже чем у папы, но если чувствуется в себе сила, отчего не запилить.

Рекомендуете посмотреть на шарп, чтобы не пришлось через месяц штурмовать его в срочном порядке?

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

надеюсь открытая дата это не только день месяц, но и год?

Главное, чтобы год не был выбит на гранитной плите... )

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

ну и чем могу..

Спасибо!

 

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

имха конечно, но зная логику программы чего должна делать и учитывая, что

>Синтаксис какого-нибудь языка и основные приемы кодинга можно втянуть за пару недель

при таком раскладе, реально за пару недель въехать в C++ и наваять на нем новую вертикалку на нану... ну электрикал уже есть..(сиэнднанасофт опередили), можно назвать "RRэлектрикал"

А если удастся - написать книгу "Как въехать в С++ за две недели и не сойти с ума".

Не, гением я себя не считаю. Все-таки подразумевал VB/VBS/VB.NET/JS. Шарп - это если очень повезет и очень хорошо пойдет. )

  • Like 1
Link to comment
Share on other sites

схема БД простая... хоть сам блок не строится по параметрам из БД, я так понимаю, там просто параметры/атрибуты на блок навешиваются. исходя из INFO_CAD таблицы, он берется из внешнего файла ?

да, всё верно.

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

 

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

Похоже, что сделано на коленке, значит вероятность повторить довольно велика. Это воодушевляет ))

 

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

в нане солянка из его объектов и mccom

Link to comment
Share on other sites

В БД грузится инфа из текстового файла с разделителями.

А БД дорога как память? Можно же просто разложить блоки по папкам, запихать все данные в атрибуты блоков и вставлять через менеджер файлов или из палитры (Copy && Paste -вроде тоже никто не отменял). Создавать новые и редактировать существующие точно удобнее, чем сохранять (пересохранять) в базе

img-2019-02-09-15-03-00.png

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

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

http://youtu.be/va25aPEmm5g

 

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

Link to comment
Share on other sites

> запихать все данные в атрибуты блоков

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

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

я к тому,что хранить все в атрибутах... эмм тормоза обеспечены, ну и пользователи с шаловливыми ручками...

Edited by doctorraz
Link to comment
Share on other sites

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

Так граничные условия заданы

Link to comment
Share on other sites

Я данные прикрепляю к блоку при помощи xdata. Просил нанософт сделать их отображение в окне быстрых свойств. Можно также попробовать xrecord.

  • Like 2
Link to comment
Share on other sites

Видео работы с модулем. Весит 16 метров, поэтому выкладываю ссылку на него

 

1. Дрбавляю объекты

2. Удаляю один из них

3. Делаю сквозную нумерацию

4. Формирую спецификацию.

 

_https://cloud.klen-net.ru/public.php?service=files&t=bb5fe9e68319577bd4952b91f910bc91

Edited by RRoman
Link to comment
Share on other sites

А БД дорога как память? Можно же просто разложить блоки по папкам, запихать все данные в атрибуты блоков и вставлять через менеджер файлов или из палитры (Copy && Paste -вроде тоже никто не отменял). Создавать новые и редактировать существующие точно удобнее, чем сохранять (пересохранять) в базе

Такой подход хорош, когда объектов немного. Сейчас интереса ради посчитал dwg в папке - 20732. даже, если 50% из них устаревший хлам, всё равно многовато для прописывания атрибутов руками. А писать софтину, которая автоматом раскидает атрибуты ничуть не быстрее, чем основной модуль

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

А в чем засада с выноской?

Я так понял, что нельзя заставить нанокад нарисовать выноску из внешнего модуля?

 

тогда вопрос - нельзя средствами VB или вообще никак, кроме как мышью?

Вопрос важный, т.к. выносками наши указывают точки подключения к коммуникациям.

Link to comment
Share on other sites

А БД дорога как память? Можно же просто разложить блоки по папкам, запихать все данные в атрибуты блоков и вставлять через менеджер файлов или из палитры (Copy && Paste -вроде тоже никто не отменял). Создавать новые и редактировать существующие точно удобнее, чем сохранять (пересохранять) в базе

Такой подход хорош, когда объектов немного. Сейчас интереса ради посчитал dwg в папке - 20732. даже, если 50% из них устаревший хлам, всё равно многовато для прописывания атрибутов руками. А писать софтину, которая автоматом раскидает атрибуты ничуть не быстрее, чем основной модуль

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

А в чем засада с выноской?

Я так понял, что нельзя заставить нанокад нарисовать выноску из внешнего модуля?

 

тогда вопрос - нельзя средствами VB или вообще никак, кроме как мышью?

Вопрос важный, т.к. выносками наши указывают точки подключения к коммуникациям.

Я не смог по id получить выносную для исправления, преобразовать McObject в McNoteLeader.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Tell a friend

    Love Официальный форум компании Нанософт? Tell a friend!
×
×
  • Create New...