doctorraz Posted February 11, 2019 Report Share Posted February 11, 2019 (edited) >тогда вопрос - нельзя средствами VB можно только для демонстрации возможости Set SPDS = CreateObject("McCOM2.Server") 'Получаем COM-сервер СПДС Set mcNote = SPDS.CreateObject("McCOM2.SymNote") mcNote.Text = "Текст выноски" mcNote.Place False, True 'интерактивная вставка mcNote.Place False, False 'координаты надо задать программно если вдруг кто пропустил.. приобщайтесь McCOM2.chm и Состав и работа MechWizard.doc Edited February 11, 2019 by doctorraz 1 Quote Link to comment Share on other sites More sharing options...
doctorraz Posted February 11, 2019 Report Share Posted February 11, 2019 >Я не смог по id получить выносную для исправления, преобразовать McObject в McNoteLeader хехе, тут у наны затык по сравнению с папой ((( писал уже на этом форуме и форуме разработчиков наны, что невозможно передать объект наны в McCOM, по ID, но разработчикам не до этого Set ObjMC = spds.Object(objAK) 'имеем полный доступ к свойствам объектов СПДС в АК но в нане "method not implemented under this platform" а вот в папе это реализовано, и получается очень удобно, чтобы собрать объекты со всего документа (модели и листов) селсетом с фильтрами получаем коллекцию и потом в цикле предаем в McCOM.. по сравнению, с переключением листов.. работает шустрее.. даже блоки можно так передавать и дергать с них значения атрибутов напрямую... Quote Link to comment Share on other sites More sharing options...
Robink Posted February 11, 2019 Report Share Posted February 11, 2019 (edited) >Я не смог по id получить выносную для исправления, преобразовать McObject в McNoteLeader хехе, тут у наны затык по сравнению с папой ((( писал уже на этом форуме и форуме разработчиков наны, что невозможно передать объект наны в McCOM, по ID, но разработчикам не до этого Set ObjMC = spds.Object(objAK) 'имеем полный доступ к свойствам объектов СПДС в АК но в нане "method not implemented under this platform" а вот в папе это реализовано, и получается очень удобно, чтобы собрать объекты со всего документа (модели и листов) селсетом с фильтрами получаем коллекцию и потом в цикле предаем в McCOM.. по сравнению, с переключением листов.. работает шустрее.. даже блоки можно так передавать и дергать с них значения атрибутов напрямую... Я с MC в COM не работал. Только NET. На С# приведение типов сработало, может на VB что то не то делал, но помню, что бился долго, но так и не смог. Посмотрел свою тему на developers.nanocad.ru там что то было с приведением типов (is as) наверное исправили... Edited February 11, 2019 by Robink Quote Link to comment Share on other sites More sharing options...
doctorraz Posted February 11, 2019 Report Share Posted February 11, 2019 >наверное исправили... в 10.1 нано пишет метод не реализован в этой платформе. если б исправили, давно уже б носом ткнули... а так типа не слышат.. Quote Link to comment Share on other sites More sharing options...
RRoman Posted February 11, 2019 Author Report Share Posted February 11, 2019 >тогда вопрос - нельзя средствами VB можно Спасибо! Пойду постигать азы... Quote Link to comment Share on other sites More sharing options...
Robink Posted February 11, 2019 Report Share Posted February 11, 2019 McCOM2 он в платформе есть? Quote Link to comment Share on other sites More sharing options...
doctorraz Posted February 11, 2019 Report Share Posted February 11, 2019 > он в платформе есть? таблицы, выноски и еще кое, что это он и есть.. с слегка кастрированным функционалом. я ж выше дал пример, он в платформе сработает как есть))) в платформе нет своих таблиц и выносок.. частично mcad,и куски из автокад. Quote Link to comment Share on other sites More sharing options...
doctorraz Posted February 11, 2019 Report Share Posted February 11, 2019 естественно в платформе не все обьекты МсСОМ, он специально обрезан, Quote Link to comment Share on other sites More sharing options...
Robink Posted February 12, 2019 Report Share Posted February 12, 2019 (edited) На чем пишете? Всмысле NET или COM. Видео кстати не доступно Edited February 12, 2019 by Robink Quote Link to comment Share on other sites More sharing options...
RRoman Posted February 14, 2019 Author Report Share Posted February 14, 2019 Начал я ваять своего Франкенштейна. Удалось накопипастить код, который добавляет блок в базу чертежа, но не получается его отрисовать. Подскажите, где моя ошибка? Imports Multicad.Runtime Imports Multicad.DatabaseServices Imports Multicad.DatabaseServices.StandardObjects Imports System.Windows.Forms Namespace insNewBlock Public Class insNewBlock <CommandMethod("cus_newBlock", CommandFlags.NoCheck Or CommandFlags.Redraw)> Public Sub SurroundingSub() Dim blName As String = "EVOLUTION EKF 411 AL UD" Dim blpatch As String = "h:\документы отделов\САПР\Tecnoeka\" & blName & ".dwg" Dim doc As McDocument = McDocumentsManager.GetActiveDoc() Dim refDoc As McDocument = McDocumentsManager.OpenDocument(blpatch, False, True) Dim sheetsId As List(Of Multicad.McObjectId) = refDoc.GetSheets() Dim modelSpace As McDocument = Nothing For Each idSheet As Multicad.McObjectId In sheetsId Dim sheet As McDocument = idSheet.GetObject() If sheet.IsModel Then MessageBox.Show(sheet.ToString()) modelSpace = sheet Exit For End If Next modelSpace.CopyObjects(doc, blName) Dim refBlk As McBlockRef = New McBlockRef() refBlk.BlockName = blName 'MessageBox.Show(refBlk.BlockName) refBlk.DbEntity.AddToCurrentDocument() End Sub End Class End Namespace Quote Link to comment Share on other sites More sharing options...
Robink Posted February 14, 2019 Report Share Posted February 14, 2019 Про MC не скажу. Я на Teigha делал. Quote Link to comment Share on other sites More sharing options...
RRoman Posted February 21, 2019 Author Report Share Posted February 21, 2019 Господа, подскажите, почему в нанокаде не появляется команда на открытие формы "cus_selBlock". Вызов делаю таким же образом, как и для других команд. Imports Multicad.Runtime Imports Multicad.DatabaseServices Public Class FrmBlockSelect <CommandMethod("cus_selBlock", CommandFlags.NoCheck Or CommandFlags.Redraw)> Public Sub FrmBlockSelect_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load и т.д. Quote Link to comment Share on other sites More sharing options...
RRoman Posted February 21, 2019 Author Report Share Posted February 21, 2019 Господа, подскажите, почему в нанокаде не появляется команда на открытие формы "cus_selBlock". Вызов делаю таким же образом, как и для других команд. Imports Multicad.Runtime Imports Multicad.DatabaseServices Public Class FrmBlockSelect <CommandMethod("cus_selBlock", CommandFlags.NoCheck Or CommandFlags.Redraw)> Public Sub FrmBlockSelect_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load и т.д. слепил костыль Imports Multicad.Runtime Public Class SelBlock <CommandMethod("cus_SelBlock", CommandFlags.NoCheck Or CommandFlags.NoPrefix)> Public Sub selblock() Dim frmSel As New frmSelBlock() frmSel.Show() End Sub End Class Quote Link to comment Share on other sites More sharing options...
RRoman Posted February 26, 2019 Author Report Share Posted February 26, 2019 Всем добрых суток! Первая версия модуля готова, так сказать preAlfa. Умеет строить дерево для списка блоков и вставлять выбранный блок в текущий чертеж. Инфу берет из БД Сырцы прилагаю. klen.zip 1 Quote Link to comment Share on other sites More sharing options...
RRoman Posted February 26, 2019 Author Report Share Posted February 26, 2019 Исправленная ссылка на видео работы в автокаде _http://cloud.klen-net.ru/public.php?service=files&t=bb5fe9e68319577bd4952b91f910bc91 Quote Link to comment Share on other sites More sharing options...
RRoman Posted February 26, 2019 Author Report Share Posted February 26, 2019 Подскажите, как на ваш взгляд оптимальнее поступить со "спецификацией", т.е. со списком оборудования, передаваемым в excel? 1. Пытаться запихнуть всю инфу по блоку в его свойства, а потом считывать оттуда 2. Писать в свойства только UID объекта, а потом выдергивать всю инфу из БД Пока склоняюсь ко второму варианту он мне видится проще и быстрее реализуемым. И второе - как нумеровать блоки? Чего-то тут у меня вообще ступор - где взять счетчик. Quote Link to comment Share on other sites More sharing options...
Robink Posted February 27, 2019 Report Share Posted February 27, 2019 Смотря какая система нумерации и в какой момент присваивается номер. 1. У каждого блока уникальное обозначение или же группа блоков с одинаковым наименованием имеет одинаковое обозначение? 2. Зависит ли обозначение от положения блока? А так все собирать в коллекцию, а дальше сортировать, считать и т д Quote Link to comment Share on other sites More sharing options...
RRoman Posted February 27, 2019 Author Report Share Posted February 27, 2019 Смотря какая система нумерации и в какой момент присваивается номер. 1. У каждого блока уникальное обозначение или же группа блоков с одинаковым наименованием имеет одинаковое обозначение? 2. Зависит ли обозначение от положения блока? А так все собирать в коллекцию, а дальше сортировать, считать и т д У группы одинаковых блоков один номер. В старом модуле он присваивается в момент вставки блока. Насколько я понял, в чертеже есть база со всеми блоками. Планирую нумеровать блоки не при вставке, а по отдельной команде. Вопрос решился сам собой ) Quote Link to comment Share on other sites More sharing options...
Robink Posted February 27, 2019 Report Share Posted February 27, 2019 На самом деле все сложнее. 1. Для обновления Вашего приложения нужно иметь загрузчик его с сервера. 2. Установщик загрузчика. 3. В блоке надо хранить его обозначение, а в выносной идентификатор (handle) блока, для проверки пары блок-обозначение. 4. В спецификации хранить идентификаторы (handle) блоков, для проверки пары чертеж-спецификация. Quote Link to comment Share on other sites More sharing options...
RRoman Posted February 27, 2019 Author Report Share Posted February 27, 2019 На самом деле все сложнее. 1. Для обновления Вашего приложения нужно иметь загрузчик его с сервера. 2. Установщик загрузчика. 3. В блоке надо хранить его обозначение, а в выносной идентификатор (handle) блока, для проверки пары блок-обозначение. 4. В спецификации хранить идентификаторы (handle) блоков, для проверки пары чертеж-спецификация. DLL у меня будет лежать в сетевой папке - вне локалки работа не предполагается. Автозагрузку в нанокад буду прописывать через конфиг, а конфиг раздавать пользователям через групповую политику. Проблем с обновлениями не должно быть. Я планировал формировать спецификацию по команде, непосредственно в excel и не хранить ее нигде в чертеже. Именно так сейчас у нас дело и обстоит. Вообще, проектировщиками наших проектировщиков тяжело назвать - они скорее дизайнеры - накидывают оборудование в помещение. А инженерку и архитектуру куда-то на аутсорс сплавляют. Quote Link to comment Share on other sites More sharing options...
RRoman Posted March 4, 2019 Author Report Share Posted March 4, 2019 Исправлен вылет при вставке уже имеющегося блока klen.zip Quote Link to comment Share on other sites More sharing options...
Robink Posted March 4, 2019 Report Share Posted March 4, 2019 nanoCAD.Application Лучше получить через Teigha .NET, не будет проблем с регистрацией COM интерфейса. _https://github.com/RobinKzn/CustomAutosaveNanoCad/blob/master/autosave81x64/GetAcadApplication.cs Не мешайте COM с Multicad .NET, выберите одно из двух Quote Link to comment Share on other sites More sharing options...
RRoman Posted March 4, 2019 Author Report Share Posted March 4, 2019 nanoCAD.Application Лучше получить через Teigha .NET, не будет проблем с регистрацией COM интерфейса. _https://github.com/RobinKzn/CustomAutosaveNanoCad/blob/master/autosave81x64/GetAcadApplication.cs Не мешайте COM с Multicad .NET, выберите одно из двух Спасибо за советы и подсказки! Quote Link to comment Share on other sites More sharing options...
RRoman Posted March 20, 2019 Author Report Share Posted March 20, 2019 Выкладываю очередную версию, видимо, последнюю, т.к. собираюсь менять место работы. Кто-то другой пусть допиливает/переписывает. Сырцы в свободном доступе. Написано, конечно, ужасно, но работает, зараза. Может вставить блок в чертеж из готового dwg файла, вытянуть описание блока, пронумеровать все добавленные блоки и построить по ним спецификацию. klen.zip 5 Quote Link to comment Share on other sites More sharing options...
maratovich Posted March 23, 2019 Report Share Posted March 23, 2019 RRoman Насколько я понял вам подойдёт это http://www.kdmsoft.ru/shema.html Ну или смотрите связку МультиЭлемет и Техбрас (там же) 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.