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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > .NET > .Net c# гуру? помогите...

.Net c# гуру? помогите...

Ответ
Поиск в этой теме
Непрочитано 24.10.2007, 14:06 #1
.Net c# гуру? помогите...
vip_open
 
Регистрация: 24.10.2007
Сообщений: 9

Мне нужно понять как работать с AutoCAD'ом программно через c#. Подскажите, с чего начать??? спасибо...
Просмотров: 10609
 
Непрочитано 24.10.2007, 14:40
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,789


Я не знаю C#, но ссылки http://usa.autodesk.com/adsk/servlet...t=C%23&x=0&y=0, http://usa.autodesk.com/adsk/servlet...&siteID=123112 и http://images.autodesk.com/adsk/file...t_training.zip вроде ничего так...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 24.10.2007, 15:22
#3
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,405
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от vip_open Посмотреть сообщение
Мне нужно понять как работать с AutoCAD'ом программно через c#. Подскажите, с чего начать??? спасибо...
Определись собираешься ли ты работать с AutoCAD из внешнего приложения (exe-файла), используя AutoCAD как COM-сервер или загружать свою .NET-сборку внутрь AutoCAD (используя команду _NETLOAD). От этого в значительной степени зависит технология и с "чего начать".
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 11.01.2008, 07:42
#4
vip_open


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


Александр Ривилис, в принципе, мне без разницы...
Думаю что ObjectARX - это то, что мне нужно.

Вы знаете как сделать изменение значения атрибута в динамическом блоке?
vip_open вне форума  
 
Автор темы   Непрочитано 11.01.2008, 07:53
#5
vip_open


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


_eattedit - вот эти атрибуты нужно править в динам блоке
vip_open вне форума  
 
Автор темы   Непрочитано 11.01.2008, 09:20
#6
vip_open


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


Где взять Autodesk.AutoCAD.Interop.dll and Autodesk.AutoCAD.Interop.Common.dll???
acdbmgd.dll,acmgd.dll - эти длл я взял из ObjectARX SDK 2007, а вот верхних 2-х там нет... очень странно..
vip_open вне форума  
 
Непрочитано 11.01.2008, 09:46
1 | #7
Sync02


 
Регистрация: 07.12.2007
Брест
Сообщений: 243


Цитата:
Сообщение от vip_open Посмотреть сообщение
Где взять Autodesk.AutoCAD.Interop.dll and Autodesk.AutoCAD.Interop.Common.dll???
acdbmgd.dll,acmgd.dll - эти длл я взял из ObjectARX SDK 2007, а вот верхних 2-х там нет... очень странно..
Вот с хелпа выдержка:

To fully access AutoCAD automation objects from Microsoft Visual Studio® .NET, create references to the following files:

The AutoCAD 2008 type library, acax17enu.tlb, located at c:\program files\common files\autodesk shared.
The AutoCAD/ObjectDBX Common 17.0 type library, axdb17enu.tlb, located at c:\program files\common files\autodesk shared.
These references will make available the following primary interop assemblies: Autodesk.AutoCAD.Interop.dll (for AutoCAD-specific types), and Autodesk.AutoCAD.Interop.Common.dll (for types shared by ObjectDBXTM host applications). The interop assemblies are located in the global assembly cache; they map automation objects to .NET counterparts.
Sync02 вне форума  
 
Автор темы   Непрочитано 11.01.2008, 10:20
#8
vip_open


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


A first chance exception of type 'System.Runtime.InteropServices.COMException' occurred in Microsoft.VisualStudio.HostingProcess.Utilities.dll
The thread 0x1600 has exited with code 0 (0x0).
The thread 0x1638 has exited with code 0 (0x0).
'autocad_shtamp.vshost.exe' (Managed): Loaded 'D:\_working\autocad_shtamp\autocad_shtamp\bin\Debug\autocad_shtamp.exe', Symbols loaded.
A first chance exception of type 'System.IO.FileNotFoundException' occurred in System.Windows.Forms.dll
An unhandled exception of type 'System.IO.FileNotFoundException' occurred in System.Windows.Forms.dll

Additional information: Не найден указанный модуль. (Исключение из HRESULT: 0x8007007E)

вот такая ошибка.... чё делать??? аааааа....
vip_open вне форума  
 
Автор темы   Непрочитано 11.01.2008, 10:21
#9
vip_open


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


An unhandled exception of type 'System.IO.FileNotFoundException' occurred in System.Windows.Forms.dll

Additional information: Не найден указанный модуль. (Исключение из HRESULT: 0x8007007E)

вот такое...
vip_open вне форума  
 
Непрочитано 11.01.2008, 10:36
#10
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


http://www.dll.ru/dll/S/32.html
Supermax вне форума  
 
Автор темы   Непрочитано 11.01.2008, 11:25
#11
vip_open


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


нето
vip_open вне форума  
 
Автор темы   Непрочитано 11.01.2008, 13:17
#12
vip_open


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


смысл какой??? хочется из exe-ника подрубиться к автокаду, и затем поменять пару значений в динамическом блоке. всё... сказали подключаться через COM. не силён я в подключении в c#??? кто-гибудь знает как это можно сделать???
vip_open вне форума  
 
Автор темы   Непрочитано 11.01.2008, 13:18
#13
vip_open


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


Александр Ривилис, мне вот COM-сервер нужно юзать... как это осуществить?
vip_open вне форума  
 
Непрочитано 11.01.2008, 13:43
1 | #14
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,405
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от vip_open Посмотреть сообщение
Александр Ривилис, мне вот COM-сервер нужно юзать... как это осуществить?
О каком сервере идет речь? Об AutoCAD?
Код:
[Выделить все]
using Autodesk.AutoCAD.Interop;
using Autodesk.AutoCAD.Interop.Common;
namespace AttachToAcad
{
  public class Test  {
    static void Main() {
      AcadApplication acad = GetOrCreateAcadInstance();
      if (acad != null) {
       // Здесь уже можно работать с AutoCAD
       // например:  acad.Visible = true;
      }
    }
    public static AcadApplication GetOrCreateAcadInstance() 
    {
      AcadApplication acad = null;
      try {
        acad = (AcadApplication)Marshal.GetActiveObject("AutoCAD.Application");
      }
      catch {
        try { acad = new AcadApplication(); } catch {}
      }
      return acad;
    }
  }
}
Александр Ривилис вне форума  
 
Непрочитано 12.01.2008, 01:43
#15
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
О каком сервере идет речь? Об AutoCAD?
Код:
[Выделить все]
using Autodesk.AutoCAD.Interop;
using Autodesk.AutoCAD.Interop.Common;
namespace AttachToAcad
{
  public class Test  {
    static void Main() {
      AcadApplication acad = GetOrCreateAcadInstance();
      if (acad != null) {
       // Здесь уже можно работать с AutoCAD
       // например:  acad.Visible = true;
      }
    }
    public static AcadApplication GetOrCreateAcadInstance() 
    {
      AcadApplication acad = null;
      try {
        acad = (AcadApplication)Marshal.GetActiveObject("AutoCAD.Application");
      }
      catch {
        try { acad = new AcadApplication(); } catch {}
      }
      return acad;
    }
  }
}
В продолжение темы пример изменения динамических
свойств "Distance" и "Distance1" в блоке:

Код:
[Выделить все]
using System;
using System.Runtime.InteropServices;
using Autodesk.AutoCAD.Interop;
using Autodesk.AutoCAD.Interop.Common;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using acadAS = Autodesk.AutoCAD.ApplicationServices;
using acadApp = Autodesk.AutoCAD.ApplicationServices.Application;
using acadDoc = Autodesk.AutoCAD.ApplicationServices.Document;
using acadDB = Autodesk.AutoCAD.DatabaseServices;
namespace AttachToAcad
{
	public class Test
	{

		[CommandMethod("CRA", CommandFlags.Session)]
		static void Main()
		{
			AcadApplication acad = GetOrCreateAcadInstance();
			if (!(acad == null)) {
				acad.Visible = true;
				AcadDocument adoc;
				adoc = acad.ActiveDocument;

				while (adoc.SelectionSets.Count > 0) {
					adoc.SelectionSets.Item(0).Delete();
				}
				AcadSelectionSet oSset;
				short[] ftype = new short[0];
				object[] fdata = new object[0];
				ftype(0) = 0;
				fdata(0) = "INSERT";
				oSset = adoc.SelectionSets.Add("SomeSet");
				oSset.SelectOnScreen(ftype, fdata);
				AcadEntity oEnt;
				AcadBlockReference blkref;
				foreach (int oEnt in oSset) {
					blkref = oEnt;
					if (blkref.IsDynamicBlock) {
						ChangeDynProperty(blkref, "Distance", 70);
						ChangeDynProperty(blkref, "Distance1", 70);
					}
				}
			}
		}

		public static AcadApplication GetOrCreateAcadInstance()
		{
			AcadApplication acad = null;
			try {
				acad = ((AcadApplication)(Marshal.GetActiveObject("AutoCAD.Application")));
			} catch {
				try {
					acad = new AcadApplication();
				} catch (Autodesk.AutoCAD.Runtime.Exception ex) {
					MsgBox(ex.StackTrace);
				}
			} finally {
			}
			return acad;
		}

		public static object GetDynProps(AcadBlockReference blkref)
		{
			if (!(blkref.IsDynamicBlock)) {
				GetDynProps = null;
			} else {
				GetDynProps = blkref.GetDynamicBlockProperties;
			}
		}

		public static void ChangeDynProperty(AcadBlockReference blkref, object pName, object pValue)
		{
			object bProps;
			bProps = GetDynProps(blkref);
			object n;
			for (int n = 0; n <= UBound(bProps); n++) {
				AcadDynamicBlockReferenceProperty curProp;
				curProp = bProps(n);
				if (curProp.PropertyName == pName) {
					curProp.Value = pValue;
				}
			}
		}
	}
}
fixo вне форума  
 
Непрочитано 18.01.2008, 00:14
#16
VanDerKeen


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


вооьще я находил книгу про применение сторонних технологий в .Net. в том числе автокад. так что поищи
__________________
проектные работы
http://www.chepr.ru
VanDerKeen вне форума  
 
Непрочитано 03.01.2009, 20:51
#17
евгений_первый


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


Мне необходимо найти описание формата файлов *.dwg для того чтобы открывать для чтения четежи в виде рисунков в VisualStudio.Net
евгений_первый вне форума  
 
Непрочитано 03.01.2009, 22:39
#18
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,405
Отправить сообщение для Александр Ривилис с помощью Skype™


Формат dwg-файлов закрытый, и меняется (последние десять лет) каждые три версии AutoCAD.
Александр Ривилис вне форума  
 
Непрочитано 03.01.2009, 23:05
#19
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


Да, но ребята которые делают клоны автокада занимаются реверсинжинирингом, так что мне думаеца у них кое-чего есть попробуй с ними связаться.
Sleekka вне форума  
 
Непрочитано 03.01.2009, 23:10
#20
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от Sleekka Посмотреть сообщение
Да, но ребята которые делают клоны автокада занимаются реверсинжинирингом, так что мне думаеца у них кое-чего есть попробуй с ними связаться.
По моему эти ребята находятся здесь
А вот и их список
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > .NET > .Net c# гуру? помогите...

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите умным советом... Agens Программирование 43 30.12.2007 10:43
Уважвемые Гуру, помогите определиться с типом фундамента MasterZim Основания и фундаменты 33 19.04.2006 21:18