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

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

ну в VBA затрахаешься сортировку делать (в смысле писать).

 

Ну эта.. Все придумано за нас..

 

https://www.yandex.ru/yandsearch?clid=9582&text=%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0%20%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2%D0%BE%D0%B2%20VBA&lr=54&redircnt=1471439491.1

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


Все придумано за нас
 

А теперь я))

public List<PartPropertiesModel> SuperTable { get; set; }
...
var Sorted = SuperTable.OrderBy(r => r.Designation).OrderBy(f => f.Name);
Ссылка на сообщение
Поделиться на других сайтах

скромно напишу, что сортировать еще охота по нескольким параметрам, или даже сортировать структуры, по группе параметров в них.

Ссылка на сообщение
Поделиться на других сайтах
сортировать структуры
 Создавайте классы со свойствами и листами классов. не надо структуры. Как сортировать - написал выше в сообщении.
Ссылка на сообщение
Поделиться на других сайтах
Что значит сортировку? Куда результат будет выводиться?

в столбец ТС там где имя, тип , дата и тд.. можно вывести и др параметры.. Верся солида выводится скриптом.  масса и обозначения/наименования и сортируются все фаилы при нажатии. Вот хочу геометрию туда же.. есть же какие то значения по которым можно определить что "выдавить " нажали и размер этого действия..

 

 

я имею ввиду не обновление свойств, а фильтрацию. К примеру: список щитов отдельный список , профиль-1 отдельный список, профиль-2 отдельный, и.т.п.
post-12000-1366120579_thumb.jpg
на фото "отфильтровано" по обозначению. моно по наименованию, по имени, массе, и любым другим полям что записано ! Список не нужен.. тебе список то нужен чтоб в нем искать ? правильно понял?
Изменено пользователем Maik812
Ссылка на сообщение
Поделиться на других сайтах

МЫ же тут обсуждаем методы автоматизации через АПИ - а не кто как делает. А чо как отсортировать - это у каждого свои 5 способов найдутся. Всё это можно делать и в экселе. Только всё это ананизм.

Я веду к тому, чтобы после выполнения моделей, у меня автоматом создавались таблицы, по типам сечения, потом по типам обработки, потом отдельно таблица сборочных узлов, и всякая доп информация. Короче смысл в том, чтобы привести рабочую документацию к тому виду, что требует производство.

Понятно, что всё это автоматом с нуля - утопия. Но если есть типовой проект, то после внесения изменений всё должно автоматом меняться. И под изменениями я имею ввиду не только размеры по длине, но и размеры сечений.

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

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

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

Здравствуйте!

 

Беру из хелпа пример "Set Material Example (VBA)" или "Set Material Property Name Example (VBA)".

 

Из родной солидовской базы материал меняется нормально..

А вот мой самодельный материал, находящеся в базе "Настроенный пользователем материал" присваивать не хочет..

Это глюк или так было задумано?? И как можно обойти??

 

Ну еще вопрос.. можно ли програмно подключать библиотеки, те которые "Tools->Reference"??

А то выдает "Error accessing the system registry"..

Видимо, из-за отсутствия админских прав..

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

https://blogs.msdn.microsoft.com/pranavwagh/2006/08/30/how-to-load-win32-dlls-dynamically-in-vba/

самодельный материал ... присваивать не хочет..

Сделайте магию, поместите файл базы материалов в ту же папку, где и дефолтная база. (См. настройки-месторасположение файлов - Базы данных материалов)

Ссылка на сообщение
Поделиться на других сайтах
Сделайте магию, поместите файл базы материалов в ту же папку, где и дефолтная база. (См. настройки-месторасположение файлов - Базы данных материалов)

 

У меня такая же первая мысль была..Но:

 

Видимо, из-за отсутствия админских прав..

 

Хотя, потом вспомнил, что права на папку солида мне дали, когда я штриховку свою добавлял..

Переместил базу в нужную папку, но чуда не произошло..

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

В базе материал был записан как "MisMaterial| Сталь12х18Н10Т ГОСТ 5632-72"..(наследие "Материалы и Сортаменты" компаса)..

Однако, если вставке в текст макроса такой записи материал не менялся.. Как и при попытке установить материал "Сталь12х18Н10Т ГОСТ 5632-72"..

Все решилось ручным редактированием файла базы.. "MisMaterial| Сталь12х18Н10Т ГОСТ 5632-72" заменил на "Сталь12х18Н10Т ГОСТ 5632-72"..

 

ЗЫ. Кодировка базы материалов UTF-16 LE. При попытке считать макросом (Open .. For Input AS #1) сплошные кракозябры..

ЗЗЫ. При перемещении базы материалов "Настроенный пользователем материал" в другую папку, солид воссоздает на старом месте базу с таким именем, правда всего с одним материалом..

ЗЗЗЫ. "Материалы и Сортаменты" семантика сильно напоминают "Материалы и Сортаменты" компаса..

Ссылка на сообщение
Поделиться на других сайтах
Все решилось ручным редактированием файла
 Собсна, основополагающая люой автоматизации, это унификация шаблонов. Т.е. сначала всё надо настроить как положено, а потом уже API-ть. Проверено опытом.
Кодировка базы материалов UTF-16 LE

Быстрый гугл выдал это:

Sub Encode2()
Const sPath As String = "c:\folder1\Product Master.txt"
Const SetChar As String = "UTF-8"
With CreateObject("ADODB.Stream")
.Open
.LoadFromFile sPath ' Loads a File
.Charset = SetChar ' sets stream encoding (UTF-8)
.SaveToFile sPath, 2 ' adSaveCreateOverWrite
.Close
End With
End Sub
Ссылка на сообщение
Поделиться на других сайтах

Привет.
Это модель, создан с более старой версией Solidworks (2014)
Можно ли с помощью VBA установить "Create Cut Lists Automatically" и "Update Automatically"?

Я искал, но ничего не нашел.

 

post-53017-0-10006700-1474634937.jpeg

post-53017-0-51224900-1474634945.jpeg

post-53017-0-58776700-1474634953.jpeg

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

 

Видел другой вариант.. Буду пробовать..

 

Еще забыл ЗЗЗЗЫ.. В "месторасположение файлов - Базы данных материалов" первая в списке - папка на рабочем сервере (только для чтения), а при получении макросом списка баз материалов, пишет путь к папке содила в Program files...

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

Плохо искал

https://forum.solidworks.com/message/507593

https://forum.solidworks.com/message/14761

https://forum.solidworks.com/message/580504

https://forum.solidworks.com/message/658778#comment-658778


путь к папке содила
поместите файл базы материалов в ту же папку, где и дефолтная база
  :smile:  Вот так запрограммировали, что аж где-то жёстко прошито.
Ссылка на сообщение
Поделиться на других сайтах
  • 3 недели спустя...
Быстрый гугл выдал это:
Sub Encode2()
Const sPath As String = "c:\folder1\Product Master.txt"
Const SetChar As String = "UTF-8"
With CreateObject("ADODB.Stream")
.Open
.LoadFromFile sPath ' Loads a File
.Charset = SetChar ' sets stream encoding (UTF-8)
.SaveToFile sPath, 2 ' adSaveCreateOverWrite
.Close
End With
End Sub

 

Че-то какую кодировку не напишешь, все в UTF-8 переводит.. Т.е. AkelPad пишет UTF-8, а Bred3 UTF-16..

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

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

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

 

   

using System;

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swcommands;
using SolidWorks.Interop.swconst;
using System.Diagnostics;
using System.Runtime.InteropServices;
 
 
namespace soldworkstest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        SldWorks swApp;
        IModelDoc2 swModel;
 
        private void button1_Click(object sender, EventArgs e)
        {
            Process[] processes = Process.GetProcessesByName("SLDWORKS");
            foreach(Process process in processes)
            {
                process.CloseMainWindow();
                process.Kill();
            }
            Guid myGuid1 = new Guid("0D825E02-9000-4D82-B4AB-D6BDC2872797");
            object processsw = System.Activator.CreateInstance(System.Type.GetTypeFromCLSID(myGuid1));
 
            swApp = (SldWorks)processsw;
            swApp.Visible = true;
 
            swApp.NewPart();
 
            swModel = swApp.IActiveDoc2;
 
            swModel.Extension.SelectByID2("Спереди", "PLANE", 0, 0, 0, false, 0, null, 0); //выбираем плоскость
            swModel.SketchManager.InsertSketch(true); //вызываем редактор эскизов
            swModel.ClearSelection2(true);  //очищаем выбор в редакторе эскизов
 
            swModel.SketchManager.CreateCircle(0, 0, 0, 0.071106, 0.031713, 0); //создаем окружность
            swModel.ClearSelection2(true);  //очищаем
 
            swModel.Extension.SelectByID2("Arc1", "SKETCHSEGMENT", 0, 0, 0, false, 0, null, 0); //выбираем окружность
            swModel.FeatureManager.FeatureExtrusion2(true, false, false, 0, 0, 0.03, 0.01, false, false, false, false, 1.74532925199433E-02, 1.74532925199433E-02, false, false, false, false, true, true, true, 0, 0, false); //вытягиваем
            
            swModel.Extension.SelectByID2("", "FACE", -2.89926496987505E-02, 2.36574859687835E-02, 0, false, 0, null, 0);  //косяк
            swModel.SketchManager.InsertSketch(true);
            swModel.ClearSelection2(true);
 
            swModel.SketchManager.CreateCircle(0, 0, 0, 0.036135, 0.044276, 0);
            swModel.ClearSelection2(true);
 
            swModel.Extension.SelectByID2("Arc1", "SKETCHSEGMENT", 0, 0, 0, false, 0, null, 0);
            swModel.FeatureManager.FeatureCut3(true, false, false, 0, 0, 0.03, 0.03, false, false, false, false, 1.74532925199433E-02, 1.74532925199433E-02, false, false, false, false, false, true, true, true, true, false, 0, 0, false);
 
 
          
 
 
 
            swModel.SaveAs3("C:\\1.sldprt", 0, 2);
 
            swApp.ExitApp();
            swApp = null;
 
        }
            
    }
}
 

 

на строку, выделенную красным ругается (отверстие вырезать нехочет)

Необработанное исключение типа "System.Runtime.InteropServices.COMException" в soldworkstest.exe

что не так?

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

данный пример уже обсуждался здесь

 данный пример является тем же самым для "программиста" что и для конструктора не полностью определённый эскиз.  :smile:

Вы что хотите получить? Знания: тогда надо переделывать. Опыт: тогда надо самому поразбираться где что не так и с отладчиком.

Вот эти 2 строчки убрать

Guid myGuid1 = new Guid("0D825E02-9000-4D82-B4AB-D6BDC2872797");

object processsw = System.Activator.CreateInstance(System.Type.GetTypeFromCLSID(myGuid1));

 

и вместо них вставить одну

object processsw = System.Activator.CreateInstance(Type.GetTypeFromProgID("SldWorks.Application"));

 

Эту тоже убрать. Открывается окно, чёта-там делается и закрывается. Зачем его отображать то тогда? )))

swApp.Visible = true;

 

Про это вообще отдельный разговор. Этот код когда-нибудь навернётся )))

swApp.NewPart();

 

Ага, вот прям все взяли и разрешили писать в корневую папку  :smile:

swModel.SaveAs3("C:\\1.sldprt", 0, 2);

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

Доброго времени.

 

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

Активную конфигурацию получить - легко, а это что-то никак не могу найти...

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

состояния отображения

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

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

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

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

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

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

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

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

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

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

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




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