| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > .NET > Пришлите, пожалуйста, пример элементарной программки на .NET и ObjectDCL

Пришлите, пожалуйста, пример элементарной программки на .NET и ObjectDCL

Ответ
Поиск в этой теме
Непрочитано 27.01.2011, 12:03 #1
Пришлите, пожалуйста, пример элементарной программки на .NET и ObjectDCL
Shraybicus
 
Регистрация: 05.12.2010
Сообщений: 104

Здравствуйте!

Если можно, то программа должна выполнять следующее:
1. запрашивать выбор объекта.
2. после выбора, появляется диалоговое окно, которое выводит сообщение с названием слоя, на котором выбранный объект расположен.

Заранее весьма благодарен.
Просмотров: 5455
 
Непрочитано 27.01.2011, 12:32
#2
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Shraybicus Посмотреть сообщение
пример элементарной программки на .NET и ObjectDCL
dotnet никакого отношения не имеет к ObjectDCL. Применительно к dotnet, существует как минимум две технологии создания GUI: WinForms и WPF.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 27.01.2011, 12:34
#3
Shraybicus


 
Регистрация: 05.12.2010
Сообщений: 104


Цитата:
Сообщение от hwd Посмотреть сообщение
dotnet никакого отношения не имеет к ObjectDCL. Применительно к dotnet, существует как минимум две технологии создания GUI: WinForms и WPF.
Я понимаю что это разное, просто мне бы хотелось увидеть и то, и другое.

Вот собираюсь начать изучать .NET, но пока голова идет кругом. Для начала хочется увидеть простые примеры.

А ObjectDCL - для сравнения с DCL-окнами, просто как они реализуется. Там вроде не все так просто как с DCL-окнами. Чтобы работало, надо что-то загружать доп к AutoCAD.
Shraybicus вне форума  
 
Непрочитано 27.01.2011, 12:48
#4
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Shraybicus Посмотреть сообщение
Вот собираюсь начать изучать .NET, но пока голова идет кругом. Для начала хочется увидеть простые примеры.
А толку? Это же нужно понимать синтаксис языка. Ну увидите вы код и что? Легче вам от этого не станет (имхо).

Если диалоговые окна создавать с помощью WinForms, то в автокаде открывать их следует с помощью одного из статических методов:
ShowModalDialog
ShowModelessDialog
Из названий ясно чем они отличаются.

Если окна создаёте с помощью технологии WPF, то в автокаде они открываются с помощью статических методов:
ShowModalWindow
ShowModelessWindow
Из названий так же ясно, в чём их разница.
Все обозначенные выше методы являются статическими и принадлежат статическому классу Autodesk.AutoCAD.ApplicationServices.Application.

WinForms и WPF - две совершенно разные технологии и процесс построения GUI в них сильно отличается.
Цитата:
1. запрашивать выбор объекта.
Читайте AutoCAD .Net API - там примеров валом, начиная с элементарщины.

п.с.

Пример работы с диалоговыми окнами можно глянуть например здесь (видео + исходники): https://sites.google.com/site/bushma...ory/lab/points

Если порыться - может ещё чего можно найти - я уже не помню.

Как выбирать примитивы, можно посмотреть в этом примере (исходники внизу): https://sites.google.com/site/bushma...tablic-v-excel
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 27.01.2011, 12:54
#5
Shraybicus


 
Регистрация: 05.12.2010
Сообщений: 104


Увидев код, может что-то и пойму.

Делаю программки на AutoLisp + DCL-окна. Но этого мне мало, точнее нужны немодальные окна.
Shraybicus вне форума  
 
Непрочитано 27.01.2011, 12:57
#6
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Shraybicus Посмотреть сообщение
Увидев код, может что-то и пойму.
я подправил предыдущее сообщение, добавив внизу пару ссылок. "Увидьте и попробуйте понять код" (c)
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 28.01.2011, 15:05
#7
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


Если на скорую руку и не вдаваясь в подробности, то на VB.NET это будет выглядеть как то так:
Код:
[Выделить все]
' Created by SharpDevelop.
' User: user
' Date: 28.01.2011
' Time: 14:48
' 
' To change this template use Tools | Options | Coding | Edit Standard Headers.
'
'
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Geometry
'Imports System.windows

Public Class adskCommands_1
	    'Имя команды "ac_commands"
    <CommandMethod("ac_test")> _
    Public Sub ac_test()

        
        'Получить объект редактора
        Dim ed As Editor = Application.DocumentManager.MdiActiveDocument.Editor
        'Получаем рабочую базу
        Dim dwg As Database = ed.Document.Database    
        
       'Выбираю объект
        Dim hcotstrOptions As PromptEntityOptions = New PromptEntityOptions(ControlChars.Lf & "Выберите объект: ")
		hcotstrOptions.AllowNone=False

        'Получаем данные
        Dim hconstrResult As PromptEntityResult = ed.GetEntity(hcotstrOptions)
        'Если все ОК
        If (hconstrResult.Status = PromptStatus.OK) Then
        Else
            Exit Sub
        End If
        
        Dim trans As Transaction = dwg.TransactionManager.StartTransaction
        'Начала транзакции
        Try
 			Dim acEnt As Entity =  trans.GetObject(hconstrResult.ObjectId, OpenMode.ForRead)
			'Тут лежит названием слоя, на котором выбранный объект расположен.
			Dim acEntLayer As String =acEnt.Layer.ToString
            'Все ОК
            trans.Commit()
        Catch ex As Exception
            'Есть проблемы, озвучим их!
            ed.WriteMessage(ControlChars.Lf & "Проблемка вылезла потому что" + ex.Message)
        Finally
            'Что бы не случилось мы должны закрыть транзакцию
            trans.Dispose()
        End Try
    End Sub
End Class

Последний раз редактировалось Boxa, 28.01.2011 в 15:07. Причина: Указал язык на котором написано
Boxa вне форума  
 
Автор темы   Непрочитано 28.01.2011, 18:51
#8
Shraybicus


 
Регистрация: 05.12.2010
Сообщений: 104


Boxa, Спасибо!

Сделал сборку dll, загрузил ее в AutoCAD 2010 и попытался выполнить процедуру ac_test. Программка попросила выбрать объект, и на этом все закончилось.

Пытаюсь читать руководство AutoCAD .Net API, но пока тяжко. Наверно надо сперва изучить синтаксис Visual Basic .NET, а потом и это руководство, не так ли?

Вот изучал Lisp по книге "Полещук Николай - AutoLISP и Visual LISP в среде AutoCAD", и быстро освоил азы. А вот с .NET что-то как-то туго. Не знаю за что взяться. Читать одно руководство разрабочика для меня тяжело.
Вы не могли бы направить - с чего начать?
Shraybicus вне форума  
 
Непрочитано 28.01.2011, 19:19
#9
Pastor

это только кличка
 
Регистрация: 22.10.2006
Москва
Сообщений: 252


1. Начни с языка С# и основ .NET.
2. Освой одну из технологий создания графического интерфейса: Windows Forms или WPF (лучше второе).
3. Из всего .NET API для AutoCAD освой небольшую часть, связанную с определением внешних (экспортируемых в среду LISP) функций, а так же часть связанную с диалоговыми окнами (к ней относятся упомянутые выше методы ShowModalWindow и ShowModelessWindow класа Application).

После этого ты сможешь продолжать писать программы на lisp, а диалоговые окна к ним делать на .NET.

Этот путь длиной минимум в год (если усидчивый и умный).
__________________
...в шее моей жилы железные, и лоб мой - медный...
Pastor вне форума  
 
Автор темы   Непрочитано 28.01.2011, 19:25
#10
Shraybicus


 
Регистрация: 05.12.2010
Сообщений: 104


Цитата:
Сообщение от Pastor Посмотреть сообщение
1. Начни с языка С# и основ .NET.
2. Освой одну из технологий создания графического интерфейса: Windows Forms или WPF (лучше второе).
3. Из всего .NET API для AutoCAD освой небольшую часть, связанную с определением внешних (экспортируемых в среду LISP) функций, а так же часть связанную с диалоговыми окнами (к ней относятся упомянутые выше методы ShowModalWindow и ShowModelessWindow класа Application).

После этого ты сможешь продолжать писать программы на lisp, а диалоговые окна к ним делать на .NET.

Этот путь длиной минимум в год.
п.1. Если я правильно понял, сперва надо изучить синтаксис C#, а почему не VB.NET? А что подразумевается под основами .NET?

п.2. Какую использовать литературу?

Последний раз редактировалось Shraybicus, 28.01.2011 в 19:37.
Shraybicus вне форума  
 
Непрочитано 28.01.2011, 19:41
#11
Pastor

это только кличка
 
Регистрация: 22.10.2006
Москва
Сообщений: 252


Лучшая книга (имхо) по основам .NET, это:
Рихтер Д.
CLR via C#. Программирование на платформе Microsoft .NET Framework 2.0 на языке C#. (возможно уже есть перевод и для Framework 4.0).
Книга очень толковая, но сложная.

Начать можно с учебника:
Павловская Т.
C#. Программирование на языке высокого уровня. Учебник для вузов.
Вполне приличная книга.

C#, на мой взгляд, стройнее и лаконичнее (мене многословен) и потому легче в изучении.
__________________
...в шее моей жилы железные, и лоб мой - медный...

Последний раз редактировалось Pastor, 28.01.2011 в 19:47.
Pastor вне форума  
 
Непрочитано 28.01.2011, 20:21
#12
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Pastor Посмотреть сообщение
Лучшая книга (имхо) по основам .NET, это:
Рихтер Д.
CLR via C#. Программирование на платформе Microsoft .NET Framework 2.0 на языке C#. (возможно уже есть перевод и для Framework 4.0).
Книга очень толковая, но сложная.
На Рихтере он повесится. Им (Рихрером) лучше "отполировывать" уже имеющиеся знания. Имхо доступно и понятно излагает Троелсен. А справочник по C# лучший у Шильдта (на русском есть по всем версиям C#).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 29.01.2011, 20:32
#13
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


Shraybicus
Это был пример выделения объекта и получения его слоя, формы в примере нет.
Название слоя лежит в переменной acEntLayer, а вот в каком виде его выводить, вариантов много. Да и не спец я в этом, мне вполне хватает пока консоли =)
Добавьте приведенный код перед строкой "trans.Commit()"

Код:
[Выделить все]
ed.WriteMessage(ControlChars.Lf & "Наименование слоя:" + acEntLayer)
Boxa вне форума  
 
Автор темы   Непрочитано 30.01.2011, 21:20
#14
Shraybicus


 
Регистрация: 05.12.2010
Сообщений: 104


Цитата:
Сообщение от Boxa Посмотреть сообщение
не вполне хватает пока консоли
Вы пишите форму, например, на Дельфи, а потом запускаете с помощью лиспа?
Shraybicus вне форума  
 
Непрочитано 31.01.2011, 08:31
#15
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Pastor Посмотреть сообщение
3. Из всего .NET API для AutoCAD освой небольшую часть, связанную с определением внешних (экспортируемых в среду LISP) функций, а так же часть связанную с диалоговыми окнами (к ней относятся упомянутые выше методы ShowModalWindow и ShowModelessWindow класа Application).

После этого ты сможешь продолжать писать программы на lisp, а диалоговые окна к ним делать на .NET.
ИМХО - предложенный подход более смахивает на своего рода извращение.
Чтобы нормально писать GUI на dotnet, нужно в любом случае понимать азы ООП и спецификацию языка, на котором пишешь. А имея эти знания уже можно свободно писать на AutoCAD .Net API, не заморачиваясь связыванием вместе лебедя с щукой LISP с dotnet. Неплохой начальный уровень можно получить прочитав хотя бы это. Не вижу смысла самостоятельно лепить костыли для LISP средствами dotnet.

Тут
Pastor предложил лисперам свой вариант готового решения (своего рода API) для построения меню (за кулисами это выполняется средствами .net), с тем, чтобы использовать этот API в lisp-программах, не требуя от разработчиков никаких знаний .net. Предложенная им библиотека позволяет lisp-программистам создавать что-то вроде меню в виде диалогового окошка. Однако, как вижу по количеству комментариев - это мало кого заинтересовало, хотя зря, т.к. для Lisp-программистов предложенное решение могло бы и пригодиться.

Однако если нужно писать средствами .net что-то самому (например те же диалоговые окна) - тут без знаний .net не обойтись, а уж если так, то и писать код тогда лучше полностью на .net.
имхо.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 31.01.2011 в 09:24.
hwd вне форума  
 
Непрочитано 31.01.2011, 10:37
#16
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


Цитата:
Сообщение от Shraybicus Посмотреть сообщение
...
Эк вы ловко с цитатой! =)
Еще раз: мНЕ вполне хватает консоли.

Я лисп не знаю, я медленно дрейфую с VBA к VB.NET .

На тему GUI, вот тут можно посмотреть пример как это делается: http://download.autodesk.com/media/a...T_Programming/ или скачать тут http://through-the-interface.typepad...introduct.html
Boxa вне форума  
 
Непрочитано 31.01.2011, 12:28
#17
Pastor

это только кличка
 
Регистрация: 22.10.2006
Москва
Сообщений: 252


Цитата:
писать код тогда лучше полностью на .net.
Да я бы с радостью... Только вот .NET API фактически недокументировано.
То, что везде позиционируется, как "документация", таковой на деле не является (имхо). А на ощупь я не люблю. И побираться по форумам - тоже удовольствия не доставляет.
А вот для того, чтобы на .NET писать только диалоговые окна, из всего AutoCAD .NET API требуется знать лишь "прожиточный минимум". При этом, решение lisp+.NET, на мой взгляд, ничуть не хуже, чем lisp+COM от ShaggyDoc (по крайней мере, "костыль" той же ценовой категории ).

Offtop:
Цитата:
Предложенная им библиотека позволяет lisp-программистам создавать что-то вроде меню в виде диалогового окошка.
Требуется уточнение. API библиотеки WebMenu не позволяет создавать диалоговые окна. Библиотека позволяет открывать готовые веб-страницы и взаимодействовать с ними в форме модального диалогового окна.
В простейшем случае веб-страница - это HTML-файл, расположенный на локальном компьютере.
__________________
...в шее моей жилы железные, и лоб мой - медный...

Последний раз редактировалось Pastor, 31.01.2011 в 16:56.
Pastor вне форума  
 
Непрочитано 01.02.2011, 19:59
#18
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Цитата:
Сообщение от hwd Посмотреть сообщение
Однако если нужно писать средствами .net что-то самому (например те же диалоговые окна) - тут без знаний .net не обойтись, а уж если так, то и писать код тогда лучше полностью на .net.
К сожалению под платформу Net нет полноценного, хорошо поддерживаемого функционального языка с динамической типизацией (есть весьма неплохой F# - но он со статической) - и посему многие вещи изящно выражаемые на lisp'е совсем не так изящны на том-же F# (тем более C# - хотя последняя 4 версия достаточно хорошо прибавила в этом направлении) - это безусловно вопрос времени - и когда это время настанет - про автолисп можно будет "напрочь" забыть (как по ходу это уже сделала сама автодеск). А пока - имея опыт работы с лисп до слез жалко потраченного времени на .Net аналог. Вот и получается - есть прекрасная платформа поддерживающая практически любые мысленные API, а есть "хреновенький" но лисп - уже практически ничего современного не поддерживающий - но с неплохими функцианальными возможностями и полностью динамической типизацией - что позволяет делать универсальные функции "все в одном" и значительно сокращать "типографию" + практически "версионно независим" (хорошо, что хоть "интерфейс" между этими технологиями сделан).
Тоже все ИХМО.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 01.02.2011, 21:00
#19
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Shraybicus Посмотреть сообщение
Здравствуйте!

Если можно, то программа должна выполнять следующее:
1. запрашивать выбор объекта.
2. после выбора, появляется диалоговое окно, которое выводит сообщение с названием слоя, на котором выбранный объект расположен.
Ctrl+1
gomer вне форума  
 
Непрочитано 01.02.2011, 22:02
#20
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Дима_ Посмотреть сообщение
К сожалению под платформу Net нет полноценного, хорошо поддерживаемого функционального языка с динамической типизацией (есть весьма неплохой F# - но он со статической) - и посему многие вещи изящно выражаемые на lisp'е совсем не так изящны на том-же F# (тем более C# - хотя последняя 4 версия достаточно хорошо прибавила в этом направлении) - это безусловно вопрос времени - и когда это время настанет - про автолисп можно будет "напрочь" забыть (как по ходу это уже сделала сама автодеск). А пока - имея опыт работы с лисп до слез жалко потраченного времени на .Net аналог. Вот и получается - есть прекрасная платформа поддерживающая практически любые мысленные API, а есть "хреновенький" но лисп - уже практически ничего современного не поддерживающий - но с неплохими функцианальными возможностями и полностью динамической типизацией - что позволяет делать универсальные функции "все в одном" и значительно сокращать "типографию" + практически "версионно независим" (хорошо, что хоть "интерфейс" между этими технологиями сделан).
Тоже все ИХМО.
Здесь хорошее видео по поводу новых возможностей, добавленных в C#4.0, в том числе и про динамическую типизацию (перемотайте на 33 мин, 15 сек), которая уже имеется и в C#. Тут ещё можно почитать на тему динамической типизации в C#. Кроме того, тем, кто знает LISP, возможно будет интересно это или это в разрезе .net.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 01.02.2011 в 22:10.
hwd вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > .NET > Пришлите, пожалуйста, пример элементарной программки на .NET и ObjectDCL

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Здравствуйте! Пришлите, пожалуйста пример ПОСа. Шарапова Нина Поиск литературы, чертежей, моделей и прочих материалов 1 26.10.2010 22:11
Пришлите пожалуйста пример? очень надо ASЪ Поиск литературы, чертежей, моделей и прочих материалов 2 04.02.2008 10:42