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

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

Добрый день, пытаюсь потихоньку освоить Api начал учить с C# сейчас столкнулся с проблемой сохранения детали в формате DXF. Понял что при сохранении детали в dxf, надо сначала создать чертеж и перенести на него вид и уже этот чертеж с этим видом сохраняется в dxf формате. Не могу перенести нужный вид на лист от слова совсем, за это отвечает CreateDrawViewFromModelView3, но как правильно им пользоваться не понимаю.

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


37 minutes ago, Vladimiir said:

Добрый день, пытаюсь потихоньку освоить Api начал учить с C# сейчас столкнулся с проблемой сохранения детали в формате DXF. Понял что при сохранении детали в dxf, надо сначала создать чертеж и перенести на него вид и уже этот чертеж с этим видом сохраняется в dxf формате. Не могу перенести нужный вид на лист от слова совсем, за это отвечает CreateDrawViewFromModelView3, но как правильно им пользоваться не понимаю.

https://www.codestack.net/solidworks-api/import-export/dwg-export-cleanup/

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

Добрый день, пытаюсь потихоньку освоить Api начал учить с C# сейчас столкнулся с проблемой сохранения детали в формате DXF.

Ознакомьтесь с готовыми макросами:

https://cccp3d.ru/search/?q=макрос dxf&quick=1&type=forums_topic&nodes=25

 

https://cccp3d.ru/search/?&q=макрос развёртка&type=forums_topic&nodes=25&search_and_or=and&sortby=relevancy

 

Или с примером в справке:

https://help.solidworks.com/2010/english/api/sldworksapi/export_part_to_dwg_example_csharp.htm

 

https://help.solidworks.com/SearchEx.aspx?query=Flat-Pattern dxf&version=2010&lang=english,enu&prod=api

 

 

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

Добрый день. Никто не сталкивался с чтением свойств сварных швов и скругленных швов?

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

Добрый день. Никто не сталкивался с чтением свойств сварных швов и скругленных швов?

Да.

 

з.ы. какой вопрос - такой ответ.

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

@nicomed Уже хорошо... Требуется прочитать длину сварного шва, катет, массу сварки... и после математической обработки записать в свойства конфигурации. Не получается достучаться до свойств сварных швов в папке сварных швов (weldfolder). Если есть возможность, покажите код для получения свойств.. Спасибо.

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

Саму папку сварных швов я получал так:

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

string WELD_TYPE = "CosmeticWeldBead";

ModelDoc2 model;

foreach (var item in model.FeatureManager.GetFeatures(false))
    {
        if ((item as Feature).GetTypeName2().Equals(WELD_TYPE))
        {
            ICosmeticWeldBeadFeatureData swWeldFeatureData = (item as Feature).GetDefinition();
            ICosmeticWeldBeadFolder swWeldFolder = (CosmeticWeldBeadFolder)swWeldFeatureData.GetWeldBeadFolder();
        }
    }

.. а далее читаем какие надо свойства .

 

Ссылка на сам интерфейс в SolidWorks API Help

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

Здравствуйте. Как полностью убрать процесс excel? (В excel записываю данные из solida) books закрываю и nothing,  sheet nothing, excel quit и nothing. Но все равно оставшийся процесс приходиться удалять через диспетчер задач.

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

Здравствуйте. Как полностью убрать процесс excel? (В excel записываю данные из solida) books закрываю и nothing,  sheet nothing, excel quit и nothing. Но все равно оставшийся процесс приходиться удалять через диспетчер задач.

 

 

Я бы попробовал начать с excel quit

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

Здравствуйте. Как полностью убрать процесс excel? (В excel записываю данные из solida) books закрываю и nothing,  sheet nothing, excel quit и nothing. Но все равно оставшийся процесс приходиться удалять через диспетчер задач.

У меня (c#) еще есть такая строка после закрытия каждого объекта: Marshal.ReleaseComObject( sheet ); (вместо sheet  подставить book потом  excelApp).

 

З.Ы. Я использую библиотеку: Microsoft.Office.Interop.Excel;

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

Т. е. сначало выйти из excel а потом sheet books application is nothing

Метод "научного тыка" - главный метод в работе. Пробуйте разные варианты, пока не получится желаемое.

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

повторю. Вы можете обращаться к excel через application, создавая свой объект,  или с помощью встроенных опций SW, таких как, например, swModel.InsertFamilyTableEdit. В последнем случае как правило проблем с закрытием окна Excel не возникает, они возникают в первом. И вот тут надо четко представлять, как работает оконный интерфейс Windows. Прежде всего нужно уяснить, что создаваемая вами книга Excel вовсе не обязательно будет создана в новом окне (процессе) windows. Она может быть открыта в уже работающем процессе.  и тогда закрывать ее надо через обращение к этому процессу (pid которого вам не известен). Строгий механизм закрытия созданного вами листа книги excel должен пройти через поиск окна процесса Excel, в котором открыта ваша книга и поиск в этом окне процесса вашей книги, помятуя то, что в одном процессе могут быть открыто несколько книг... И помните, я уже писал, мелкомягкие в последних версиях windows додумались до гениального - они изменили имя окна процесса Microsoft Excel  на просто Excel. Я затрудняюсь подобрать формулировку этому действию. Да, разумеется, стоит помнить, что при поиске окна процесса в окнах процессов могут быть еще и дочерние окна...

Изменено пользователем v-david
Ссылка на сообщение
Поделиться на других сайтах

 День добрый.

Занялся немного штриховкой. Накропал "рыбу", вроде как, работающую в полуавтомате ( для правки штриховки надо кликнуть на каждую штриховку на чертеже). Хочется добиться автоматизации, но что-то "не выходит каменный цветок".

Может кто доведет до автоматической правки штриховок.

 

Код не рефакторил, там godlike method.

 

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

            if (selMgr.GetSelectedObjectType3(1, -1) == (int) swSelectType_e.swSelFACES)
            {
                Face ff = selMgr.GetSelectedObject6(1, -1);
                Entity en = (Entity)ff;
                Component2 c = en.IGetComponent2();
                ComponentModel findedModel = ComponentService.FindModel(windowVM.OneLevelComponents.ToList(), c); // Из ранее сформированного списка компонентов нахожу выбранный
                if (findedModel == default)
                {
                    return;
                }
                string message = "Имя: " + findedModel.Name;

                dynamic uv = ff.GetUVBounds();
                double cU = (uv[0] + uv[1]) / 2;
                double cV = (uv[2] + uv[3]) / 2;

                if (view.GetFaceHatchCount() > 0)
                {
                    Body2 b = ff.GetBody();
                    if (b.GetFeatureCount() > 0)
                    {
                        Feature sfeature = b.GetFeatures()[0];
                        Entity sentity = (Entity)sfeature;
                        foreach (FaceHatch fh in view.GetFaceHatches())
                        {
                            Body2 hbody = fh.Face.GetBody();
                            if (hbody.GetFeatureCount() > 0)
                            {
                                Feature hfeature = hbody.GetFeatures()[0];
                                Entity hentity = (Entity)hfeature;

                                if (swApp.IsSame(sentity, hentity) == 1)
                                {
                                    dynamic uvC = fh.Face.GetUVBounds();
                                    double cUC = (uvC[0] + uvC[1]) / 2;
                                    double cVC = (uvC[2] + uvC[3]) / 2;
                                    if (cU == cUC && cV == cVC)
                                    {
                                        {
                                            fh.UseMaterialHatch = false;
                                            fh.Scale2 = findedModel.Scale;
                                            fh.Angle = findedModel.Angle / 57.3;
                                        }
                                        message += ";  Pattern: " + fh.Pattern + "; Scale: " + fh.Scale2 + "; Angle: " + (fh.Angle * 57.3) + "°;";
                                    }
                                }
                            }
                            else
                            {
                                message += " NOT FOUND";
                            }
                        }
                    }
                    else
                    {
                        message += " - null";
                    }
                }
                SetInfo(message); // просто метод для вывода информации на UI
            }

 

Hatch0.0.0.1.zip

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

День добрый. Возник вопрос.

 

Под спойлером метод.

Если  запустить его, при открытом чертеже СВ, содержащем виды со штриховками (не вручную нарисованные) , то вывод в консоль будет разительно отличаться, а именно - во второй раз вызов метода view.GetVisibleComponentCount() проигнорирует все рассеченные компоненты.

Может кто знает как как изменить код что бы не происходила "порча" данных в чертеже?

Причем, похоже, это происходит на разрезах. Местные вырывы, вроде как работают более-менее корректно.

 

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

        public void EditFaceHatches()
        {
            DrawingDoc drw = SwUtils.GetDrawing(); // Получаем чертеж
            View view = drw.GetFirstView();
            while (view != null)
            {
                if (view.Type == (int)swDrawingViewTypes_e.swDrawingSheet)
                {
                    view = view.GetNextView();
                    continue;
                }
                Debug.Print("Read view: " + view.Name);
                int compCount = view.GetVisibleComponentCount(); // первый вызов
                Debug.Print("   visible comps before: " + compCount);
                if (view.GetFaceHatchCount() > 0)
                {
                    foreach (FaceHatch fhatch in view.GetFaceHatches())
                    {
                        fhatch.UseMaterialHatch = false;
                        fhatch.Angle = fhatch.Angle + (10 / 57.3);
                    }
                }
                compCount = view.GetVisibleComponentCount(); // второй вызов
                Debug.Print("   visible comps after: " + compCount);
                Debug.Print("");
                view = view.GetNextView();
            }
        }

 

 

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

Сам спросил - сам ответил :smile:.

Помогло использование drw.ForceRebuild() после редактирования штриховок.

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

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

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

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

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

  Разрешено не более 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
      так я это и написал
×
×
  • Создать...