Перейти к содержимому


Перенос модуля из AutoCAD


Сообщений в теме: 37

#21 MCAD

    Активист

  • Пользователи
  • PipPipPipPip
  • 982 сообщений
  • Пол:Мужчина

Отправлено 09 Февраль 2019 - 12:41

Просмотр сообщенияRRoman (05 Февраль 2019 - 20:38) писал:

закупились NanoCAD+ 10, без всяких надстроек и торжественно вручили мне задачу по переносу функционала (я и есть тот самый главный компьютерщик).
Так граничные условия заданы

«Если мы сумеем определить аэродинамику полета майского жука, мы или обнаружим какое-то несовершенство современной теории полета насекомого, или откроем, что майский жук обладает каким-то неизвестным нам способом создания высокой подъемной силы».


© Леон Беннет


http://www.spds.ru


#22 Robink

    Активист

  • Пользователи
  • PipPipPipPip
  • 394 сообщений
  • Пол:Мужчина
  • Город:Казань
  • Интересы:САПРостроение

Отправлено 10 Февраль 2019 - 11:17

Я данные прикрепляю к блоку при помощи xdata. Просил нанософт сделать их отображение в окне быстрых свойств. Можно также попробовать xrecord.

#23 RRoman

    Посетитель

  • Пользователи
  • PipPip
  • 14 сообщений

Отправлено 11 Февраль 2019 - 11:28

Видео работы с модулем. Весит 16 метров, поэтому выкладываю ссылку на него

1. Дрбавляю объекты
2. Удаляю один из них
3. Делаю сквозную нумерацию
4. Формирую спецификацию.

_https://cloud.klen-net.ru/public.php?service=files&t=bb5fe9e68319577bd4952b91f910bc91

Сообщение отредактировал RRoman: 11 Февраль 2019 - 11:29


#24 RRoman

    Посетитель

  • Пользователи
  • PipPip
  • 14 сообщений

Отправлено 11 Февраль 2019 - 13:19

Просмотр сообщенияMCAD (09 Февраль 2019 - 12:11) писал:

А БД дорога как память? Можно же просто разложить блоки по папкам, запихать все данные в атрибуты блоков и вставлять через менеджер файлов или из палитры (Copy && Paste -вроде тоже никто не отменял). Создавать новые и редактировать существующие точно удобнее, чем сохранять (пересохранять) в базе
Такой подход хорош, когда объектов немного. Сейчас интереса ради посчитал dwg в папке - 20732. даже, если 50% из них устаревший хлам, всё равно многовато для прописывания атрибутов руками. А писать софтину, которая автоматом раскидает атрибуты ничуть не быстрее, чем основной модуль

Просмотр сообщенияMCAD (09 Февраль 2019 - 12:11) писал:

С выноской в (платформе) будет посложнее, но просто "Взять с чертежа" значение атрибута блока - думаю выход на первых порах :-(
А в чем засада с выноской?
Я так понял, что нельзя заставить нанокад нарисовать выноску из внешнего модуля?

тогда вопрос - нельзя средствами VB или вообще никак, кроме как мышью?
Вопрос важный, т.к. выносками наши указывают точки подключения к коммуникациям.

#25 Robink

    Активист

  • Пользователи
  • PipPipPipPip
  • 394 сообщений
  • Пол:Мужчина
  • Город:Казань
  • Интересы:САПРостроение

Отправлено 11 Февраль 2019 - 14:01

Просмотр сообщенияRRoman (11 Февраль 2019 - 13:19) писал:

Просмотр сообщенияMCAD (09 Февраль 2019 - 12:11) писал:

А БД дорога как память? Можно же просто разложить блоки по папкам, запихать все данные в атрибуты блоков и вставлять через менеджер файлов или из палитры (Copy && Paste -вроде тоже никто не отменял). Создавать новые и редактировать существующие точно удобнее, чем сохранять (пересохранять) в базе
Такой подход хорош, когда объектов немного. Сейчас интереса ради посчитал dwg в папке - 20732. даже, если 50% из них устаревший хлам, всё равно многовато для прописывания атрибутов руками. А писать софтину, которая автоматом раскидает атрибуты ничуть не быстрее, чем основной модуль

Просмотр сообщенияMCAD (09 Февраль 2019 - 12:11) писал:

С выноской в (платформе) будет посложнее, но просто "Взять с чертежа" значение атрибута блока - думаю выход на первых порах :-(
А в чем засада с выноской?
Я так понял, что нельзя заставить нанокад нарисовать выноску из внешнего модуля?

тогда вопрос - нельзя средствами VB или вообще никак, кроме как мышью?
Вопрос важный, т.к. выносками наши указывают точки подключения к коммуникациям.
Я не смог по id получить выносную для исправления, преобразовать McObject в McNoteLeader.

#26 doctorraz

    Активист

  • Пользователи
  • PipPipPipPip
  • 953 сообщений
  • Пол:Мужчина
  • Город:Волгоград
  • Интересы:всё понемногу

Отправлено 11 Февраль 2019 - 14:02

>тогда вопрос - нельзя средствами 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

Сообщение отредактировал doctorraz: 11 Февраль 2019 - 14:14


#27 doctorraz

    Активист

  • Пользователи
  • PipPipPipPip
  • 953 сообщений
  • Пол:Мужчина
  • Город:Волгоград
  • Интересы:всё понемногу

Отправлено 11 Февраль 2019 - 14:09

>Я не смог по id получить выносную для исправления, преобразовать McObject в McNoteLeader
хехе, тут у наны затык по сравнению с папой (((
писал уже на этом форуме и форуме разработчиков наны, что невозможно передать объект наны в McCOM, по ID, но разработчикам не до этого
Set ObjMC = spds.Object(objAK) 'имеем полный доступ к свойствам объектов СПДС в АК но в нане "method not implemented under this platform"
а вот в папе это реализовано, и получается очень удобно, чтобы собрать объекты со всего документа (модели и листов) селсетом с фильтрами получаем коллекцию и потом в цикле предаем в McCOM..
по сравнению, с переключением листов.. работает шустрее..
даже блоки можно так передавать и дергать с них значения атрибутов напрямую...

#28 Robink

    Активист

  • Пользователи
  • PipPipPipPip
  • 394 сообщений
  • Пол:Мужчина
  • Город:Казань
  • Интересы:САПРостроение

Отправлено 11 Февраль 2019 - 14:24

Просмотр сообщенияdoctorraz (11 Февраль 2019 - 14:09) писал:

>Я не смог по 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) наверное исправили...

Сообщение отредактировал Robink: 11 Февраль 2019 - 14:28


#29 doctorraz

    Активист

  • Пользователи
  • PipPipPipPip
  • 953 сообщений
  • Пол:Мужчина
  • Город:Волгоград
  • Интересы:всё понемногу

Отправлено 11 Февраль 2019 - 14:49

>наверное исправили...
в 10.1 нано пишет метод не реализован в этой платформе.
если б исправили, давно уже б носом ткнули... а так типа не слышат..


#30 RRoman

    Посетитель

  • Пользователи
  • PipPip
  • 14 сообщений

Отправлено 11 Февраль 2019 - 14:55

Просмотр сообщенияdoctorraz (11 Февраль 2019 - 14:02) писал:

>тогда вопрос - нельзя средствами VB
можно

Спасибо!
Пойду постигать азы...

#31 Robink

    Активист

  • Пользователи
  • PipPipPipPip
  • 394 сообщений
  • Пол:Мужчина
  • Город:Казань
  • Интересы:САПРостроение

Отправлено 11 Февраль 2019 - 20:19

McCOM2 он в платформе есть?

#32 doctorraz

    Активист

  • Пользователи
  • PipPipPipPip
  • 953 сообщений
  • Пол:Мужчина
  • Город:Волгоград
  • Интересы:всё понемногу

Отправлено 11 Февраль 2019 - 21:37

> он в платформе есть?
таблицы, выноски и еще кое, что это он и есть.. с слегка кастрированным функционалом.
я ж выше дал пример, он в платформе сработает как есть)))
в платформе нет своих таблиц и выносок.. частично mcad,и куски из автокад.

#33 doctorraz

    Активист

  • Пользователи
  • PipPipPipPip
  • 953 сообщений
  • Пол:Мужчина
  • Город:Волгоград
  • Интересы:всё понемногу

Отправлено 11 Февраль 2019 - 21:41

естественно в платформе не все обьекты МсСОМ, он специально обрезан,

#34 Robink

    Активист

  • Пользователи
  • PipPipPipPip
  • 394 сообщений
  • Пол:Мужчина
  • Город:Казань
  • Интересы:САПРостроение

Отправлено 12 Февраль 2019 - 09:58

На чем пишете? Всмысле NET или COM. Видео кстати не доступно

Сообщение отредактировал Robink: 12 Февраль 2019 - 10:15


#35 RRoman

    Посетитель

  • Пользователи
  • PipPip
  • 14 сообщений

Отправлено 14 Февраль 2019 - 13:01

Начал я ваять своего Франкенштейна.

Удалось накопипастить код, который добавляет блок в базу чертежа, но не получается его отрисовать.
Подскажите, где моя ошибка?

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


#36 Robink

    Активист

  • Пользователи
  • PipPipPipPip
  • 394 сообщений
  • Пол:Мужчина
  • Город:Казань
  • Интересы:САПРостроение

Отправлено 14 Февраль 2019 - 15:01

Про MC не скажу. Я на Teigha делал.

#37 RRoman

    Посетитель

  • Пользователи
  • PipPip
  • 14 сообщений

Отправлено 21 Февраль 2019 - 21:46

Господа, подскажите, почему в нанокаде не появляется команда на открытие формы "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
	   
и т.д.


#38 RRoman

    Посетитель

  • Пользователи
  • PipPip
  • 14 сообщений

Отправлено 21 Февраль 2019 - 22:55

Просмотр сообщенияRRoman (21 Февраль 2019 - 21:46) писал:

Господа, подскажите, почему в нанокаде не появляется команда на открытие формы "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






Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 скрытых пользователей