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

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

streamdown, ага, со сборкой понятно, спасибо :)

а насчет пунктов 5-8, это вообще так принято делать или я что-то и здесь мудрю? :)

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


Frnk

насчёт пунктов всё верно. Вот ещё что, старайтесь в макросы пихать частоиспользуемые функции (которые имеет CAD система) при работе. Писать макрос, который будет делать разовую операцию (ну допустим раз в месяц) - неразумно, проще воспользоваться имеющимся функционалом.

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

Доброго времени суток!

Добрые люди, помогите, пожалуйста. Есть макрос написанный на VB с оконной формой в которую нужно вводить данные. Как с этого макроса сделать .exe файл? ...уж очень нужно и интересно было бы узнать.

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

Доброго времени суток!

Добрые люди, помогите, пожалуйста. Есть макрос написанный на VB с оконной формой в которую нужно вводить данные. Как с этого макроса сделать .exe файл? ...уж очень нужно и интересно было бы узнать.

Макрос - значит в VBA сделан?

ИМХО тогда так:

- берем VB 6.0 создаем пустой проект, выбираем шаблон "Стандартный EXE", CopyV/CopyPast -текст макроса- и вставляем текст Вашего макроса в пустое окно формы, которое нужно предварительно создать!

- жмем `F5` (запуск);

- жмем все кнопки, которые есть, разбираемся с ошибками, если таковые есть;

- записываем все модули, какие VB попросит записать;

И потом: меню Файл/Создать/имяф.EXE. Надо смотреть куда записывали модули и куда *.EXE файл.

Почти все.

Ну там еще нюансы наверняка появятся.

Можно еще взять пример макроса из файла "C:\Program Files\SolidWorks Corp\SolidWorks\api\sldworksapi.chm", поменьше размером - меньше размер - меньше ошибок и Запускаем его по F5. Дальше - работа над ошибками...

PS опять версию SW не указываем :bash:

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

ssv22

Каким образом VB6 узнает про файлы solidworks(sldworks, swcommands, swconst)? Т.е. откуда VB6 будет хватать константы и определения?

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

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

ssv22, спасибо за ответ :smile: я уже нашел ответ на свой вопрос, возможно, мой путь такой же как написанный Вами выше, не слишком еще разбираюсь :blush: позже опишу как делаю .exe я, может кому-то пригодиться :)

upd: вроде уже и .exe создаю, но visual studio не отрывает саму сборку, на ошибку не ругается, просто игнорирует строчку (файл сборки положил в bin)

swDoc = CType(swApp.OpenDoc6("Дрена в зборе.SLDASM", 2, 0, "", longstatus, longwarnings), ModelDoc2)

swApp.ActivateDoc2("Дрена в зборе", False, longstatus)
а дальше выдает ошибку

A first chance exception of type 'System.NullReferenceException' occurred in Дрена(ехе).exe

на строчку

myModelView = CType(swDoc.ActiveView, ModelView)
В чем же проблема? :unsure:

SW 2012, Visual Studio 2010

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

как именно Вы делали програмку

нашелся исходник :smile:

tabcontrol (appearance - buttons)

в зависимости от выбора на первой вкладке

private void tabControl3_Selected(object sender, TabControlEventArgs e)

		{

			if (tabControl3.SelectedTab == tabPage9/*первая вкладка*/)

			{

				STD.Checked = false;

				OWN.Checked = false;

				radioButton18.Checked = false;

				radioButton19.Checked = false;

				radioButton20.Checked = false;

				radioButton21.Checked = false;

				radioButton22.Checked = false;

				Dmin.Text = "";

				Dmax.Text = "";

				button8.Enabled = true;

			}

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

Точно не знаю, нужно это или нет, но хочу поделиться опытом создания .ехе файлов на основе SW VSTA VB Macro. Итак:

1. Запускаем Visual Studio. Создаем Windows Form Application. Подключаем библиотеки SldWorks 20xx Type library и Solidworks 20xx Constant Type library. Для этого Project -> Add References. Выбираем СОМ и там ищем.

2. Добавляем Command button. Два раза по ней щелкаем.

3. В самом верху пишем

Imports SldWorks

Imports SwConst

Изображение

4. Под Public Class xxxxx пишем

Public swApp As SldWorks.SldWorks

5. Для Private Sub Button1_Click добавляем

swApp = New SldWorks.SldWorks

Изображение

6. Делаем Copy => Paste записанного ранее макроса.

Изображение

7. Делаем Build.

P.S. По информации с forum.solidworks.com

P.P.S. Я не давно на этом форуме, потому мне были бы важны мнения нужны ли здесь сообщения по типу как я создал выше.

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

streamdown, спасибо за исходник!

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

А теперь есть вопрос именно по солиду:

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

Это возможно реализовать??

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

Frnk

И все желающие. Решил таки сделать отдельную тему, чтобы не терялась на фоне всего форума.

<noindex>http://streamdown.blogspot.com/</noindex>

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

Для получения пути к модели (каталог и имя файла)

using SolidWorks.Interop.sldworks;

using SolidWorks.Interop.swconst;

using System.IO;

...

SldWorks SwApp; 

IModelDoc2 swModel;

...

			swModel = SwApp.IActiveDoc2;

			string pathName = swModel.GetPathName();//полный путь к модели

			string modelNameSW = swModel.GetTitle(); //полное имя модели с расширением

			string modelPath = Path.GetDirectoryName(pathName);//только каталог с моделью

			string modelName = Path.GetFileNameWithoutExtension(pathName);//только имя модели
Ссылка на сообщение
Поделиться на других сайтах
  • 2 недели спустя...

потихоньку осваиваюсь.. :)

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

Как я понимаю есть два пути это сделать:

1. Каким-то образом написать код, который откроет каждый компонент в сборке, зайдет в "Управление уравнениями" и изменит эту глобальную переменную.

Попробовал записать макрос с этих действий, но получил только

public void Main()

		{



			

			ModelDoc2 swDoc = null;

			PartDoc swPart = null;

			DrawingDoc swDrawing = null;

			AssemblyDoc swAssembly = null;

			bool boolstatus = false;

			int longstatus = 0;

			int longwarnings = 0;

			swDoc = ((ModelDoc2)(swApp.ActiveDoc));

			boolstatus = swDoc.Extension.SelectByID2("Уравнения", "EQNFOLDER", 0, 0, 0, false, 0, null, 0);

			swDoc.ClearSelection2(true);

		}

что вообщем-то кажется мне бесполезной информацией.

2. Еще одним рациональным вариантом, как я полагаю, есть такой способ: импортировать для каждой из деталей глобальную переменную из текстового файла (equations.txt, допустим), а потом написать код, который бы открывал этот equations.txt и изменял значение. Все хорошо, кроме одного момента, когда я в солиде выбираю файл, из которого будет импортироваться глобальная переменная, там ведь идет путь, что-то типа "С:/Papka1/Papka2/.../equations.txt", а если я перенесу сборку и все прочее, ведь солид так и дальше будет ссылаться по адресу "С:/Papka1/Papka2/.../equations.txt", а ведь на компьютере, куда сборку и все прочее перенесли, может же быть этот equations.txt по адресу каком-то, например,

D:/Papka2/equations.txt.

Подскажите пожалуйста как решить эту задачу, или объясните в чем ошибка моих суждений. :confused_1: Заранее благодарен.

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

Frnk

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

А вот чтобы пробежаться по всем компонентам - это можно. Не просто (для новичка) но можно.

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

Frnk

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

А вот чтобы пробежаться по всем компонентам - это можно. Не просто (для новичка) но можно.

Да, да :) Ты был прав, я уже вполне это осознал.

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

Frnk

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

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

Frnk

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

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

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

Frnk

всё верно. Хоть в картиках формулы решай))) и рядом гифку с танцующей кошечкой))) шучу

Только вот убивать не обязательно, достаточно заменить уже существующую строку.

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

Frnk

всё верно. Хоть в картиках формулы решай))) и рядом гифку с танцующей кошечкой))) шучу

Только вот убивать не обязательно, достаточно заменить уже существующую строку.

Видимо так стоит и делать. Убивать это как-то... хм... не гуманно. )

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

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

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

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

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

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

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

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

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

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

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



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