Jump to content

Ivanco

Дилеры
  • Posts

    432
  • Joined

  • Last visited

  • Days Won

    35

Ivanco last won the day on October 9 2022

Ivanco had the most liked content!

2 Followers

About Ivanco

  • Birthday 09/21/1983

Контакты

  • Сайт
    http://www.infoind.info/

Информация

  • Пол
    Мужчина
  • Город
    Красноярск
  • Интересы
    САПР

Recent Profile Visitors

11,773 profile views

Ivanco's Achievements

Explorer

Explorer (4/14)

  • Reacting Well Rare
  • Very Popular Rare
  • Conversation Starter Rare
  • Dedicated Rare
  • First Post Rare

Recent Badges

200

Reputation

  1. ### Назначение: Создание СПДС объектов в пространстве модели по таблице Excel. #### Логика работы: 1. Скрипт читает указанный файл Excel. 2. В файле должны быть указаны: * ID объектов (из базы СПДС) * координаты вставки * параметры объекта которые необходимо применить к объекту. 3. Одна строка файла равно один объект СПДС. 4. Объект по ID ищется в БД СПДС, к нему применяются параметры. 5. Объект вставляется по координатам. #### Рабочие файлы: SpdsObjByExcelParams_v1.0.0.zip Params.xlsm Исходники на GitHub #### Важно: 1. Структура таблицы должна быть как в приложенном файле. Кол-во параметров можно расширять вправо. 2. ID и параметры можно найти в "Мастер объектов" СПДС. 3. Чтение Excel реализовано через Open XML библиотеки. DocumentFormat.OpenXml.dll - должна находится в папке со основной dll. P.S. часть парметров объекта "вид" и "имплементация" жестко прописана в коде. Поставляется "как есть". #### Пример:
  2. скорректировал. изначальная длинна полки все равно жестко задана, но сейчас она масштабируется. попробуйте вообщем, отпишитесь удобно ли. новую версию прикрепил. PLL_APP.dll
  3. банально не сделано. инструмент делался под одного человека(и это не я) - что ему нужно было , то и реализовано. если есть код(C#) под рукой - скинте пожалуйста. впилю, как нибудь.
  4. а как нужно ? м.б. текущие настройки масштабов использовать ?
  5. вот один из способов "борьбы" с менюшками выбора. // spexplodeall разрушает все СПДС объекты McContext.ExecuteCommand("spexplodeall"); // клик "ОК" System.Windows.Forms.SendKeys.SendWait("{ENTER}");
  6. плюсую. всплывающие окна це проблема для пакетной обработки. по факту нужна опция , переводящая их в режим командной строки, для программного взаимодействия. Господа разработчики (уже где то на форуме писал про это) зачастую мыслят в парадигме одного файла. Реализовывают какие то опции в рамках файла. даже не задумываясь что в организации могут быть десятки тысяч dwg. и с ними иногда надо че то пакетно поделать. p.s. пару раз приходилось на RPA кодить процессы(т.е. в связке пакетный batch на C# + RPA), чтобы эти окна дурацкие обойти(. хотя вместо RPA фактически можно найти Handle ы этих окошек и также программно их закрывать, но это проблемно/долго.
  7. Из справки SDK. В самом начале: Из справки SDK. Создание нового проекта на .NET и все скрины настроек проекта в VS явно не от Visual Studio 2022. надо таки .NET 6.0 использовать? справка просто старая типа "кому надо разберутся" ? p.s. потратил время на поиск "Start External Program" в VS 2022. оно там как по дурацки включается. это ж блин должно быть в справке..
  8. как вы к этому выводу пришли..? ведь код, кроме создания экземпляра класса, ничего не делает дальше с TapsLine, и экземпляр сразу дропается Garbage Collector ом вы ведь не ожидаете что этот код что то создаст в чертеже.. вот такой код и вызов должны корректно отработать. дальше делайте что нужно со slaveLines List<PowerLine> slaveLines = CreatClassPowerLine(PowerLine); List<PowerLine> CreatClassPowerLine(PowerLine PowerLine) { List<PowerLine> lines = new List<PowerLine>(); for (int i = 0; i < PowerLine.TapsID.Count; i++) { PowerLine TapsLine = new PowerLine { Name = ("Отпайка " + i) }; lines.Add(TapsLine); } return lines; } С улучшенным неймингом и синтаксисом.
  9. идете в отладке - и экземпляры класса PowerLine не создаются? если "да" очевидно что надо PowerLine.TapsID.Count - посмотреть в отладке есть, там чего. ну и дальше никакого кода с ними нет. сборщик мусора их потом просто убирает и все. P.S. void CreatClassPowerLine(PowerLine PowerLine) - так кстати писать моветон, путает читающих код. называйте экземпляры класса не так как определение класса.
  10. если "отпайки" всегда от "узлов" (точек полилинии), и координаты "отпайки" точно совпадают, с координатами узловых точек "магистрали" - это простая задача. можно просто "в лоб" решать, алгоритм только постарасться оптимальный по скорости(если важно). на C#, на том же LINQ - просто и быстро. в VBA такой радости нет - надо думать над алгоритмом оптимального перебора.
  11. незнаю как решать, но вероятно изначально нужно уточнить постановку задачи. "есть ли в радиусе 3 м от вершины объект полиллия" - что есть "есть". BoundingBox искомой поллинии пересекает область от вершины? сама полилиния пересекает область от вершины? только ли полинии ищем или вообще все? "проверить лежать ли несколько объектов в одной и той же точки полиллинии." - что есть объекты? вот блок нарисован и помещен поверх точки. при этом ни один из его примитивов не в точке полилинии и т.д. Вообщем, как по мне, нужно сперва четко определить какие случаи и по каким типам объектов ищем. P.S. ищут вероятно всякими IntersectWith() но врядли это есть в ActivX API. скорее на C++.
  12. странно что штатно, в свойствах у полилинии не выводится кол-во сегментов. автор темы(как тут тегать юзеров?), если не сложно. приложите dwg шку с 10 полилиниями, и итоговым результатом после "подсчета". таблица какая то , как понимаю должна быть на выходе. может когда нибудь впилю, эту функциональность.
  13. спасибо, за пояснения. но приобрести отдельный софт только для этой задачи - сложно. нужно что то типо, упомянутого выше BricsCAD 'ого Blockify только с нечетким поиском и заменой на указанный блок.
  14. К сообщению приложен dwg. В нем чертеж фасада. "чертеж" он только с виду. с точки зрения структуры dwg - это просто набор примитивов на одном слое. не суть "как так вышло" - принять за данность. Есть окна : это пачка линий/полилиний/штриховок. для каждого "окна" набор примитивов одинаковый , но не факт, сами примитивы могут немного отличаться. Задача - определить все одинаковые "окна" и заменить их на блок. т.е. нужен некий SELECT_SIMMULAR (причем с нечетким и много элементным поиском). может результат - группы элементов с точкой в центре или просто точка центра bounding box этой группы. в BricsCAD вроде есть что то похожее. Команда Blockify. не пробовал пока. то что она делает - с виду прекрасно. есть сомнения что она не справиться, со случаями, если условно одна из линий в группе, чуть отличается по длинне. есть ли что то подобное Blockify для нано? может есть какой то другой подход к решению задачи? Фасад из линий .dwg
  15. наконец хотя бы, господа разработчики, просто приняли идею - что есть задачи не для одного файла. к сожалению, мало кто пытается хоть как то , подходить к проблемам вида "у вас 10 000 dwg , на балансе, и там надо че то изменить/прочитать/понять".
×
×
  • Create New...