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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > .NET > OpenDCL vs C#.NET

OpenDCL vs C#.NET

Результаты опроса: На чем вы разрабатывали бы диалогов. окна для автокада?
OpenDCL 6 42.86%
C#.Net, VB.NET 6 42.86%
другое написал в теме 2 14.29%
Голосовавшие: 14. Вы ещё не голосовали в этом опросе

Ответ
Поиск в этой теме
Непрочитано 17.09.2009, 14:51 #1
OpenDCL vs C#.NET
Sleekka
 
-
 
Москва
Регистрация: 24.07.2005
Сообщений: 1,455

Собственно вопрос на чем эффективнее, проще, лучше дешевле разрабатывать диалоги для программ под автокад (zwcad, bricscad). Хочу выслушать все за и против исходя из предположения что основной софт пишется на lisp, здесь рассматривается только разработка диалогов.
на всякий случай ссылочка чтобы меня все поняли насчет OpenDCL
http://www.cad.dp.ua/sovets/OpenDCLdetail.php
Просмотров: 4613
 
Непрочитано 17.09.2009, 15:02
#2
-mavlin-


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


Меня простой ДСЛ устраивает
-mavlin- вне форума  
 
Автор темы   Непрочитано 17.09.2009, 15:02
#3
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,455


А если бы не устраивал? Окон хочется много, красивых, разных и качественных.
Sleekka вне форума  
 
Непрочитано 17.09.2009, 15:09
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 36,757


Раз предполагается такая ширина охвата (AutoCAd / BricsCAD / zwCAD), то, скорее всего, речь идет либо о СОМ-сервере (гарантированно вызывается из AutoCAD; наверняка нормально вызывается из BricsCAD; насчет zwCAD не знаю); либо о стороннем приложении (exe). Боюсь, что разработка СОМ в данном случае будет нерентабельна, и все закончится dcl.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.09.2009, 15:36
#5
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,274
Отправить сообщение для Александр Ривилис с помощью Skype™


OpenDCL пока поддерживает только AutoCAD, а поддержка клонов только планируется (начата).
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 17.09.2009, 15:39
#6
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,455


Да я знаю, а вы за что проголосовали о гуру?
Sleekka вне форума  
 
Непрочитано 17.09.2009, 15:40
#7
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 36,757


Моего варианта ответа пока нет
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.09.2009, 15:46
#8
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,274
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Sleekka Посмотреть сообщение
Да я знаю, а вы за что проголосовали о гуру?
За C#.Net, VB.NET т.к. создавать формочки на нем удобнее, чем на моем любимом ObjectARX (native на C++).
Александр Ривилис вне форума  
 
Непрочитано 17.09.2009, 16:02
#9
-mavlin-


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


Цитата:
Сообщение от Sleekka Посмотреть сообщение
А если бы не устраивал? Окон хочется много, красивых, разных и качественных.
Баловался я с OpenDCL... ИМХО Овчинка выделки не стоит.
-mavlin- вне форума  
 
Непрочитано 23.09.2009, 22:19
#10
nikе

конструктор Лего
 
Регистрация: 21.10.2005
Краснодар
Сообщений: 200


1.OpenDCL для Bricscad 9.3 уже существует. Но там очень много чего пока не поддерживается.
2.А мне очень нравится писать диалоги на Win32 API. Самые простые, но мне кажется что это удобнее чем DCL или OpenDCL. Хотелось уйти от MFC, но к BRX пока не удалось прикрутить .NET диалог. Так что если не писать суперизощренных окон, то Win32 API самое то.
nikе вне форума  
 
Автор темы   Непрочитано 23.09.2009, 23:26
#11
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,455


Цитата:
А мне очень нравится писать диалоги на Win32 API
А это как?
Sleekka вне форума  
 
Непрочитано 24.09.2009, 01:07
#12
nikе

конструктор Лего
 
Регистрация: 21.10.2005
Краснодар
Сообщений: 200


Использовал 2 способа:
1. Создаю exe файл с Win32 API диалогом и вызываю его Лиспом через функцию типа

Код:
[Выделить все]
;    intWindowStyle — целое число — вид появляющегося окна. Допустимые значения:
;        0 — Скрывает окно и активизирует другое окно;
;        1 — Активизирует и отображает окно. Если окно свернуто или развернуто,
;            система восстанавливает его в исходных размерах и позиции. Этот
;            флаг нужно указывать, когда окно отображается вперые;
;        2 — Активизирует окно и отображает его в свернутом виде;
;        3 — Активизирует окно и отображает его на весь экран;
;        4 — Отображает окно в его последних размерах и позиции. Активное окно
;            остается активным;
;        5 — Активизирует окно и отображает его в текущих размерах и позиции;
;        6 — Свертывает указанное окно и активизирует следующее окно в Z-порядке;
;        7 — Отображает окно в свернутом виде. Активное окно остается активным;
;        8 — Отображает окно в его текущем состоянии. Активное окно остается активным;
;        9 — Активизирует и отображает окно. Если окно свернуто или развернуто,
;            система восстанавливает его в исходных размерах и позиции. Этот
;            флаг нужно указывать при восстановлении свернутого окна;
;        10 — Наследует состояние окна от программы, запустившей приложение

(defun run_and_wait (strCommand / WScript_obj)
;    strCommand — строка с командой, которую надо выполнить, включая аргументы;
;       например: "notepad.exe \"c:\\My Folder\\tmp.txt\""
;  Возвращает либо 0, либо <%catch-all-apply-error%>, либо nil.
  (vl-load-com)
  (if (setq WScript_obj (vlax-get-or-create-object "WScript.Shell"))
    (vl-catch-all-apply 'vlax-invoke-method (list WScript_obj "Run" strCommand 4 :vlax-true))
  );if
);defun

;(run_and_wait "notepad.exe \"c:\\1.txt\"")
2. Создаю диалог в arx файле, оформляю arx как Лисп функцию.

Недостаток и тормоз этих способов - необходимость знания С++, Win32 API, ObjectARX. Хотя, имея примеры в виде исходников все это не так сложно.
Лично я написал первый диалог на С++ после одного года от начала изучения С++, хотя если есть хороший учитель и хорошая инфа можно все сделать на порядки быстрее. А вообще диалог проще всего сделать на любом языке, используя .NET(хоть С++, хоть С#(VB.NET))...

Последний раз редактировалось Кулик Алексей aka kpblc, 24.09.2009 в 08:42.
nikе вне форума  
 
Автор темы   Непрочитано 24.09.2009, 10:57
#13
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,455


Понятно, а на чем пишется вот это?:
Цитата:
Создаю exe файл с Win32 API диалогом
Вроде екзешник с окном можно создать на чем угодно, но тут видимо, у него какие-то хитрые свойства, что он является диалогом Win32 API, хотя как он может им являться если у Win32 API строго определенный набор функций, вобщем кое что прояснилось но не до конца.
Sleekka вне форума  
 
Непрочитано 24.09.2009, 11:05
#14
nikе

конструктор Лего
 
Регистрация: 21.10.2005
Краснодар
Сообщений: 200


Пишется в MS VS Express 2005 или 2008. Там нет редактора ресурсов, поэтому ресурсы делаю в ResEdit. Там же есть редактор окон .NET. Т.к. Бриксовский ARX пока не поддерживает управляемый С++, то диалоги пока решил поделать на WinAPI. А простой екзешник можно написать на чем угодно, но пока я не нашел как диалоговое окно из простого экзешника можно сделать модальным по отношению к Бриксу.
Весь фокус использования екзешника состоит в том , что его вызывает LISP и ждет завершения работы этого экзешника.
Некоторые товарищи пишут про COM. Но с COM простому любителю связываться не охота.

Последний раз редактировалось nikе, 24.09.2009 в 11:12.
nikе вне форума  
 
Автор темы   Непрочитано 15.10.2009, 00:01
#15
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,455


Найден вот такой вот материал http://augiru.augi.com/content/libra...er/DE211-2.pdf , который решает все проблемы, это уже не убогие попытки подружить VBA и lisp. Это человеческое решение. Всем юзать.
ЗЫ подскажите нету более расширеного helpa чем сам object browser по библиотекам acmgd.dll и acdbmgd.dll?

Последний раз редактировалось Sleekka, 15.10.2009 в 00:16.
Sleekka вне форума  
 
Автор темы   Непрочитано 16.10.2009, 00:09
#16
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,455


Код:
[Выделить все]
'Sleekka_s application
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Geometry
Imports System.Windows
Imports Autodesk.AutoCAD.Windows
Imports System


Public Class gg

    <LispFunction("dNetGpath")> _
    Public Function VBNetFunction(ByVal myLispArgs As ResultBuffer) As ResultBuffer()
        Dim gPathFrm As New GardenPath
        Dim rbfResult As ResultBuffer
        'Dim myLispArgs As ResultBuffer
        Application.ShowModalDialog(gPathFrm)
        ' Dim rbfResult As ResultBuffer
        If gPathFrm.bOK = True Then
            ' Get the radius of tile to use
            Dim dRadOfTile As Double
            dRadOfTile = gPathFrm.tb_RadiusOfTile.Text
            ' Bet the spacing of tiles to use
            Dim dSpaceOfTiles As Double
            dSpaceOfTiles = gPathFrm.tb_SpacingBetweenTiles.Text
            ' Get the creation type
            Dim strCreationType As String
            If gPathFrm.rb_ActiveX.Checked Then
                strCreationType = "ActiveX"
            ElseIf gPathFrm.rb_Entmake.Checked Then
                strCreationType = "Entmake"
            Else
                strCreationType = "Command"
            End If
            Dim strPlineType As String
            If gPathFrm.rb_LightWeight.Checked Then
                strPlineType = "Light"
            Else
                strPlineType = "Heavy"
            End If

            'Dim rbfResult As ResultBuffer
            rbfResult = New ResultBuffer(New TypedValue(CInt(LispDataType.Double), dRadOfTile), _
New TypedValue(CInt(LispDataType.Double), dSpaceOfTiles), _
New TypedValue(CInt(LispDataType.Text), strCreationType), _
New TypedValue(CInt(LispDataType.Text), strPlineType))
            Return rbfResult


        End If
        rbfResult = New ResultBuffer(New TypedValue(CInt(5019)))
        Return rbfResult


    End Function

End Class
Делаю вроде все как в примере но почему-то не работает, помогите пожалуйста найти ошибку.
Весь проект прикладываю.

Ошибку нашел:
в строке
Код:
[Выделить все]
Public Function VBNetFunction(ByVal myLispArgs As ResultBuffer) As ResultBuffer()
Надо было
Код:
[Выделить все]
Public Function VBNetFunction(ByVal myLispArgs As ResultBuffer) As ResultBuffer
когда переключаешь окна среда сама заканчивает команды и собственно дописала эти скобки.
В итоге я получал ошибку вида:
Код:
[Выделить все]
Error	1	Value of type 'Autodesk.AutoCAD.DatabaseServices.ResultBuffer' cannot be converted to '1-dimensional array of Autodesk.AutoCAD.DatabaseServices.ResultBuffer'.
Кто-нибудь знает в чем смысл этих скобок, они вроде как предопределяют размерность переменной массива ResultBuffer?

Цитата:
1. Создаю exe файл с Win32 API диалогом и вызываю его Лиспом через функцию типа
Так-с, а как в этом способе идет получение данных с диалога? через файл? Win API же не знает type list.
Вложения
Тип файла: rar AutoCad_manage my1.rar (15.5 Кб, 72 просмотров)

Последний раз редактировалось Sleekka, 16.10.2009 в 01:42.
Sleekka вне форума  
 
Непрочитано 16.10.2009, 12:13
#17
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Я за НТА, НТМL, и пр.
http://forum.dwg.ru/showthread.php?t=17470

Я конечно и другие способы уважаю и применяю, но иметь возможность работать с интерфейсом веб-страниц очень хочется.
Интернет эксплорер правда уж очень ангажирован и слишком наварочен, но можно и свой браузер написать. Надо только самую малость - перехват событий в документе организовать и все возможности Интернета у вас в руках.
Supermax вне форума  
 
Автор темы   Непрочитано 02.07.2013, 22:23 result
#18
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,455


Итак, прошло время, я закончил разработку диалогов выбрав C# WPF, в виде отдельного приложения запускаемого по методу здесь опубликованном by nike, ранее by Евгений Елпанов. Обмен данными реализован через xml.
В итоге все у меня получилось криво, но работает.
Что криво:
- данные для передачи достаточно обширны и достаточно долго считываются, такие объемы нужно передавать через оперативку.
- данные грузятся в класс, с которым связаны controls WPF, все перезагружается по 3 раза, прямее сделать не получилось.
- оперировать с такими макрообъектами - нужно долго учиться, плюс когда выходишь за штатные диапазон применимости инструмента, не так то просто модифицировать сам инструмент. (видимо для своей задачи мне лучше было использовать OpenDCL).

Пока велась разработка - 2 года, OpenDCL стал нормально поддерживать bricscad. ZWCAD - я в итоге сам исключил из списка поддержки, они слишком убоги, видимо вся бизнесс идея базировалась на том, чтобы побырику сделать abibas, в отличие от bricsys - которые являются конторой с историей, занимавшимися сначала PLM решениями, а сейчас их тянет в сторону Mechanical desktop и очень серьезная ориентация на разработчиков.

Итого в C# я разочаровался, быть там профессионалом это отдельная тема, тем более что под проф. разработку все равно все юзают платные библиотеки по штуке баксов под C++, а мне в этом копаться не охота.

Теперь мои копания будут нацелены в сторону OpenDCL.
Sleekka вне форума  
 
Непрочитано 02.07.2013, 22:31
#19
hwd

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


порой разочарования обуславливаются кривостью написанного решения. Однако это не означает, что проблема заключается в том или ином языке программирования - скорее это проблема в руках того, кто писал код.
hwd вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > .NET > OpenDCL vs C#.NET

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
OpenDCL :: по нажатию Enter "нажимается" Cancel Игорь Костюкович Программирование 2 04.08.2009 09:05