Public ReadOnly Property ThisDrawing() As AcadDocumentВылетает ошибка, что-то поменялось в 2014?
Get
Return Autodesk.AutoCAD.ApplicationServices.Application.
_DocumentManager.MdiActiveDocument.AcadDocument
End Get
End Property
I was struggling wit this too. You have to add references from your autocad program folder (X:\Program files\Autodesk\Autocad 2014\). Find Autodesk.AutoCAD.Interop.dll and Autodesk.AutoCAD.Interop.Common.dll . After that, magically appeared for me, but see if you are missing from ObjectARX2014 or 2013 folder and if so then add the following: AcCoreMgd.dll ; AcDx.dll. Then you can use the following:но хотелось бы услышать тут и на русском :)ЦитироватьCode:
Public ReadOnly Property ThisDrawing As AcadDocument
Get
Return Application.DocumentManager.MdiActiveDocument.GetAcadDocument()
End Get
End Property
Public ReadOnly Property ThisDrawing As AcadDocument---
Get
Return Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument
End Get
End Property
Я не пишу на С#, я пользуюсь VB.NET, C# для меня темный лесОбозначенный мною выше код достаточно прост. Я думаю, что и без знания C# его можно понять. Если что-то не ясно, то поясню. Касательно VB.NET: когда-то я писал на VBA, но после C# для меня VBA\VB[.NET] напоминает клинопись гоблинов, которую даже читать больно. Выбирая, на что переходить с VBA - на VB.NET или на C#, я выбрал C# и не разу ни пожалел об этом. Наоборот, ужасаюсь, как меня в прошлом угораздило вляпаться в VBA... Синтаксис C#, на самом деле достаточно просто и легок в освоении.
Вылетает ошибка, что-то поменялось в 2014?Да. И довольно много.
ObjectARX - это чистый C++ без использования .NET (C#/VB.NET).Несмотря на то, что Автодеск везде усиленно пишет об обратном:
The ObjectARX® programming environment provides object-oriented C++, C#, and VB .NET application programming interfaces for developers to use, customize, and extend AutoCAD® software and AutoCAD-based products, such as AutoCAD® Architecture, AutoCAD® Mechanical, and AutoCAD® Civil 3D® software. A version of ObjectARX for AutoCAD® for Mac® software is also available, though not all APIs are available in the Mac version.Т.о. на сегодняшний день Autodesk вносит существенную путанницу, заявляя, что под словом "ObjectARX" подразумевает не только C++, но и .NET языки (возможно, что сейчас к этому набору они относят и JavaScript, хотя в этом я пока не уверен). Хотя на практике всё с точностью до наоборот.
Источник: http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=773204
Дополнительно в п.4 здесь: http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=773128
The following publications are included with the ObjectARX SDK:
- Managed Class Reference
- ObjectARX Developer’s Guide
- ObjectARX Reference
- Application Interoperability Guidelines
- ObjectARX 64-bit Migration Guide
Links to other valuable developer reference materials are listed at www.autodesk.com/developautocad.
Какой Framework ставить в проекте?Желательно 4.0
какие библиотеки подлючить для 64битной платформы?AcMgd.dll
Версия Студии имеет значение? У меня 2013.Для кода значения не имеет. Но для сведения сам AutoCAD 2014 написан на VS2010 и VS2012.
Код - C# [Выбрать]
using Ap = Autodesk.AutoCAD.ApplicationServices; ... AcadDocument acadDoc = Ap.DocumentExtension.GetAcadDocument(doc) as AcadDocument;;// doc is a Document instance
Public ReadOnly Property ThisDrawing As AcadDocument
Get
Return Application.DocumentManager.MdiActiveDocument.GetAcadDocument()
End Get
End Property
1. Написана полная ерунда.Как ерунда, если я все делал по ролику, сделанному Августом Гонсаленсом или как его там :)
2. Код вставляй текстом, а не картинкой.Вставил картинкой, чтобы было видно, что замечание есть к коду...
Imports Autodesk.AutoCAD.Interop
Imports Autodesk.AutoCAD.Interop.Common
Public Class AGACTools
Public ReadOnly Property ThisDrawing As AcadDocument
Get
Return Autodesk.AutoCAD.ApplicationServices.DocumentExtension.GetAcadDocument(ThisDrawing)
End Get
End Property
Андрей, спец. для Вас выкладываю код, сделанный Автодеском :)Где этот код?
Где этот код?http://adn-cis.org/forum/index.php?action=dlattach;topic=747.0;attach=351 (http://adn-cis.org/forum/index.php?action=dlattach;topic=747.0;attach=351)
0-HelloWorld.rarЭтот код для версии 2010. В 2013 произошло разделенние и глобальная "перетруска".
В 2013 произошло разделенние и глобальная "перетруска".о чём я, собственно, и писал в первом сообщении, показывая пример.
Есть что-то подобное под 2014?вариант, показанный мною выше, работает и в 2015. Логично предположить, что будет работать и в 2014-м.
а то придется у тебя эту возможность убратьВозможность удаление своих топиков была отключена для меня индивидуально?
Возможность удаление своих топиков для меня была отключена индивидуально?Нет. Глобально для всех кроме администраторов/глобальных модераторов.
Пока ставлю 2012 автокад... И продолжаю работать в нем...Хм. Радикальное решение.
Но надо в магазин за 100гр. бежать...Ну тогда понятно... :D
Хм. Радикальное решение.Главное, чтобы это не вошло в привычку. А то если при каждой неудачной попытке откатываться на более старые версии AutoCAD, то... :) Количество таких попыток лимитировано.
На примере я бы все понял... Может найду в сети...Примеры были даны выше, в т.ч. ты и сам показывал верный вариант. Ты там случаем не подключаешь библиотеки от другой версии ObjectARX вместо той, которая нужна по факту?
Какой Framework ставить в проекте?Возможно будет интересно (http://bushman-andrey.blogspot.ru/2014/04/net-autocad-net-framework-ms-visual.html).
Вопрос такой. Если на VB.NET я получал свойство ThisDrawing (в VBA ThsDrw уже имелся) и писал что-то типа (без уточнения) "ThisDtawing.line(X1,X2)" (т.е. рисовал линию между двумя точками), тоRTFM (https://sites.google.com/site/bushmansnetlaboratory/translate-manual/sozdanie-i-redaktirovanie-obektov-autocad/sozdanie-obektov/sozdanie-otrezkov/sozdanie-otrezka-line)
на C# так нельзя сделать?
Если на VB.NET я получал свойство ThisDrawing (в VBA ThsDrw уже имелся) и писал что-то типа (без уточнения) "ThisDtawing.line(X1,X2)" (т.е. рисовал линию между двумя точками), тоДелается точно так же, как и на VB.NET. Только этот способ (называется он AutoCAD ActiveX/COM интерфейс) я бы не стал рекомендовать. Раз уже взялся - переучивайся на AutoCAD .NET API.
на C# так нельзя сделать?
Раз уже взялся - переучивайся на AutoCAD .NET API.Пример по ссылке Андрея, я так понимаю, это и есть .NET API. Хорошо, буду изучать. Принцип понятен, просто чужд как пользователю автокада.
Товарищи хирурги, где почитать основы вскрытия продукта компании autodesk?Чем не устроили уже известные тебе online-ресурсы? Знание само в голову не телепортируется (к сожалению) - читать всё равно придётся. В том же руководстве по .net api информация даётся последовательно, "с нуля".
Вы же сами собираетесь написать книгуЯ книгу писать не собираюсь и не собирался. :) Предоставить некоторый материал для такой книги - это возможно, но самому её писать - это большая и неоправданная работа.
Согласен - отдал про 2015 автокад материал в печать, а уже вышел релиз 2017 версииПрограммный API меняется от версии к версии, но не настолько, чтобы по материалу, написанному для 2015 нельзя бы было работать в 2017-м. Как правило тот код, что я писал под 2009-й успешно компилируется и для всех более новых версий акада.
Товарищи хирурги, где почитать основы вскрытия продукта компании autodesk?Если перевести на нормальный русский, то наверное вопрос должен звучать так: "Где найти литературу по AutoCAD .NET API?".