Перейти к публикации

Миниатюры в зависимости от конфигурации при экспорте в exel


ewgen30

Рекомендованные сообщения

Доброго дня! Подскажите пожалуйста в какую сторону копать :)

Имеется деталь с несколькими конфигурациями (через таблицу параметров). При экспорте спецификации в exel с галочкой "уменьшенные изображения" в каждой строке отображается  одна и та же миниатюра в независимости от конфигурации. Есть возможность как-то это поправить, а в идеале вообще выбрать ракурс для миниатюр? 

 

ZB9K3jB

Ссылка на сообщение
Поделиться на других сайтах


UnPinned posts
17.02.2023 в 10:43, ewgen30 сказал:

Доброго дня! Подскажите пожалуйста в какую сторону копать :)

Имеется деталь с несколькими конфигурациями (через таблицу параметров). При экспорте спецификации в exel с галочкой "уменьшенные изображения" в каждой строке отображается  одна и та же миниатюра в независимости от конфигурации. Есть возможность как-то это поправить, а в идеале вообще выбрать ракурс для миниатюр? 

 

ZB9K3jB

Видимо, только программу надо писать.

Ссылка на сообщение
Поделиться на других сайтах
1 час назад, brigval сказал:

Видимо, только программу надо писать.

Можно примерно так, только здесь без EXCEL:

        public static List<string> CreatePreviewImageAllConfigurations(SldWorks swApp)
        {
            int THREAD_SLEEP_MILISEC = 500;

            List<string> names = new List<string>();
            ModelDoc2 model = swApp.ActiveDoc;

            double transitionTime = SetViewTransiotionOnZero(swApp); //устанавливаем отрисовку времени поворота изображения в 0
            SetIsometricView(model); // делаем изометрический вид, по желанию делаем любой другой
            Thread.Sleep(THREAD_SLEEP_MILISEC); // Хоть время поворота и устанавливаем в 0, но не всегда SW успевает все отработать, так что программа чуток ожидает.
            foreach (string item in model.GetConfigurationNames())
            {
                model.ShowConfiguration2(item);
                Thread.Sleep(THREAD_SLEEP_MILISEC);
                string name = GetImagePath(model);
                CreateBmpImage(name, model);
                names.Add(name);
            }
            RestoreTransitionTime(transitionTime, swApp); //восстанавливаем исходное  время поворота изображения
            return names;
        }

        private static string GetImagePath(ModelDoc2 model)
        {
            string fileName = model.GetPathName() + @"_" + (model.GetActiveConfiguration() as Configuration).Name;
            return fileName + @".bmp";
        }


        private static double SetViewTransiotionOnZero(SldWorks app)
        {
            double currentTransitionTime = app.GetUserPreferenceDoubleValue((int)swUserPreferenceDoubleValue_e.swViewAnimationSpeed);
            app.SetUserPreferenceDoubleValue((int)swUserPreferenceDoubleValue_e.swViewAnimationSpeed, 0);
            return currentTransitionTime;
        }

        private static void RestoreTransitionTime(double time, SldWorks app)
        {
            app.SetUserPreferenceDoubleValue((int)swUserPreferenceDoubleValue_e.swViewAnimationSpeed, time);
        }

        private static void SetIsometricView(ModelDoc2 model)
        {
            model.ShowNamedView2("", 7);
            model.ViewZoomtofit2();
        }


        private static void CreateBmpImage(string fileName, ModelDoc2 model)
        {
            int PREVIEW_IMAGE_WIGTH = 200; // размеры создаваемого изображения
            int PREVIEW_IMAGE_HEIGTH = 200;

            bool imResult = model.SaveBMP(
                fileName,
                PREVIEW_IMAGE_WIGTH,
                PREVIEW_IMAGE_HEIGTH
                );
        }

 

Изменено пользователем nicomed
Ссылка на сообщение
Поделиться на других сайтах
49 минут назад, nicomed сказал:

GetActiveConfiguration

Покажет изображение последней сохраненной на диск конфигурации.

Для показа изображения нужной конфигурации надо использовать

ShowConfiguration2

Недавно выяснил )

Ссылка на сообщение
Поделиться на других сайтах
55 минут назад, brigval сказал:

Покажет изображение последней сохраненной на диск конфигурации.

Для показа изображения нужной конфигурации надо использовать




ShowConfiguration2

Недавно выяснил )

Перед вызовом метода GetImagePath, в цикле предыдущего метода как раз ShowConfiguration2  и вызывается ....

TestingApp.exe

Изменено пользователем nicomed
Ссылка на сообщение
Поделиться на других сайтах
5 минут назад, nicomed сказал:

Перед вызовом метода GetImagePath, в цикле предыдущего метода как раз ShowConfiguration2  и вызывается ....

Ой. Извините. Проморгал.

Ссылка на сообщение
Поделиться на других сайтах
19 часов назад, nicomed сказал:

Перед вызовом метода GetImagePath, в цикле предыдущего метода как раз ShowConfiguration2  и вызывается ....

TestingApp.exe 17 \u041a\u0431 · 4 скачивания

Сказать, что я в программировании ничего не понимаю - это ничего не сказать)

Запустив вашу программу получил в папке с деталью *.bmp изображения различных конфигураций. По задумке теперь нужно из вручную (или так же программно-магическим методом) вставить в exel спецификацию?

И еще вопрос от дилетанта: этот код, который Вы написали в каком "редакторе" можно подправить, для более тонкой настройки? (увеличить разрешение и размер изображения, отцентровать и использовать диметрию, вместо изометрии)

 

Ссылка на сообщение
Поделиться на других сайтах
22 минуты назад, ewgen30 сказал:

Сказать, что я в программировании ничего не понимаю - это ничего не сказать)

Запустив вашу программу получил в папке с деталью *.bmp изображения различных конфигураций. По задумке теперь нужно из вручную (или так же программно-магическим методом) вставить в exel спецификацию?

И еще вопрос от дилетанта: этот код, который Вы написали в каком "редакторе" можно подправить, для более тонкой настройки? (увеличить разрешение и размер изображения, отцентровать и использовать диметрию, вместо изометрии)

 

Просто так не переделаете - это на C# код - он компилируется... к тому же это только чисто функционал программы, без всякого вспомогательного, типа обращения к самому SW и т.д. и т.п.

Ссылка на сообщение
Поделиться на других сайтах
6 минут назад, nicomed сказал:

Просто так не переделаете - это на C# код - он компилируется... к тому же это только чисто функционал программы, без всякого вспомогательного, типа обращения к самому SW и т.д. и т.п.

Может, проще ковырять через макросы?

Ссылка на сообщение
Поделиться на других сайтах
20.02.2023 в 11:24, nicomed сказал:

Можно примерно так, только здесь без EXCEL:

        public static List<string> CreatePreviewImageAllConfigurations(SldWorks swApp)
        {
            int THREAD_SLEEP_MILISEC = 500;

            List<string> names = new List<string>();
            ModelDoc2 model = swApp.ActiveDoc;

            double transitionTime = SetViewTransiotionOnZero(swApp); //устанавливаем отрисовку времени поворота изображения в 0
            SetIsometricView(model); // делаем изометрический вид, по желанию делаем любой другой
            Thread.Sleep(THREAD_SLEEP_MILISEC); // Хоть время поворота и устанавливаем в 0, но не всегда SW успевает все отработать, так что программа чуток ожидает.
            foreach (string item in model.GetConfigurationNames())
            {
                model.ShowConfiguration2(item);
                Thread.Sleep(THREAD_SLEEP_MILISEC);
                string name = GetImagePath(model);
                CreateBmpImage(name, model);
                names.Add(name);
            }
            RestoreTransitionTime(transitionTime, swApp); //восстанавливаем исходное  время поворота изображения
            return names;
        }

        private static string GetImagePath(ModelDoc2 model)
        {
            string fileName = model.GetPathName() + @"_" + (model.GetActiveConfiguration() as Configuration).Name;
            return fileName + @".bmp";
        }


        private static double SetViewTransiotionOnZero(SldWorks app)
        {
            double currentTransitionTime = app.GetUserPreferenceDoubleValue((int)swUserPreferenceDoubleValue_e.swViewAnimationSpeed);
            app.SetUserPreferenceDoubleValue((int)swUserPreferenceDoubleValue_e.swViewAnimationSpeed, 0);
            return currentTransitionTime;
        }

        private static void RestoreTransitionTime(double time, SldWorks app)
        {
            app.SetUserPreferenceDoubleValue((int)swUserPreferenceDoubleValue_e.swViewAnimationSpeed, time);
        }

        private static void SetIsometricView(ModelDoc2 model)
        {
            model.ShowNamedView2("", 7);
            model.ViewZoomtofit2();
        }


        private static void CreateBmpImage(string fileName, ModelDoc2 model)
        {
            int PREVIEW_IMAGE_WIGTH = 200; // размеры создаваемого изображения
            int PREVIEW_IMAGE_HEIGTH = 200;

            bool imResult = model.SaveBMP(
                fileName,
                PREVIEW_IMAGE_WIGTH,
                PREVIEW_IMAGE_HEIGTH
                );
        }

 

 

Если еще на перед созданием картинки скрывать дерево построения с помощью HideFeatureManager, картинка получается ближе центру и изображение модели занимает почти весь размер картинки.

Скрытый текст

Брасол. Проект. Изображение.jpg

Прошу извинения у ТС. Но раз уж пошел разговор...

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




  • Сообщения

    • Kelny
      Если этой ссылки достаточно для отображения материала и материал уже есть в обозначенной модели, то возможно подойдёт TabBuilder: https://help.solidworks.com/2023/russian/SolidWorks/SWHelp_List.html?id=e68c1877b4fa431483f8c751bd9fcc78&_gl=1*lby1j3*_up*MQ..*_ga*NTEyNjA5NDQ3LjE3MTQxMTU3MzA.*_ga_XQJPQWHZHH*MTcxNDExNTcyOS4xLjEuMTcxNDExNTczNy4wLjAuMA..#Pg0   В старых версиях при написанни ссылок такого радо в некоторых случаях можно было не писать имя файла, а достаточно было вместо имени файла модели оставить ПРОБЕЛ.SLDPRT и имя после этого подставлялось само. Пробовать надо.   Так же можете глянуть макрос по изменению свойств файла (методы и функции там устаревшие, но возможно даже будет работать и можно поковыряться в коде): https://kelnyproject.ucoz.ru/load/6-1-0-8 по програмированию так же есть справка (версию в ссылке поменяйте на свою, что бы справка была актуальна для вашей версии): https://help.solidworks.com/SearchEx.aspx?query=get custom property&version=2010&lang=english,enu&prod=api
    • gudstartup
      только перед обновлением обязательно выполните  все что написано в руководстве и касается сохранения состояния станка и чпу. и обязательно сделайте образ диска и помните что слишком новые версии могут не заработать на вашем чпу относительно безопасно ставить только сервиспаки
    • NordCom
      Большое спасибо! Через это меню удалось зайти в меню. 95148->MOD
    • Danil89nur
      Доброе время суток. Столкнулся с проблемой на новой работе. Много деталей у который в свойствах отсутствует раздел "Материал" и приходится каждый раз вручную заходить туда, создавать раздел и выбирать там ""SW-Material@Name.SLDPRT". Возможно кто-то знает, либо сможет помочь с написанием простенького макроса, при нажатии на который в свойствах детали будет создаваться необходимый раздел и в нем сразу написан выбранный материал (желательно, чтоб там было указано сразу наименование материала, а не формула для его получения ""SW-Material@Name.SLDPRT"). Пытался самостоятельно через ChatGPT, но так как в програмировании я 0, то ничего не получилось)
    • Bot
      Коллеги, Благодарю вас за интерес к проекту электронной энциклопедии в области инженерного программного обеспечения PLMpedia, который более 15 лет развивался группой компаний ЛЕДАС. Представленный ниже скриншот передаёт содержание и структуру базы данных энциклопедии, накопленной за эти годы: именно такую начальную страницу, можно было до сегодняшнего дня увидеть, придя по адресу https://plmpedia.ru/ В последние несколько лет ЛЕДАС особенно интенсивно и результативно вкладывает все ресурсы в развитие своего основного бизнеса: см. ниже «О компании ЛЕДАС». Сегодня я с некоторым сожалением констатирую, что у компании ЛЕДАС более нет возможности отвлекать ресурсы своих сотрудников на некоммерческий (фактически волонтерский) проект PLMpedia. Вся база данных ресурса может быть безвозмездно передана любому юридическому или физическому лицу с единственным условием: наш преемник должен будет публично объявить о состоявшейся передаче и взятии на себя [...] View the full article
    • gudstartup
      @NordCom  у вас наверное это так происходит читайте этот раздел itnc_530.pdf
    • fenics555
      интересный индус. А нового то чего?
    • gudstartup
      откудова качаете мне интересно?
    • ДОБРЯК
      Совсем забыл про собственные вектора       собственный тон частота           0.013                        1   Расчет собственных форм и частот   1         1   7.0711E-01   0.0000E+00   0.0000E+00   0.0000E+00   0.0000E+00   0.0000E+00   1         2   7.0711E-01   0.0000E+00   0.0000E+00   0.0000E+00   0.0000E+00   0.0000E+00       собственный тон частота       15910.75                         2   Расчет собственных форм и частот   1         1   7.0711E-01   0.0000E+00   0.0000E+00   0.0000E+00   0.0000E+00   0.0000E+00   1         2  -7.0711E-01   0.0000E+00   0.0000E+00   0.0000E+00   0.0000E+00   0.0000E+00        
    • gudstartup
      так я это и написал
×
×
  • Создать...