1 964 сообщения в этой теме
5 часов назад, Кузнецов Антон сказал:

Здравствуйте! Подскажите, пожалуйста! Создал макрос, который создаёт нужный мне текст заметки и вставляет её в чертёж.

Координаты положения заметки (например: myAnnotation.SetPosition(0.2, 0.25, 0)) в макросе не прописаны, поэтому точкой вставки заметки

является та точка, куда я ткнул последний раз мышкой в экран перед запуском макроса.

Как в макросе достать координаты этой последней точки. Хочу использовать их в написании другого макроса.

Можно попробовать метод GetSelectionPoint2 интерфейса ISelectionMgr.

 

Поделиться сообщением


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


В ‎14‎.‎09‎.‎2018 в 21:36, Shvg сказал:

Можно попробовать метод GetSelectionPoint2 интерфейса ISelectionMgr.

Спасибо. Странно только, что в чертеже, если не выбрана какая-либо точка или объект, координата "z" не ровно "0", а очень

близкая к нулю цифра.

Поделиться сообщением


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

Здравствуйте! Подскажите, а есть какой-нибудь метод (функция, не знаю, как правильно называется), без кучи кода, чтобы сохранить BOM в Excel? Что-нибудь вроде BomSaveExcel. )))

Поделиться сообщением


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

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

 

Поделиться сообщением


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

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

Поделиться сообщением


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

Можете не учитывать мое мнение, но мне не кажется это удобным - делать exe'шники. Так, находясь в среде SW, Вам доступны все функции, как SW, так и WIN, плюс возможность в динамике что-нибудь подправить в коде. Опять же, "кнопочки" на панельке можете зарядить или менюшку какую в UserForm сотворить. Зачем exe - не понимаю?

Поделиться сообщением


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

с чего начать копать в данном направлении? 

Как вариант Microsoft Visual Studio. В нем пишите код со всеми процедурами и функциями, компилируете в запускаемый файл. Там есть свои тонкости. Можно выбрать язык программирования vb, c# и т.д. Если Вы выбрали exe, то нужно будет подключаться к запущенной сессии sw (чего не нужно делать в vba). В интернете много информации, правда один очень полезный сайт перестал недавно фунциклировать. В хэлпе к api solidworks тоже есть информация с примерами.

Изменено пользователем MUXALblCH
1 пользователю понравилось это

Поделиться сообщением


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

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

 

Надо писать не на VBA, а на VB или C..

 

8 часов назад, v-david сказал:

Можете не учитывать мое мнение, но мне не кажется это удобным - делать exe'шники.

 

У @streamdown , например, другое мнение..

1 пользователю понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 20.09.2018 в 23:42, MUXALblCH сказал:

чего не нужно делать в vba

эммм...

Set swApp = Application.SldWorks

А это что по вашему))) оно всё хитро там скрыто, но без подключения к процессу (посылая всякие команды через Win API) - это уже НЕ VBA

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 20.09.2018 в 23:42, MUXALblCH сказал:

чего не нужно делать в vba

@streamdown , это да. Перефразирую... Что в vba сделать проще, с меньшим количеством строк кода... vba ограничен в возможностях визуального оформления, но при грамотном подходе даёт возможность решить огромное количество задач.(иной раз с помощью более опытных коллег :drinks:)

Изменено пользователем MUXALblCH

Поделиться сообщением


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

Подскажите пожалуйста, как отловить ошибки в коде формы?

 

Есть основной модуль макроса, запускающий форму. В этом модуле ошибки легко отлавливаются оператором OnError.

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

Модуль формы работает по событиям, событий много (куча Public Sub и End Sub) и в код каждого события пихать OnError наверно не правильно.

Может есть какая возможность в коде формы написать один раз OnError, как в Sub main()?

Поделиться сообщением


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

Всем привет!

 

Подключаемый модуль с функциями естественного алфавитно-цифрового сравнения двух строковых переменных.

 

Неожиданно выяснилось, что в VBA нет метода естественного сравнения текстовых переменных.
Поиски способа сравнения были долгими и нудными, так как я начинающий.
Болт М10 при любом сравнении всегда оказывается меньше Болт М5. Что, на мой взгляд правильно, но не естественно для нужд конструктора.
Что бинарное сравнение, что текстовое в VBA всегда ставят М10 меньше М5.
Поэтому было применено правило:
Если нужно рубить, но нет топора – начинаем изобретать топор!
В итоге, на свет появилась функция CompareString().
Для удобства функция была перемещена в отдельный модуль.
Этот модуль можно подключать к любому макросу, в котором потребуется естественное сравнение.


Формат обращения к модулю:

Dim result As Integer
Dim string1 As String
Dim string2 As String
result = CompareStringModule.compareStrings(string1, string2)
If result <>= 0 Then

 

Если result >0 то string1< string2
Если result <0 то string1> string2
Если result =0 то string1= string2

 

Передаваемые значения: Текстовые переменные string1, string2

 

Возвращаемые значения: Result как число

 

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

 

CompareStringTest.swp

CompareStringModule.bas

1 пользователю понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
16 минут назад, alek77 сказал:

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

Поискав ещё немного вы поймёте, что конструктору в сущности всё равно.

 

В 23.09.2018 в 11:56, alek77 сказал:

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

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

1 пользователю понравилось это

Поделиться сообщением


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

Подскажите пожалуйста решение ситуации:

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

Поделиться сообщением


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

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

Функции работы с окнами.txt

1 пользователю понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 10.10.2018 в 21:30, alek77 сказал:

Как сделать так, что пока работает макрос и не нажата кнопка "выход" формы, пользователь не мог кликнуть ничего в окне солида кроме кнопок формы?

Вы имеете в виду модальный и не модальный режим работы окна?

Поделиться сообщением


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

модальный и не модальный режим Us.формы скорее? Нет, я имею ввиду конкретное управление физическим положением и состоянием окна процесса, свернуть, убрать в невидимое пространство (за пределы экрана), сделать его постоянно на переднем плане и т.д. У Вас же рабочих процессов в компе тысячи полторы, Вы же не видите их все, так же? Ну и выбросите Ваш SW за борт монитора. Это пока самое простое, что приходит в голову. Если я что-то не то предлагаю, то скорее всего не так понял проблему. Вы функцию doevents что ли задействовали?

 

Поделиться сообщением


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

@alek77 , какую задачу пытаетесь решить?

P.S.

На всякий случай:

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

Модальные и немодальные формы

 
 

При разработке графического интерфейса важным является понятие модального и немодального окна. Модальное окно не позволяет, если оно открыто, временно переключиться на работу с другим окном данного приложения. Выйти из модального окна можно, только закрыв его. Немодальные окна допускают параллельную работу в разных окнах приложения. Форма называется модальной или немодальной в зависимости от того, какое у нее окно. Тип открываемого окна зависит от того, какой метод для открытия формы используется. Метод Show() открывает форму как немодальную, а метод ShowDialog() – как модальную. Название метода отражает основное назначение модальных форм – они предназначены для организации диалога с пользователем, и пока диалог не завершится, покидать форму не разрешается.

Если переменная frm хранит ссылку на объект класса производного от Form, то после вызова метода frm.Show() выполнение программы сразу переходит к следующему оператору. При вызове метода frm.ShowDialogO переход к следующему оператору программы произойдет только после закрытия формы frm. Следующий пример показывает создание формы (объект с именем MyFormClass) и ее отображение на экране:

MyFormClass frm = new MyFormClass();

frm.Show();

Другим отличием этих методов является то, что метод Show() не возвращает никакого значения при завершении работы, а метод ShowDialogQnpH завершении возвращает в качестве результата одно из значений перечисления DialogResult. Перечисление DialogResult является списком идентификаторов, поясняющих причину закрытия диалога. К основным значениям этого перечисления относятся:

• ОК – работа с формой завершилась успешно (пользователь выполнил требуемую задачу);

• Cancel – работа с формой завершилась неуспешно (пользователь не выполнил требуемую задачу);

• Yes – пользователь ответил утвердительно на заданный вопрос;

• No – пользователь ответил отрицательно на заданный вопрос.

Для того чтобы форма вернула значение DialogResult, ее свойству

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

Предположим, что в приложении нужно выполнить ввод номера телефона пользователя. Для этого создается форма, которая имеет текстовое поле (TextBox) ввода и две кнопки (Button); на одной написано "Сохранить", а на другой – "Отменить". Тогда, если свойству DialogResult кнопки с надписью "Сохранить" задать значение DialogResult.OK, а свойству DialogResult кнопки с надписью "Отменить" задать значение DialogResult.Cancel, то, если одну из них нажать, форма становится невидимой (но не уничтожается) и в качестве результата возвращается одно из заданных значений. Отметим, что форма не уничтожается, а просто свойству Visible задается значение false. Это делается для того, чтобы можно было получить введенные пользователем данные с помощью свойств класса формы. В результате описания свойства данной диалоговой формы для номера телефона родительская форма может получить значение, а уже затем вызвать метод Close() для закрытия формы. Ниже приведено описание данной диалоговой формы:

 

class Phone : Form {

TextBox txtPN = new TextBox();

Button btnOK = new Button();

Button btnCancel = new Button();

public Phone() {// конструктор

Text = "Введите номер телефона.";

Size = new Size(180, 120);

txtPN.Location = new Point(10,10);

txtPN.Size = new Size(150,10);

btnOK.Location = new Point(10,40);

btnOK.Text = "Сохранить";

btnOK.DialogResult = DialogResult.OK;

btnCancel.Location = new Point(90,40);

btnCancel.Text = "Отменить";

btnCancel.DialogResult = DialogResult.Cancel;

Controls.AddRange( new ControlQ {txtPN, btnOK, btnCancel});

}

public string PhoneNumber {// свойство класса

get {return txtPN.Text;}

set {txtPN.Text = value;}

>

}

Отметим, что обработчики событий для кнопок не задаются, т. к. для них заданы свойства DialogResult, и форма будет становиться невидимой после их нажатия. В классе также описано единственное добавленное свойство PhoneNumber. Ниже показан пример вызова данного Phone диалога: string s;

Phone frm = new Phone(); //создаем экземпляр диалога

frm.ShowDialog(); // показываем диалог

if (frm.DialogResult == DialogResult.OK)

{s = "Номер телефона " + frm.PhoneNumber;} else if (frm.DialogResult == DialogResult.Cancel)

{ s = "Номер телефона не введен.";} frm.Close();

 

Изменено пользователем MUXALblCH
1 пользователю понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 12.10.2018 в 15:54, MUXALblCH сказал:

На всякий случай:

Спасибо, разобрался, понял, сделал

Поделиться сообщением


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

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

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

Пробовал разные варианты. Начинал с сохранения настроенной по необходимым столбцам sw таблицы с сохранением в ексель, там манипуляции с фильтром и т.д. Сейчас делаю через визуализацию с сохранением в ексель, далее макросами и кучей лишних телодвижений. Во всех пройденных вариантах были неудобные моменты. Как пример, визуализация неправильно считает количество компонентов если они являются конвертом или исключены из спецификации, или их родители. Причем работа, как правило, с большими проектами. Вот и начал думать в сторону баз данных. Мне бы примерчик кода, как из sw макросом данные в базу вносить, а дальше бы я разобрался как-нибудь. Поиск мало что дает, или я как начинающий неправильно запросы озвучиваю.

Буду безгранично благодарен за любую помощь!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 17.11.2018 в 17:40, alek77 сказал:

Мне бы примерчик кода, как из sw макросом данные в базу вносить, а дальше бы я разобрался как-нибудь.

По Solidworks смотрим справку (там и примеры): http://help.solidworks.com/SearchEx.aspx?q=custom+property&sort=&version=2010&lang=english&prod=api

По базам данных смотрим форумы, примеры и справки по данной теме.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 17.11.2018 в 19:40, alek77 сказал:

. Сейчас делаю через визуализацию с сохранением в ексель

А что за визуализация можно подробнее, никогда не сталкивался

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

1 пользователю понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
28 минут назад, Kelny сказал:

По Solidworks смотрим справку (там и примеры): http://help.solidworks.com/SearchEx.aspx?q=custom+property&sort=&version=2010&lang=english&prod=api

По базам данных смотрим форумы, примеры и справки по данной теме.

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

Гугл не помог, вот и интересуюсь на форуме

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
20 минут назад, alek77 сказал:

Проблема с освоением занесения этих свойств в какую-либо базу данных.

Самый простой контейнер - текстовый файл.

Более сложный можно рассмотреть - excel или XML.

Сложнее уже разбираться с построением базы данных.

 

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

 

Вероятно смотреть в сторону ключевых слов "Microsoft база данных", SQL и т.п.

Ну или других базы данных с которыми работаете/знакомы.

1 пользователю понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
11 минуту назад, vasyam сказал:

А что за визуализация можно подробнее, никогда не сталкивался

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

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

или если сработает

Для примера: нужен перечень всех сб. единиц большого проекта в которых пристреливаются приварные шпильки

 

 

- запускаем визуализацию

- в фильтре вводим часть наименования, чтобы выбрать все подобные детали (я для заклепок вводил "зак", для шпилек - "шпи") или полное, кому как нужно

- выбираем представление с группировкой и вложенный вид

- правой кнопкой по названию столбца, сохранить как

- выбираем формат, тип - Смещенный

 

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

 

 

Очень жаль, что API визуализации нет, ну или я не нашел

1 пользователю понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Скрытый текст
31 минуту назад, alek77 сказал:

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

или если сработает

Для примера: нужен перечень всех сб. единиц большого проекта в которых пристреливаются приварные шпильки

 

 

- запускаем визуализацию

- в фильтре вводим часть наименования, чтобы выбрать все подобные детали (я для заклепок вводил "зак", для шпилек - "шпи") или полное, кому как нужно

- выбираем представление с группировкой и вложенный вид

- правой кнопкой по названию столбца, сохранить как

- выбираем формат, тип - Смещенный

 

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

 

 

Очень жаль, что API визуализации нет, ну или я не нашел

 

Век живи век учись, спасибо за информацию.

Поделиться сообщением


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

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

 

03 Подсчет количества в сборке.swp

1 пользователю понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
51 минуту назад, v-david сказал:

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

А чем фильтр над деревом не угодил?

А так же инструмент ВИЗУАЛИЗАЦИЯ СБОРКИ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, v-david сказал:

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

 

03 Подсчет количества в сборке.swp

Какой модуль запускать? Там их кучка

3 часа назад, Kelny сказал:

А чем фильтр над деревом не угодил?

А так же инструмент ВИЗУАЛИЗАЦИЯ 

Может кто знает как добраться к API визуализации? Подскажите пожалуйста

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 17.11.2018 в 19:40, alek77 сказал:

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

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

Пробовал разные варианты. Начинал с сохранения настроенной по необходимым столбцам sw таблицы с сохранением в ексель, там манипуляции с фильтром и т.д. Сейчас делаю через визуализацию с сохранением в ексель, далее макросами и кучей лишних телодвижений. Во всех пройденных вариантах были неудобные моменты. Как пример, визуализация неправильно считает количество компонентов если они являются конвертом или исключены из спецификации, или их родители. Причем работа, как правило, с большими проектами. Вот и начал думать в сторону баз данных. Мне бы примерчик кода, как из sw макросом данные в базу вносить, а дальше бы я разобрался как-нибудь. Поиск мало что дает, или я как начинающий неправильно запросы озвучиваю.

Буду безгранично благодарен за любую помощь!

https://my-files.ru/ae84jn

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

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

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

Ну а вообще к тому времени, когда вы разберетесь с базой данных, в том числе сделаете удобный интерфейс для работы с ней, и сможете получить всю информацию из SW, то внести информацию в базу для вас уже будет пустяковой задачей:smile:

2 пользователям понравилось это

Поделиться сообщением


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

@alek77 , в добавление к сказанному @vasyam . Как правило создаю две таблицы класса DataTable (components и assembleys).

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

    Public dtBase As DataTable = New DataTable("components")
    Public dtAssembleys As DataTable = New DataTable("assembleys")

В первую помещаю данные по всем элементам (столбцы: ID (уникальный номер элемента), наименование, путь и т.д.),

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

            dtBase.Columns.Add("Key", GetType(Integer)) 'unic identificator
            dtBase.Columns.Add("ID", GetType(Integer)) 'identificator of component
            dtBase.Columns.Add("PID", GetType(Integer)) 'identificator of parent
            dtBase.Columns.Add("Path", GetType(String)) 'full path to component with name and extension
            dtBase.Columns.Add("Name", GetType(String)) 'short name of component without extension
            dtBase.Columns.Add("ConfName", GetType(String)) 'name of configuration of component

во вторую (так называемая таблица сборок) Key(порядковый номер сборки), ID элемента, ID родителя.

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

            dtAssembleys.Columns.Add("Key", GetType(Integer)) 'unic identificator
            dtAssembleys.Columns.Add("ID", GetType(Integer)) 'identificator of component
            dtAssembleys.Columns.Add("PID", GetType(Integer)) 'identificator of assembley

Механизм заполнения таблиц может быть различным (я пользуюсь рекурсиями). Как было сказано выше, обращение к данным происходит через ключевое поле. У меня была Задача очень схожая с Вашей (так и не доделал [все проклятая нехватка времени :slow:]).

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

 

Удачи Вам!

2 пользователям понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
5 минут назад, MUXALblCH сказал:

 

во вторую (так называемая таблица сборок) Key(порядковый номер сборки), ID элемента, ID родителя.

 

 

Я тоже две таблицы использую, но в таблице сборок, у меня три столбца ID элемента, ID родителя и третий количество, сколько элементов в родителе. А вот в качестве ключа в ней использую два столбца сразу, ID элемента и ID родителя. Все чудесно работает плюс еще и проверка на совпадающие значения ID элемента и ID родителя автоматически производиться, т.е Acces сам не позволит внести повторяющееся сочетание родителя и потомка. 

27 минут назад, MUXALblCH сказал:

 

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

 

Удачи Вам!

А для просмотра в правом нижнем углу, что используете, какой элемент или Activex?

Я нашел только, как просмотр PDF прикрутить:sad:

Один раз удалось Edrawings Activex в форму вставить для просмотра моделей гибщиками, но повторить этот успех я больше не смог.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
51 минуту назад, vasyam сказал:

что используете

использую document manager, метод GetPreviewPNGBitmap (который также доступен через API solidworks, но с некоторыми ограничениями).

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

The preview bitmap is the bitmap (.bmp) that appears in the Preview box on the Open dialog.

NOTES: 

Currently only in-process applications (that is, macros or add-ins) can use this method; out-of-process applications (that is, executables) will get an automation error because the IPictureDisp interface cannot be marshalled across process boundaries. This is a Microsoft behavior by design. See the Microsoft Knowledge Base for details.
This method is not supported in macros or out-of-process applications in SOLIDWORKS x64.

51 минуту назад, vasyam сказал:

Я нашел только, как просмотр PDF прикрутить

Используете библиотеки adobe?

Изменено пользователем MUXALblCH
1 пользователю понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
11 минуту назад, MUXALblCH сказал:

 

Используете библиотеки adobe?

Раньше использовал WebBrowser, но потом он у меня перестал нормально PDF показывать.

Сейчас перешел на AcroRDFLib.dll, все вроде работает, но по отзывам иногда перестает открывать, после перезапуска программы вновь работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
12 минуты назад, vasyam сказал:

AcroRDFLib.dll

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

У нас сисадмин решил снести все ридэры и установить продукт другого производителя, пришлось перестраиваться. Поэтому отказался от предпросмотра pdf и открываю в сопоставленном приложении. Других альтернатив не нашел...

 

Поделиться сообщением


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

Один раз удалось Edrawings Activex в форму вставить для просмотра моделей гибщиками, но повторить этот успех я больше не смог.

Этот инструмент меняется от версии к версии. Как этот просмотр использовать на все версии не разобрался. Для текущей установленный версии добавляется соответствующий элемент и используется, если eDrawing переставляется на другую версию, то просмотр уже не работал (удалял из проекта и заменял новым). Может можно по другому, но не разбирался.

 

1 час назад, vasyam сказал:

Раньше использовал WebBrowser, но потом он у меня перестал нормально PDF показывать.

Вроде нормально работает. Возможно удалили просмоторщик от Adobe или в настройках броузера отключили просмотр PDF.

 

1 час назад, MUXALblCH сказал:

использую document manager

Для этого инструмента вроде ключ нужен.

 

1 час назад, MUXALblCH сказал:

GetPreviewPNGBitmap (который также доступен через API solidworks, но с некоторыми ограничениями)

Так понимаю для этого инструмента нужны соответствующие данные в файле, которые туда добавляются при наличии галочки в настройках программы: Инструменты-Параметры...-Настройки пользователя-Общие и галочка Отобразить уменьшенную копию изображения в Проводнике Windows.

1 пользователю понравилось это

Поделиться сообщением


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

вроде ключ нужен

Точно нужен.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 минуты назад, Kelny сказал:

Так понимаю

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 17.11.2018 в 17:40, alek77 сказал:

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

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

Пробовал разные варианты. Начинал с сохранения настроенной по необходимым столбцам sw таблицы с сохранением в ексель, там манипуляции с фильтром и т.д. Сейчас делаю через визуализацию с сохранением в ексель, далее макросами и кучей лишних телодвижений. Во всех пройденных вариантах были неудобные моменты. Как пример, визуализация неправильно считает количество компонентов если они являются конвертом или исключены из спецификации, или их родители. Причем работа, как правило, с большими проектами. Вот и начал думать в сторону баз данных. Мне бы примерчик кода, как из sw макросом данные в базу вносить, а дальше бы я разобрался как-нибудь. Поиск мало что дает, или я как начинающий неправильно запросы озвучиваю.

Буду безгранично благодарен за любую помощь!

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

 

Для тех кому интересно, и для себя, чтобы не забыть:

 

1. Установить в систему 2 бесплатные программы:

SQLite 3 - https://www.sqlite.org/index.html
Просмотрщик DB Browser for SQLite - https://sqlitebrowser.org/

 

2. В поиске набрать ODB, и запустить Источники данных ODBS(64) (см. рис.1)

Добавить SQLite3 ODBS Driver  (см. рис.2), в настройках имя ресурса  (см. рис.3), имя базы можно не писать

 

Прикладываю то, что получилось, первый рабочий вариант, далее буду набивать данные

При запуске макроса из сборки (Sub main) данные о всех компонентах заносятся в базу данных с названием Имя сборки.db

Потом выводятся в Immediat

 

1.

001.jpg

 

2.

002.jpg

 

3.

003.jpg

 

 

Database.swp

 

Если кто проверит и отпишется, буду благодарен!

 

Изменено пользователем alek77
красивости не хватило

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 20.05.2015 в 14:08, eap сказал:

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

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

  Скрыть содержимое

post-47589-0-81865400-1432119976.jpg

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

Поделиться сообщением


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

Создайте аккаунт или войдите для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

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

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