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

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



swModel  - это распространённое название переменной для IModelDoc2. Если она у вас называется по-другому, проверьте её (переменную) что она не null. Или покажите код. Разберемся.

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

swModel  - это распространённое название переменной для IModelDoc2. Если она у вас называется по-другому, проверьте её (переменную) что она не null. Или покажите код. Разберемся.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using SolidWorks.Interop.sldworks;

namespace Diplom
{
    public partial class Truba : Form
    {
        public Truba()
        {
            InitializeComponent();
        }
        SldWorks SwApp; // получаем объект солида
        ModelDoc2 swDoc; // создаем деталь или подобъект в солиде

        private void button1_Click(object sender, EventArgs e)
        {
            double a;
            double b;
            double v;

            a = Convert.ToDouble(textBox1.Text) / 1000;
            b = Convert.ToDouble(textBox2.Text) / 1000;
            v = Convert.ToDouble(textBox3.Text) / 1000;

            SwApp = new SldWorks();

            ModelDoc2 swDoc = null;
            swDoc = ((ModelDoc2)(SwApp.ActiveDoc));
            swDoc = SwApp.OpenDoc6(Application.StartupPath + @"\truba.SLDPRT", 1, 16, "", 0, 0);
            Dimension myDimension = null;
           
            swDoc.SketchManager.AddToDB = true;

            myDimension = ((Dimension)(swDoc.Parameter("D1@Вытянуть-Тонкостенный1")));
            myDimension.SystemValue = a;
            myDimension = ((Dimension)(swDoc.Parameter("D1@Эскиз1")));
            myDimension.SystemValue = b;
            //myDimension = ((Dimension)(swDoc.Parameter("T1@Вытянуть-Тонкостенный1")));
            //myDimension.SystemValue = v;
            swDoc.ForceRebuild3(true);
        }
    }
}

Ссылка на сообщение
Поделиться на других сайтах
swDoc = ((ModelDoc2)(SwApp.ActiveDoc));

В этой части будет null ибо никакого документа не открыто вообще. Уберите эту строчку.

Dimension myDimension = null;

Поставьте тут точку останова и убедитесь что swDoc не null (а именно что документ успешно открыт).

swDoc = SwApp.OpenDoc6(Application.StartupPath + @"\truba.SLDPRT", 1, 16, "", 0, 0);

параметр 16 - drawings only. Вы же открываете деталь. Последние 2 параметра должны быть out, именно они вам и сообщат что именно пошло не так при открытии.

SwApp = new SldWorks();

В вашем коде вы нигде не освобождаете эту переменную. При повторном запуске можете словить неизвестную COM ошибку.

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

Хорошо)) спасибо, учту, хотя все с

SwApp = new SldWorks();
работает нормально))

Просто 

myDimension = ((Dimension)(swDoc.Parameter("T1@Вытянуть-Тонкостенный1")));
вот с этим параметром беда, разобраться не могу))
Ссылка на сообщение
Поделиться на других сайтах
работает нормально))

 

Если ваша цель просто запустить приложение и увидеть форму, то да, достаточно.

 

 

разобраться не могу

 

Прочитайте моё сообщение полностью. Исправьте как посоветовал, посмотрите в дебаге значения.

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

Доброго дня! Разыскиваю отсутствующее (искал не нашёл) в помощи SolidWorks 2014... графическое представление SolidWorks API Object Model... в данной теме недавно, но работа предстоит большая, хотелось бы первое время иметь её перед глазами

Пример прикрепил. Благодарю за любую информацию.

post-47589-0-81865400-1432119976.jpg

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

Мудрые коллеги, помогите любителю! i need help...

Вставляю спецификацию (BOM), не могу снять в макросе эту "галку" (SW2012, vba):

Код:

    TableTemplate = "D:\..мой шаблон.."
    AnchorType = swBOMConfigurationAnchor_TopLeft
    BomType = swBomType_e.swBomType_PartsOnly
    Configuration = ""
    Set swBOMAnnotation = swActiveView.InsertBomTable3(False, 0.15, 0.37, AnchorType, BomType, _
                          Configuration, TableTemplate, False)
 
может я зря ищу и в этой версии это невозможно?

post-44067-0-35826300-1433237197.png

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

@@v-david, в далёком декабре 2014 года эта фишка отсутствовала в APi

SPR # 668979

Может быть есть способ вручную сгруппировать или модифицировать таблицу

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

День добрый уважаемые товарищи. В рамках своего обучения в институте столкнулся с такой проблемой, необходимо построить и рассчитать модель в solidworks используя для построения api через delphi. С частью построения никаких проблем не возникло, но с расчётом беда, дело в том что я не могу обратиться к Solidworks simulation через api из delphi. Собственно всего то и надо что нажать на клавишу запуск, и после нажать на клавишу отчёт т.к. все параметры анализа уже хранятся в отдельном файле.

post-41463-0-86827100-1433326907_thumb.jpg

а пока что имеем вот это

post-41463-0-45734900-1433326840_thumb.jpg

основной код работы программы

 

procedure TForm10.Button1Click(Sender: TObject);
begin
SW:=CreateOLEObject('sldWorks.Application');
SW.Visible:=True;
Detal:=SW.OpenDoc('C:\21\Сборка31-Статический анализ 1\деталь1.sldprt',1);
SW.LoadAddIn('F:\\SolidWorks\\Simulation\\cosworks.dll');
SW.GetAddInObject('SldWorks.Simulation');
end;
 
По возможности прошу модифицировать код для выполнения запуска расчёта Solidworks simulation т.к. подозреваю что это в 1 строку но я не понимаю как.
P.S. использование delphi принципиально.
Изменено пользователем pandora
Ссылка на сообщение
Поделиться на других сайтах
я не могу обратиться к Solidworks simulation

 

Должна быть professional лицензия на Simulation. Или крякнутая))) Так как первое стоит денег, то мало кто этим именно тут занимается. Второе - доступнее, но это полный энтузиазм.

 

Скриншоты выше - чёрные прямоугольники. Перезалейте картинки.

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

 

я не могу обратиться к Solidworks simulation

 

Должна быть professional лицензия на Simulation. Или крякнутая))) Так как первое стоит денег, то мало кто этим именно тут занимается. Второе - доступнее, но это полный энтузиазм.

 

Скриншоты выше - чёрные прямоугольники. Перезалейте картинки.

 

Картинки поправил, спс, лицензия стоит, могу обращаться напрямую т.к. через интерфейс солидвёркса. Не могу обратиться через api. 

Ссылка на сообщение
Поделиться на других сайтах
Не могу обратиться через api.

Справка:

http://help.solidworks.com/2010/English/api/SWHelp_List.html?id=4441772a34c84a7f8d8236181bb94132#Pg0

Первый попавшейся под руку пример от туда же (Create Nonlinear Study and Apply Materials (VBA)):

http://help.solidworks.com/2010/English/api/swsimulationapi/Create_Nonlinear_Study_and_Apply_Materials_Example_VB.htm

Тоже самое в других средах разработки

Create Nonlinear Study and Apply Materials (C#)

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

Копаюсь тут в API солида потихоньку.. Накопилось несколько вопросов..

 

1. Есть такая программа "Навигатор СП".. Она может получить состав открытой в SW сборки в виде дерева.. Далее в программе можно делать различные манипуляции с полученными данными..Это я не в качестве рекламы, а чтобы было понятнее тем, кто с программой не знаком.. Теперь, собственно, вопрос..

 

Навигатор автоматически отделяет стандартные детали от обычных.. Правда, не всегда..Методом научного тыка выяснилось, что для того, чтобы модель,

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

 

"gl_standart"

"gl_name"

"TechnormaDatabase"

 

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

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

Как это повторить, в справки по API я не нашел..

 

2. Как программно повторить процедуру:

 

Файл -> Открыть -> Чертеж -> Ссылки -> выбрать новую модель

 

или при открытом чертеже:

 

Файл -> Найти ссылку... -> выбрать новую модель

 

3. Как программно заменить в сборке модель подсборки или детали на другую??

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

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

Ну это Вы так думаете, у солида на этот счет другое мнение :smile:

 

 

3. Как программно заменить в сборке модель подсборки или детали на другую??

ReplaceComponents

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

 

PS Ну и не забываем пользоваться кнопкой записи макросов, может решить многие вопросы)

Ссылка на сообщение
Поделиться на других сайтах
Ну это Вы так думаете, у солида на этот счет другое мнение
 

 

Имеется ввиду swOpenDocOptions_Silent ??

 

 

Если да, то по умолчанию значение равно 1, и файл в тихую не открывается.. А вот как сделать значение равным нулю не могу сообразить.

.

 

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

 

 

Уже нашел.. Просто я со своим ломаным английским долго не мог объяснить справке по API, что я хочу найти.. Наткнулся совершенно случайно..

 

 

PS Ну и не забываем пользоваться кнопкой записи макросов, может решить многие вопросы)

 

 

 

Что-то я давно перестал ей пользоваться.. Так редко удается найти время, чтобы заниматься макросами, что про кнопку я вообще забыл.. Да и далеко не все записывается..

 

 

2. Как программно повторить процедуру:   Файл -> Открыть -> Чертеж -> Ссылки -> выбрать новую модель   или при открытом чертеже:   Файл -> Найти ссылку... -> выбрать новую модель

 

Тоже нашел:

 

http://help.solidworks.com/2012/english/api/sldworksapi/replace_referenced_document_example_vb.htm

 

Только файл чертежа д.б. закрыт..

 

И еще вопрос:

 

4. Встроенная функция солида "Копировать проект" включает в список копируемых файлы из папки "Связь проектов"..  Например паспорт изделия в формате Word..

Функция API "PackAndGo" не добавляет..Можно ли как-то их скопировать при помощи "PackAndGo"??

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

Функция API "PackAndGo" не добавляет

 

Это почему вы так думаете?

AddExternalDocuments

Существует с 2011 SW.

Читать с // Add other non-SOLIDWORKS files to Pack and Go и ниже

Ссылка на сообщение
Поделиться на других сайтах
Это почему вы так думаете?AddExternalDocuments Существует с 2011 SW. Читать с // Add other non-SOLIDWORKS files to Pack and Go и ниже

 

Это я видел..

 

 

 

string otherFile = "c:\\program files\\solidworks corp\\solidworks\\samples\\tutorial\\edraw\\claw\\claw-mechanism.easm";
otherFiles[0] = (object)otherFile;
otherFile = "c:\\program files\\solidworks corp\\solidworks\\samples\\tutorial\\edraw\\claw\\claw-mechanism.emodel_debugonly.xml";
otherFiles[1] = (object)otherFile;

 

....

otherFile = "c:\\program files\\solidworks corp\\solidworks\\samples\\tutorial\\edraw\\claw\\bla-bla.xml";
otherFiles[100] = (object)otherFile;

 

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

Но!! "Копировать проект" получает список файлов из папки "Связь проектов" автоматически!!! Как это повторить??

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

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

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

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

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

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

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

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

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

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

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




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