Jump to content

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


Recommended Posts

ewgen30

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

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

 

ZB9K3jB

Link to post
Share on other sites


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

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

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

 

ZB9K3jB

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

Link to post
Share on other sites
nicomed
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
                );
        }

 

Edited by nicomed
  • Нравится 1
Link to post
Share on other sites
brigval
49 минут назад, nicomed сказал:

GetActiveConfiguration

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

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

ShowConfiguration2

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

Link to post
Share on other sites
nicomed
55 минут назад, brigval сказал:

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

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




ShowConfiguration2

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

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

TestingApp.exe

Edited by nicomed
Link to post
Share on other sites
brigval
5 минут назад, nicomed сказал:

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

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

Link to post
Share on other sites
ewgen30
19 часов назад, nicomed сказал:

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

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

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

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

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

 

Link to post
Share on other sites
nicomed
22 минуты назад, ewgen30 сказал:

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

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

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

 

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

Link to post
Share on other sites
ewgen30
6 минут назад, nicomed сказал:

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

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

Link to post
Share on other sites
brigval
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

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

  • Нравится 1
Link to post
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.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  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.

  • Recently Browsing   0 members

    No registered users viewing this page.




×
×
  • Create New...