|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
"VB.net для чайников". Вопросы программирования под Autocad и ©.
Инженер
С-Пб
Регистрация: 02.10.2008
Сообщений: 3,704
|
||
Просмотров: 125957
|
|
||||
Регистрация: 11.10.2010
Сообщений: 979
|
Ну, хотелось бы и по C# сюда же вопросы засовывать
![]() AlexV, а зачем используешь Interop? Это ж обращение к acad.exe как внешнему приложению, как я понимаю. Попробуй сделать по-другому: обычным образом импортировать acdbmgd.dll и acmgd.dll и писать внутреннюю команду.
__________________
(/= RegDate StartReadDate) |
|||
![]() |
|
|||||||
Цитата:
![]() Imports и "подключение библиотеки" - это совершенно разные вещи. Imports используется для того, чтобы вам не набирать полное имя класса, с указаниями всех пространств имён. Вы можете убрать все Imports и прописывать везде полные имена классов - ваш код будет работать. Но если вы предварительно ("на вкладке Ссылки" (с)) не подключите библиотеку, то вам не поможет и наличие Imports - код работать не будет, поскольку библиотека не подключена. Т.о. Imports добавляют для удобства написания кода, но обойтись можно и без неё. Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Если так, то я на них пожалуй отвечать не буду, т.к. не поощряю лень, и времени свободного у меня не вагон (Александр Ривилис более добрый на этот счёт, но и у него свободного времени не всегда море). Вам сначала нужно читать азы дотнета, тренироваться на обычных простеньких проектах (начните с консольных), затем определитесь с GUI: (WinForms/WPF) - потом это можно пришивать к автокаду. По дотнету вопросы лучше задавать на дотнет-форумах, а не здесь. После того, как будете себя уверенно чувствовать в .нете - можно будет браться за автокад - т.е. шлёпать на этот форум.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
|||||||
![]() |
|
||||
Инженер Регистрация: 02.10.2008
С-Пб
Сообщений: 3,704
|
Цитата:
![]() - и во-вторых, может кто-то в этой теме задаст более содержательные вопросы (на dwg.ru пока по технологии net информации не много). Цитата:
__________________
...Не пытайся гнуть ты ложку, Не вяжи её узлом. Ложка - ложка понарошку, А по правде, - это лом! |
|||
![]() |
|
||||
Регистрация: 11.10.2010
Сообщений: 979
|
AlexV, лично я сначала бы с "чистым" кадом разобрался (кстати, точно так же, как и ты, я "подвис" на некоторых элементарных вещах). Насколько я понял, вертикальные решения позволяют просто обращаться к собственным объектам при условии импорта соответствующих библиотек.
__________________
(/= RegDate StartReadDate) |
|||
![]() |
|
||||
>AlexV
Если вам это будет интересно - могу расшарить доступ на некоторые электронные книги по .net-технологиям (одни на русском, другие на английском). Линк на электронный мануал (английский) по .Net API AutoCAD у вас наверняка уже есть.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Инженер Регистрация: 02.10.2008
С-Пб
Сообщений: 3,704
|
Цитата:
![]() Цитата:
__________________
...Не пытайся гнуть ты ложку, Не вяжи её узлом. Ложка - ложка понарошку, А по правде, - это лом! Последний раз редактировалось AlexV, 13.12.2010 в 13:28. |
|||
![]() |
|
||||
До завтрашнего дня открываю доступ для возможности скачивания: тынц. Это из того, что сейчас есть под рукой... Вечером могу дома поискать на тему WinForms (если нет желания изучать WPF). Спецификацию по VB.Net я себе не искал, т.к. пишу на C#, но её можно найти в инете, например тут (нужно только версию смотреть, чтобы не старая была).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 13.12.2010 в 14:25. |
||||
![]() |
|
||||
Инженер Регистрация: 02.10.2008
С-Пб
Сообщений: 3,704
|
Цитата:
__________________
...Не пытайся гнуть ты ложку, Не вяжи её узлом. Ложка - ложка понарошку, А по правде, - это лом! |
|||
![]() |
|
||||
AutoCAD Регистрация: 26.07.2007
Москва
Сообщений: 1,064
|
AlexV, напиши каким ПО пользуешься, начиная с винды, NET, студии, акада, и прочее.
От идеологии ThisDrawing нужно отвыкать. И от com interop. Подклучай ссылки на net библиотеки акада (знаешь как, и знаешь какие, наверное уже). Ссылка на активный документ, типа ThisDrawing на vba. Код:
По вопросам. В дополнение к ответам hwd. 1. Андрей разжевал хорошо. 2. Как в одном проекте это увязать, чтобы компилиось под х32 и х64, я хз. Но как-то же компилируют под разные операционки. Нужно матчасть осваивать. 3. Используй метод Autodesk.AutoCAD.ApplicationServices.Application.ShowModelessDialog(). Почему нужно делать так, я точно и не скажу. Действительно читать надо, начиная с того что такое приложение, процессы, ну и про запуск форм. Хорошобы кто-нибудь на пальцах объяснил. 4. Виндовые языки. Или локализацию акада. Уточни. 5. У класса Document есть событие CommandWillStart. На него нужно подписаться. 6. ASD 2011 дома стоит. Посмотрю вечером. Какие книжки по NET есть, какие начал читать? Да, и без msdn и не туды и не сюды. |
|||
![]() |
|
||||
Как вариант - программно проверить разрядность и на основании этого выполнить тот или иной блок кода (if-else). Мне искать некогда, но при желании можно найти ответ Александра Ривилиса на тему того, как в автокаде определить его разрядность (проанализировав указатель). Тема была на кадюзере (если мне не изменяет память).
MSDN нужен однозначно - я его не упоминал, т.к. подразумевал по умолчанию ![]() Проверить разрядность операционной системы можно разными способами (зависит от версии .NetFamework). Например в .NetFramework 4.0 появилась такая удобная возможность.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Инженер Регистрация: 02.10.2008
С-Пб
Сообщений: 3,704
|
Цитата:
Книг по Net пока нет.. ![]()
__________________
...Не пытайся гнуть ты ложку, Не вяжи её узлом. Ложка - ложка понарошку, А по правде, - это лом! |
|||
![]() |
|
||||
Если AutoCAD 2011, то имхо лучше сразу использовать VS2010 и .Net 4.0 (не помню, можно ли под 2010 использовать .Net 4.0).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Инженер Регистрация: 02.10.2008
С-Пб
Сообщений: 3,704
|
VS2010 вроде Express выпуска нет, только платные Professional..
__________________
...Не пытайся гнуть ты ложку, Не вяжи её узлом. Ложка - ложка понарошку, А по правде, - это лом! |
|||
![]() |
|
||||
>AlexV
А если не гадать, а спросить гугл?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 13.12.2010 в 15:55. |
||||
![]() |
|
||||
AutoCAD Регистрация: 26.07.2007
Москва
Сообщений: 1,064
|
Ну все, я пас
![]() че так? В эл.виде как грязи. Купи из серии для профессионалов, NET 3.5, или 4. С языком тоже подумай. VB.NET после C# уже не перивариваю. Попробовал, можно. |
|||
![]() |
|
||||
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Offtop: Я с большой кровью добился, чтобы всем пользователям раскатали .Net 3.5 SP1 (теперь хоть LINQ можно использовать). Но устанавливать .Net 4.0 наотрез отказались - админы боятся "ада dll", не верят, что для .Net Framework этой проблемы не будет. Мне наложили VETO на установку его пользователям и на попытки поднятия этой темы средит IT-шников.
При установке AutoCAD 2009, автоматом накатывается .Net 3.0. Какая же у тебя версия AutoCAD, что фрэймворк только 2.0???
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
AutoCAD Регистрация: 26.07.2007
Москва
Сообщений: 1,064
|
В нашем отделе у всех Autocad Architecture 2008. А вообще в институте, есть и 2009, не подумал.
Не поверишь, я задолбался просить обновления поставить на акады, на той неделе поставили. Я с админами боле-менее дружу, но влиять на них не могу. И wpf ты вроде юзал. Или как? |
|||
![]() |
|
||||
Устанавливаешь для проекта Platform target: Any CPU и будет грузится и в x86 и в x64. Нюансы могут возникнуть с функциями, вызываемыми через P/Invoke - там нужно определять разрядность AutoCAD (и своей сборки).
|
||||
![]() |
|
||||
Инженер Регистрация: 02.10.2008
С-Пб
Сообщений: 3,704
|
Ну, не знаю.. Я VB.net - то пока могу проглотить (не то что переварить) разве что разжеванный кем-то, а ты предлагаешь мне замахнуться на Вильяма нашего Шекспира на Си нашего шарпа..
![]()
__________________
...Не пытайся гнуть ты ложку, Не вяжи её узлом. Ложка - ложка понарошку, А по правде, - это лом! |
|||
![]() |
|
||||
Цитата:
Offtop: WPF работает начиная с .Net 3.0 (т.е. для этого не обязательно ставить .Net 3.5 SP1). Но в 3.0 нет LINQ. Да, я использую WPF при построении пользовательского GUI. После WPF не могу смотреть на WinForms. Если использовать MVVM - получается вообще сказка: полное отделение интерфейса от кода - Весь интерфейс описан в виде XAML-разметки, не имея ни строчку кода. Можно менять GUI, не переписывая при этом ни строки кода. Такое разделение даёт возможность привлекать к работе дизайнеров, не разбирающихся в программировании, но имеющих богатую фантазию, с помощью которой они могут в том же MS Expression Blend нарисовать красивый GUI. Программист добавляет его в свой проект, не внося изменений в код и всё работает как часы. Цитата:
Начал думать, на какой язык/платформу переходить. С платформой определился быстро - решил перейти на .net, ибо самая мощная, удобная и т.п. Начал думать насчёт языка... Изначально планировал перейти на VB.Net, но посмотрев примеры, написанные на нём, понял, что на VBA он похож так же как собака на человека... Раз сходства нет, решил выбрать язык, наиболее популярный и удобный. Просмотрел литературу и увидел, что основная масса литературы по .Net написана на C#. Изначально такие слова как "С", "С++" и "С#" для меня были одинаково страшны, но почитав "C# для чайников" понял, что "С#" очень удобный и красивый язык. В то време VB.Net был слабее, чем C# (он и сейчас слабее, но MS обещает, что от версии к версии VB.Net будет подтягиваться к C# как элластичный жгут). В .Net 4.0 они по возможностям уже не сильно отличаются. Т.о. Имхо - тому, кто писал на VBA, без разницы какой язык учить, ибо мораль сей басни такова: VB.Net имеет с VBA общего только первые две буквы (в прямом смысле), и более ничего.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 13.12.2010 в 17:21. |
||||
![]() |
|
||||
AutoCAD Регистрация: 26.07.2007
Москва
Сообщений: 1,064
|
Цитата:
Осознаю всю степень своего незнания. Мне особо пока не нужно. Алекс пущай мучается ![]() hwd, Пробовал wpf и blend. Очень круто. Но практически пока не могу применить. Опять же очень жаль. Про MVVM не знал. Почитаю, спасиб. AlexV, Большая часть людей, котроые пишут под NET, используют C#. Я тебя не убеждаю. Просто советую ![]() Последний раз редактировалось Vildar, 13.12.2010 в 17:19. |
|||
![]() |
|
||||
Проектирование заборов уже в прошлом Регистрация: 29.10.2009
Рязань
Сообщений: 2,089
|
Цитата:
![]() |
|||
![]() |
|
||||
AutoCAD Регистрация: 26.07.2007
Москва
Сообщений: 1,064
|
AlexV про ASD пока нечего сказать, не нашел его управляемых сборок. Он видимо по-другому сделан, в отличии от ACA. По F1 выдает справку только по Autocad 2011, а по ASD при запуске како-нибудь команды есть помощь, но там нет разделов по API. В ручную тоже не нашел.
Еще поковыряюсь, отпишусь. |
|||
![]() |
|
||||
Да собственно не важно, на что ссылаешься. Главное установить для них свойство CopyLocal=False. Это значит, что будут использоваться соответствующие файлы, загруженные в AutoCAD. А AutoCAD уж сам разберется, какие ему загружать.
|
||||
![]() |
|
||||
AutoCAD Регистрация: 26.07.2007
Москва
Сообщений: 1,064
|
Александр Ривилис, не подумал про это. Сложновато без практики.
AlexV тебе именно нужно писать используя объекты ASD, или нет. Просто, может ты не вкурсе, обычные сборки acmgd.dll и acdbmgd.dll будут и в ASD работать. У нас стоит ACA2008, но писать используя объекты AEC пока не приходилось. Но примеры видел, справку почитывал. Уточни? upd Есть куча сборок в папке ASD начинающихся с имени AmberCore.*.*.dll, может оно? Последний раз редактировалось Vildar, 14.12.2010 в 00:11. |
|||
![]() |
|
||||
Инженер Регистрация: 02.10.2008
С-Пб
Сообщений: 3,704
|
Цитата:
Да, я знаю, что обычные сборки автокада будут работать, ASD это ж не отдельно растущее дерево, а надстройка над автокадом. (я в VBA пытался его копать на своем уровне знаний..). Проблема получить доступ к объектной модели собственно ASD - модуля steel в частности. Я тупо подключал нужные библиотеки, получал объекты ASD из чертежа фильтром по их TypeName, объявлял переменные типов, принадлежащих asd-шной объектной модели, и передавал в них примитив ("Set ASDobj=AcadObj"), ну и получал доступ к части (очень небольшой) их свойств и методов. Понятно, что это "паллиативное решение", но большего я нарыть не сумел.
__________________
...Не пытайся гнуть ты ложку, Не вяжи её узлом. Ложка - ложка понарошку, А по правде, - это лом! |
|||
![]() |
|
||||
AutoCAD Регистрация: 26.07.2007
Москва
Сообщений: 1,064
|
Autocad Architecture. Писать очень длинно не охото.
Через com, можно и на NET действовать. Какие ты файлы подключал на vba? Их можно и в VB.NET подключить. Но у ACA есть API, для NET, опять же наверно обертки над C++. И есть хелп по этому делу. У акадовцев принято управляемые сборки (NET) обзывать *mgd*.dll. Но у ASD таких нету. |
|||
![]() |
|
||||
Инженер Регистрация: 02.10.2008
С-Пб
Сообщений: 3,704
|
Цитата:
C:\Program Files\Autodesk\AutoCAD Structural Detailing 2011\RBCSCommon.dll C:\Program Files\Autodesk\AutoCAD Structural Detailing 2011\RbCSModel.arx C:\Program Files\Autodesk\AutoCAD Structural Detailing 2011\rbcscomserver.arx, причем применять у меня получалась только RbCSModel.arx..
__________________
...Не пытайся гнуть ты ложку, Не вяжи её узлом. Ложка - ложка понарошку, А по правде, - это лом! |
|||
![]() |
|
||||
Инженер Регистрация: 02.10.2008
С-Пб
Сообщений: 3,704
|
Дык, а чего удалил-то? Отредактировал бы, написал: проблема решилась так-то...
__________________
...Не пытайся гнуть ты ложку, Не вяжи её узлом. Ложка - ложка понарошку, А по правде, - это лом! |
|||
![]() |
|
||||
Регистрация: 11.10.2010
Сообщений: 979
|
Да я просто на сайт hwd зашел, а там реальный пример создания точки есть: https://sites.google.com/site/bushma...sozdanie-tocek
Код на VB.NET, я его переделал на C# (благо это нетрудно): Код:
Я допустил ошибку, вместо DBPoint пытался работать с Point3d (а это, как я понял, просто массив из 3 вещественных чисел). --- Добавлено: гы, перевел, переводчик, е-мое... Чуть ниже все есть и на C# ![]()
__________________
(/= RegDate StartReadDate) |
|||
![]() |
|
||||
AutoCAD Регистрация: 26.07.2007
Москва
Сообщений: 1,064
|
AlexV,
Про com понятно, подключаем ссылки, из закладки com, и работать аналогично vba. Есть NET сборки от ASD. Лежат в GAC'e. Цитата:
Но это непонятно, что такое. Похоже не то. Забыли они API прикрутить. Я не знаю, как балку нарисовать в ASD, не то что писать под него что-то. |
|||
![]() |
|
||||
DBPoint - это класс примитива точка (в ObjectARX: AcDbPoint), а Point3d - это класс геометрической библиотеки, описывающий точку в пространстве 3D (в ObjectARX: AcGePoint3d). Экземпляры классов геометрической библиотеки добавлять в чертеж невозможно. Они для этого не предназначены. :-) Но сама по себе геометрическая библиотека достаточно мощная. Для нее нет аналогов ни в VisualLisp, ни в VBA. Настоятельно рекомендую изучить ее возможности.
|
||||
![]() |
|
||||
А ты посмотри какие методы есть у этого класса и у его родителей и увидишь практическое применение. Например метод isOn проверяет лежит ли точка на линии, closestPointTo находит ближайшую точку на линии или ближайшие точки на двух линиях (ну для прямых это может и не слишком интересно, но ведь функции то работают и дугами, и с сплайнами). Ну и так далее. Масса интересных методов.
|
||||
![]() |
|
||||
AutoCAD Регистрация: 26.07.2007
Москва
Сообщений: 1,064
|
Т.е. вместо того, чтобы строить в базе временные примитивы для каких-то вспомогательных вычислений. Лучше использовать объекты классов из пространства Geometry (AcGe).
Слова сложно подобрать. Т.е. например линия AcGeLine2d, будет "имитировать" линию в базе чертежа. Не пробую, т.к. нет пока конкретных задач. Просто на будущее буду знать. А метод у Line2d только Set. На родителей забыл поглядеть ![]() |
|||
![]() |
|
||||
Цитата:
А родителей у него масса и масса переопределенных методов. |
||||
![]() |
|
||||
Регистрация: 11.10.2010
Сообщений: 979
|
В чертеже имеются объекты СПДС GraphiCS с именами типа "spdsNotePosition". Лиспом выбрать только такие объекты невозможно в принципе. Попробовал через .NET примерно таким вариантом:
Код:
__________________
(/= RegDate StartReadDate) |
|||
![]() |
|
||||
Инженер Регистрация: 02.10.2008
С-Пб
Сообщений: 3,704
|
Цитата:
Посмотри вот это..
__________________
...Не пытайся гнуть ты ложку, Не вяжи её узлом. Ложка - ложка понарошку, А по правде, - это лом! |
|||
![]() |
|
||||
AutoCAD Регистрация: 26.07.2007
Москва
Сообщений: 1,064
|
Лиспер,
Как я думаю. Незнаю как выбрать сразу через select с фильтром по spdsNotePosition. Но можно в лоб. Перебрать объекты (или в наборе или во всем чертеже), и отобрать нужные вручую. 0. Открыть объект для чтения. 1. Проверить у объектов RXClass.DXFName = "spdsNotePosition". RXClass получить методом GetRXClass(). 2. Profit. Возможно это не самый оптимальный вариант. Все не знгаю. Про лисп. Есть такая тема: Выбор узловых выносок СПДС (SpdsNoteKnot) по образцу текущей выделенной. http://forum.dwg.ru/showthread.php?t=27273 Там Крыс вопрос решил. Последний раз редактировалось Vildar, 17.12.2010 в 18:06. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Ха, решил! Насколько я помню, там как раз и шел выбор всех объектов с последующим исключением "не тех". Именно лобовое решение...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 11.10.2010
Сообщений: 979
|
Возник у меня тут вопрос по получению ключа в реестре, связанного с текущим AutoCAD (наподобие лиспового vlax-product-key). Решение-то я нашел:
Код:
Прошу прощения за тупые вопросы, но пока ответов на них я не нашел...
__________________
(/= RegDate StartReadDate) |
|||
![]() |
|
||||
AutoCAD Регистрация: 26.07.2007
Москва
Сообщений: 1,064
|
Лиспер, я не знаю.
Вот пример получения ключа текущего акада, взято отсюда http://through-the-interface.typepad...20a8c2933c970b private static string GetAutoCADKey() { // Start by getting the CurrentUser location RegistryKey hive = Registry.CurrentUser; // Open the main AutoCAD key RegistryKey ack = hive.OpenSubKey( "Software\\Autodesk\\AutoCAD" ); using (ack) { // Get the current major version and its key string ver = ack.GetValue("CurVer") as string; if (ver == null) { return ""; } else { RegistryKey verk = ack.OpenSubKey(ver); using (verk) { // Get the vertical/language version and its key string lng = verk.GetValue("CurVer") as string; if (lng == null) { return ""; } else { RegistryKey lngk = verk.OpenSubKey(lng); using (lngk) { // And finally return the path to the key, // without the hive prefix return lngk.Name.Substring(hive.Name.Length + 1); } } } } } } |
|||
![]() |
|
||||
|
||||
![]() |
|
||||
Регистрация: 11.10.2010
Сообщений: 979
|
Vildar, лезьть в реестр бесполезно и немного даже вредно. Если работа выполняется, например, в AutoCAD 2008, а потом был открыт и закрыт, к примеру, AutoCAD MEP 2011, то в ключе "CurVer" будет далеко не то значение, которое ожидаешь.
Александр Ривилис, я в общем-то и старался там почитать, но как-то с трудом доходит. Я правильно подозреваю, что этот класс на самом деле один из определяющих, позволяет загружать и выгружать arx-модули, именно он устанавливает и снимает блокировку документа? И грузится он в .NET-сборки через строку using Autodesk.AutoCAD.Runtime ? Хотя вопросы из #48 все еще остались: что такое и зачем нужны реакторы AcRxDynamicLinker? А то пока у меня получается как у Лемма: "Сепульки - используются в сепулькарии (см. сепулькарий)"; "Сепулькарий - место для сепуления"; "Сепуление - процесс использования сепулек" или наподобие того...
__________________
(/= RegDate StartReadDate) |
|||
![]() |
|
||||
Offtop: Похоже скоро Лиспер сменит ник на Дотнетчик
![]() В DotNet нет такого понятия, как "реакторы", есть события (events). Arx-модули грузятся методом статического класса Application: Код:
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Регистрация: 11.10.2010
Сообщений: 979
|
hwd, хотелось бы, да нескоро это будет (если будет вообще
![]() Я тупо перевел документацию: Цитата:
__________________
(/= RegDate StartReadDate) |
|||
![]() |
|
||||
Да вроде в общих чертах понятно. О классе AcRxDLinkerReactor тоже уже прочитали?
Чем обусловлен интерес к AcRxDynamicLinker (какая задача решается)?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Цитата:
Нет. К блокировке документа этот класс никакого отношения не имеет. За блокировку документа отвечает класс DocumentLock из пространства имен Autodesk.AutoCAD.ApplicationServices (в ObjectARX это AcAp). Он никуда этой строкой не грузится. Просто дает возможность использовать его классы и методы без указания "полного пути" Autodesk.AutoCAD.Runtime... |
||||
![]() |
|
||||
Регистрация: 11.10.2010
Сообщений: 979
|
Интерес обусловлен абсолютным незнанием, наверное... Про класс AcRxDLinkerReactor читал, спасибо
![]() Цитата:
P.S. Да, с загрузкой я сильно погорячился ![]() ![]()
__________________
(/= RegDate StartReadDate) |
|||
![]() |
|
||||
Цитата:
В терминах AutoCAD и ObjectARX - это реактор, в терминах .NET - события. |
||||
![]() |
|
||||
>Лиспер рекомендую сначала изучить сам DotNet и только после этого пытаться писать на нём в AutoCAD. Тогда вопросы типа
Цитата:
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Регистрация: 11.10.2010
Сообщений: 979
|
hwd, скажу честно - я пытался прочитать C++ Страуструпа (ведь типа основатель). Повесился разбиравшись. Шилдт в этом смысле намного более понятен. Но дело не в этом. А в том, что на моем уровне пытаться сейчас читать .NET - значит гарантированно им не заниматься. Закопаюсь в теории и никогда не приступлю к практике...
__________________
(/= RegDate StartReadDate) |
|||
![]() |
|
||||
AutoCAD Регистрация: 26.07.2007
Москва
Сообщений: 1,064
|
Лиспер, про curver, согласен с твоим замечанием.
Цитата:
Но, пытаться писать, без знания синтаксиса и ключевых слов и понятий NET, это по-моему безумие. Offtop: Хотя, есть положительный пример твоему утверждению - Modis. Он все одновременно делал. Первым делом справшивал на форуме, потом писал, а уж потом читал. ![]() |
|||
![]() |
|
||||
Насчёт Modis я согласен (при условии, что не придётся открывать его исходники, хотя и мои исходники с большим натягом на 3-ку тянут, если тянут вообще). У него энергии и фантазии хватает с избытком. Правда читать он не любит - отсюда не всегда "красивый" код + чесание ногой уха.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Регистрация: 11.10.2010
Сообщений: 979
|
Александр Ривилис, а понимаю что он основатель. Но пока до второй половины его книги не добрался, ничего не понимал. И потом по идее все надо перечитывать. Это ж уму нерастяжимо
![]() Насчет Modis'a... Пока стараюсь сначала сам разобраться, и только потом спрашивать ![]() P.S. Пока умолкаю, будут вопросы - снова выдам ![]()
__________________
(/= RegDate StartReadDate) |
|||
![]() |
|
||||
Регистрация: 12.06.2010
Липецк, Москва
Сообщений: 534
|
Цитата:
![]() |
|||
![]() |
|
||||
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Регистрация: 11.10.2010
Сообщений: 979
|
Спрошу совета
![]() Код:
Спасибо. --- P.S. Нашел такую статью, но хотелось бы услышать мнение гуру ![]()
__________________
(/= RegDate StartReadDate) Последний раз редактировалось Лиспер, 25.12.2010 в 11:37. |
|||
![]() |
|
||||
Цитата:
Ответ очевиден: Linq to XML, а использовать DOM - это прошлый век.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Регистрация: 11.10.2010
Сообщений: 979
|
hwd, иногда попадаются файлы без первой строки
Код:
А будет это работать внутри .NET 2.0? Простые примеры использования в MSDN или еще где-то есть? (пока не искал, для меня это недосягаемые материи. Надеюсь, ненадолго). Спасибо.
__________________
(/= RegDate StartReadDate) |
|||
![]() |
|
||||
Цитата:
Нет, внутри .Net 2.0 это работать не будет. Эта технология присутствует, если мне не изменяет память, начиная с версии 3.0, в версии 3.5 SP1 она точно есть (именно эту версию я использую для AutoCAD 2009).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Регистрация: 11.10.2010
Сообщений: 979
|
Приподниму тему...
Уважаемые, подскажите, как правильно назначать системные переменные в AutoCAD, если эти системные переменные имеют тип double[]? То есть координаты точек? Как, например, назначить системную переменную "insbase"? Пытался сделать наподобие: Код:
__________________
(/= RegDate StartReadDate) |
|||
![]() |
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811
|
|
|||
![]() |
|
||||
|
||||
![]() |
|
||||
Регистрация: 30.10.2010
Сообщений: 123
|
И я, и я теперь тоже хочу задавать глупые вопросы
![]() Выходные провел с толком: прочитал книгу С.Н. Лукина "Понятно о Visual Basik.net" и поглядел AutoCAD .Net Laboratory. Проникся. Вопрос1: Что дальше порекомендуете прочитать? (такое же хорошее и доходчивое) Вопрос2:Что за зверь <CommandMethod("______")> и как правильно им пользоваться? (ну кроме как имя команды акада назначить) А то не могу заставить работать форму и всё тут. Хотел, чтобы (при вводе команды в ком. строку) сначала вылезала форма для ввода исходных данных, а потом по этим данным чего-нибудь рисуется. Ну всё уже поперепробовал, а автокад по прежнему ошибку выдает. Событие для кнопки ему не нравится. Последний раз редактировалось Petrov-Vodkin, 11.01.2011 в 12:19. |
|||
![]() |
|
||||
Регистрация: 11.10.2010
Сообщений: 979
|
Александр Ривилис, да нет, никаких форм нет вообще. Полный код:
Код:
Проверял на VisualStudio 2008, AutoCAD 2008 32 bit, AutoCAD 2011 32 bit, AutoCAD 2011 64 bit - эффект нулевой. В чем может быть дело? Естественно, что acdbmgd.dll и acmgd.dll подключены для соответсвующих версий, CopyLocal установлено в False. После пошагового прохода увидел, что значение возвращается в исходное состояние после окончания блока using для транзакции. Так и должно быть? Тупо написал микрокод: Код:
Код:
--- Решение: Ну да, все верно... tr.Commit() не было - вот и не работало как надо. --- Добавлено И вот еще. Как можно получить имя объекта, который выделил пользователь для 2008 версии? В 2011 достаточно просто: Код:
--- Добавлено 2: Не уверен, что нашел правильное решение: Код:
__________________
(/= RegDate StartReadDate) Последний раз редактировалось Лиспер, 16.01.2011 в 12:20. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Контролов, реализующих таблицы в формах - пруд пруди (в том числе и достаточно простые по функционалу штатные от Microsoft). Ставишь отдельный контрол и понеслась
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Водопровод-канализация Регистрация: 26.09.2011
Минск
Сообщений: 8
|
Здравствуйте)
Есть несколько Combobox в одной форме. Есть база данных. Как сделать так, чтобы в каждом комбобоксе выбиралось своё значение из базы (сейчас при выборе значения в одном комбобоксе второй принимает такое же значение)? |
|||
![]() |
|
||||
Цитата:
![]() Почитай про ADO.NET/LINQ to Entities (на выбор) - подобного рода вопросы отвалятся сами.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811
|
Цитата:
Valuemember, DisplayMember и грузятся от одного и того же Datasource (напр. DataTable или List) тогда будут работать независимо друг ото друга, поищи в гуглях Bind two Combobox to the same Datatable или вроде того, я где-то видел точно такой ответ, не могу найти по-новой |
|||
![]() |
|
||||
Водопровод-канализация Регистрация: 26.09.2011
Минск
Сообщений: 8
|
Спасибо, Олег! благодаря статье http://blogs.msdn.com/b/bethmassi/ar...atasource.aspx и методом тыка разобрался...
достаточно перетащить из источника данных нужную таблицу на нужный элемент - и создается следующий по порядку BindingSourсe... До этого тщетно пытался ковыряться в свойствах) |
|||
![]() |
|
||||
Конструктор Регистрация: 22.03.2007
Киев
Сообщений: 94
![]() |
Здравствуйте!
Перехожу из VBA на VB.NET. И конечно же не все так просто. Кое-какие проблемы методом тыка, опираясь на примеры, найденные в интернете, удается решать. Но вот уже третий день ломаю голову над следующей задачей: В VBA есть код при работе которого в области модели Автокад можно выделить обекты МТЕКСТ и поменять им СТИЛЬ текста, выбранный из существующих в чертеже, показанных в Форме (код формы не привожу, но там определяется знаечение текстовой переменной MTextStyleName). Вот код в VBA Код:
При переносе этого кода на VB.NET сталкнулся с проблемой что свойств Стиль МТекста поменять нельзя - только для чтения. Код:
Поэтому прошу не ругать, но критику, как метод обучения, с благодарностью выслушаю. Спасибо. |
|||
![]() |
|
||||
Конструктор Регистрация: 22.03.2007
Киев
Сообщений: 94
![]() |
Modis
Я думал над таким вариантом, но не понял, что мне нужно назначать переменной MTextStyleName, в VBA коде это было строковое значение с именем Стиля. acEnt.TextStyleId = MTextStyleName UPD. Олег (jr.) Спасибо! Правда, еще не совсем все понятно (столько всяких праматеров и свойств у объектов Автокада, и чувствую они преумножились в .NET), но пока собрал такой код. вот ее главная исполнительная часть. Код:
Последний раз редактировалось rass, 09.01.2013 в 01:21. |
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Начинаю разбираться с VB.net
Установил Microsoft Visual Basic 2010 Express и ObjectARX 2013 Возникла следующая ошибка не хочет добавлять команду (<CommandMethod("HelloWorld")> _) в автокад.... У него вообще CommandMethod отсутствует почему то.... Файлы acdbmgd.dll и acmgd.dll добавляю из папки C:\ObjectARX 2013\inc Вроде всё делаю в соответствии с тренингами...
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Олег (jr.)
Я поступил проще... Добавил все dll которые были в папке C:\ObjectARX 2013\inc, и все появилось... Потом просто удалил не использованные пространства имен... Способ конечно через Ж... НО я пока только осваиваю VB.net
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Хммм...
И так начал изучать VB.net... Возник дурацкий вопрос, если создаю форму и кидаю на неё OpenFileDialog то получается запустить свою форму и запустить диалог выбора файла... А вот сразу вызвать диалог выбора файла чей то не получается.... А везде примеры запуска данного диалога с формы...
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
А случаем примеров с подсчетом динамических блоков нету у кого нибудь...
И еще чтобы блоки считались в Динамических массивах, кторые в 2013 появились...
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
А какая разница, обрабатываются как и простые, только атрибуты по другому - копай в сторону ACADObject.GetAttributes
А лучше файл с примером блока дай если они конечно будут работать в 2009, что за зверь ? |
||||
![]() |
|
||||
гадание на конечно-элементной гуще Регистрация: 31.05.2006
Düsseldorf
Сообщений: 7,595
|
я сейчас пишу программку для автоматизации рисования развёрток стен. сегодня решил посчитать строки кода, насчитал ~3200 и обалдел блин, т.к. до этого моя самая большая программа не превышала 100 строк =)
|
|||
![]() |
|
||||
гадание на конечно-элементной гуще Регистрация: 31.05.2006
Düsseldorf
Сообщений: 7,595
|
только входной контроль исходных данных, задаваемых пользователем. а дальше - тупо построения.
ещё не доделал. пока так: https://dl.dropboxusercontent.com/u/...8-15-20-12.avi (тормоза построений связаны с тормозами связи экселя с нанокадом. но выглядит забавно) скоро закончу и будет получаться сразу готовый лист со спецификацией и всеми необходимыми плюшками =) |
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
swell{d}
Дык в конце выгружать надоть в эксель... Я наверное на С++ перейду ща т.к. АПИ СКАДа прислали, а он на С++.
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
swell{d}
А разве нету???? Ну ты батенька меня удивляешь.... Импорт координат из текстового файла в чертёж nanoCAD на классическом .NET API
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Цитата:
![]() Ну не знаю....
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
гадание на конечно-элементной гуще Регистрация: 31.05.2006
Düsseldorf
Сообщений: 7,595
|
Есть другой путь. Сохранить скрипт в текстовый файл, а потом из нано запустить этот скрипт. Отрисовывает мгновенно, но надо нажтмать кнопку в экселе, затем переключаться в нано и там нажимать кнопку. Долго =)
|
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
А еще вариант, с делать в vb.net и загружать эту dll в Нанокад, вызвать команду и все мгновенно выгрузится в файл экселя....
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
Инженер Регистрация: 02.10.2008
С-Пб
Сообщений: 3,704
|
А че, кнопка в екселе не может сама нажимать кнопку в нано?
__________________
...Не пытайся гнуть ты ложку, Не вяжи её узлом. Ложка - ложка понарошку, А по правде, - это лом! |
|||
![]() |
|
||||
Инженер Регистрация: 02.10.2008
С-Пб
Сообщений: 3,704
|
Цитата:
![]() ![]() А какой-нить монстр типа hwd небось все это в пару сотен уложил бы.. ![]()
__________________
...Не пытайся гнуть ты ложку, Не вяжи её узлом. Ложка - ложка понарошку, А по правде, - это лом! |
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Boxa
Вроде с основой твоего кода разобрался, и он у меня работает сейчас, по крайней мере блоки считает... Но вот как атрибуты перебирать чей то не разберусь... И еще как с динамическими массивами разобраться...
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. Последний раз редактировалось DEM, 19.08.2013 в 13:15. |
|||
![]() |
|
||||
У вставки блока BlockReference есть свойство AttributeCollection. В нем ID-коллекция всех атрибутов блока.
Вот тут код на C#, в нем это видно. На VB переделать несложно будет: http://adn-cis.org/forum/index.php?topic=113.0 Код:
|
||||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,616
|
А почему просто не сделать форму с полями и не трогать excel? Или читать данные о стенах из xml файла?
И все это внутри нанокада. Как то так, хотя дмаю можно и средствами Linq это сделать. Код:
Последний раз редактировалось Boxa, 19.08.2013 в 14:19. |
|||
![]() |
|
||||
гадание на конечно-элементной гуще Регистрация: 31.05.2006
Düsseldorf
Сообщений: 7,595
|
ну я ж чайник. в экселе я умею, а формы создавать - не умею. да и эксель намного универсальнее любой формы, как мне кажется.
+ в экселе есть какая-никакая среда разработки (отладчики всякие и т.п.), а как писать под нано без VS я хз. |
|||
![]() |
|
||||
|
||||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,616
|
Цитата:
А чем VS Express не нравится, бесплатно и очень удобно. На тему окошек, посмотри видео вот тут: http://through-the-interface.typepad...introduct.html и с поправкой на эту информацию (http://habrahabr.ru/company/nanosoft/blog/188188/) думаю все получится. |
|||
![]() |
|
||||
Цитата:
![]()
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
ХМММ
acBlock.AttributeCollection.Count - возвращает количество атрибутов блока Соответственно acBlock.AttributeCollection.Item(1) по хорошему должен выдавать значение 1-го атрибута... Чей то туплю похоже...
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
Цитата:
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
гадание на конечно-элементной гуще Регистрация: 31.05.2006
Düsseldorf
Сообщений: 7,595
|
я ж тебе писал =) тем, что на мой 40gb ssd он отказался ставиться даже при наличии практически пустого 1Tb диска D
|
|||
![]() |
|
||||
@DEM,
Код и полное сообщение об ошибке.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Дык код Boxa выкладывал, я его пробую редактирую и т.д.
Код:
Хочу сделать следующее, создать массив с информацией о блоках(атрибуты,), а потом его уже обрабатывать, подсчитывать количество и т.п. Потом экспортировать в эксель....
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
Это VBA.NET. Возможно там индексация начинается и не с нуля - тут я не в курсе. Но ты можешь посмотреть в отладчике, там напротив каждой записи будет стоять её индекс.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 19.08.2013 в 16:13. |
||||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,616
|
Цитата:
а вот последний атрибут имеет адрес (acBlock.AttributeCollection.Count-1), так что если у тебя один атрибут, то количество будет 1, а вот порядковый номер = 0 И я сильно сомневаюсь что у тебя много атрибутов в блоке, по этому вариант с перебором хоть и не самый быстрый, но самый наглядный и понятный. К тому же редактируя блок порядковый номер может и сбиться... |
|||
![]() |
|
||||
Это не "по дурацки". Причина в том, что указатель на массив содержит адрес первого элемента. Смещение указателя на очередной элемент массива выполняется либо инкрементацией самого указателя, либо его индексацией. В случае индексации число, указываемое в качестве индекса, обозначает позицию элемента массива относительно первого элемента (смещение). Т.о. нулевой индекс указывает на первый элемент массива (т.е. нулевое смещение). Это если в VBA.NET индексация начинается так же с нуля...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Boxa
ХМММ чей то не получается acDoc.Editor.WriteMessage(ControlChars.CrLf & acBlock.AttributeCollection.Item(0) ) Вывести в командную строку, грут это не строка... А в в каком же качестве возвращаются значния acBlock.AttributeCollection.Item, если не в строковом,,,
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,616
|
|
|||
![]() |
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811
|
Цитата:
acDoc.Editor.WriteMessage(VbLf & "{0}" & acBlock.AttributeCollection.Item(0)) это равнозначно выражению acDoc.Editor.WriteMessage(string.Format (VbLf & "(0}", мой объект как есть)) Например для точки: Editor.WriteMessage(vblf & "{0:f3}", point1) покажет значение точки с точностью 3 десятичных знака Не забывай использовать указание на объект объявленный в начале блока кода dim ed as editor=doc.editor и пиши далее ed.writemessage(vblf + "{0}", " бла бла бла") |
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Boxa
Угу все за работало.... Теперь буду создавать массив, а потом его обрабатывать. Кстати вопрос по поводу Цитата:
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811
|
|
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Олег (jr.)
ДЫк все таки по проще, VB вроде... С Паскаля на него перейти не так уж и трудно, да и основные примеры по Роботу, с которым мне предстоит разбираться в основном на VB и VBA. Правда вот прислали API СКАДа, там все на С++, но я так понимаю, потом это дело можно будет в отдельную dll запихнуть и пользоваться этим API с помошью VB.net.
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811
|
Если проще тогда стой на этом, я просто к слову, не предлагаю
Когда будешь переводить на VB.NET к примеру, реакции на события, типа Doc.CommandWillstart+=...(Doc_CommandWillStart) && Doc.CommandWillstart-=...(Doc_CommandWillStart) в VB.NET это будет соответственно AddHandler Doc.CommandWillStart, AddressOf(Doc_CommandWillStart) && RemoveHandler Doc.CommandWillStart, AddressOf(Doc_CommandWillStart) на всякий случай, кстати выражения на LINQ вообще не конвертируются, тут только личный опыт и понимание синтаксиса |
|||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,616
|
Цитата:
Чегой то вдруг? Последний раз редактировалось Boxa, 19.08.2013 в 17:59. |
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Странно, код работает...
Код:
добавляю Imports Microsoft.Office.Interop.Excel И возникает ошибка... Цитата:
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. Последний раз редактировалось Кулик Алексей aka kpblc, 21.08.2013 в 15:47. |
|||
![]() |
|
||||
Похоже, и там и там есть Application и компилятор не понимает, какой из них имеется в виду. Похожая ситуация возникает, если в одном месте сделать ссылки на пространства "Autodesk.AutoCAD.ApplicationServices" и "System.Windows.Forms"
VS же явно должна подчеркивать слово Application в 16-й строке. И по щелчку мыши должны предлагаться варианты подстановки пространств имен.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) Последний раз редактировалось Do$, 21.08.2013 в 15:32. |
||||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
ХММ, ну это я так и понял...
Сделал класс2, как мне теперь запустить его из класса 1.. Цитата:
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
Классы не запускаются, запускаются методы. Как это в VB сделать не подскажу, ищите примеры. Интуитивно предполагаю, что что-то типа "Class2.a", если в нем нет понятий статический и не статический класс/метод.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
![]() ![]() Цитата:
![]() ![]()
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
DEM, у тебя код не C++, на фига ставишь форматирование под другой язык? Это раз. Второе: касательно Application - я не знаю, в VB.NET есть понятие алиасов или нет. В C#, например, вполне допустима конструкция типа
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,616
|
|
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Чей то я тут заплутал..
Ни как не могу из модальной формы(кнопка1) запустить метод класса2 at() В принципе я уже нашел как можно сделать... Можно будет с помощью класса создать команды в автокаде, но все основные операции, будут выполняться в модуле... Форма так же будет использоваться только для вызова "команд" из модуля....
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
Думаю, проще всего тут будет перенести метод "at" в класс формы. С классом Class1 (или Class2??) он никак не связан.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Do$
Дык там еще переменные надо будет импортировать... Ща заново проект создам все вычищу.... У меня сейчас чей то вообще ничего не работает, где то ошибка, хотя компилируется все без ошибок....
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
та нашел уже....
Действительно надо модуль делать, так правильнее будет. При добавлении методов и функций в модуль, к ним можно будет обращаться как из формы, так и из класса. Такая структура будет более правильная в общем то.
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. Последний раз редактировалось DEM, 24.08.2013 в 10:51. |
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
В общем, вот так поступил...
Вывел методы в Модуль, и могу спокойно из вызывать из формы и из классов.... Теперь вот вопросы такие возникли... Как вставлять таблицу в определенную точку с отображением её контура... Я так понимаю, можно вставлять её в виде блока, а потом разбивать. Или есть еще какие то приемы? И еще преположим у меня есть какой то стиль таблицы, как мне его назначить, новой таблице?
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
NET такая штука, что она не зависит от языка. Будь то VB или C#, NET API AutoCAD от этого не изменится. Поэтому, можно посмотреть примеры создания таблиц на C# и сделать то же самое в VB:
http://through-the-interface.typepad...ng_an_aut.html http://through-the-interface.typepad...using-net.html http://through-the-interface.typepad...le-in-net.html
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Do$
Там в примерах варианты с указанием точки, но без контура таблицы. Может в буфер обмена таблицу поместить, а потом вставить.... И еще где то примеры бы с трансформацией USC... А то вставляются таблицы под наклоном, если USC повернута.
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
Что подразумевается под контуром? Граничные линии ячеек? Они в стилях таблиц/ячеек настраиваются. Или отдельно для каждой созданной таблицы/ячейки можно переопределить.
По умолчанию все создается в WCS ("мировой" системе координат), если в текущей UCS надо, то пересчитывается геометрия. Создается матрица пересчета и векторы/точки пересчитываются по ней, даже метод есть у них специальный. Погугли, в общем: "WCS to USC AutoCAD NET" или что-то подобное.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Хочестя вставлять таблицу, так же как и блоки, чтобы при указании точки, таблица была видима контуром(ну или вся)....
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,616
|
Цитата:
|
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Boxa
Ну я пока еще учусь на херурга... Код:
Его надо удалить из таблицы блоков... Твой код конечно же более правильный, ща буду разбираться....
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,616
|
Цитата:
|
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Boxa
Мне кажется его удалять лучше из базы, т.к. он все равно временный.... Возможно следует сделать проверку на то сущетсвует ли блок, а потом еще и удалить его... PS. У тебя там тоже косячек в коде, нету проверки на то в какое пространство активное.... ЕСли например находишься в пространстве листа, то таблица вставляется в пространстве модели, и при этом не отображается её контур.... Я понимаю что гдей то вот тут надо применить метод, по удалению блока из базы, но не могу его ни как применить... Цитата:
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,616
|
Да не нужен тебе этот блок. Ты посмотри внимательно на код в CreateBlockWithJig11, там ты вызываешь процедуру создания блока, а потом получаешь ID этого блока и работаешь уже с ним, для Jig все равно с каким объектом работать, ID передал и ладно. Кто тебе не дает так же работать с таблицей? Текстом? Линией? Окружностью? Разницы то никакой.
Просто скопируй код из 173 сообщения в новый проект и все, в функции CreateAndSetTableStyle настраивай и заполняй таблицу как тебе хочется. PS. Это не косяк, это фитча. =) Там все размеры таблицы заданы для работы в модели. При этом этот кусок кода вырванный из проекта. В моем коде команду neww_tab необходимо запускать с флагами NoBlockEditor и NoPaperSpace. Код в 173 поправил. Последний раз редактировалось Boxa, 28.08.2013 в 12:31. |
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Цитата:
![]() ![]() НУ слушай я с VB.net пока на вы.... 3-ю неделю только разбираюсь ![]() Ща разберусь в твоем коде... Спасиб еще раз....
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Извлечение и добавление данных в колонку dtDataTable с классом List
Код:
Может сделать как то по другому. Вопрос снят, разобрался
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. Последний раз редактировалось DEM, 30.08.2013 в 11:47. |
|||
![]() |
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811
|
Эта строка не применима к System.Data.DataTable:
Код:
для списка атрибутов только один столбец для каждого, название столбца - тэг атрибута, значение по соответствию См. документацию по DataTable, пригодится... |
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Олег (jr.)
ХЗ все работаетс.... Код:
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. Последний раз редактировалось DEM, 30.08.2013 в 13:12. |
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Олег (jr.)
Ну так и получается ![]() ![]() Работать дальше с этими данными фактически не возможно.... Решил хранить их в списке, и дальше выводить обрабатывать с помошью стрингсплит...
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
НЕ подскажете как сделать фильтр выбора объектов по тегам атрибутов, и выбор поллинии принадлежащей определенному слою...
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
т.к. ты калач уже тертый - по упрощенке - Editor.GetSelection(SelectionFilter [TypedValue(xxx,yyy);...]) xxx,yyy - аналогично DXF - [(0,"INSERT");(8,"Рельсы")] - фильтр на вхождение блоков на слое рельсы.
з.ы. а простите - мы же из-под "умного" языка делаем - вместо отсталых 0 и 8 -> int DxfCode.Start, int DxfCode.LayerName...
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Дима_, 30.10.2013 в 11:18. |
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Дима_
Дык нее я ж не постоянно занимаюсь программированием.. Перерывчик вышел, и вернулся к коду, ща смотрю на него критически и собираюсь переделать... Обернуть все в функции и убрать перебор блоков... Код:
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. Последний раз редактировалось DEM, 30.10.2013 в 15:58. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
#186 - как именно не работает фильтр (ничего не выбирает или все подряд) - на всякий случай - у тебя написанно выбирать только блоки (причем если динамический - то только "не тронутый") с именем "НАИМЕНОВАНИЕ" - только почему-то ты используешь AttributeTag, вместо BlockName = но и то и то двойке равно.
з.ы. если ты таким образом хочешь вытащить только блоки с аттрибутами с именем "НАИМЕНОВАНИЕ" - то так не прокатит, на стадии выборки, можно отсеять, только по критериям доступных из непосредственного вхождения DXF (например проверить флаг, еслть ли в принципе аттрибуты - DxfCode.HasSubentities что есть DXF 66), можно дабавить коомбинацию логики "<OR" "OR>" "<AND" "AND>" и пр., но только на непосредственные значения выбираемого примитива (отделить на стадии выбора, например, тела объемом=XXX - не получится, только постфильтрация, либо создавать самому аналог GetSelection - если будешь заморачиваться на такое - не забудь выложить).
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Цитата:
Просто потом выборку не хотел делать....
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Цитата:
Та я уж и не знаю, что лучше, мне то еще бы с С++ разобраться, есть просто АПИ СКАДа а оно на С++
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
То Boxa - да не - тут все правильно - с цифрами удобней до поры, до времени - это уже этап пройденный. В MSDos'овские временна были только цифры - да так и вызывались функции с прединициализированными регистрами с числовыми значениями - да еще в документации они всегда были шестнадцетиричными - так удобней было (количество символов одинаковое). Но когда количество функций перескочило всего-лишь за сотню (в MSDos практически все функции "висели" на 21h - (HEX) прерывании, да были еще функции биос (на 10h, 13h и пр.), но в самом досе почти все использовалось только с 21h (на остальном небольшом количестве прерываний (interput - основной метод вызова внешних "системных" функций того времени) - было по 1 - 2 функции, или вобще не было, а просто оно использовалось в определенных целях как таковое), то стало очевидно что в них (и их подфункциях) уже не создать такой типизированной структуры с четким принципом разделения регистров. Оно-же и с DXF - чем более новые навороты в ней описываються, тем геморней их достать - т.к. "поверхостными", схожими по смыслу полями (как в ранних версиях DXF) все описать не получается.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Инженер Регистрация: 27.04.2009
Deutschland
Сообщений: 208
|
Подскажите пожалуйста по простому примеру, как здесь организовать вызов команды AddLine, чтобы она принимала значения точек x1,y1 и x2,y2 в качестве параметров или "тыком" на рабочем поле АвтоГада.
Пробовал написать Код:
Код:
|
|||
![]() |
|
||||
Инженер Регистрация: 18.12.2014
Сообщений: 1
|
Друзья, помогите разобраться!
Раньше по мере необходимости писал приложения для AutoCad на VBA. И каждая новая версия AutoCad заставляла перерабатывать написанное всё заново. Прочитал много тем на этом и других форумах. Все переходят на -.NET Который, как я понимаю, позволяет писать на любом удобном языке и компилировать в одно приложение. Размышления - вопросы у меня такие. Если в редакторе VBA, непосредственно я мог посмотреть результат сразу что там делает программа, то теперь мне нужно кучу действий совершить чтобы посмотреть как программа работает в AutoCad? Потом, если я продолжу создавать приложения в VB, на базе -.NET то нет гарантии, что в следующей версии опять не изменятся имена классов, объектов или что там они меняют, что не работают программы. Могу ли я поставить старый AutoCad 2010 и скомпилировать dll, подгрузив те старые библиотеки и новые из AutoCad 2013, будет ли это работать? И по скольку придётся изучать по новому синтаксис и многие другие вещи, если перейду под .NET , то может лучше VisualLISP изучить, на сколько я понимаю приложения на нём более долговечнее в AutoCad, чем написанные на VBA? Спасибо. |
|||
![]() |
|
||||
Если главный критерий - долговечность, то лисп. А если гибкость, скорость работы, возможность создания красивого и удобного интерфейса - то один из .NET языков. Лучше C# - как минимум больше примеров.
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка |
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
И если на NetApi - то разделяйте логику программы.. работа с БД чертежа отдельно, обработка данных, взаимодействие с файлами xml, БД и т.д. -отдельно в своих функциях, модулях, классах. В результате даже при изменении методов взаимодействия с БД чертежа придется переписывать и отлаживать лишь часть кода, а не перелопачивать весь проект. Хотя простенькие "макросы" можно писать и в VBA стиле - все в кучу)
|
|||
![]() |
|
||||
Уточнение. Разделение acmgd.dll на acmgd.dll и accoremgd.dll произошло в AutoCAD 2013. Так что новые библиотеки в 2015 по сравнению с 2013 (а не 2012) не нужны.
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка |
||||
![]() |
|
||||
Точнее с 2007-го. В 2007-ом появилась возможность писать lisp-функции на .NET и исправили баг с ResultBuffer (в 2006-ом нельзя было использовать вложенные списки и соотвественно была проблема с DXF-кодами)
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка |
||||
![]() |
|
||||
Тогда еще одна неточность. .NET API появилась в AutoCAD 2005, т.е. в 2004 году.
![]()
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка |
||||
![]() |
|
||||
Так как это опровержение моих слов, то жду подтверждения.
P.S.: Какие-то из моих lisp-программ в неизменном виде работают уже 25 лет. Не это ли долговечность?
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка Последний раз редактировалось Александр Ривилис, 30.12.2014 в 16:17. |
||||
![]() |
|
||||
Если программа - сплошной набор строк (command ...) - то да.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
![]() |
|
||||
Регистрация: 30.07.2014
Сообщений: 20
|
|
|||
![]() |
|
||||
Цитата:
2) Это особенность команды _LAYER (кстати, какую именно ты имеешь в виду ?), а не lisp. Цитата:
А вот это как раз ограничения ARX-технологии, а не lisp. Не путай мух с котлетами.
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка |
||||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,616
|
Цитата:
http://spiderinnet1.typepad.com/blog...al-studio.html |
|||
![]() |
|
||||
Регистрация: 30.07.2014
Сообщений: 20
|
Кстати вот еще из последнего и лисп опять тут не причем. Но ведь пользователю не важно почему его скомпиленная программа вдруг отказывается работать... для него лисп - это более глобальное понятие, чем синтаксис языка.
|
|||
![]() |
|
||||
Ээээ нет. Не нужно переводить стрелки. Мы тут говорим со стороны программистов, а не пользователей (читай название темы). Так вот ARX-файлы совместимы в принципе в лучшем случае в линейке из 3 версий AutoCAD, а lisp-программы могут быть не совместимы в ряде случаев, что чаще всего связано с багами. VBA я совсем не рассматриваю в силу слишком больших его ограничений, проблем с x64 и т.д. Выбор остаётся между .NET и lisp. Так вот программы на lisp действительно долговечней программ на .NET, хотя бы потому что .NET под AutoCAD еще и 10 лет нет, а lisp'у уже > 25 лет.
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка |
||||
![]() |
|
||||
Регистрация: 30.07.2014
Сообщений: 20
|
Цитата:
А еще были такие файлы *.bi4 кто о них сейчас помнит? |
|||
![]() |
|
||||
Метод objectidtoobject32 появился в AutoCAD ActiveX/COM модели в 2007-ом году в версии AutoCAD 2008. К lisp это никакого отношения не имеет. И убрали его в AutoCAD 2014, так как он стал неактуален.
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка |
||||
![]() |
|
||||
Регистрация: 28.01.2013
Минск
Сообщений: 375
|
Доброго времени суток! Помогите пожалуйста начинаючему разработчику на .NET (это я
![]() Имеется опыт программирования на VBA, но с недавнего времени решился перейти на .NET. На данный момент практически полностью прочитал сайт "NET Лаборатория", 2 раза пересмотрел все лабораторные работы "DevTV" и наконец перешел к приктике, но к сожалению споткнулся чуть раньше (мягко говоря) чем ожидал. А именно, после настроек программы не удается даже создать процедуру "Hello Word!". Отсутствует атрибут "CommandMethod"(см. вложение). Подскажите, в чем может быть дело? Win7 x64/VisualStudio 2013/ObjectARX SDK 2016/AutoCAD_2015-2016_DotNet_Wizards/AutoCAD 2016(2015) Заранее спасибо! |
|||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,616
|
забыл подключить AcCoreMgd.dll (важно для 2013 и выше)
(http://help.autodesk.com/view/ACD/20...8-E00ED139E0D3 http://bushman-andrey.blogspot.ru/20...ms-visual.html ) Последний раз редактировалось Boxa, 31.07.2015 в 11:13. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Ну Бушман Андрей предлагал в свое время выпустить книгу по Net Api. Споткнулось, как обычно-на финансировании проекта. В конечном итоге это все вылилось в фрагменты книги Полещука Н.Н. "Программирование для AutoCAD 2013-2015". Есть еще книга на английском как раз про VB.NET 2010 года - но купить в России ее невозможно сейчас, скачать - одни фейки.
|
|||
![]() |
|
||||
Регистрация: 28.01.2013
Минск
Сообщений: 375
|
Цитата:
![]() ![]() |
|||
![]() |
|
||||
Регистрация: 27.01.2012
Сообщений: 242
|
Есть код на VBA:
Код:
Код:
|
|||
![]() |
|
||||
Есть тип object, который подходит для этого случая:
Код:
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка Последний раз редактировалось Александр Ривилис, 23.05.2018 в 22:09. |
||||
![]() |
|
||||
Регистрация: 27.01.2012
Сообщений: 242
|
Спасибо). Подскажите пожалуйста еще с одним вопросом.Раньше пользовался Lisp, вот решил освоить .net:
Есть у меня в чертеже объекты Project Studio, через лисп я легко добирался до свойств этих объектов таким образом: Код:
Код:
|
|||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,616
|
Для начала, необходимо под отладчиком посмотреть, что у Вас находится в переменных acadObj и props.
А потом, можно почитать про System.Reflection; и посмотреть примеры получения списка свойств и методов объекта. После этого, стане понятно, что нужно написать, для получения значений нужных свойств. |
|||
![]() |
|
||||
Регистрация: 27.01.2012
Сообщений: 242
|
Цитата:
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Попробуй обратиться к свойству как к элементу коллекции - по имени. Правда, я далеко не уверен, что сработает.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,616
|
Если бы я не был бы уверен в статичности адресов (именно 33 объект в массиве содержит нужные данные), то для вытаскивания этих свойств воспользовался бы LINQ...
что то типа: var p = (from q in props where q.DisplayName == "PsDiam...." select q).firstOrDefault(); ЗЫ. строчку кода писал наобум по памяти, как там на самом деле смотрите в студии и в справке. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
CollectionName.Item["RsDiamReinf"] - так нельзя?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Boxa, ну извини - я капитально испорчен COM-моделью
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
А запускать пробовали?
IntelliSence не будет работать с типом dynamic. Тут суть в том, что свойства динамически определяются только в процессе выполнения программы. Очень удобный механизм для работы с COM-объектами.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
![]() |
|
||||
Визайнер-дизуализатор в отставке Регистрация: 12.11.2009
Сообщений: 133
|
Цитата:
VB.NET - функциональнее Вот и выбирайте: начать с более легкого, а потом при надобности "перелезть" на более сложное, или сразу из пушки по воробьям.
__________________
Жизнь не сахар, а смерть нам не чай... © Ю.Шевчук |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Если умеете думать и искать информацию, а не просто подбирать работающие куски кода в "говнокод" - то лучше от VBA отказываться сразу в акаде. Это раньше альтернативы не было - или лисп, или VBA (ObjectARX можно не принимать в расчет из-за высоких требований к квалификации программиста вследствие низкоуровневой работы с акадом). Сейчас .Net позволяет программистам-самоучкам реализовать большую часть задач, при этом скрывая низкоуровневую работу с ресурсами и заодно немного страхуя от криворукости за счет наличия оберток над ObjectARX функциями)
|
|||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,616
|
Цитата:
Если навыки программирования уже есть и надо их именно заточить под автокад, то ничего лучше офф. справки еще не придумали, вот тут можно посмотреть ее перевод: https://sites.google.com/site/bushma...anslate-manual Если с программированием совсем туго, то рекомендую сначала посмотреть на youtube и выполнить курс CS50, он есть в переводе на русский язык. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
можно и любой другой язык с поддержкой .Net. У VBA еще существенный минус - среда разработки осталась на уровне тех годов, где остановилось и само развитие языка. Даже бесплатные студии стали гораздо более удобнее в плане интерфейса за эти годы - а это напрямую влияет на скорость написания кода.
|
|||
![]() |
|
||||
Регистрация: 13.04.2017
Сообщений: 136
|
Цитата:
А полно примеров это по acad или вообще по c# Вообще c# лучше(я могу быдлокодить на c), но инфы по шарпу не очень много, конкретно для акада |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
а это уже ваша задача - из типовых "блоков" кода создать свой код под конкретную задачу) Есть взаимодействие с объектной моделью акада, а есть обработка информация. Вторая часть - это уже сам язык программирования (информации в инете более чем), первая часть - к сайту Бушмана Андрея
Цитата:
|
|||
![]() |
|
||||
Визайнер-дизуализатор в отставке Регистрация: 12.11.2009
Сообщений: 133
|
Зато у VBA есть плюсик - открыл AutoCAD, пишешь, запускаешь, и сразу видишь результат. Это проще для изучения, особенно когда стартуешь с нуля
__________________
Жизнь не сахар, а смерть нам не чай... © Ю.Шевчук |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
а толку - потом придется переучиваться все равно программировать под тот же .Net с совершенно другим подходом к написанию кода. Когда осознаешь, что большую часть времени занят придумыванием костылей для обхода обрезанного функционала VBA вместо самого программирования. А если не решена проблема стабильности в последних версиях х64 VBA7 - то и еще раньше)
|
|||
![]() |
|
||||
Визайнер-дизуализатор в отставке Регистрация: 12.11.2009
Сообщений: 133
|
Цитата:
__________________
Жизнь не сахар, а смерть нам не чай... © Ю.Шевчук |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
Плюс есть бесплатные средства разработки для .Net языков в отличие от привязанных к конкретным библиотекам и приложениям VBA. ----- добавлено через ~4 мин. ----- Offtop: А путь у меня похожий был только туда еще С++ под DOS и Delphi затесались в свое время) Осталось в памяти только чем более менее активно пользуюсь последние года - C# и VBA для офиса. |
|||
![]() |
|
||||
Визайнер-дизуализатор в отставке Регистрация: 12.11.2009
Сообщений: 133
|
Цитата:
![]() Offtop: Я как раз таки в офисе уперся в то, что на VBA не смог написать то, что мне надо, и начал осваивать C#
__________________
Жизнь не сахар, а смерть нам не чай... © Ю.Шевчук |
|||
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
запуск программы из AutoCADа | kminas | Программирование | 19 | 15.06.2012 13:42 |
Ноутбук б/у и AutoCad 2D - вопросы | Elenka | AutoCAD | 14 | 23.12.2005 13:47 |
Ноутбук б/у и AutoCad 2D - вопросы | Elenka | AutoCAD | 1 | 20.12.2005 21:33 |
AUTOCAD 2006 | Aragorn | AutoCAD | 14 | 01.04.2005 00:55 |
Что нового в AutoCAD 2005 | ilka_t | AutoCAD | 40 | 19.05.2004 16:48 |