Autocad и плагин с использованием Winforms.

Автор Тема: Autocad и плагин с использованием Winforms.  (Прочитано 19174 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Autocad и плагин с использованием Winforms.
« Ответ #30 : 29-05-2022, 18:23:23 »
D_TRex,
А причем здесь ObjectARX Wizard? Он нужен только если ты программируешь на C++.
Ты же собираешься использовать AutoCAD .NET API? Тогда тебе нужен AutoCAD .NET Wizard. Причем для каждой версии AutoCAD и VS он свой. Качать отсюда: https://www.autodesk.com/developer-network/platform-technologies/autocad



Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн D_TRex

  • ADN OPEN
  • ***
  • Сообщений: 104
  • Карма: 0
Re: Autocad и плагин с использованием Winforms.
« Ответ #31 : 29-05-2022, 18:29:41 »
Я может быть не правильно поставил вопрос. У меня появился выбор шаблона с выбором языка программирования. Вопрос в том как открыть форму в автокаде?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Autocad и плагин с использованием Winforms.
« Ответ #32 : 29-05-2022, 19:13:18 »
Я может быть не правильно поставил вопрос. У меня появился выбор шаблона с выбором языка программирования. Вопрос в том как открыть форму в автокаде?
Код - vb.net [Выбрать]
  1. Autodesk.AutoCAD.ApplicationServices.Application.ShowModalDialog (Form frm)
Код - vb.net [Выбрать]
  1. Autodesk.AutoCAD.ApplicationServices.Application.ShowModelessDialog (Form frm)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн D_TRex

  • ADN OPEN
  • ***
  • Сообщений: 104
  • Карма: 0
Re: Autocad и плагин с использованием Winforms.
« Ответ #33 : 29-05-2022, 19:41:43 »
Это я пробовал, но ошибка на картинке в моем сообщении, скачал чужой проект на С++ буду разбираться. Это всё новое для меня - не понимаю что и к чему.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Autocad и плагин с использованием Winforms.
« Ответ #34 : 29-05-2022, 19:43:54 »
скачал чужой проект на С++ буду разбираться.
На C++? Сочувствую.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1096
  • Карма: 172
Re: Autocad и плагин с использованием Winforms.
« Ответ #35 : 29-05-2022, 20:52:25 »
Смотри, где у тебя выполняются обращения к F_Layout и что они из себя представляют. Что-то я подозреваю, что ошибка совсем в другом месте.Не видел предыдущих сообщений, сорри.
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн D_TRex

  • ADN OPEN
  • ***
  • Сообщений: 104
  • Карма: 0
Re: Autocad и плагин с использованием Winforms.
« Ответ #36 : 30-05-2022, 04:49:39 »
На C++? Сочувствую.
Вот в этом проекте форма с расширением *.cs то есть если не ошибаюсь то это класс.
Картинка с шибкой - вот она.

Я почему думаю что у меня не хватает каких то библиотек, так как студия ожидает от меня URL  а не форму (ну то есть пишет в подсказках об этом. Попалась небольшая книга по созданию палетты, но тоже не возможно добавить туда данные так как ожидается URL.

Настройку проводил по вот этим урокам https://knowledge.autodesk.com/support/autocad/learn-explore/caas/simplecontent/content/lesson-1-the-basic-autocad-plug.html вот там на начальной странице, где указывается расположение библиотек и выбор автокада для тестов я тоже не добавлял ни одной галочки, на что это влияет.

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1096
  • Карма: 172
Re: Autocad и плагин с использованием Winforms.
« Ответ #37 : 30-05-2022, 07:49:43 »
Off-Topic: показать
cs - это файл C#. А что там написано - класс, интерфейс или перечисление - это уже отдельная песня.

Строку, на которой генерируется ошибка (как минимум) покажи. Гадать можно очень долго
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн D_TRex

  • ADN OPEN
  • ***
  • Сообщений: 104
  • Карма: 0
Re: Autocad и плагин с использованием Winforms.
« Ответ #38 : 30-05-2022, 08:34:16 »
Пост номер 29, там и срока кода и скрин ошибки и описание (я бы скинул проект, но так как я только пару дней как пробую, то есть я не понимаю что тут и от куда берётся, в общем там обрывки кода в основном. Ну можно сказать что проблема решилась, другим образом правда, в общем
Код - vb.net [Выбрать]
  1. UserControl1
оказывается создаётся и на нём уже вешаем нужные контроли и его добавляем к палетте AutoCAD
Код чужой, из просторов "гугл в помощь" но код добавлю
Код - vb.net [Выбрать]
  1. Imports System.Runtime
  2. Imports Autodesk.AutoCAD.Runtime
  3. Imports Autodesk.AutoCAD.ApplicationServices
  4. Imports Autodesk.AutoCAD.DatabaseServices
  5. Imports Autodesk.AutoCAD.Geometry
  6. Imports Autodesk.AutoCAD.EditorInput
  7.  
  8. ' This line is not mandatory, but improves loading performances
  9. <Assembly: CommandClass(GetType(AutoCAD_VB_plug_in1.MyCommands))>
  10. Namespace AutoCAD_VB_plug_in1
  11.  
  12.     Public Class MyCommands
  13.  
  14.         Public ed As Editor = Application.DocumentManager.MdiActiveDocument.Editor
  15.  
  16.         'Polar Function
  17.         Public Shared Function polar(ByVal p0 As Point3d, ByVal ang As Double, ByVal dist As Double)
  18.             Return New Point3d(p0.X + dist * Math.Cos(ang), p0.Y + dist * Math.Sin(ang), p0.Z)
  19.         End Function
  20.  
  21.         'Drawx Function
  22.         Public Sub drawX(ByVal p0 As Point3d, ByVal clr As Integer)
  23.             Dim vs As Double = (Application.GetSystemVariable("VIEWSIZE") / 40.0)
  24.             Dim p1 As Point3d = polar(p0, (Math.PI * 0.25), vs)
  25.             Dim p2 As Point3d = polar(p0, (Math.PI * 0.75), vs)
  26.             Dim p3 As Point3d = polar(p0, (Math.PI * 1.25), vs)
  27.             Dim p4 As Point3d = polar(p0, (Math.PI * 1.75), vs)
  28.             ed.DrawVector(p0, p1, clr, False)
  29.             ed.DrawVector(p0, p2, clr, False)
  30.             ed.DrawVector(p0, p3, clr, False)
  31.             ed.DrawVector(p0, p4, clr, False)
  32.         End Sub
  33.  
  34.         Friend Shared m_ps As Autodesk.AutoCAD.Windows.PaletteSet = Nothing
  35.         Friend Shared mypalette As UserControl1 = New UserControl1()
  36.  
  37.         <CommandMethod("NewAX")>
  38.         Public Sub NewAX()
  39.             If m_ps Is Nothing Then
  40.                 m_ps = New Autodesk.AutoCAD.Windows.PaletteSet("My Palette")
  41.                 m_ps.Add("My Palette", mypalette)
  42.             End If
  43.             If m_ps.Visible = False Then
  44.                 m_ps.Visible = True
  45.             End If
  46.             pickpoints()
  47.         End Sub
  48.  
  49.         Public Sub pickpoints()
  50.             Dim opt As PromptPointOptions = New PromptPointOptions("")
  51.             opt.Message = vbCrLf & "Select First Point: "
  52.             Dim ret As PromptPointResult
  53.             ret = ed.GetPoint(opt)
  54.             If ret.Status = PromptStatus.OK Then
  55.                 Dim p0 As Point3d = ret.Value
  56.                 drawX(p0, 2)
  57.                 opt.Message = vbCrLf & "Select Second Point: "
  58.                 opt.BasePoint = p0
  59.                 opt.UseBasePoint = True
  60.                 ret = ed.GetPoint(opt)
  61.                 If ret.Status = PromptStatus.OK Then
  62.                     Dim p1 As Point3d = ret.Value
  63.                     drawX(p1, 2)
  64.                 Else
  65.                     Dim p0X As Double = p0.X
  66.                     Dim p0Y As Double = p0.Y
  67.                     Dim p0Z As Double = p0.Z
  68.                     mypalette.Label1.Text = "Northing: " & p0Y.ToString("N3")
  69.                     mypalette.Label2.Text = "Easting: " & p0X.ToString("N3")
  70.                     mypalette.Label3.Text = "Elevation: " & p0Z.ToString("N3")
  71.                 End If
  72.             End If
  73.         End Sub
  74.     End Class
  75.  
  76. End Namespace
Сама функция не выводит результатов, но теперь уже буду разбираться куда вставить команду и как получить результаты

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1096
  • Карма: 172
Re: Autocad и плагин с использованием Winforms.
« Ответ #39 : 30-05-2022, 23:05:59 »
А если попробовать выполнить код из примеров по SDK, касаемо работы с ToolPalette? Там все понятно будет?
Спрашиваю потому, что с ToolPalette лично я не работал - ну не сильно они мне (пока) нравятся
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн D_TRex

  • ADN OPEN
  • ***
  • Сообщений: 104
  • Карма: 0
Re: Autocad и плагин с использованием Winforms.
« Ответ #40 : 31-05-2022, 14:16:27 »
Примеры да изучаю, но пока не очень успешно, переменные совсем другие - я и так то только со шпаргалкой, а тут совсем туго. Мне нужно окно ввода (вывода) не особо важно будет это палитра или WinForm. Всё идёт к созданию (редактированию) листов, иной раз слетает принтер (это очень редко), иной раз по шаблону листов наклепал, а они в цвете, а цветов уйма и надо им менять схему в монохром, иной раз следующий лист это копия предыдущего и надо просто сдвинуть в сторону на размер формата, иной раз листов много, стандартный постоянно пытается показать миниатюру или почему то ещё висит, а мне просто надо открыть нужный лист - да часть этого решает подшивка, но тоже подвисает и не допускает многопользовательского редактирования. Поэтому я стараюсь выжать максимум из того что могу.