• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

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

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Пишу программу. Ошибки"не содержит определения"

Автор Евгений27, 24.05.23, 09:51:56

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Евгений27

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

Ошибка   CS1061   "KompasObject" не содержит определения "GetMacro", и не удалось найти доступный метод расширения "GetMacro", принимающий тип "KompasObject" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).

Ошибка   CS1061   "Document3D" не содержит определения "Close", и не удалось найти доступный метод расширения "Close", принимающий тип "Document3D" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).


Может я вообще изначально не с того начал ?

вот пример кода

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Diagnostics.Eventing.Reader;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using Kompas6API5;
using Kompas6Constants3D;
using Kompas6Constants;
using KAPITypes;
using KompasAPI7;

namespace WpfApp3
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void OpenCompass3DButton_Click(object sender, RoutedEventArgs e)
        {
            // Путь к исполняемому файлу "Компас 3D"
            string compass3DPath = "C:\\Program Files\\ASCON\\KOMPAS-3D V16\\Bin\\KOMPAS.Exe";

            // Путь к файлу 3D сборки
            string assemblyFilePath = "C:\\2\\Сборка.a3d";

            // Путь к файлу макроса
            string macroFilePath = "C:\\macro.cs";

            try
            {
                // Запускаем Компас 3D
                Process kompas = Process.Start(compass3DPath);

                // Ожидаем, пока Компас 3D запустится
                kompas.WaitForInputIdle();

                // Получаем ID процесса Компас 3D
                int kompasProcessID = kompas.Id;

                // Получаем тип Компас API
                Type tKompasAPI = Type.GetTypeFromProgID("KOMPAS.Application.5");

                // Создаём экземпляр Компас API
                KompasObject kompasAPI = (KompasObject)Activator.CreateInstance(tKompasAPI);

                // Получаем активный документ
                Kompas6API5.Document3D document3D = (Kompas6API5.Document3D)kompasAPI.ActiveDocument3D();

                // Загружаем файл 3D сборки
                document3D.Open(assemblyFilePath, false);

                // Получаем интерфейс компонента
                ksPart part = (ksPart)document3D.GetPart((short)Part_Type.pTop_Part);

                // Получаем коллекцию внешних переменных
                VariableCollection variables = part.VariableCollection();

                // Обновляем коллекцию внешних переменных
                variables.refresh();

                // Получаем интерфейс переменных по их имени
                Variable hVariable = variables.GetByName("h", true, true);
                Variable wVariable = variables.GetByName("w", true, true);

                // Устанавливаем значения переменных
                hVariable.value = 1000;
                wVariable.value = 3000;

                // Перестраиваем модель
                part.RebuildModel();

                // Выполняем макрос
                kompasAPI.GetMacro(macroFilePath).Execute();

                // Закрываем документ
                document3D.Close();

                // Отправляем сообщение о завершении
                MessageBox.Show("Макрос выполнен успешно!");
            }
            catch (Exception ex)
            {
                // Обработка ошибок
                MessageBox.Show(ex.Message);
            }
        }
    }
}



Евгений27

Еще постоянные ошибки такого плана

Ошибка   CS0246   Не удалось найти тип или имя пространства имен "KompasMacroLibrary" (возможно, отсутствует директива using или ссылка на сборку).

p3452

1. Воспользуйтесь "Поиск"-ом Форума - куча примеров (на разных языках) правильного подключения API...
2. Не используйте "общий" try..catch - малоинформативен...
3. Делайте проверку на существование, после "получения" каждого объекта...
+ Благодарностей: 1


p3452

Цитата: Евгений27 от 24.05.23, 11:02:38Еще постоянные ошибки такого плана

Ошибка   CS0246   Не удалось найти тип или имя пространства имен "KompasMacroLibrary" (возможно, отсутствует директива using или ссылка на сборку).

- Или действительно не подключили библиотеку в using, или такого имени нет в подключенных библиотеках - проверяйте "имена" по Справке SDK.