Исследование механизмов построения интегрированной инструментальной среды на базе КОМПАС-3D

Направления развития САПР. Технологии интеграции инструментальных приложений. Схемы взаимодействия КОМПАС-3D и MathCAD на основе механизмов интеграции. Разработка интерфейсных модулей и механизма связывания переменных, апробация программного решения.

Рубрика Программирование, компьютеры и кибернетика
Вид диссертация
Язык русский
Дата добавления 15.04.2013
Размер файла 6,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Operation_ID - уникальное число-идентификатор проектной операции;

Operation_Name - имя проектной операции,;

Project_ID - идентификатор проекта, которому принадлежит операция;

Operation_Type - тип проектной операции;

Operation_Description - подробное описание проектной операции.

3) Множество переменных операциям, П

{Пi <Variable_ID, Variable_ID, Operation_ID, Variable_Type, Variable_Value, Variable_Description >}

Variable_ID - уникальное число-идентификатор переменной;

Variable_Name - имя переменной, отображающее смысловое наполнение;

Operation_ID - идентификатор операции, которой принадлежит переменная;

Variable_Type - тип переменной;

Variable_Value - значение переменной;

Variable_Description - описание переменной;

4) Множество связей между переменными операций С

{Сi<VariableConnection_ID, Variable_ID, VariableConnected_ID >}

VariableConnection_ID - уникальное число-идентификатор связи;

Variable_ID - идентификатор переменной;

VariableConnected_ID - идентификатор связанной переменной;

Опираясь на модель данных, можно сформировать иерархическую структуру функций ИИС:

· Создание проекта

o Вызов диалогового окна с вводомназвания проекта

o Создание проектной операции. Это Функция вызывается каждый раз, когда создаётся новая проектная операция.

o Связывания проектных операций

· Создание проектной операции

o Выбор типа проектной операции

§ Математическая (MathCAD)

§ Графическая (КОМПАС-3D)

o Вызов процессора (Математического или Графического).

o Создание Расчёта (Геометрической модели) в процессоре.

o Параметризация Расчёта (Геометрической модели).

o Сохранения Расчёта (Геометрической модели).

o Автоматическое создание переменных проектной операции и связывание их с параметрами Расчёта(Геометрической модели).

2.4 Выводы

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

В ходе исследования возможностей КОМПАС-3D был сделан вывод: КОМПАС-3D вполне удовлетворяет требованиям, предъявляемым к Графическому процессору ИИС. В ходе анализа возможностей интеграции КОМПАС-3D и MathCad пришли к выводу, что существуют как минимум две схемы для их взаимодействия.

Следующие шаги в решении задачи:

1. Разработка Интерфейсного модуля для КОМПАС-3D;

2. Разработка Интерфейсного модуля для MathCAD;

3. Разработка Модуля взаимодействия КОМПАС-3D и MathCAD;

4. Разработка структуры базы данных;

5. Создание БД на основе выбранной СУБД или драйверов БД;

6. Разработка пользовательского интерфейса для Управляющего модуля ИИС

3. Программная реализация

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

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

Первой из таких тенденций является использование в программировании объектно-ориентированного подхода, позволившее осуществлять повторное использование кода с большей эффективностью, нежели при применении так называемого модульного программирования. Зачатки объектного подхода появились во многих популярных в 80-х годах средствах разработки, таких, например, как Clipper. Однако расцвет объектно-ориентированного программирования начался с появления языка C++.

Второй немаловажной тенденцией развития средств разработки являлось создание высокопроизводительных компиляторов и стремление использовать скомпилированный код. Известно, что последний обладает существенно более высокой производительностью, чем код интерпретируемый. Отметим, что наличие исполняемого файла как результата создания приложения не гарантирует, что созданный код не является интерпретируемым (типичные примеры средств разработки, создающих исполняемый файл с интерпретируемым кодом - Centura SQLWindows, Visual FoxPro, Clipper, Visual Basic, Developer-2000).

Третьей тенденцией развития инструментальных средств являлось создание визуальных средств проектирования пользовательских интерфейсов, что позволило ускорить работу над проектами, облегчить повторное использование кода и в определенной степени привлечь к созданию приложений начинающих программистов. Наиболее ярким примером такого средства явилось появление в середине 90-х годов Visual Basic, имеющего в своем составе элементы VBX, из которых можно было строить интерфейс приложения, просто размещая их на форме, а также различных средств редактирования ресурсов типа Borland Resource Workshop. Отметим, однако, что в случае Visual Basic пользователь вынужден был довольствоваться готовыми VBX элементами либо создавать их на языке С с помощью других средств разработки.

И наконец, еще одним немаловажным фактором развития инструментальных средств явилась необходимость масштабируемой поддержки баз данных, так как, во-первых, именно информационные системы стали наиболее часто встречающимся типом разрабатываемых приложений и, во-вторых, именно в конце 90-х годов начался массовый переход от настольных СУБД к архитектуре клиент/сервер. Отметим, однако, что далеко не все средства разработки одинаково хорошо поддерживают все СУБД - нередко имеется явная ориентация на поддержку SQL-сервера того же производителя, что и производитель средства разработки (типичный пример - средства разработки Oracle).

Visual C# представляет собой следствие влияния всех этих тенденций, так как сочетает в себе удобства визуальной среды разработки, объектно-ориентированный подход, разнообразные возможности повторного использования кода, открытую архитектуру, а также масштабируемый доступ к данным, хранящимся в различных СУБД, как настольных, так и серверных.

Visual C# - объектно-ориентированный язык программирования. Разработан в 1998-2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как основной язык разработки приложений для платформы Microsoft .NET. Компилятор с C# входит в стандартную установку самой .NET, поэтому программы на нём можно создавать и компилировать даже без инструментальных средств, вроде Visual Studio.

C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML.

Переняв многое от своих предшественников -- языков C++, Java, Delphi, Модула и Smalltalk -- С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем: так, C# не поддерживает множественное наследование классов (в отличие от C++).

В качестве среды разработки выберем Microsoft Visual Studio - этот продукт включает в себя интегрированную среду разработки программного обеспечения и ряд других инструментальных средств.

Для управления БД выберем механизм OLEDB. Этот выбор обусловлен тем, что во-первых это один из самых гибких методов работы с БД, поддерживающий практически все современные форматы БД, а во-вторых тем, что это низкоуровневый интерфейс обладающий колоссальной производительностью.

3.2 Выбор СУБД и разработка структуры базы данных

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

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

Реляционные БД в 70-х годах практически вытеснили БД других видов. В качестве основной причины этого называют сложность представления данных в иерархической и сетевой моделях и необходимость определения связей между данными на этапе проектирования БД. В то время как в реляционных БД связи между таблицами могут устанавливаться непосредственно в момент выполнения запросов. Кроме того, разработчикам и пользователям значительно проще отображать сущности предметной области в табличных структурах данных.

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

В каждой таблице БД может существовать первичный ключ. Под первичным ключом понимают поле или набор полей, однозначно идентифицирующий запись. Значение первичного ключа в таблице БД должно быть уникальным, то есть в таблице не должно существовать двух или более записей с одинаковым значением первичного ключа.

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

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

Отношение "один-ко-многим" имеет место, когда одной записи родительской таблицы может соответствовать несколько записей в дочерней таблице.

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

Отношение "один-к-одному" имеет место, когда одной записи в родительской таблице соответствует одна запись в дочерней таблице.

Отношение "многие-ко-многим" имеет место, когда:

а) записи в родительской таблице может соответствовать больше одной записи в дочерней таблице;

б) записи в дочерней таблице может соответствовать больше одной записи в родительской таблице .

Многие СУБД не поддерживают связи "многие-ко-многим" на уровне индексов и ссылочной целостности, хотя и позволяют реализовывать ее в таблицах неявным образом.

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

Справочные таблицы - содержат информацию справочного характера, обладающих невысокой степенью изменчивости по сравнению с таблицами БД других видов; как правило, находятся с операционными и транзакционными ТБД в отношении

Под операционными таблицами понимаются таблицы БД, в которых происходит устойчивое во времени непрерывное или периодическое обновление или добавление информации. Операционные таблицы находятся, как правило, в подчиненном отношении со справочными таблицами.

Как уже говорилось, одним из шагов реализации является разработка структуры БД. Собственно, предложенные в модели данных множества элементарно представляются в виде ТБД, а элементы (кортежи) - есть записи ТБД. Таким образом, для хранения каждого из множества объектом заведем отдельную ТБД. В результате получим следующие таблицы.

Projects (Проекты)

Project_ID

Project_Name

Project_Description

Идентификатор

Проекта

Имя

Проекта

Комментарий

Проекта

Operations (Операции)

Operation_ID

Operation_Name

Project_ID

Operation_Type

Operation_Description

Идентификатор

Операции

Имя

Операции

Идентификатор

Проекта

Тип

Операции

Комментарий

Операции

OperationType (Типы операций)

OperationType_ID

OperationType_Name

OperationType_Description

OperationType_Number

Идентификатор

Типа операции

Имя

Типа операции

Комментарий

Типа операции

Номер

Типа операции

Variables (Переменные)

Variable_ID

Variable_

Name

Operation_ID

Variable_Type

Variable_Value

Variable_

Description

Идентификатор

Переменной

Имя

Переменной

Идентифик.

Переменной

Тип

Переменной

Значение

Переменной

Комментарий

Переменной

VariableType (Типы переменных)

VariableType_ID

VariableType_Name

VariableType_Description

VariableType_Number

Идентификатор

Типа перемен.

Имя

Типа переменной

Комментарий

Типа переменной

Номер

Типа переменной

VariableConnections (Связи переменных)

VariableConnection_ID

Variable_ID

VariableConnected_ID

Идентификатор

Связи переменных

Идентификатор

Переменной

Идентификатор

Связанной переменной

Учитывая связи между элементами множеств, структуру БД в графической форме можно представить следующим образом (рис.3.20).

Рис.3.1. Структура Базы Данных

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

Исходя из модели данных, имеем множество проектов, каждый из которых имеет свои проектные операции. Каждая проектная операция имеет свои переменные, и характеризуется идентификатором типа операции, из множества типов операций, и т.д.

3.3 Разработка Интерфейсных модулей

3.3.1 Разработка Интерфейсного модуля для КОМПАС-3D

Ознакомимся с API-интерфейсом системы КОМПАС-3D, для того, чтобы лучше понять к каким внутренним возможностям можно получить доступ. Так же рассмотрим некоторые особенности параметризации системы КОМПАС-3D.

Любая САПР твёрдотельного моделирования работает в интерактивном режиме. Поэтому для исследования подходит язык программирования С# совместно с библиотеками КОМПАС-МАСТЕР, которые предоставляют доступ к классам и функциям графического ядра.

Рис.3.2. Вид панели «Переменные» Компас-3D

Компас-3D поддерживает автоматическую генерацию имен объектов - каждый вновь созданный объект автоматически получает уникальное имя. Но эти имена предназначены лишь для внутреннего использования. Невозможно напрямую обратиться к объекту с уникальным именем из внешнего приложения (возможно только создание итератора и последовательного перехода по объектам определенного типа). Это является следствием особенностей работы графического ядра и налагает некоторые ограничения: доступ из внешних приложений возможен только к тем переменным, которые были заранее созданы пользователем.

Создание переменных, к которым разрешен доступ из внешних приложений через API-интерфейс, происходит с помощью панели «Переменные» изображенной на рис.3.2.

Рис.3.3. Назначение свойства «Внешняя» для переменной в панели «Переменные» КОМПАС-3D

Рис.3.4. Пользовательский интерфейс Интерфейсного модуля ExVarCompass3D

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

Теперь воспользуемся небольшим программным модулем ExVarCompass3D, выполняющего роль Интерфейсного модуля для КОМПАС-3D, что бы на практике убедиться в возможности обмена данными с внешними приложениями (Листинги программного кода для этого и остальных модулей приведены в Приложении 4). Пользовательский интерфейс ExVarCompass3D представлен на рис.3.4.

Как видно из вышеупомянутого рисунка данный Интерфейсный модуль позволяет запускать Компас-3D, открывать в нём файл сборки, считывать внешние переменные в таблицу (имя, значение, комментарий), изменять значения переменных и перестраивать сборку согласно новым данным. Ниже на рис. 3.5. и рис.3.6. показаны этапы работы.

Рис.3.5. Считывание внешних переменных сборки КОМПАС-3D с помощью Интерфейсного модуля ExVarCompass3D

Рис.3.6. Ввод значений и запись внешних переменных, перестроение сборки КОМПАС-3D с помощью Интерфейсного модуля ExVarCompass3D

Не имеет смысла приводить полный код программы, но стоит указать основные объекты и методы, которые позволяют работать с переменными, созданными в панели «Переменные» Компас-3D:

// Работа с массивом внешних переменных

ksVariableCollection varCol = (ksVariableCollection)part.VariableCollection();

for (int j = 0; j < varCol.GetCount(); j++)

{

// Считывание переменных с записью в таблицу

var = (ksVariable)varCol.GetByIndex(j);

this.TableCompassEV.Rows.Add(var.name, var.value, var.note);

// Запись переменных из таблицы в сборку

var.value = this.TableCompassEV.Rows[i].Cells[1].Value.ToString();

}

//Перестроение сборки

part.RebuildModel();

varCol - коллекция, содержащая массив внешних переменных, созданных в Компас-3D.

var - конкретная внешняя переменная, содержащая необходимые нам данные: имя, значение, комментарий.

RebuildModel() - метод, позволяющий перестраивать сборку.

По результатам работы в ExVarCompass3D можно сделать вывод о том, что к необходимым нам функциям Компас-3D можно получить доступ через API-интерфейс. Это, в свою очередь, на практике подтверждает, что Компас-3D вполне удовлетворяет требованиям, предъявляемым к графическому процессору в рамках разрабатываемой ИИС.

3.3.2 Разработка Интерфейсного модуля для MathCAD

Хотя в Компас-3D присутствует некоторая математическая поддержка, которая реализована в панели «Переменные», где можно задать различные выражения с участием переменных (см. рис.3.7.), её возможностей явно не хватает при необходимости произвести более сложные расчёты.

Рис.3.7. Математическая поддержка, реализованная в панели «Переменные» КОМПАС-3D: значение H3 равно значению H1, значение Step вычисляеться согласно выражению (W1+W2)*2

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

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

objMC.SetValue(Name As String, Value As Variant) - метод используется для того, чтобы задать значение входной переменной с известным именем.

VT_DISPATCH = objMC.GetValue(Name As String) - метод используется для того, чтобы считать значение выходной переменной с известным именем.

Причем для использования этих методов, расчёт в MathCad'е должен быть оформлен определенным образом (см. рис.3.8.)

Рис.3.8. Оформление расчёта в MathCAD для успешного использования методов SetValue и GetValue.

Для входных переменных необходимо зарезервировать имена, начинающиеся на in с номерами от 0 до 9 (именно это количество входных переменных инициализируется в момент создания, им изначально присваивается значение 0; использование входной переменной in10 уже не допускается, так как она не инициализируется по умолчанию). Эти переменные должны располагаться справа от знака равенства в начале расчета и встречаться лишь один раз.

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

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

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

Для того, чтобы рассмотреть альтернативный вариант интеграции - возможность использования синтаксического анализатора выходного файла MathCAD текстового формата (XML), проанализируем структуру файла для рабочего листа, изображенного на рис.3.9.:

Рис.3.9. Пример простейшего расчёта в рабочем листе MathCAD.

Ниже приведена немного упрощенная структура этого файла:

<regions>

<region region-id="1">

<ml:define>

<ml:id >x</ml:id>

<ml:real>1</ml:real>

</ml:define>

</region>

<region region-id="3">

<ml:define>

<ml:id >y</ml:id>

<ml:real>1</ml:real>

</ml:define>

</region>

<region region-id="7">

<ml:define>

<ml:id >z</ml:id>

<ml:apply>

<ml:plus/>

<ml:id>y</ml:id>

<ml:id>x</ml:id>

</ml:apply>

</ml:define>

</region>

<region region-id="8">

<ml:eval>

<ml:id >z</ml:id>

<result>

<ml:real>2</ml:real>

</result>

</ml:eval>

</region>

<region region-id="29">

<ml:eval>

<ml:id>x</ml:id>

<result>

<ml:real>1</ml:real>

</result>

</ml:eval>

</region>

<region region-id="27">

<ml:eval>

<ml:id >y</ml:id>

<result>

<ml:real>1</ml:real>

</result>

</ml:eval>

</region>

</regions>

После сравнения рабочего листа и структуры файла можно сделать следующие выводы:

Тег <regions> содержит в себе перечень всех регионов рабочего листа.

Тег <region region-id="27"> содержит описание нумерованного региона.

Тег <ml:define> заключает в себе операцию присвоения (:=).

Тег <ml:eval> заключает в себе операцию вычисления (=).

И так далее: понять значение каждого тега не составляет особого труда.

После более подробного анализа можно составить словарь используемого в данном файле «наречия» языка XML и создать синтаксический анализатор для обработки данного файла. Это, в свою очередь, позволит организовать обмен переменными с внешним приложением. Причем мы сможем обращаться к переменным с любым именем - даже если это имя будет не уникально и будет встречаться несколько раз за время расчёта, мы все равно сможем отличить переменные друг от друга по уникальному номеру региона. Применение синтаксического анализатора так же снимает требование на специальное оформление рабочего файла расчёта и ограничение на количество переменных.

Для того, чтобы на практике убедиться в возможности обмена данными с внешними приложениями и сравнить механизмы интеграции (API-интерфейс и XML-анализатора) воспользуемся небольшими программными модулями VarMathCAD_API и VarMathCAD_XML, которые будут выполнять роль Интерфейсного модуля для MAthCAD.

Пользовательский интерфейс VarMathCAD_API и VarMathCAD_XML представлен на рис.3.10. и рис.3.11.

Рис.3.10. Пользовательский интерфейс Интерфейсного модуля VarMathCAD_API

Рис.3.11. Пользовательский интерфейс Интерфейсного модуля VarMathCAD_XML

Этапы работы с VarMathCAD_API:

Рис.3.12. Открытие файла расчета с помощью Интерфейсного модуля VarMathCAD_API.

Как видно из вышеупомянутых рисунков Интерфейсные модули позволяют запускать MathCAD, открывать в нём файл расчёта, считывать входные и выходные переменные в таблицы (имя, значение, тип), изменять значения переменных и пересчитывать расчёт согласно новым данным. Ниже на рис. 3.12., 3.13., 3.14., 3.15., 3.16. показаны этапы работы с данными модулями.

Рис.3.13. Присваивание значений входным переменным расчета с помощью Интерфейсного модуля VarMathCAD_API

Рис.3.14. Пересчет расчёта и считывание значений выходных переменных расчета с помощью Интерфейсного модуля VarMathCAD_API.

Этапы работы с VarMathCAD_XML:

Рис.3.15. Открытие файла расчета, считывание всех переменных с помощью Интерфейсного модуля VarMathCAD_XML.

Рис.3.16. Изменение значений входных переменных расчета, пересчет расчета, считывание значений выходных переменных расчета с помощью Интерфейсного модуля VarMathCAD_XML

Результаты работы с Интерфейсным модулем VarMathCAD_API говорят о том, что MathCAD удовлетворяет требованиям, предъявляемым к математическому процессору разрабатываемой ИИС. Кроме того можно сделать вывод, что через API-интерфейс можно организовать обмен переменными между MathCAD и КОМПАС-3D.

Но данный подход представляется малоэффективным. Это, прежде всего, связано с логикой работы MathCad и скудостью функций математического ядра, которые доступны через API-интерфейс.

Особенности работы MathCAD через API-интерфейс:

Специальные жесткие требования к оформлению расчёта, которые усложняют работу и снижают эргономичность.

Из внешних приложений возможна работа только с обезличенными переменными с префиксами in и out, которые невозможно автоматически , без участия пользователя, сопоставить с реальными именами переменных в расчёте.

Нельзя задать значения по умолчанию для входных переменных in в самом теле расчёта, иначе изменение значений этих переменных из внешних приложений станет невозможным.

В момент создания инициализируются лишь 10 входных переменных in0-in9 (по умолчанию им присваивается значение ноль). Большее количество входных переменных, не используя матричной формы представления, задействовать невозможно.

Возможности, не реализованные в функциях математического ядра MathCad, которые были бы полезны при доступе через API-интерфейс :

Возможность получить список имен и значений всех переменных, участвующих в операциях присвоения и вычисления ( := и = )

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

Обойти указанные особенности логики работы MathCAD и реализовать недостающие возможности математического ядра можно, с помощью синтаксического анализатора, который способен обрабатывать мета-язык рабочего файла MathCAD. Данные выводы были подтверждены при работе с Интерфейсным модулем VarMathCAD_XML. Решение этой задачи стало возможным благодаря введению, наряду с бинарным форматом файла, текстового формата, начиная с 12 версии MathCad'а.

3.3.3 Разработка механизма связывания переменных

Выше были показаны Интерфейсные модули как для КОМПАС-3D, так и для MathCAD. В процессе их разработки и апробации были экспереминтально проверены доступные механизмы интеграции. Но получить инструменты для обмена переменными это только полдела. Следующей задачей, которую предстоит решить, является связывание переменных между собой. Для решения этой проблемы необходимо разработать механизм связывания переменных.

Подобный механизм был реализован на базе Интерфейсных модулей ExVarCompass3D и VarMathCAD_API, которые работают через API-интерфейс. На их основе был создан программный модуль IntegratorKM_Lite. Пользовательский интерфейс модуля и этапы работы приведены на рис.3.17.,3.18.,3.19.

Как видно из нижеприведенных рисунков в данном программном модуле были объединены возможности ExVarCompass3D и VarMathCAD_API, а так же добавлены инструменты для связывания переменных MathCAD и КОМПАС-3D.

Связывание переменных производиться с помощью двух рядов выпадающих списков, которые содержат в себе список переменных MathCAD - это довольно простой и удобный способ. Переменной КОМПАС-3D автоматически присваивается значение выбранной из списка переменной MathCAD; связи заноситься в базу данных.

Рис.3.17. Ввод значений входных переменных MathCAD с помощью программного модуля IntegratorKM_Lite.

Рис.3.18. Пересчёт расчёта MathCAD по нажатии кнопки «Применить» и считывание выходных переменных MathCAD с помощью программного модуля IntegratorKM_Lite.

Рис.3.19. Связывание переменных MathCAD и КОМПАС-3D c помощью программного модуля IntegratorKM_Lite.

Как следствие ранее перечисленных особенностей работы MathCAD через API-интерфейс, в IntegratorKM_Lite для того, чтобы правильно задать значение входных переменных и определить связи между переменными MathCAD и КОМПАС-3D, в файле расчёта MathCAD приходиться создавать небольшую памятку как на рис.3.20.

Рис.3.20. Памятка в теле расчёта MathCAD

Это, в свою очередь, значительно снижает преимущества автоматизированного подхода. Поэтому было принято окончательное решение сохранить реализованный в IntegratorKM_Lite механизм связывания переменных, но отказаться от использования API-интерфейса для связи с MathCAD в пользу Синтаксического анализатора.

Таким образом, в основу ИИС будут положены Интерфейсный модуль для КОМПАС-3D ExVarCompass3D, Интерфейсный модуль для MathCAD VarMathCAD_XML, Механизм связывания переменных из модуля IntegratorKM_Lite.

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

3.4 Разработка графического интерфейса пользователя ИИС.

Общий вид графического интерфейса пользователя представлен на рис.3.21.

Рис.3.21. Общий вид графического интерфейса пользователя ИИС

На рабочем поле присутствуют четыре вкладки «Проекты», «Операции», «Расчёт», «Переменные» (действия доступные на этих вкладках дублируются в верхнем меню).

Менеджер проектов (Рис.3.21.) содержит список всех созданных проектов, проект содержит список документов проекта, в проект можно добавить любой документ, содержащийся в БД ИИС, и связать его с проектной операцией.

В проект можно добавлять как уже существующие проектные операции, так и создавать их в ходе выполнения проекта (рис.3.22).

Рис.3.22. Содержимое вкладки «Операции»

ИИС работает с двумя типами документов:

Документ, хранящий параметризованную модель или сборку КОМПАС-3D. Он представляет собой инструмент параметрического 3D моделирования (Графический документ). Работа с данным типом документа производиться на вкладке «Модель» (рис.3.23).

Рис.3.23. Содержимое вкладки «Модель». Кнопки позволяют работать с документами КОМПАС-3D

Документ, хранящий расчёт MathCAD. Он представляет собой инструмент для выполнения символьных вычислений (Математический документ). Работа с данным типом документа производиться на вкладке «Расчёт» (рис.3.23).

Рис.3.24. Содержимое вкладки «Расчёт». Кнопки позволяют работать с документами MathCad

При открытии на вкладках «Модель» и «Расчёт» уже созданных документов соответствующих типов автоматически происходит считывание переменных проектных операций в таблицы (рис.3.25).

Рис.3.25. Считывание переменных проектных операций в таблицы

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

Рис.3.26. Связывание переменных проектных операций с помощью выпадающего списка

3.5 Выводы

Результатом разработки системы явилось:

Разработана структура БД, позволяющая хранить информацию о проектной деятельности.

Разработаны три интерфейсных модуля, которые позволили экспериментально опробовать и выбрать подходящие механизмы интеграции;

Разработан графический интерфейс пользователя, позволяющий в удобной форме производить обмен данными между КОМПАС-3D и MathCAD;

К направлениям дальнейшей работы можно отнести следующее:

Разработка инструментов, которые позволили бы создавать параметризированные макросы или параметризировать создаваемые с помощью КОМПАС-Макро (для сохранения промежуточных результатов работы в КОМПАС-3D) ;

Доработка интерфейса пользователя для более удобного процесса проектирования (внедрение как ActiveX-объектов КОМПАС-3D и MathCAD непосредственно в рабочую область, и т.п.);

4. Апробация программного решения

Ниже приведен типовой пошаговый сценарий работы пользователя:

1. Создание нового проекта в Менеджере проектов с помощью кнопки «Создать» (автоматически присваивается номер, вводиться название и описание проекта)

2. Создаются новые проектные операции в Менеджере проектных операций с помощью кнопки «Создать» (автоматически присваивается номер и вводиться дата, выбирается тип операции, вводиться название и описание операции)

3. Создаётся новый математический документ с помощью кнопки «Создать» на вкладке «Расчёт». Запускается MathCAD, выполняется расчёт. После сохранения расчёта переменные и их значения автоматически заносятся в таблицу «Переменные MathCAD». С этой таблицей можно работать далее, изменяя значение присвоенных переменных и считывая значение вычисленных переменных. Пересчёт расчёта производится с помощью кнопки «Применить» на вкладке «Расчёт».

4. Создаётся новый графический документ с помощью кнопки «Создать» на вкладке «Модель». Запускается КОМПАС-3D, строится модель (деталь, сборка). После сохранения модели внешние переменные и их значения автоматически заносятся в таблицу «Переменные КОМПАС-3D».

5. Выполняется операция связывания переменных в таблице «Переменные КОМПАС-3D» - значения переменных MathCAD присваиваются внешним переменным КОМПАС-3D с помощью выпадающих списков (столбец таблицы «Перем. MathCAD»).

6. Выполняется перестроение модели по новым данным с помощью кнопки «Применить» на вкладке «Модель».

4.1 Пример проектирования ребристого радиатора в ИИС

4.2 Пример проектирования шпоночной протяжки в ИИС

4.3 Выводы

В данной главе описан сценарий работы пользователя в программном модуле (в котором реализована значительная часть функций Управляющего модуля ИИС) «Kompas-MathCad Integrator» и проведена апробация данного модуля на двух примерах: Ребристый односторонний радиатор и Шпоночная протяжка (материалы для расчётов приведены в Приложении 2 и 3).

Проведенный программный эксперимент показал возможность создания интегрированной инструментальной среды на базе КОМПАС-3D.

К достоинствам разработанного модуля, можно отнести следующее:

Простота и понятность интерфейса;

Автоматическое считывание переменных и возможность контекстного связывания переменных в момент их создания;

Возможность использования ранее накопленных проектных решений целиком или частично;

К направлениям для дальнейшей работы можно отнести следующее:

Добавление возможностей параметризации макросов, созданных с помощью библиотеки КОМПАС-Макро или других инструментов (для организации сохранения промежуточных результатов работы);

Оптимизация взаимодействия с пользователем;

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

Заключение

В ходе проделанной работы были рассмотрены существующие методы автоматизации проектной деятельности, и указаны их недостатки. Как метод их устранения, был рассмотрен способ создания интегрированной инструментальной среды на базе КОМПАС-3D, позволяющей организовать обмен данными между приложениями и сохранение результатов проектной деятельности в БД.

Были исследованы архитектура и функционал интегрированной инструментальной среды, механизмы её построения. Были сформулированы требования, предъявляемые к графическому процессору в рамках ИИС. Исследовались инструменты для интеграции КОМПАС-3D и расширения его возможностей. Рассматривались варианты взаимодействия КОМПАС-3D с MathCAD.

Практическая часть работы была реализована в виде программного компонента «Kompas-MathCad Integrator», который, являясь связующим звеном, интегрирует возможности графического процессор КОМПАС-3D, математического процессора MathCAD и СУБД MS Access. На практике было доказано, что КОМПАС-3D соответствует требованиям, предъявляемым к графическому процессору. Так же была повышена эффективность математической поддержки в системе КОМПАС-3D.

Завершающим этапом работы стал эксперимент, в ходе которого была доказана работоспособность созданной программы.

Литература

1. Вендров А.М. CASE-технологии. Современные методы и средства проектирования информационных систем, статья - http://www.citforum.ru/database/case/index.shtml

2. Гагарина Л.Г., Киселев Д.В., Федотова Е.Л. Разработка и эксплуатация автоматизированных информационных систем: учебное пособие - М.: ИД «ФОРУМ»: ИНФРА-М, 2007. - 384 с.: ил.

3. Гелль П.П., Матюхина Т.В., Осокина Н.А., Сотенко С.М. Основные конструкторские расчеты: пособие к самостоятельной работе 654300, 551100 - Санкт-Петербургский государственный университет телекоммуникаций им. проф. М.А. Бонч-Бруевича, http://dvo.sut.ru/libr/pes/i286gell/index.htm, глава 2.4. Расчет радиатора полупроводникового прибора

4. Герберт Шилд. Полный справочник по С#.: Пер. с англ. - М.: Издательский дом «Вильямс», 2004. - 752 с.: ил.

5. Грекул В.И., Денищенко Г.Н., Коровкина Н.Л. Проектирование информационных систем: курс лекций: учебное пособие для студентов вузов, обучающихся по специальностям в области информационных технологий - М.: Интернет-Университет Информтехнологий, 2005. - 304 с. с ил.

6. Дейт К.Дж. Введение в системы баз данных, 8-е изд.: Пер. с англ. К., М., СПб.: «Вильямс», 2005.

7. Долин Г. Интеллектуальные САПР в Internet.: КОМПЬЮТЕР. - 1997. - №3. - С. 269-272.

8. Доля А. Математические пакеты: статья на сайте Ф-Центр, http://www.fcenter.ru/forprint.shtml?online/articles/software/interview/7803

9. Евсеева О.Н., Шамшев А.Б. Работа с базами данных на языке С#, Технология ADO.NET: учебное пособие, Ульяновск: УлГТУ, 2009. - 170 с.

10. Зайцев А., Шанчев С. Взаимодействие САПР CATIA, Pro/Engineer и ADEM в сквозном цикле создания изделия: статья в «САПР и графика, 3'2007»

11. Кидрук М. Конструкторские библиотеки и инструменты для их создания в системе КОМПАС-3D: статья в «САПР и графика 1`2006»

12. Кидрук М. Конструкторские библиотеки и инструменты для их создания в системе КОМПАС-3D. Часть 2. Сделай сам, или как создать свою библиотеку для КОМПАС-3D: статья в «САПР и графика 2`2006»

13. Кравченко Ю. А. Cals- и Case-технологии: Учебное пособие - Таганрог: Изд-во ТРТУ, 2005.-134с

14. Кунву Ли. Основы САПР (CAD/CAM/CAE). - СПб.: Питер, 2004. - 560 с.:

15. Кураксин C. На пути к комплексной автоматизации, открытые системы. #05-06/2001, http://www.ebusinessworld.ru/os/2001/05-06

16. Мазурин А., CASE-средства для автоматизации инженерной деятельности, статья в «САПР и графика» 2'2001

17. Нейгел Кристиан, Ивьен Билл, Глинн Джей, Уотсон Карли, Скиннер Морган. C# 2005 и платформа .NET 3.0 для профессионалов = Professional C# 2005 with .NET 3.0. -- М.: Диалектика, 2007.

18. Новиков Ф.А. Дискретная математика для программистов, Спб.: Питер, 2000. - 304 с.: ил.

19. Норенков И.П. Основы автоматизированного проектирования: Учеб. для вузов., перераб. и доп. - М.: Изд-во им. Н.Э. Баумана, 2002. - 336 с.

20. Россум Г., Дрейк Ф.Л. Дж., Откидач Д.С. Язык программирования Python, 2001. -- 454 c.

21. Скрипников Ю.Ф. Радиаторы для полупроводниковых приборов - М., Энергия, 1973, 48 с. с ил., с.17-29.

22. Эндрю Троелсон. Язык программирования С# 2008 и платформа .NET 3.5, 4-е издание.: Перевод с английского - М.: ООО «И.Д. Вильямс», 2010.- 1344 с.: ил.

23. http://ascon.ru - Официальный сайт компании «АСКОН»

24. http://www.ptc.com - Официальный сайт компании РТС, обладатель «MathCAD»

25. http://kompas.ru - Официальный сайт продукта «КОМПАС-3D»

26. http://www.gotdotnet.ru - Сообщество .NET-разработчиков.

27. http://mathmate.ru - Электронный справочник по работе с функциями MathCAD

28. http://www.rsdn.ru - Сайт RSDN (Russian Software Developer Network)

29. http://www.wxpython.org - wxPython

30. http://www.codenet.ru - Всё для программиста!

31. http://www.sapr.ru - Журнал "САПР и графика"

32. http://www.sprut.ru - Официальный сайт компании «СПРУТ-Технология»

33. http://www.nsu.ru/matlab/Exponenta_RU/soft/Mathcad/Mathcad.asp.htm - Образовательный математический сайт EXPponenta.RU, раздел посвященный MathCAD

34. http://www.fsapr2000.ru/lofiversion/index.php/t28587.html - Форум САПР2000

35. http://www.fea.ru/FEA_news_296.html - Параметрическое моделирование в SolidWorks - союз Mathsoft Engineering & Education, Inc. и SolidWorks Corporation: статья на сайте CompMechLab

36. http://www.pts-russia.com/products/mathcad.htm - Программные продукты PTC. MathCAD, система автоматизации математических расчётов: обзор MathCAD на российском сайте компании РТС

37. http://store.ascon.ru/catalog/program.php?ID=96869&progdesc=long - КОМПАС-3D V10, полное описание продукта: описание КОМПАС-3D в электронном магазине компании «АСКОН»

38. http://ru.wikipedia.org/wiki/XML - Обзор XML

39. http://ru.wikipedia.org/wiki/Параметрическое моделирование - Обзор параметризации.

40. http://www.interface.ru/fset.asp?Url=/oracle/9i2.htm - Технологии интеграции компании Oracle на основе XML и Middleware

41. http://www.rusdoc.ru/material/lang/other/activex/active.shtml - Введение в технологии OLE и ActiveX

Приложение 1

Листинги скриптов Компас-3D и SolidWorks

Скрипт SolidWorks 2006 извлеченный из файла протокола swxJRNL.swj

Dim swApp As Object

Dim Part As Object

Dim SelMgr As Object

Dim boolstatus As Boolean

Dim longstatus As Long, longwarnings As Long

Dim Feature As Object

Sub main()

Set swApp = Application.SldWorks

swApp.ActiveDoc.ActiveView.FrameLeft = 0

swApp.ActiveDoc.ActiveView.FrameTop = 0

swApp.ActiveDoc.ActiveView.FrameState = 1

swApp.ActiveDoc.ActiveView.FrameState = 1

Set Part = swApp.NewDocument ("C:\Program Files\SolidWorks\data\templates\Деталь.prtdot", 0, 0.000000, 0.000000)

Set Part = swApp.ActivateDoc2 ("Деталь1", False, longstatus)

swApp.ActiveDoc.ActiveView.FrameState = 1

boolstatus = Part.Extension.SelectByID2("Точка1@Исходная точка", "EXTSKETCHPOINT", 0, 0, 0, False, 0, Nothing, 0)

boolstatus = Part.Extension.SelectByID2("Спереди", "PLANE", 0, 0, 0, False, 0, Nothing, 0)

Part.InsertSketch2 True

Part.ClearSelection2 True

Part.SketchRectangle 0, 0, 0, 0.1001317919075, 0.07482967244701, 0, 1

Part.ClearSelection2 True

boolstatus = Part.Extension.SelectByID2("Point3", "SKETCHPOINT", 0, 0.07482967244701, 0, False, 0, Nothing, 0)

boolstatus = Part.Extension.SelectByID2("Point2", "SKETCHPOINT", 0.1001317919075, 0.07482967244701, 0, True, 0, Nothing, 0)

Set Annotation = Part.AddHorizontalDimension2(0.100939, 0.092595, 0)

Part.ClearSelection2 True

Part.Parameter("D1@Эскиз1").SystemValue = 0.100132

Part.ClearSelection2 True

boolstatus = Part.Extension.SelectByID2("W1@Эскиз1@Деталь1.SLDPRT", "DIMENSION", 0, 0, 0, False, 0, Nothing, 0)

Part.ClearSelection2 True

boolstatus = Part.Extension.SelectByID2("Point2", "SKETCHPOINT", 0.10013179191, 0.07482967244701, 0, False, 0, Nothing, 0)

boolstatus = Part.Extension.SelectByID2("Point4", "SKETCHPOINT", 0.10013179191, 0, 0, False, 0, Nothing, 0)

boolstatus = Part.Extension.SelectByID2("Point2", "SKETCHPOINT", 0.10013179191, 0.07482967244701, 0, False, 0, Nothing, 0)

boolstatus = Part.Extension.SelectByID2("Point4", "SKETCHPOINT", 0.10013179191, 0, 0, False, 0, Nothing, 0)

boolstatus = Part.Extension.SelectByID2("Point2", "SKETCHPOINT", 0.10013179191, 0.07482967244701, 0, False, 0, Nothing, 0)

Part.ClearSelection2 True

boolstatus = Part.Extension.SelectByID2("Point2", "SKETCHPOINT", 0.10013179191, 0.07482967244701, 0, False, 0, Nothing, 0)

boolstatus = Part.Extension.SelectByID2("Point4", "SKETCHPOINT", 0.10013179191, 0, 0, False, 0, Nothing, 0)

Part.SetPickMode

Part.ClearSelection2 True

boolstatus = Part.Extension.SelectByID2("Point4", "SKETCHPOINT", 0.10013179191, 0, 0, False, 0, Nothing, 0)

boolstatus = Part.Extension.SelectByID2("Point2", "SKETCHPOINT", 0.10013179191, 0.07482967244701, 0, True, 0, Nothing, 0)

Set Annotation = Part.AddVerticalDimension2(0.12678, 0.0729455, 0)

Part.ClearSelection2 True

Part.Parameter("D1@Эскиз1").SystemValue = 0.0748297

Part.ClearSelection2 True

boolstatus = Part.Extension.SelectByID2("W1@Эскиз1@Деталь1.SLDPRT", "DIMENSION", 0.05760269749518, 0.09205664739884, 0, False, 0, Nothing, 0)

boolstatus = Part.Extension.SelectByID2("H1@Эскиз1@Деталь1.SLDPRT", "DIMENSION", 0.1259722543353, 0.07133044315992, 0, False, 0, Nothing, 0)

Part.ClearSelection2 True

Part.InsertSketch2 True

boolstatus = Part.Extension.SelectByID2("Эскиз1", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)

Part.ShowNamedView2 "*Триметрия", 8

Part.ClearSelection2 True

boolstatus = Part.Extension.SelectByID2("Эскиз1", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)

Part.FeatureManager.FeatureExtrusion2 True, False, False, 0, 0, 0.05, 0.01, False, False, False, False, 0.01745329251994, 0.01745329251994, False, False, False, False, 1, 1, 1, 0, 0, False

Part.SelectionManager.EnableContourSelection = 0

Part.SaveAs2 "C:\Documents and Settings\Администратор\Рабочий стол\Sample1.SLDPRT", 0, FALSE, FALSE

swApp.ActiveDoc.ActiveView.FrameState = 1

Part.ClearSelection2 True

swApp.ExitApp

End Sub

Скрипт SolidWorks 2006 извлеченный из файла макроса SW_Macro.swp

Dim swApp As Object

Dim Part As Object

Dim SelMgr As Object

Dim boolstatus As Boolean

Dim longstatus As Long, longwarnings As Long

Dim Feature As Object

Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc

Set SelMgr = Part.SelectionManager

swApp.ActiveDoc.ActiveView.FrameState = 1

boolstatus = Part.Extension.SelectByID2("Спереди", "PLANE", 0, 0, 0, False, 0, Nothing, 0)

Part.ClearSelection2 True

Part.SketchRectangle 0, 0, 0, 0.1001317919075, 0.07550260115607, 0, 1

Part.ClearSelection2 True

boolstatus = Part.Extension.SelectByID2("Point3", "SKETCHPOINT", 0, 0.07550260115607, 0, False, 0, Nothing, 0)

boolstatus = Part.Extension.SelectByID2("Point2", "SKETCHPOINT", 0.1001317919075, 0.07550260115607, 0, True, 0, Nothing, 0)

Set Annotation = Part.AddHorizontalDimension2(0.0522193, 0.0897687, 0)

Part.ClearSelection2 True

Part.Parameter("D1@Эскиз1").SystemValue = 0.100132

Part.ClearSelection2 True

boolstatus = Part.Extension.SelectByID2("Point2", "SKETCHPOINT", 0.10013179191, 0.07550260115607, 0, False, 0, Nothing, 0)

boolstatus = Part.Extension.SelectByID2("Point4", "SKETCHPOINT", 0.10013179191, 0, 0, True, 0, Nothing, 0)

Set Annotation = Part.AddVerticalDimension2(0.118435, 0.0394336, 0)

Part.ClearSelection2 True

Part.Parameter("D1@Эскиз1").SystemValue = 0.0755026

Part.ClearSelection2 True

Part.InsertSketch2 True

boolstatus = Part.Extension.SelectByID2("Эскиз1", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)

Part.ShowNamedView2 "*Триметрия", 8

Part.ClearSelection2 True

boolstatus = Part.Extension.SelectByID2("Эскиз1", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)

Part.FeatureManager.FeatureExtrusion2 True, False, False, 0, 0, 0.05, 0.01, False, False, False, False, 0.01745329251994, 0.01745329251994, False, False, False, False, 1, 1, 1, 0, 0, False

Part.SelectionManager.EnableContourSelection = 0

End Sub

Скрипт КОМПАС-3Dv10 извлеченный из файла макроса KM_Macro1.m3m

import Kompas6API5 as KAPI

from win32com.client import Dispatch

import LDefin2D

import LDefin3D

iKompasObject = Dispatch('KOMPAS.Application.5')

iKompasObject = KAPI.KompasObject(iKompasObject)

iDocument3D = iKompasObject.ActiveDocument3D()

iPart = iDocument3D.GetPart(LDefin3D.pTop_Part)

iSketch = iPart.NewEntity(LDefin3D.o3d_sketch)

iDefinition = iSketch.GetDefinition()

iPlane = iPart.GetDefaultEntity(LDefin3D.o3d_planeXOY)

iDefinition.SetPlane(iPlane)

iSketch.Create()

iDocument2D = iDefinition.BeginEdit()

iDocument2D.ksLineSeg(0.0, 0.0, 54.0, 0.0, 1)

iDocument2D.ksLineSeg(54.0, 0.0, 54.0, 41.0, 1)

iDocument2D.ksLineSeg(54.0, 41.0, 0.0, 41.0, 1)

iDocument2D.ksLineSeg(0.0, 41.0, 0.0, 0.0, 1)

iLDimParam = KAPI.ksLDimParam(iKompasObject.GetParamStruct(LDefin2D.ko_LDimParam))

iDimDrawingParam = KAPI.ksDimDrawingParam(iLDimParam.GetDPar())

iDimDrawingParam.Init()

iDimDrawingParam.ang = 0.0

iDimDrawingParam.lenght = 0.0

iDimDrawingParam.pl1 = False

iDimDrawingParam.pl2 = False

iDimDrawingParam.pt1 = 1

iDimDrawingParam.pt2 = 1

iDimDrawingParam.shelfDir = 0

iDimDrawingParam.textBase = 0

iDimDrawingParam.textPos = 0

iLDimSourceParam = KAPI.ksLDimSourceParam(iLDimParam.GetSPar())

iLDimSourceParam.Init()

iLDimSourceParam.basePoint = 1

iLDimSourceParam.dx = 0.0

iLDimSourceParam.dy = 24.21979427206

iLDimSourceParam.ps = 0

iLDimSourceParam.x1 = 0.0

iLDimSourceParam.y1 = 41.0

iLDimSourceParam.x2 = 54.0

iLDimSourceParam.y2 = 41.0

iDimTextParam = KAPI.ksDimTextParam(iLDimParam.GetTPar())

iDimTextParam.Init(0)

iDimTextParam.bitFlag = 1

iDimTextParam.sign = 0

iDimTextParam.stringFlag = False

iDimTextParam.style = 3

iDocument2D.ksLinDimension(iLDimParam)

iLDimParam = KAPI.ksLDimParam(iKompasObject.GetParamStruct(LDefin2D.ko_LDimParam))

iDimDrawingParam = KAPI.ksDimDrawingParam(iLDimParam.GetDPar())

iDimDrawingParam.Init()

iDimDrawingParam.ang = 0.0

iDimDrawingParam.lenght = 0.0

iDimDrawingParam.pl1 = False

iDimDrawingParam.pl2 = False

iDimDrawingParam.pt1 = 1

iDimDrawingParam.pt2 = 1

iDimDrawingParam.shelfDir = 0

iDimDrawingParam.textBase = 0

iDimDrawingParam.textPos = 0

iLDimSourceParam = KAPI.ksLDimSourceParam(iLDimParam.GetSPar())

iLDimSourceParam.Init()

iLDimSourceParam.basePoint = 1

iLDimSourceParam.dx = 34.63541688765

iLDimSourceParam.dy = 0.0

iLDimSourceParam.ps = 1

iLDimSourceParam.x1 = 54.0

iLDimSourceParam.y1 = 41.0

iLDimSourceParam.x2 = 54.0

iLDimSourceParam.y2 = 0.0

iDimTextParam = KAPI.ksDimTextParam(iLDimParam.GetTPar())

iDimTextParam.Init(0)

iDimTextParam.bitFlag = 1

iDimTextParam.sign = 0

iDimTextParam.stringFlag = False

iDimTextParam.style = 3

iDocument2D.ksLinDimension(iLDimParam)

iDefinition.EndEdit()

iPart = iDocument3D.GetPart(LDefin3D.pTop_Part)

obj = iPart.NewEntity(LDefin3D.o3d_bossExtrusion)

iDefinition = obj.GetDefinition()

iCollection = iPart.EntityCollection(LDefin3D.o3d_edge)

iCollection.SelectByPoint(27.0, 0.0, 0.0)

iEdge = iCollection.GetByIndex(0)

iEdgeDefinition = iEdge.GetDefinition()

iSketch = iEdgeDefinition.GetOwnerEntity()

iDefinition.SetSketch(iSketch)


Подобные документы

  • Общие сведения о системе Компас 3D, предназначенной для графического ввода и редактирования чертежей на ПК. Ее основные функции, типы объектов, единицы измерения. Принципы работы в Компас-График LT. Пример создания файла трехмерной модели сборки детали.

    курсовая работа [1,1 M], добавлен 03.11.2014

  • Последовательность разработки чертежа и модели с типоразмерами из параметрического ряда. Построение таблицы переменных в соответствии с исходными данными. Проектирование параметрической модели в системе Компас-3D, внешние переменные для чертежа детали.

    практическая работа [5,9 M], добавлен 14.04.2016

  • Анализ объектно-ориентированной технологии программирования на примере языка Java. Методы, инструменты разработки web-приложений. Применение их при создании Интернет-магазина для ООО "Компас". Разработка апплета для его страницы в виде стрелочных часов.

    курсовая работа [2,7 M], добавлен 31.01.2014

  • Изучение системы КОМПАС-ГРАФИК, ее структура и основные возможности, типы файлов. Рабочий чертеж детали с простановкой размеров, оформлением технических требований и заполнением основной надписи. Проверочный прочностной расчет узла автомобиля в САПР-АВТО.

    курсовая работа [68,8 K], добавлен 14.05.2015

  • Изучение интерфейса и основных инструментов программы Компас. Обзор инструментов моделирования, используемых при создании модели материнской платы. Анализ программных и технических средств, объединенных в единый технологический процесс проектирования.

    курсовая работа [2,7 M], добавлен 05.04.2012

  • Компас-3D как универсальная система трехмерного проектирования. Классический процесс трехмерного параметрического проектирования. Особенности универсальной системы автоматизированного проектирования Компас-График. Преимущества и недостатки системы Компас.

    реферат [2,8 M], добавлен 30.05.2010

  • Создание, редактирование, выбор штриховок и заливок 3D детали с целью наглядности представления изготовленной детали в программе Компас 3D. Изучение и порядок работы с программой, знакомство с ее особенностями, область применения программы Компас.

    курсовая работа [1,4 M], добавлен 16.07.2012

  • Жизненный цикл программного продукта. Современные среды разработки приложений. Защита информации в базах данных. Особенности разработки приложения с помощью среды Delphi 7. Проверка программного модуля на предмет соответствия стандартам кодирования.

    отчет по практике [589,0 K], добавлен 18.05.2017

  • Создание сложных двумерных и трехмерных моделей в среде AutoCAD, КОМПАС-3D и Autodesk Inventor. Построение эскизов на плоскости, порядок создания чертежей. Способы построения моделей и особенности их применения в той или иной ситуации на практике.

    контрольная работа [1,2 M], добавлен 30.05.2015

  • Точность чертежей и документации. Использование собственного математического ядра и параметрических технологий как ключевая особенность "Компас-3D". Основной инструментарий трехмерного моделирования. Моделирование деталей из листового материала.

    реферат [16,4 K], добавлен 20.06.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.