C# и СПДС
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > C# и СПДС

C# и СПДС

Ответ
Поиск в этой теме
Непрочитано 21.12.2012, 13:56 #1
C# и СПДС
crosandr
 
Инженер-строитель
 
Санкт-Петербург
Регистрация: 09.07.2010
Сообщений: 1,994

Добрый день. Пытаюсь написать небольшую автоматизацию, используя создание объектов СПДС.
В справке к объектной модели McCOM2 есть указание, как создать объект Server на C
Код:
[Выделить все]
 //Получение сервера в C
//Сервер зарегистрирован в локальном контексте (CLSCTX_LOCAL_SERVER),
//поэтому к нему можно обращаться из другого процесса
CLSID clsid;
HRESULT hr = CLSIDFromString(L"McCOM2.Server", &clsid);
IUnknown* pServer = NULL;
hr = GetActiveObject(clsid, NULL, &pServer); 
Как то же самое сделать на C#? Пишу для Autocad 2013 и СПДС 8.
Просмотров: 3811
 
Непрочитано 21.12.2012, 14:21
#2
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


В диалоговом окне Reference Manager на вкладке COM смотрел нужную тебе библиотеку?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 21.12.2012, 15:35
#3
crosandr

Инженер-строитель
 
Регистрация: 09.07.2010
Санкт-Петербург
Сообщений: 1,994


Библиотеку подключил. Сервер сейчас создаю так:
Код:
[Выделить все]
 using System;
using Autodesk.AutoCAD.ApplicationServices;
//using acad = Autodesk.AutoCAD.ApplicationServices.Application; // для acad младше 2013
using acad = Autodesk.AutoCAD.ApplicationServices.Core.Application;// для acad 2013 
//we now have an additional DLL dependency in .NET projects for AutoCAD 2013: 
//you need to include a project reference to AcCoreMgd.dll (in addition to AcMgd.dll and AcDbMgd.dll)
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.DatabaseServices;
using McCOM2;
using System.Runtime.InteropServices;

namespace TestSpds
{
    public class spds_test
    {
        Document dwg;
        Database db;
        Editor ed;
        bool initialized = false;

        Server pServer;

        public void Initialize()
        {
            dwg = acad.DocumentManager.MdiActiveDocument;
            db = dwg.Database;
            ed = dwg.Editor;
            ed.WriteMessage("\nСборка загружена...");

            pServer = new Server();
        }
}}

Код работает, но так вообще правильно делать? Что-то читал про 2013 acad и dynamic. Это имеет отношение к теме?
crosandr вне форума  
 
Непрочитано 21.12.2012, 15:51
#4
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


а что тебя смущает в этом способе? Только используй директивы препроцессора, дабы не заниматься комментированием\раскомментированием своих строк кода под разные версии AutoCAD, иначе ты сам себе головную боль создаёшь...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 23.12.2012, 11:38
#5
Salt

Josser
 
Регистрация: 09.11.2011
Сообщений: 66


To crosandr
Тема взаимодействия управляемого кода с COM серверами и наоборот хорошо раскрыта в книге
COM and .NET Interoperability, Andrew Troelsen, 2002.
Правда, я нашел вариант только на английском. Для комфортного чтения эта книга требует знания основ COM технологии и языка С++. Ну и, разумеется, C#.NET
__________________
... пути твои в водах многих, и следы твои не познaются.
Salt вне форума  
 
Непрочитано 23.12.2012, 13:17
#6
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Salt Посмотреть сообщение
Правда, я нашел вариант только на английском
Английский вариант всегда лучше локализованного, поскольку переводчики умудряются делать огромное множество ошибок не только в тексте, но и в исходном коде, как это ни странно...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 28.05.2014, 14:17
#7
ivmax


 
Регистрация: 18.10.2011
Сообщений: 13


Добрый день. Подскажите пожалуйста как создать объект СПДС средствами c#, например выноску.
ivmax вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > C# и СПДС



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
СПДС Graphics. Интеграция с AutoCAD. Нет панелек СПДС Sn4ke ПО от CSoft 40 31.07.2020 11:52
AutoCAD 2012 + СПДС 7.0.938 - пропадает панель масштаба СПДС prog_mike Прочее. Программное обеспечение 8 18.11.2011 13:27
СПДС 7.0 не подгружается под автокад 2011 solovey_9lo Вертикальные решения на базе AutoCAD 3 18.05.2011 06:29
Копирование данных для спецификаций из выносок СПДС в таблицу из мтекстов Red Nova Программирование 177 08.12.2008 11:35