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

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

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

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 пользователей

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




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