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

Миниатюры в зависимости от конфигурации при экспорте в 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 пользователей

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




×
×
  • Создать...