doctorraz Posted January 19, 2018 Report Share Posted January 19, 2018 Подскажите пожалуйста будет ли это реализовано в платформе в обозримом будущем? Quote Link to comment Share on other sites More sharing options...
doctorraz Posted January 19, 2018 Report Share Posted January 19, 2018 поясню зачем это надо: методом server.query невозможно получить коллекцию только "Универсальных маркеров", невозможно сделать выборку с определенных слоев этот метод работает только на активном пространстве, т.е. с неактивной вкладки или документа коллекцию этим методом не получить. все эти задачи и многие другие прекрасно решаются методом SelectionSets платформы, но в патформе не реализован механизм передачи указателя на объект между нанокад и МсСом Quote Link to comment Share on other sites More sharing options...
Robink Posted January 19, 2018 Report Share Posted January 19, 2018 поясню зачем это надо: методом server.query невозможно получить коллекцию только "Универсальных маркеров", невозможно сделать выборку с определенных слоев этот метод работает только на активном пространстве, т.е. с неактивной вкладки или документа коллекцию этим методом не получить. все эти задачи и многие другие прекрасно решаются методом SelectionSets платформы, но в патформе не реализован механизм передачи указателя на объект между нанокад и МсСом За COM не знаю на .NET можно, через .ID.ToOldIdPtr() потом из него получить ObjectId, вот как получить handle в MC не нашел. 1 Quote Link to comment Share on other sites More sharing options...
doctorraz Posted January 19, 2018 Report Share Posted January 19, 2018 Этот код отрабатывает в AutoCad и не работает в NanoCAD (не реализовано) Public ThisDrawing As Object Sub method_not_implemented_under_this_platform() Dim intType(0) As Integer '(2) Dim varDat(0) As Variant Dim objSelSet As Object Dim objNanoCAD As Object '<Сбор таблиц селсетом Set spds = CreateObject("McCOM2.Server") On Error Resume Next Set objNanoCAD = GetObject(, "AutoCAD.Application") If Err.Number <> 0 Then Err.Number = 0 Debug.Print Err.Number Set objNanoCAD = GetObject(, "NanoCAD.Application") If Err.Number <> 0 Then MsgBox "Не запущен CAD" Exit Sub End If End If On Error GoTo 0 Set ThisDrawing = objNanoCAD.ActiveDocument intType(0) = 0 varDat(0) = "spdstable2" 'таблицы СПДС от 8,0 и младше, за СПДС 11, 12 не скажу _ старые версии СПДС, старше 8,0 "spdstable" Set objSelSet = vbdPowerSet("seTEST") objSelSet.Select 5, , , intType, varDat Debug.Print "spdstable-" & objSelSet.Count Dim objAK As Object Dim ObjMC As Object For Each objAK In objSelSet Set ObjMC = spds.Object(objAK) 'имеем полный доступ к свойствам СПДС в АК но в нане "method not implemented under this platform" namee = ObjMC("Name") 'или nameeee = ObjMC!Name Debug.Print "Имя таблицы-" & namee 'работаем с ним дальше Next End Sub Public Function vbdPowerSet(strName As String) As Object 'AcadSelectionSet Dim objSelSet As Object ' AcadSelectionSet Dim objSelCol As Object ' AcadSelectionSets Set objSelCol = ThisDrawing.SelectionSets For Each objSelSet In objSelCol If objSelSet.Name = strName Then objSelSet.Delete Exit For End If Next Set objSelSet = ThisDrawing.SelectionSets.Add(strName) Set vbdPowerSet = objSelSet End Function Quote Link to comment Share on other sites More sharing options...
Witcher13 Posted July 20, 2018 Report Share Posted July 20, 2018 Здравствуйте! Переходим всей организацией на нанокад. В связи с чем возникает несколько вопросов. В принципе функционал "Геоники" устраивает, но остались достаточно нужные полезные лиспы с автокадовских времен (корректно работают под версии 2004, 2007, 2010 но уже не все) В нанокаде не работает полноценно никакой из них. например функция не определена ENAME , MODES,ошибка в функции *error* наверная функция и тому подобное. Насколько я смог узнать не все лисп функции автокада есть в нанокаде. Проблема в этом? Либо я что то не подгрузил. Например согласно учебнику Н.Полещука в автокаде для работы грузятся функции activX Вот такой код предшествует подгрузке других лиспов при работе в автокад. ;***БАЗОВАЯ ФУНКЦИЯ ДОСТУПА К ТЕХНОЛОГИИ ActiveX ; Глобальные переменные: ; acad_application-указатель корневого объекта иерархии AutoCAD ; active_document-указатель открытого документа ; model_space-указатель пространства модели рисунка ; paper_space-указатель пространства листа документа (DEFUN begin_actvex ( /) (vl-load-com) (setq acad_application(VLAX-GET-ACAD-OBJECT)) (setq active_document(VLA-GET-ACTIVEDOCUMENT acad_application)) (setq model_space(vla-get-modelspace active_document)) (setq paper_space(vla-get-paperspace active_document)) );end ;--------- (begin_actvex ) Нужен ли код подобного плана для нанокад? Либо подгрузка библиотек каких либо? Или может проще эти лиспы переписать под с++? он более функционален? и в принципе как выбрать язык под себя и свои задачи? Нанокад версии 8.5 P.S. Не программист (но ручки тянутся разбираться), новичок, энтузиаст. Quote Link to comment Share on other sites More sharing options...
Ivanco Posted July 20, 2018 Report Share Posted July 20, 2018 Насколько я смог узнать не все лисп функции автокада есть в нанокаде. Проблема в этом? не все. от версии к версии поддержка LISP растет. Или может проще эти лиспы переписать под с++? он более функционален? и в принципе как выбрать язык под себя и свои задачи? по этому куску вырванного из контекста, не понятно, что там проще или сложнее. по языкам ИМХО: LISP - кроме автокад/нанокад, почти нигде не понадобиться. и поддержка в нано его насколько понимаю, еще далека от автокад.для староверов и любителей функционального программирования. Jscript/vbscript - весело и просто. для начинающих норм. не все есть правда. для небольших скриптов и быстрого прототипирования. C#/MultiCAD/.NET - серъезный инструмент с большими возможностями. порог входа - выше чем в предыдущем. Для полноценных приложений. C++ - this party is hard. планируете разрабатывать высокопроизводительные промышленные приложения? - Вам сюда. Высокий порог входа. для настоящих джедаев. 4 Quote Link to comment Share on other sites More sharing options...
Witcher13 Posted July 20, 2018 Report Share Posted July 20, 2018 Спасибо за ответ, стало понятнее в какую сторону смотреть! Судя по всему на с++ замахиватся не стоит. Однако про входной лисп (по аналогии с тем что был в сообщении выше) вопрос остался открыт. Нужен ли он в подобном виде для нано?Или все должно работать так? Лисперы отзовитесь=) Quote Link to comment Share on other sites More sharing options...
Henrydub Posted March 21, 2019 Report Share Posted March 21, 2019 Если у кого-то есть в электроннном виде книги по программированию до Windows CE или по программированию под Windows с использованием MFC, поделитесь, пожалуйста. Quote Link to comment Share on other sites More sharing options...
Ivanco Posted March 21, 2019 Report Share Posted March 21, 2019 Если у кого-то есть в электроннном виде книги по программированию до Windows CE или по программированию под Windows с использованием MFC, поделитесь, пожалуйста. здесь как бы форум совсем не про форум. литературы по общесистемному программированию, огромное кол-во в т.ч. в свободном доступе. так что чем могу, полезная ссылка ниже) _http://g.zeos.in/?q=Windows%20CE%20programming%20books Quote Link to comment Share on other sites More sharing options...
dromandon Posted April 5, 2019 Report Share Posted April 5, 2019 Добрые люди, есть ли у кого програмка под нано или лисп для объединения штриховок? Нашёл пару лиспиков в сети, но нано их не хочет запускать корректно. Пользуюсь Нанокад СПДС 6.0 Quote Link to comment Share on other sites More sharing options...
todesengel Posted July 12, 2019 Report Share Posted July 12, 2019 всем доброе утро. никогда ранее не делал ничего под нано-кад, да и сам продукт увидел впервые два дня назад. но интерес есть. хочу попробовать. с чего начать? есть: сам нано-кад, МС вижуал студия 2017, опыт написания .NET сборок для автокада, опыт работы с ObjectARX. как оказалось этого мало. даже начать не могу. код для автокада тут не работает. помогите с быстрым стартом плиз. Quote Link to comment Share on other sites More sharing options...
Laziz Posted July 12, 2019 Report Share Posted July 12, 2019 помогите с быстрым стартом плиз. Для начало можете изучить эти посты https://habr.com/ru/search/?q=%5BMultiCAD%5D&target_type=posts Сам по ним изучал Quote Link to comment Share on other sites More sharing options...
todesengel Posted July 12, 2019 Report Share Posted July 12, 2019 спасибо, это уже неплохо для начала. но все же, а есть какое-то централизованное описалово по multicad,.net? это же не секретный продукт. Quote Link to comment Share on other sites More sharing options...
Kreator Posted July 12, 2019 Report Share Posted July 12, 2019 (edited) Есть SDK, его можно получить, зарегистрировавшись в Клубе разработчиков. Там же можно получить бессрочную лицензию для разработки на 3 машины. В SDK есть скромные примеры на всех поддерживаемых языках. Edited July 12, 2019 by Kreator 1 Quote Link to comment Share on other sites More sharing options...
todesengel Posted July 12, 2019 Report Share Posted July 12, 2019 вот это уже дело. попробую. хотя довольно странно, что SDK распространяется на таких странных условиях. Quote Link to comment Share on other sites More sharing options...
todesengel Posted July 12, 2019 Report Share Posted July 12, 2019 а можно сюда как-то выложить хотя бы help по multicad.net AIP? хотя бы видеть какие классы за что отвечают. Quote Link to comment Share on other sites More sharing options...
Kreator Posted July 12, 2019 Report Share Posted July 12, 2019 А в чём трудности скачать всё? Справка не исчерпывающая, на ней одной не напишете, скорее всего. Quote Link to comment Share on other sites More sharing options...
Александр_ Posted July 13, 2019 Report Share Posted July 13, 2019 (edited) Если есть опыт писания под AutoCad то трудностей быть не должно. Расположение/назначение классов, методов и т. д. очень схожи. Ниже инфа от 2014 года, но возможно еще актуальна: Здесь я писал где я искал инфу (в том числе SDK который устанавливается на ПК + доступен на фопуме разработчиков) http://forum.nanocad...indpost&p=28401 Даю для примера куски кода на C# (код не идеален, но для примера думаю сойдет) подключения к нанокаду /// <summary> запуск и связь с Nanocad /// /// </summary> /// <returns></returns> public static nanoCAD.Application nanocad_service_run() { nanoCAD.Application nc_app = null; try { object processSW = System.Activator.CreateInstance(System.Type.GetTypeFromProgID("NanoCad.Application")); nc_app = (nanoCAD.Application)processSW; } catch { nc_app = new nanoCAD.Application(); } if (nc_app.Documents.Count == 0) { nc_app.Documents.Add(@"c:\Program Files (x86)\Nanosoft\nanoCAD en 5.0\UserDataCache\Templates\Default.dwt"); } return nc_app; } Контур форматки А4 на активном документе /// <summary> контур А4 на активном документе /// /// </summary> public static void nanocad_risuem_A4_kontur(nanoCAD.Application nc_app) { double[] point1 = { 0, 0, 0 }, point2 = { 0, 297, 0 }, point3 = { 210, 297, 0 }, point4 = { 210, 0, 0 }; double[] point10 = { 20, 5, 0 }, point20 = { 20, 297 - 5, 0 }, point30 = { 210 - 5, 297 - 5, 0 }, point40 = { 210 - 5, 5, 0 }; OdaX.AcadLine default_line = nc_app.ActiveDocument.ModelSpace.AddLine(point1, point2); default_line.LinetypeScale = 1; default_line.Lineweight = OdaX.ACAD_LWEIGHT.acLnWt000; default_line.Linetype = nc_app.ActiveDocument.Linetypes.Item(2).Name; default_line = nc_app.ActiveDocument.ModelSpace.AddLine(point2, point3); default_line.LinetypeScale = 1; default_line.Lineweight = OdaX.ACAD_LWEIGHT.acLnWt000; default_line.Linetype = nc_app.ActiveDocument.Linetypes.Item(2).Name; default_line = nc_app.ActiveDocument.ModelSpace.AddLine(point3, point4); default_line.LinetypeScale = 1; default_line.Lineweight = OdaX.ACAD_LWEIGHT.acLnWt000; default_line.Linetype = nc_app.ActiveDocument.Linetypes.Item(2).Name; default_line = nc_app.ActiveDocument.ModelSpace.AddLine(point4, point1); default_line.LinetypeScale = 1; default_line.Lineweight = OdaX.ACAD_LWEIGHT.acLnWt000; default_line.Linetype = nc_app.ActiveDocument.Linetypes.Item(2).Name; default_line = nc_app.ActiveDocument.ModelSpace.AddLine(point10, point20); default_line.LinetypeScale = 1; default_line.Lineweight = OdaX.ACAD_LWEIGHT.acLnWt030; default_line.Linetype = nc_app.ActiveDocument.Linetypes.Item(2).Name; default_line = nc_app.ActiveDocument.ModelSpace.AddLine(point20, point30); default_line.LinetypeScale = 1; default_line.Lineweight = OdaX.ACAD_LWEIGHT.acLnWt030; default_line.Linetype = nc_app.ActiveDocument.Linetypes.Item(2).Name; default_line = nc_app.ActiveDocument.ModelSpace.AddLine(point30, point40); default_line.LinetypeScale = 1; default_line.Lineweight = OdaX.ACAD_LWEIGHT.acLnWt030; default_line.Linetype = nc_app.ActiveDocument.Linetypes.Item(2).Name; default_line = nc_app.ActiveDocument.ModelSpace.AddLine(point40, point10); default_line.LinetypeScale = 1; default_line.Lineweight = OdaX.ACAD_LWEIGHT.acLnWt030; default_line.Linetype = nc_app.ActiveDocument.Linetypes.Item(2).Name; } Edited July 13, 2019 by Александр_ 1 Quote Link to comment Share on other sites More sharing options...
todesengel Posted July 14, 2019 Report Share Posted July 14, 2019 вот это уже что-то, спасибо. но больше интересует создание .NET DLL для загрузки из самого ПО. кое что уже получилось... но сюда даже код не могу вставить, странный интерфэйсл у форума.... Quote Link to comment Share on other sites More sharing options...
todesengel Posted July 14, 2019 Report Share Posted July 14, 2019 для начала, хотя бы, какие DLL подключать к сборке? видел ряд примеров, подключают файлы host* и mapi*. Там типа два фреймвока? Teigha и Multicad? по крайней мере вижу два namespace. Quote Link to comment Share on other sites More sharing options...
Kreator Posted July 14, 2019 Report Share Posted July 14, 2019 но сюда даже код не могу вставить, странный интерфэйсл у форума.... Почему же нельзя? Вон сверху кнопочка Код, а в спойле можно спрятать тэгом [ spoiler ] [ / spoiler ] using Something; HelloWorld(); для начала, хотя бы, какие DLL подключать к сборке? видел ряд примеров, подключают файлы host* и mapi*. Там типа два фреймвока? Teigha и Multicad? по крайней мере вижу два namespace. Для начала, откройте любой пример из входящих в состав, посмотрите, что там и как. У меня подключены mapi*, host* мне не нужен Да, mapi - Multicad API. вот это уже что-то, спасибо. но больше интересует создание .NET DLL для загрузки из самого ПО. кое что уже получилось Что имеете в виду? По результату получается DLL, которую можно загрузить в NC командой NETLOAD или прописать в автозагрузку. DLL должна быть на локальном диске - на всякий случай. Quote Link to comment Share on other sites More sharing options...
todesengel Posted July 15, 2019 Report Share Posted July 15, 2019 у меня есть некоторые проблемы скачать SDK. ну и соответственно примеров нет. можете список DLL дать которые подключаем для MultiCAD и отдельно который для Teigha? эти фреймвоки взаимозаменяемы? Quote Link to comment Share on other sites More sharing options...
Ivanco Posted July 15, 2019 Report Share Posted July 15, 2019 (edited) у меня есть некоторые проблемы скачать SDK. ну и соответственно примеров нет. можете список DLL дать которые подключаем для MultiCAD и отдельно который для Teigha? эти фреймвоки взаимозаменяемы? Это разные API, хотя много в чем пересекаются. MultiCAD более высокоуроневое API как я понимаю. на нем быстрее писать , некоторые задачи. MultiCAD: - mapimgd.dll, - mapibasetypes.dll Teiga: - hostmgd.dll - hostdbmgd.dll может это будет полезным комментарием. _https://habr.com/ru/company/nanosoft/blog/184482/#comment_6468390 P.S. Кто бы написал статью про API , чего там откуда наследуюется и чего под капотом и какие API есть в nanoCAD и чем они отличаются. сходу действительно не очень то понятно. Edited July 15, 2019 by Ivanco Quote Link to comment Share on other sites More sharing options...
todesengel Posted July 15, 2019 Report Share Posted July 15, 2019 ну ладно мультикад это российская разработка, нет документации, не могу это понять, но могу это простить. но тейга то!? это же вполне отдельный продукт! нету доки? Quote Link to comment Share on other sites More sharing options...
todesengel Posted July 16, 2019 Report Share Posted July 16, 2019 вроде как с тайгой освоился. namespace отличаются, а в остальном, копия autocad.net API. вот такой фрагмент заработал: using System; using Teigha.DatabaseServices; using Teigha.Runtime; using Teigha.Geometry; using HostMgd.ApplicationServices; class c1 { static Action<string> wl = Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage; static Database b = HostApplicationServices.WorkingDatabase; [CommandMethod("q1")] static public void q1() { Application.ShowAlertDialog("677"); wl("start"); var pl = new Polyline(); pl.AddVertexAt(0, new Point2d(0, 0), 0, 1, 1); pl.AddVertexAt(1, new Point2d(100, 0), 0, 1, 1); pl.AddVertexAt(1, new Point2d(100, 100), 0, 1, 1); using (var t = b.TransactionManager.StartTransaction()) { (b.CurrentSpaceId.GetObject(OpenMode.ForWrite) as BlockTableRecord).AppendEntity(pl); t.AddNewlyCreatedDBObject(pl, true); t.Commit(); } wl("finish"); } } Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.