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

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

1 час назад, Mr.Anderson сказал:

Не получается. Массив names не формируется, null.

Мой код:

Так этим кодом вы смотрите свойства в текущей сборке, где их похоже нет, а не свойства вставленных в неё компонентов.

 

До свойств файлов без их открытия может достучаться через API DocumentManager, но для этого инструмента нужен ключ от разработчиков, а для этого нужна действующая подписка на сопровождение Solidworks.

 

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

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


чтобы "достучаться" до свойств i-го компонента в сборке не открывая его надо прежде всего обратиться именно к нему как к компоненту (выделив его или найдя в процессе перебора всех существующих) и, как тут правильно уже указали, передать его в объектную модель ModelDoc2. И только тогда вы получите доступ к его свойствам. Т.е. нужно четко понимать, что объект "компонент" обладает свойствами "компонента сборки", а не свойствами самого исходного элемента. А вот передав его в ModelDoc2 вы как раз и получаете доступ к, если грубо, его физическим свойствам. И правильно, пустой массив свойств даст ошибку, поэтому в примере и стоит перед обращением к массиву "on error resume...". 

Насчет кучи методов. Как вы думаете, за время жизни этой программы сколько поколений программистов сменилось? И было ли у них желание разбираться с проделками предыдущих коллег? Я думаю проще было написать аналогичный кусок, чем ковыряться в ... 

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

var names = swCustProp.GetNames();

сталкивался с таким, что был разница что используется .NET Framework или .NET Core (.NET).

Может еще может зависеть от заданной версии языка.

Насколько помню при ФРЕЙМВОРКЕ такое приведение типов работало норм, а при КОРЕ я делал явное приведение:

names получал как object , а потом, явно, приводил его к массиву строк.

 

 

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

Спасибо большое откликнувшимся!

Суть "проблемы" состояла в следующем: надо указывать конкретное имя конфигурации, пустое поле как в примерах не прокатит.

Вместо swExtension.CustomPropertyManager("") необходимо ...CustomPropertyManager("Configuration1"). Для русскоязычной версии срабатывает CustomPropertyManager("По умолчанию"). Но лучше использовать подход с выбором текущей конфигурации, вместо имени, если конфигурация модели одна. Полный код вышел вот таким:

 

int errors   = 0;
int warnings = 0;
swApp             = (SldWorks) Activator.CreateInstance(Type.GetTypeFromProgID("SldWorks.Application"));
swApp.UserControl = false;
swApp.Visible     = true;
SolidWorks.Interop.sldworks.Frame pFrame = (SolidWorks.Interop.sldworks.Frame) swApp.Frame();
pFrame.KeepInvisible = true;//Открывать экземпляр приложения в явном виде
ModelDoc2 swModel = (ModelDoc2)swApp.OpenDoc6("Путь к детали", (int)swDocumentTypes_e.swDocPART, (int)swOpenDocOptions_e.swOpenDocOptions_Silent, "", ref errors, ref warnings);
 
ModelDocExtension swModelDocExt = default(ModelDocExtension);
CustomPropertyManager swCustProp = default(CustomPropertyManager);//Менеджер свойств
bool status;
string val = "";
string valout = "";
 
swModelDocExt = swModel.Extension;
Configuration config = swModel.ConfigurationManager.ActiveConfiguration;//Выбираем активную конфигурацию модели
//swCustProp = swModelDocExt.CustomPropertyManager["По умолчанию"];//Можно писать имя конфигурации таким образом
swCustProp = swModelDocExt.CustomPropertyManager[config.Name];//Автоматически выбрали имя текущей конфигурации
var names = swCustProp.GetNames();
foreach (string name in names)
{
	status = swCustProp.Get4(name, false, out val, out valout);
 
	Debug.Print(name + ": " + valout);//Выбрали именно valout - это вычисленное значение свойства, подходит для массы, например, где val покажет уже не то. name - имя свойства
	//Debug.Print("Value:                    " + val);
	//Debug.Print("Evaluated value:          " + valout);
	//Debug.Print("Up-to-date data:          " + status);
}
Ссылка на сообщение
Поделиться на других сайтах

А есть у кого-то стабильно работающий код по чтению спецификаций с листа (slddrw), желательно с явным сопоставлением ссылок на модели деталей? Можно сопоставление путей к файлам деталей сборки.

Найденный мной в примерах API 2018 код работает через раз и через ненужные костыли. Подозреваю, что из-за явного указания всевозможных "DrSheet" и "BomFeat" не каждая спецификация читается. Хотелось бы что-то более прозрачное типа получение таблицы, чтение строки, получение ссылки на связанную модель, получение количества.

 

DrawingDoc swDraw = default(DrawingDoc);
swDraw = (DrawingDoc)swModelSpec;
bool bIsFirstSheet = false;
bIsFirstSheet = true;
Feature swFeat = default(Feature);
BomFeature swBomFeat = default(BomFeature);
swFeat = (Feature)swModelSpec.FirstFeature();
while ((swFeat != null))
{
    string type = swFeat.GetTypeName();
    if ("DrSheet" == swFeat.GetTypeName())
    {
        XMLfile.Add("    <SHEET>");
        XMLfile.Add("        <NAME>" + swFeat.Name + "</NAME>");
        bIsFirstSheet = false;
    }
    if ("BomFeat" == swFeat.GetTypeName())
    {
        swBomFeat = (BomFeature) swFeat.GetSpecificFeature2();
        ProcessBomFeature(swApp, swModel, swBomFeat, XMLfile, Спецификация_Solid);//функция непосредственного чтения таблицы
    }
    swFeat = (Feature) swFeat.GetNextFeature();
    if ((swFeat != null))
    {
        if ("DrSheet" == swFeat.GetTypeName() & !bIsFirstSheet) { XMLfile.Add("    </SHEET>"); }
    }
}

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

Всем экспертам привет. Подскажите пожалуйста. Мне нужно выделив заметку выйти  на объект вида модели (SldWorks.View). Заметка прикреплена к компоненту. Сам компонент я понимаю как получить. А вот с помощью какого метода выйти на вид листа чертежа мне не понятно.

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

Боюсь, что прямой связи заметки с видом скорее всего нет, хотя могу ошибаться. Если, конечно, заметка не ссылается на какое-либо свойство модели. Но зато у заметки есть "координаты" на листе и по ним можно попробовать найти в область какого вида она попадает. А почему вы не хотите выделить сразу вид, а не заметку?

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

Спасибо.  Уже придумал как это сделать и текущую задачу закрыл. Это делается двойным перебором всех видов модели и находящихся в них прикрепленных заметках. В качестве сравнения я использовал имя заметки. А вообще, это была не задача, а подзадача. Я хотел автоматизировать довольно упоротый процесс изменения ссылки заметки с дочерней детали на ее верхний уровень узла сборки. Руками это долго, Вот как в хелпе предлагается https://help.solidworks.com/2021/russian/SolidWorks/sldworks/t_link_custom_prop_sub.htm

Ссылка на сообщение
Поделиться на других сайтах
  • 1 месяц спустя...

Доброго дня! Помогите преобразовать макрос. Есть макрос в примерах:

https://help.solidworks.com/2019/english/api/sldworksapi/Get_All_Sketch_Segments_in_Drawing_Template_Example_VB.htm?verRedirect=1

Этот макрос работает в чертеже и перебирает все сегменты эскиза рамки. Что нужно изменить, чтобы перебирались сегменты эскиза, который я выделил в дереве.

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

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

https://help.solidworks.com/2019/english/api/sldworksapi/get_lines_in_sketch_example_vb.htm?_gl=1*mdrizt*_up*MQ..*_ga*ODA2ODY1MTYxLjE3MTEyMjYzNzM.*_ga_XQJPQWHZHH*MTcxMTIyNjM3Mi4xLjEuMTcxMTIyNjQ2NC4wLjAuMA..

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

Добрый день. Уже несколько дней пытаюсь найти на просторах инета макрос, позволяющий менять материал выделенных деталей в сборке. У меня есть макрос это делающий, но только в открытой детали, заставить его работать в сборке не получается. Может кто поделится ссылкой или часть кода? Спасибо.

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

Добрый день. Уже несколько дней пытаюсь найти на просторах инета макрос, позволяющий менять материал выделенных деталей в сборке. У меня есть макрос это делающий, но только в открытой детали, заставить его работать в сборке не получается. Может кто поделится ссылкой или часть кода? Спасибо.

Полного примера кода нет, а вообще, Вам, надо смотреть в сторону интерфейса ISelectionMgr .

Набросок кода, в какую сторону смотреть ( С# )

                SelectionMgr selectionMgr = (swApp.ActiveDoc as ModelDoc2).SelectionManager;
                int selCount = selectionMgr.GetSelectedObjectCount2(-1);
                Console.WriteLine($"Выделено {selCount} объектов.");
                
                if(selCount > 0)
                {
                    for (int i = 1; i <= selCount; i++)
                    {
                        Console.WriteLine($"obj type: {(swSelectType_e)selectionMgr.GetSelectedObjectType3(i, -1)}");
                        Component2 selComponent = selectionMgr.GetSelectedObjectsComponent(i);
                        Console.WriteLine($"comp    : {selComponent.Name2}");
                    }
                }

Проверок на нули и неверные типы здесь нет, это уже сами ....

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

Добрый день. Уже несколько дней пытаюсь найти на просторах инета макрос, позволяющий менять материал выделенных деталей в сборке. У меня есть макрос это делающий, но только в открытой детали, заставить его работать в сборке не получается. Может кто поделится ссылкой или часть кода? Спасибо.

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

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

using System;
using System.Collections.Generic;

using System.Windows.Forms;

using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;

namespace ChangeMaterial
{
    public class WorkSW
    {
        SldWorks m_swApp;
        bool m_thisConfig;
        public WorkSW(SldWorks swApp, bool thisConfig)
        {
            m_swApp = swApp;
            m_thisConfig = thisConfig;
        }
        public void ChangeMaterialComponent(string pathBaseMaterial, string newMaterial) 
        {
            // pathBaseMaterial - путь или имя базы материалов
            // newMaterial - имя материала из базы
             
            ModelDoc2 swModel = m_swApp.IActiveDoc2;
            if (swModel == null)
            {
                string message = "Загрузите документ SolidWorks!";
                MessageBox.Show(message, "Warning!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            int docType = swModel.GetType();

            switch (docType)
            {
                case (int)swDocumentTypes_e.swDocPART:
                    ChangeMaterialInPart(swModel, pathBaseMaterial, newMaterial);
                    break;
                case (int)swDocumentTypes_e.swDocASSEMBLY:
                    ChangeMaterialInAssembly(swModel, pathBaseMaterial, newMaterial);
                    break;
                default:
                    {
                        string message = "Функция выполняется только с деталями (*.SLDPRT) и сборками (*.SLDASM)!";
                        MessageBox.Show(message, "Warning!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        return;
                    }
            }
        }

        private void ChangeMaterialInAssembly(ModelDoc2 swModelAsm, string pathBaseMaterial, string newMaterial)
        {
            List<PathConfig> listPathConfig = new List<PathConfig>();

            SelectionMgr swSelMgr = swModelAsm.ISelectionManager;
            int countObj = swSelMgr.GetSelectedObjectCount();
            if (countObj > 0)
            {
                for (int i = 1; i <= countObj; i++)
                {
                    Component2 swComponent = swSelMgr.IGetSelectedObjectsComponent2(i);
                    if (swComponent != null)
                    {
                        ModelDoc2 swModelComp = swComponent.IGetModelDoc();
                        if (swModelComp == null)
                            continue;
                        if (swModelComp.GetType() != (int)swDocumentTypes_e.swDocPART)
                            continue;

                        string pathModelComp = swModelComp.GetPathName();
                        string nameConfigComp = swComponent.ReferencedConfiguration;

                        bool bExist = TestExistComponent(listPathConfig, pathModelComp, nameConfigComp);
                        if(!bExist)
                        {
                            PathConfig pathConfig = new PathConfig();
                            pathConfig.Path = pathModelComp;
                            pathConfig.NameConfig = nameConfigComp;
                            listPathConfig.Add(pathConfig);
                        }
                    }
                }
            }

            int count = listPathConfig.Count;
            if(count > 0)
            {
                int iError = -1;
                int iWarning = -1;

                for (int i = 0; i < count; i++)
                {
                    PathConfig pathConfig = listPathConfig[i];
                    string path = pathConfig.Path;
                    string nameConfig = pathConfig.NameConfig;

                    ModelDoc2 swModel = m_swApp.OpenDoc6(path, (int)swDocumentTypes_e.swDocPART, (int)swOpenDocOptions_e.swOpenDocOptions_Silent,
                                                        nameConfig, ref iError, ref iWarning);
                    if (swModel == null)
                        continue;
                    if (iError != 0)
                        continue;

                    Configuration swConfig = swModel.IGetActiveConfiguration();
                    string nameActiveConfig = swConfig.Name;

                    string[] arrConfig = swModel.GetConfigurationNames() as string[];
                    if (arrConfig == null)
                        continue;

                    PartDoc swPart = swModel as PartDoc;
                    ChangeMaterialInPart(swPart, pathBaseMaterial, newMaterial, nameActiveConfig, arrConfig);

                    int iSaveError = (int)swFileSaveError_e.swGenericSaveError;
                    int iSaveWarning = (int)swFileSaveWarning_e.swFileSaveWarning_RebuildError;
                    bool bres = swModel.Save3((int)swSaveAsOptions_e.swSaveAsOptions_Silent, ref iSaveError, ref iSaveWarning);

                    m_swApp.CloseDoc(path);
                }
            }
        }

        private bool TestExistComponent(List<PathConfig> listTest, string path, string nameConfig)
        {
            for (int i = 0; i < listTest.Count; i++)
            {
                PathConfig pathConfig = listTest[i];
                string pathTemp = pathConfig.Path;
                string nameConfigTemp = pathConfig.NameConfig;
                if(string.Compare(path, pathTemp, true) == 0)
                {
                    if(string.Compare(nameConfig, nameConfigTemp, true) == 0)
                    {
                        return true;
                    }
                }
            }
            return false;
        }

        private void ChangeMaterialInPart(ModelDoc2 swModel, string pathBaseMaterial, string newMaterial)
        {
            IConfiguration swConfig = swModel.IGetActiveConfiguration();
            string nameActiveConfig = swConfig.Name;

            string[] arrConfig = swModel.GetConfigurationNames() as string[];
            if (arrConfig == null)
                return;            

            PartDoc swPart = swModel as PartDoc;
            ChangeMaterialInPart(swPart, pathBaseMaterial, newMaterial, nameActiveConfig, arrConfig);

            int iSaveError = (int)swFileSaveError_e.swGenericSaveError;
            int iSaveWarning = (int)swFileSaveWarning_e.swFileSaveWarning_RebuildError;
            bool bres = swModel.Save3((int)swSaveAsOptions_e.swSaveAsOptions_Silent, ref iSaveError, ref iSaveWarning); // после изменения материала сохранение файла детали.

        }

        private void ChangeMaterialInPart(PartDoc swPart, string pathBaseMaterial, string newMaterial, string nameActiveConfig, string[] arrConfig)
        {
            try
            {
                if (m_thisConfig) // материал меняется только у текущей конфигурация
                {
                    swPart.SetMaterialPropertyName2(nameActiveConfig, pathBaseMaterial, newMaterial);
                }
                else // материал меняется у всех конфигурация
                {
                    swPart.SetMaterialPropertyName2(nameActiveConfig, pathBaseMaterial, newMaterial);
                    for (int j = 0; j < arrConfig.Length; j++)
                    {
                        string tempConfig = arrConfig[j];
                        if (tempConfig.ToLower() != nameActiveConfig.ToLower())
                        {
                            swPart.SetMaterialPropertyName2(tempConfig, pathBaseMaterial, newMaterial);

                        }
                    }
                }
            }
            catch { }
        }
    }
}

public class PathConfig
{
    public string Path;
    public string NameConfig;
}

 

 

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

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

  Показать содержимое


using System;
using System.Collections.Generic;

using System.Windows.Forms;

using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;

namespace ChangeMaterial
{
    public class WorkSW
    {
        SldWorks m_swApp;
        bool m_thisConfig;
        public WorkSW(SldWorks swApp, bool thisConfig)
        {
            m_swApp = swApp;
            m_thisConfig = thisConfig;
        }
        public void ChangeMaterialComponent(string pathBaseMaterial, string newMaterial) 
        {
            // pathBaseMaterial - путь или имя базы материалов
            // newMaterial - имя материала из базы
             
            ModelDoc2 swModel = m_swApp.IActiveDoc2;
            if (swModel == null)
            {
                string message = "Загрузите документ SolidWorks!";
                MessageBox.Show(message, "Warning!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            int docType = swModel.GetType();

            switch (docType)
            {
                case (int)swDocumentTypes_e.swDocPART:
                    ChangeMaterialInPart(swModel, pathBaseMaterial, newMaterial);
                    break;
                case (int)swDocumentTypes_e.swDocASSEMBLY:
                    ChangeMaterialInAssembly(swModel, pathBaseMaterial, newMaterial);
                    break;
                default:
                    {
                        string message = "Функция выполняется только с деталями (*.SLDPRT) и сборками (*.SLDASM)!";
                        MessageBox.Show(message, "Warning!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        return;
                    }
            }
        }

        private void ChangeMaterialInAssembly(ModelDoc2 swModelAsm, string pathBaseMaterial, string newMaterial)
        {
            List<PathConfig> listPathConfig = new List<PathConfig>();

            SelectionMgr swSelMgr = swModelAsm.ISelectionManager;
            int countObj = swSelMgr.GetSelectedObjectCount();
            if (countObj > 0)
            {
                for (int i = 1; i <= countObj; i++)
                {
                    Component2 swComponent = swSelMgr.IGetSelectedObjectsComponent2(i);
                    if (swComponent != null)
                    {
                        ModelDoc2 swModelComp = swComponent.IGetModelDoc();
                        if (swModelComp == null)
                            continue;
                        if (swModelComp.GetType() != (int)swDocumentTypes_e.swDocPART)
                            continue;

                        string pathModelComp = swModelComp.GetPathName();
                        string nameConfigComp = swComponent.ReferencedConfiguration;

                        bool bExist = TestExistComponent(listPathConfig, pathModelComp, nameConfigComp);
                        if(!bExist)
                        {
                            PathConfig pathConfig = new PathConfig();
                            pathConfig.Path = pathModelComp;
                            pathConfig.NameConfig = nameConfigComp;
                            listPathConfig.Add(pathConfig);
                        }
                    }
                }
            }

            int count = listPathConfig.Count;
            if(count > 0)
            {
                int iError = -1;
                int iWarning = -1;

                for (int i = 0; i < count; i++)
                {
                    PathConfig pathConfig = listPathConfig[i];
                    string path = pathConfig.Path;
                    string nameConfig = pathConfig.NameConfig;

                    ModelDoc2 swModel = m_swApp.OpenDoc6(path, (int)swDocumentTypes_e.swDocPART, (int)swOpenDocOptions_e.swOpenDocOptions_Silent,
                                                        nameConfig, ref iError, ref iWarning);
                    if (swModel == null)
                        continue;
                    if (iError != 0)
                        continue;

                    Configuration swConfig = swModel.IGetActiveConfiguration();
                    string nameActiveConfig = swConfig.Name;

                    string[] arrConfig = swModel.GetConfigurationNames() as string[];
                    if (arrConfig == null)
                        continue;

                    PartDoc swPart = swModel as PartDoc;
                    ChangeMaterialInPart(swPart, pathBaseMaterial, newMaterial, nameActiveConfig, arrConfig);

                    int iSaveError = (int)swFileSaveError_e.swGenericSaveError;
                    int iSaveWarning = (int)swFileSaveWarning_e.swFileSaveWarning_RebuildError;
                    bool bres = swModel.Save3((int)swSaveAsOptions_e.swSaveAsOptions_Silent, ref iSaveError, ref iSaveWarning);

                    m_swApp.CloseDoc(path);
                }
            }
        }

        private bool TestExistComponent(List<PathConfig> listTest, string path, string nameConfig)
        {
            for (int i = 0; i < listTest.Count; i++)
            {
                PathConfig pathConfig = listTest[i];
                string pathTemp = pathConfig.Path;
                string nameConfigTemp = pathConfig.NameConfig;
                if(string.Compare(path, pathTemp, true) == 0)
                {
                    if(string.Compare(nameConfig, nameConfigTemp, true) == 0)
                    {
                        return true;
                    }
                }
            }
            return false;
        }

        private void ChangeMaterialInPart(ModelDoc2 swModel, string pathBaseMaterial, string newMaterial)
        {
            IConfiguration swConfig = swModel.IGetActiveConfiguration();
            string nameActiveConfig = swConfig.Name;

            string[] arrConfig = swModel.GetConfigurationNames() as string[];
            if (arrConfig == null)
                return;            

            PartDoc swPart = swModel as PartDoc;
            ChangeMaterialInPart(swPart, pathBaseMaterial, newMaterial, nameActiveConfig, arrConfig);

            int iSaveError = (int)swFileSaveError_e.swGenericSaveError;
            int iSaveWarning = (int)swFileSaveWarning_e.swFileSaveWarning_RebuildError;
            bool bres = swModel.Save3((int)swSaveAsOptions_e.swSaveAsOptions_Silent, ref iSaveError, ref iSaveWarning); // после изменения материала сохранение файла детали.

        }

        private void ChangeMaterialInPart(PartDoc swPart, string pathBaseMaterial, string newMaterial, string nameActiveConfig, string[] arrConfig)
        {
            try
            {
                if (m_thisConfig) // материал меняется только у текущей конфигурация
                {
                    swPart.SetMaterialPropertyName2(nameActiveConfig, pathBaseMaterial, newMaterial);
                }
                else // материал меняется у всех конфигурация
                {
                    swPart.SetMaterialPropertyName2(nameActiveConfig, pathBaseMaterial, newMaterial);
                    for (int j = 0; j < arrConfig.Length; j++)
                    {
                        string tempConfig = arrConfig[j];
                        if (tempConfig.ToLower() != nameActiveConfig.ToLower())
                        {
                            swPart.SetMaterialPropertyName2(tempConfig, pathBaseMaterial, newMaterial);

                        }
                    }
                }
            }
            catch { }
        }
    }
}

public class PathConfig
{
    public string Path;
    public string NameConfig;
}

 

 

Спасибо большое, НО есть какая-нибудь возможность его перевести на VBA? Я хочу его вставить в свой макрос.

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

@Snake 60 

 

 

Sub main()

    Dim swApp       As SldWorks.SldWorks

    Dim Part             As SldWorks.ModelDoc2

    Dim longstatus  As Long, longwarning As Long

    Dim boolstatus  As Boolean

    Dim macrfolder  As String

    Dim Materiaal   As String

   

    Set swApp = Application.SldWorks

    macrofolder = swApp.GetCurrentMacroPathFolder() & "\"

    Materiaal = "AISI 304"

   

    swApp.DocumentVisible False, swDocPART

   

    Set Part = swApp.OpenDoc6("part.SLDPRT", swDocPART, swOpenDocOptions_Silent, "", longstatus, longwarning)

    'Set Part = swApp.ActivateDoc2("part", True, longstatus)

   

    Part.SetMaterialPropertyName2 "По умолчанию", "C:/Program Files/SOLIDWORKS Corp/SOLIDWORKS/lang/english/sldmaterials/SOLIDWORKS Materials.sldmat", Materiaal

    swApp.DocumentVisible True, swDocPART

    swApp.CloseDoc "part"

   

End Sub
 

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

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

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

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

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

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

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

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

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

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

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




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