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

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



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

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



  • Сообщения

    • mannul
      Смотря что вы подразумеваете под черновой обработкой. Выборку эквидистантным смещением от заготовки к модели? Конечно нельзя. Потому что программа рассчитывает выборку используя направляющие кривые на модели, проецируя их вдоль оси Z на модель. Для импеллеров и лопаток есть свои траектории.
    • Jesse
      А как вы моделировали в Трензиенте нагрузку? Вынужденные или свободные колебания? Или вообще ударно делали (ступеньку Хевисайда/дельта функцию)?
    • maxx2000
      @mannul т.е. невозможно сделать черновую обработку лопатки просто вращая ось, а только делать обработку с двух сторон?
    • mannul
      Когда вы начнете встроенную справку читать? Там написано как работает граница и вдоль чего ограничивает. И какой максимальный угол наклона для траектории. И про массивы там тоже есть. И какие траектории полностью пятиосевые, а какие нет. Поворот для черновых и некоторых чистовых траекторий ограничен, потому что эти траектории являются проекционными, вдоль оси Z. Можно только "подвернуть" оси.
    • AlexKaz
      И если есть параметрические колебания, как выше написал Fedor. Теоретически, "метроном" (хотя, это не он) на рисунке может впасть в параметрические колебания, найти этот режим через transient проще. Если частота растёт, то период колебаеий уменьшается, колебания становятся чаще. А на графике всё наоборот.
    • Jesse
      это понятно. В данном случае со свободными колебаниями консоли со временем площадка контакта будет уменьшаться, и частота должна расти.  Т.е. получится какой-то такой график. Мой вопрос немного другой: могу ли я использовать результаты МКЭ по амплитуде из нелинейного динамического анализа, а затем просто по набору данных A(t) сделать дискретное преобразование Фурье? ну или спектрограмму какую-то построить... Вот мой коллега гидродинамик по такому графику осцилляций давления в насосе, посчитанному в Star-CCM, взял FFT и построил спектр частоты изменения давления...  
    • AlexKaz
      Всё корректно, если строить не плоский спектр по всей выборке отклика, а водопад, нарезая отклик на куски, чтобы смотреть а будет ли изменяться спектр в моменте при непосредственно контакте. Шаг по времени по теореме Котельникова-Найквиста-Шеннона надо брать <= 0.5/f, где f - максимальная интересуемая частота в Гц. Демпфирование можно задать стандартно 2-3-4%.   Если transient и fft не покажут принципиальной разницы между чисто модальным - на transient можно забить. Transient  + FFT есть большой смысл применять если есть неупругая деформация, вот тогда частоты могут сильно измениться
    • Andrey_kzn
      Добрый день. Именно на 810 не знаю, а на 840 переключение токарной\фрезерной технологии : md52200=2 (фрезерование), и специально для щупа параметры sd54780 (2) и sd54789(2), 54760. У вас циклы измерения и калибровки запускаются из МДА? GUD - я имел ввиду не глобальные данные, а файлы, находятся они в данных ЧПУ, там же где и циклы. Тут проверить наличие можно наверно только сравнив  с таким же станком.
    • maxx2000
    • maxx2000
      А кто сказал что поворот ограничен? Ты же можешь сделать такой квадратик обернув его вокруг всего цилиндра и он будет обработан. Тебе сказали, сделай массив траекторий вокруг оси и радуйся а если квадратики разные или в произвольном порядке то каждый придётся обрабатывать отдельно, каждому будет назначена своя локальная рабочая координата.
×
×
  • Создать...