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

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

писал давно, сейчас не могу проверить. Если что не так - напиши, найду рабочий вариант

25 Весь лист собрать в папку ''ИМЯ СБОРКИ - DXF''.swp

а по первому пункту в комплексе сделать такое даже не мечтай, все равно придется допиливать ручками. Могу только сказать сформируй свой шаблон спецификации и сделай шаблоны выносок со ссылками на свойства

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


Всем привет.

Есть кто-нибудь, кому не лень, объяснить мне малохольному, как вставить эскиз на грань?

Имеется переменная типа SldWorks.Face2, и ней та самая грань, попавшая туда ранее...

Задача: выдавить в центре этой грани бобышку... ну, или хотя бы как выбрать эту грань, чтобы потом на неё вставить эскиз.. Дальше я сам попробую.

Спасибо.

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

Есть кто-нибудь, кому не лень, объяснить мне малохольному, как вставить эскиз на грань?

Используем справку, ищем необходимое в русской справке:

https://help.solidworks.com/2018/russian/SolidWorks/sldworks/t_Sketching_on_the_Face_of_a_Part.htm

меняем язык измением адреса ссылки или смотрим адрес ссылки:

https://help.solidworks.com/2018/english/SolidWorks/sldworks/t_Sketching_on_the_Face_of_a_Part.htm

 

15 часов назад, andrew15x5 сказал:

Имеется переменная типа SldWorks.Face2, и ней та самая грань, попавшая туда ранее...

Задача: выдавить в центре этой грани бобышку... ну, или хотя бы как выбрать эту грань, чтобы потом на неё вставить эскиз.. Дальше я сам попробую.

Ищем выше найденной в справке по API:

https://help.solidworks.com/SearchEx.aspx?query=Sketching on the Face of a Part&version=2010&lang=english,enu&prod=api

и вероятно находим нужный пример из справки:

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

 

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

@Kelny , большое спасибо Вам за подсказку!

Пытаюсь состряпать макрос, чтобы автоматизировать себе работу, и Вы мне очень помогли.

Правда, я ещё только в начале.))

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

День добрый.

Есть непонятность с матрицами трансформации из модели в вид.

Чего хочется: при выборе видимого ребра (Edge), его скрыть, а на его месте нарисовать, для начала, одну линию. ( про метод SketchManager::SketchUseEdge3 знаю ).

 

Для начала рассматриваем случаи, когда вид на листе расположен без выравнивания ( что бы не лезть еще и в матрицы поворота вида относительно листа ).

 

Полазив по интернету (хелп SW и сайт Codestack) набросал код (C#) :

 

 

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

            ModelDoc2 modelDoc = swApp.ActiveDoc;
            SelectionMgr sMgr = modelDoc.ISelectionManager;
            Edge selEdge = sMgr.GetSelectedObject6(1, -1) as Edge;

            Debug.Print("Sel in BreakLine Type: " + (swSelectType_e)sMgr.GetSelectedObjectType3(1, -1));

            MathTransform mt = null;
            MathUtility mU = swApp.GetMathUtility();
            #region Получение MathTransform View_To_Model
            View view = sMgr.GetSelectedObjectsDrawingView2(1, 0);
            mt = view.ModelToViewTransform;
            #endregion

            double[] vTransform = mt.ArrayData;
            Debug.Print("-----------");

            Debug.Print("    Rotate (" + vTransform[0].ToString("###0.0#####") + " " + vTransform[1].ToString("###0.0#####") + " " + vTransform[2].ToString("###0.0#####"));
            Debug.Print("            " + vTransform[3].ToString("###0.0#####") + " " + vTransform[4].ToString("###0.0#####") + " " + vTransform[5].ToString("###0.0#####"));
            Debug.Print("            " + vTransform[6].ToString("###0.0#####") + " " + vTransform[7].ToString("###0.0#####") + " " + vTransform[8].ToString("###0.0#####") + ")");
            Debug.Print("    Scale " + vTransform[12].ToString("###0.0#####") +")");
            Debug.Print("    Translate " + vTransform[9].ToString("###0.0#####") + " " + vTransform[10].ToString("###0.0#####") + " " + vTransform[11].ToString("###0.0#####"));

            
            var sEva = new double[3];
            var eEva = new double[3];

            #region Получение крайних точек EDGE с использованием CURVE
            //var cParam = ee.GetCurveParams3();
            //sEva[0] = cParam.StartPoint[0];
            //sEva[1] = cParam.StartPoint[1];
            //sEva[2] = cParam.StartPoint[2];

            //eEva[0] = cParam.EndPoint[0];
            //eEva[1] = cParam.EndPoint[1];
            //eEva[2] = cParam.EndPoint[2];
            #endregion

            #region Получение крайних точек EDGE с использованием VERTEX
            Vertex srV = selEdge.GetStartVertex();

            sEva[0] = srV.GetPoint()[0];
            sEva[1] = srV.GetPoint()[1];
            sEva[2] = srV.GetPoint()[2];
            Vertex enV = selEdge.GetEndVertex();

            eEva[0] = enV.GetPoint()[0];
            eEva[1] = enV.GetPoint()[1];
            eEva[2] = enV.GetPoint()[2];

            #endregion

            Debug.Print("");
            Debug.Print("    StartPoin  (" + sEva[0].ToString("###0.0#####") + " " + sEva[1].ToString("###0.0#####") + " " + sEva[2].ToString("###0.0#####") + ")");
            Debug.Print("    EndPoin (" + eEva[0].ToString("###0.0#####") + " " + eEva[1].ToString("###0.0#####") + " " + eEva[2].ToString("###0.0#####") + ")");
            Debug.Print("");

            //(modelDoc as DrawingDoc).HideEdge();

            MathPoint sPt = mU.CreatePoint(sEva);
            sPt = sPt.MultiplyTransform(mt);

            MathPoint ePt = mU.CreatePoint(eEva);
            ePt = ePt.MultiplyTransform(mt);

            (modelDoc as DrawingDoc).ActivateView(view.Name);

 

            SketchManager skM = modelDoc.SketchManager;
            skM.CreateLine(
                (sPt.ArrayData[0]  - vTransform[9]) / vTransform[12], (sPt.ArrayData[1] - vTransform[10]) / vTransform[12], (sPt.ArrayData[2] - vTransform[11]) / vTransform[12],
                (ePt.ArrayData[0] - vTransform[9]) / vTransform[12], (ePt.ArrayData[1] - vTransform[10]) / vTransform[12], (ePt.ArrayData[2] - vTransform[11]) / vTransform[12]);

 

            modelDoc.ClearSelection2(true);

 

 

Но, что-то наложения новой линии , с выбранным ребром не происходит.

Может кто подскажет где я чего недопонял ?

 

 

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

Здравствуйте, подскажите в чем может крыться проблема?

При попытке получить имена конфигураций сборки:

Object variable or With variable not set/

когда этот фрагмент кода был в головной - все нормально, для детали тоже все ОК.

 Sub SaveWithOutDrw (swModel As SldWorks.ModelDoc2...

    Dim vConfigName As Variant
    vConfigName = swModel.GetConfigurationNames
   ...
 

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

Скрее всего пропустили

Set swConfigMgr = swModel.ConfigurationManagerconfig

поправлюсь:

Set swConfigMgr = swModel.ConfigurationManager

Код  был правильный. Такая функция существует (swModel.GetConfigurationNames). Надо смотреть, что передается в процедуру SaveWithOutDrw. Поставить точку останова на строке vConfigName = swModel.GetConfigurationNames и посмотреть чему равен swModel.

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

Код  был правильный. Такая функция существует (swModel.GetConfigurationNames). Надо смотреть, что передается в процедуру SaveWithOutDrw. Поставить точку останова на строке vConfigName = swModel.GetConfigurationNames и посмотреть чему равен swModel.

Да. Возможно, в начале процедуры не хватает

 

If swModel Is Nothing Then Exit Sub

 

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

Скрее всего пропустили

Set swConfigMgr = swModel.ConfigurationManagerconfig

поправлюсь:

Set swConfigMgr = swModel.ConfigurationManager

То есть даже не обращаясь напрямую к swConfigMgr это все равно имеет значение? 

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

То есть даже не обращаясь напрямую к swConfigMgr это все равно имеет значение? 

Save Configuration Data Example (VBA) - 2019 - SOLIDWORKS API Help

GetConfigurationNames Method (IModelDoc2) - 2019 - SOLIDWORKS API Help

 

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

Всем привет, подскажите как получить количество сгибов в детали через VBA, в параметрах я могу добавить их, а напрямую как получить ?

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

небольшое замечание в продолжении о конфигурациях.

В примере по ссылке "Save Configuration Data (VBA)"  использован не самый удачный оператор:

                                      status = swModel.ShowConfiguration2(configName)

Он вызывает перестроение модели в очередную конфигурацию. Для исследования свойств очередной конфигурации в нем нет необходимости, т.е. можно ну очень существенно сократить время обработки. Надо всего лишь после активации очередной конфигурации повторить:

Set swCustPropMgr = swConfig.CustomPropertyManager

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

небольшое замечание в продолжении о конфигурациях.

В примере по ссылке "Save Configuration Data (VBA)"  использован не самый удачный оператор:

                                      status = swModel.ShowConfiguration2(configName)

Он вызывает перестроение модели в очередную конфигурацию. Для исследования свойств очередной конфигурации в нем нет необходимости, т.е. можно ну очень существенно сократить время обработки. Надо всего лишь после активации очередной конфигурации повторить:

Set swCustPropMgr = swConfig.CustomPropertyManager

 

Как я понимаю, 

ShowConfiguration2 

как раз и активирует (делает активной) очередную конфигурацию. С которой потом можно работать.

Почему он не удачный? Разве есть выбор?

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

Если у вас много конфигураций и вы хотите именно "посмотреть" их на экране, то да, этот оператор (Show)  ваш. Он "разворачивает" на экране деталь в выбранной вами конфигурации, но это занимает достаточно много времени. Если же вам нужно просто выяснить значение какого-то свойства некой конфигурации и совершенно не интересно как она выглядит, то вполне можно обойтись без "экранизации" этого действия. Что существенно экономит время. Что для этого нужно я уже писал постом выше - после активации нужной конфигурации повторить обращение к менеджеру свойств:  Set swCustPropMgr = swConfig.CustomPropertyManager и вы получите доступ в свойствам выбранной конфигурации без ее "экранизации"

Еще один ньюанс.

Если вам нужно удалить все конфигурации или группу, то существенно ускорить этот процесс можно не выбирая и удаляя их по одной, а, выделив все (в "дереве") :

I_Model.Extension.SelectByID2(ConfigNamesArray(i), "CONFIGURATIONS", 0, 0, 0, True, 0, Nothing, 0)  и потом  удалить хором "выделенные" (I_Model.EditDelete)

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

Если у вас много конфигураций и вы хотите именно "посмотреть" их на экране, то да, этот оператор (Show)  ваш. Он "разворачивает" на экране деталь в выбранной вами конфигурации, но это занимает достаточно много времени. Если же вам нужно просто выяснить значение какого-то свойства некой конфигурации и совершенно не интересно как она выглядит, то вполне можно обойтись без "экранизации" этого действия. Что существенно экономит время. Что для этого нужно я уже писал постом выше - после активации нужной конфигурации повторить обращение к менеджеру свойств:  Set swCustPropMgr = swConfig.CustomPropertyManager и вы получите доступ в свойствам выбранной конфигурации без ее "экранизации"

 

Допустим, но Вы пишите

13 часов назад, v-david сказал:

... после активации очередной конфигурации...

 

А как вы ее активируете?

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

А как вы ее активируете?

Может активация не правильное слово, может коллега имел ввиду выбор, например в цикле.

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

А как вы ее активируете?

А ее не надо активировать. @v-david имел в виду что идет обращение к CustomPropertyManager-у  конкретной конфигурации. И для чтения свойств КОНФИГУРАЦИИ этого достаточно.

Справка: ТЫЦ

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

Может активация не правильное слово, может коллега имел ввиду выбор, например в цикле.

 

28 минут назад, nicomed сказал:

А ее не надо активировать. @v-david имел в виду что идет обращение к CustomPropertyManager-у  конкретной конфигурации. И для чтения свойств КОНФИГУРАЦИИ этого достаточно.

Справка: ТЫЦ

 

Он написал, что

 

14 часов назад, v-david сказал:

небольшое замечание в продолжении о конфигурациях.

В примере по ссылке "Save Configuration Data (VBA)"  использован не самый удачный оператор:

                                      status = swModel.ShowConfiguration2(configName)

 

Вот и почему в примере, получающим превью конфигурации, использован не самый удачный оператор? Для этих целей есть более удачные?

Он же с этого начал и подтвердил свою мысль тем, что как еще можно получать свойства из конфигурации. Вот я и не понял связки.

Начал с одного, а кончил другим?

Я не имею ничего против, просто хотел для себя уяснить, вдруг я чего-то не понял.

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

Правильно говорят: прежде, чем что-то обсуждать договоритесь о понятиях... Коллеги, я не профессионал в SW и тем более в программировании, поэтому прошу извинить за неточность формулировок и спасибо, что вы поняли мои корявые пояснения

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • Jesse
      За прошедшее десятилетие (ухх, как же время летит!) уже были вопросы про локальные пластические деформации в статическом расчете и про локальные формы потери устойчивости. В обоих случаях на все эти "локальности" можно подзабить. В первом случае у меня даже шаблонная фразочка есть, которую я в отчёты вставляю, ссылаясь на ГОСТ Р 57700.10-2018. Это всё хорошо. Но что у нас с цикликой? К примеру, есть вал насоса, который в процессе работы изгибается. В валу есть шпоночные отверствия, всякие переходы вплоть до радиуса R=0.25 мм и прочая мелкая ересь, где развиваются большие напряжения, превышающие предел выносливости материала.. В то время как в основной толще материала напряжения на порядок меньше предела выносливости и там всё ок. Как быть в этой ситуации? Ведь разрушение в процессе многоцикловой усталости происходит в результате зарождения и роста микротрещин. То есть по идее в этом радиусе R=0.25 мм трещинка пойдёт и разрушит весь весь вал за условные 10^12 циклов? Или не разрушит? Если не разрушит, то как обосновать, что не разрушит? С точки зрения физики/МДТТ мы знаем, что в статике у пластичного материала в малой области превысится предел текучести, появится небольшая область течения, и на этом всё. "Пластика" дальше не пойдёт. МОжно даже просчитать и проверить для успокоения души, что пластических шарниров не будет. Но в многоцикловой усталости мы ничего расчетом проверить не можем как все эти "неприятные локальности" себя поведут за 10^12 циклов. Только кривые Веллера и т.п. Ну и результаты упругого расчета..   Какой эмпирико-нормативный опыт есть у человечества, чтоб показать, что разрушения и катастрофического роста трещины НЕ произойдёт за большое кол-во циклов, если в небольшом объеме материала по результатам упругого расчета напряжения превышают предел выносливости?
    • malvi.dp
    • Srgwell
      Библиотеки не все подключены. Там другие какие то были включены. При чем сбиваются иногда
    • Snake 60
      @clavr  Попробовал в 2024-м так и есть, не хочет перепривязывать размеры, настройки не нашел :(
    • Snake 60
    • gudstartup
      @Alexey8107 учитывая то что иногда станок все же включается то похоже на плохой контакт или высохшую емкость у нас на старом svm альфа были случайные ошибки 8 9 именно из за емкости. фанук их умудрился так замаскировать между  двумя  разъемами еле нашли,,,
    • vad0000
      DELEM предлагает такой метод Приходит партия металла, Вы в ЧПУ вводите уголок 100*100., и получаете развёртку. Изготавливаете ее, и далее гнете. Одна сторона у Вас получится 100, если конечно правильно настроен упор, а другая никогда не получится 100, либо больше, либо меньше. Cybelec для каждого материала предлагает 10 различных поправок. Т.е. согнул один раз уголок, и получил поправку на всю партию металла. Пришла новая партия, согнули ещё один уголок. Все понятно?
    • paxa074_ko
      Ребят, помогите, пожалуйста, уже весь интернет облазил, но решения не нашел. Может кто встречался с подобным? SolidWorks 2021 Routing. По итогу создания кабеля (рисунок 1), хочу сделать его чертеж, однако, используя функцию "Развернуть маршрут", вижу просто эскиз провода (рисунок 2), сам провод пропадает и как следствие на чертеже просто линия вместо провода (рисунок 3) (а это уже как-то колхозно, хоть и длину все-равно высчитывает правильно).   Не удается вставить изображение через ссылку, поэтому вот сылка на гугл диск, там также исходники файлов: https://drive.google.com/drive/folders/1u9o9FnandAdWyL7jw-EZ62UXDicFK8yx?usp=drive_link
    • Srgwell
    • zwg
      Размер в 1 мм я приводил для понимания проблемы. В реальности, вопрос был именно в корректировке развертки (точек оси Х) в соответствии с нашим металлом, а не DIN.  Я так понимаю, корректировка значения в МАТЕРИАЛ CYBELEC решит эту проблему...  А как подобную  корректировку выполнить для Y? Например для 1мм сейчас сходу станок дает угол 94... 
×
×
  • Создать...