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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Программирование в Autocad: с чего начинать новичку.

Программирование в Autocad: с чего начинать новичку.

Ответ
Поиск в этой теме
Непрочитано 01.05.2021, 14:53
Программирование в Autocad: с чего начинать новичку.
Publipor
 
Регистрация: 02.03.2021
Сообщений: 49

Здравствуйте.
Помогите новичку выбрать перспективный язык программирования для создания собственных команд (программ) для autocad
Просмотров: 70006
 
Непрочитано 05.05.2021, 12:53
1 | #21
Boxa

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


Цитата:
Сообщение от bigden Посмотреть сообщение
а в чём у плюсов преимущество?
Лично для меня - возможность взаимодействовать с большим множеством программ, API на .NET или COM, встречаются не так часто, как хотелось бы, а иметь возможность не только "рисовать" в каде, но и задействовать "взрослые" расчетные программы, для обоснования этого "рисования" - очень заманчиво. Можно еще конечно дополнять разными фактами, но лень, да и nickname2019 уже написал многое в предыдущем посте.
Boxa вне форума  
 
Непрочитано 05.05.2021, 13:28
#22
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,041


ну а минусы С++:
1. Придется самому контролировать полностью все ресурсы. Для профессиональных программистов, у которых это основной вид деятельности и опыт работы - это не так критично, для прикладных программистов (включая самоучек) дополнительные траты времени.
2. Большая зависимость от версий программ и средств разработки.

Так что если собираетесь работать в акаде со стандартными примитивами - их отрисовка, модификация, привязка данных, организация взаимосвязей и т.д., и при этом не имеете достаточного опыта в программировании на низкоуровневым С++ - данный язык для вас лишь лишние затраты времени, имхо. Основная задача прикладных программистов - получить работоспособную программу в приемлемые сроки/трудозатраты. В этом плане управляемые языки типа .Net оптимальны, имхо - есть много написанных готовых классов в составе самого фреймворка, в инете есть множество учебников по базовым вещам с примерами и форумы с примерами решений реальных задач.
Сергей812 вне форума  
 
Непрочитано 05.05.2021, 13:30
#23
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


C# и C++ можно смешивать
trir вне форума  
 
Непрочитано 05.05.2021, 13:33
#24
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,041


Цитата:
Сообщение от trir Посмотреть сообщение
C# и C++ можно смешивать
новичку?)
Сергей812 вне форума  
 
Непрочитано 05.05.2021, 14:20
#25
Boxa

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


Сергей812, так вроде никто и не спорит, что для новичка C++ - чрезмерно.
Я написал, что если новичок и прям сейчас нужно, то .NET, если всерьез и надолго - C++ и потом уточнил почему лично мне хочется перейти на C++

ЗЫ.
На предыдущей страницы nickname2019 здравую мысль высказал, если новичок, то начинать надо с изучения самого автокада и его возможностей и только потом переходить к написанию программ и вот с этим я соглашусь.
Boxa вне форума  
 
Непрочитано 05.05.2021, 14:31
#26
miko2009

Инженер-конструктор
 
Регистрация: 13.10.2011
Москва
Сообщений: 2,359


Цитата:
Сообщение от bigden Посмотреть сообщение
а в чём у плюсов преимущество?
Если хотите быть просто кодером-инженером, то изучение не управляемых языков(С, С++, Java и т.д.) не нужно, за вас уже всю основную работу провели программисты ПО под которое вы собрались кодить на управляемых языках(C#, Pyhon и т.д. ).
Если вы собрались писать свой софт или сменить профессию на инженеры-программисты , то вам придется изучать не управляемые языки и скорее всего придется забыть про старую профессию.

Если иными словами - кодер это инженер который пишет скрипты под готовые фреймворки и знание тут С++ или С# абсолютно не принципиально, даже наоборот управляемые языки были придуманы для автоматизации рутины. Что автокад , что ревит , что текла, что алплан не имеют разницы в тех вопросах в которых один и тот же скрипт обрабатывают одну и ту же процедуру на разных языках, С++ не даст никакого преимущества.
Для примера (я не знаю автокада, пример абстрактен) программист ПО Autocad определил что в автокаде набор неких объектов хранится в структуре данных int16, а это всего значения от -32 768 до +32 767, в то время как мог объявить int64 с дапазоном от -9 223 372 036 854 775 808 до +9 223 372 036 854 775 807. Или определил размерность некого массива со значением 1 000 000, то есть резервирует в операционной памяти слишком много места и оно ему никогда не понадобится, то во всех этих случаях нет разницы на каком языке вы пишите скрипт подключаясь к публичным классам\методам\конструкторам данного ПО (работа с API), возможно разница будет в тысячную долю секунды.

В разработке ПО сейчас никто не пишет на чистом С/С++ или Java, пишут основной код который 100% влияет на общую производительность (это делают как раз программисты), а это от силы 20-30% всей программы, и далее уже передают обертки "индусам" на .NET., так как вы не найдете армию кодеров на С или С++.
Но есть и исключения, обычно это масштабные проекты, например Linux написан на С в 100%, Торвальдс не был доволен что С++ что то делает за "его спиной" и поэтому выбрал С в качестве моно языка.
miko2009 вне форума  
 
Непрочитано 05.05.2021, 15:09
#27
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,041


Цитата:
Сообщение от Boxa Посмотреть сообщение
Я написал, что если новичок и прям сейчас нужно, то .NET, если всерьез и надолго - C++
у начинающих программистов может сложиться ошибочное мнение - что уровень серьезности разработки определяется языком программирования

Цитата:
Сообщение от miko2009 Посмотреть сообщение
Если хотите быть просто кодером-инженером, то изучение не управляемых языков(С, С++, Java и т.д.)
Java разве неуправляемый язык?

Цитата:
Сообщение от miko2009 Посмотреть сообщение
Если иными словами - кодер это инженер который пишет скрипты под готовые фреймворки и знание тут С++ или С# абсолютно не принципиально
ну как сказать - Майкрософт открыл исходный код того же .Net фреймворка и не подглядывать туда, как реализованы конкретные классы и функции - это просто самому себе шоры надевать по сути.
Сергей812 вне форума  
 
Непрочитано 05.05.2021, 18:17
#28
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 1,519


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
ну а минусы С++:
1. Придется самому контролировать полностью все ресурсы. Для профессиональных программистов, у которых это основной вид деятельности и опыт работы - это не так критично, для прикладных программистов (включая самоучек) дополнительные траты времени.
На самом деле - практически нет. Отличием C++ от C является наличие мощной библиотеки стандартных классов и шаблонов (string, vector, CString и т.д.), которые позволяют работать с большинством ресурсов как со статическими переменными (объектами).
Конечно, для доступа к системным вещам придется создавать/окрывать/закрывать/уничтожать динамические объекты (включая акадовские строки), но это, имхо, особенности системы, а не c++.

Последний раз редактировалось nickname2019, 05.05.2021 в 18:23.
nickname2019 вне форума  
 
Непрочитано 05.05.2021, 18:40
#29
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,041


Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Отличием C++ от C является наличие мощной библиотеки стандартных классов и шаблонов (string, vector, CString и т.д.), которые позволяют работать с большинством ресурсов как со статическими переменными (объектами).
точно статическими ака static?)
Сергей812 вне форума  
 
Непрочитано 05.05.2021, 18:57
#30
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 1,519


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
точно статическими ака static?)
В смысле, что не динамическими и не указателями, за уничтожением которых надо следить.

Например, объявление массива строк с переменным количеством элементов:

Код:
[Выделить все]
 vector <string> arName;
Собственно, изучение C++ заключается, в основном, в изучении возможностей стандартных классов и шаблонов классов. Потом нужно изучить перегрузку операторов (чтобы можно было для своего класса в коде использовать операторы сравнения "=", ">", сложения и т.д.).

Последний раз редактировалось nickname2019, 05.05.2021 в 19:23.
nickname2019 вне форума  
 
Непрочитано 05.05.2021, 19:21
#31
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,041


статические переменные - это переменные, чье время жизни = жизненному циклу самого приложения. И если их в обычном приложении большинство - это какая то очень странная архитектура приложения, имхо)

Цитата:
Сообщение от nickname2019 Посмотреть сообщение
vector <string> arName;
ну это скорее всего динамический массив с типизированным параметром, реализация которого спрятана внутри класса. Но он же сам не висит в воздухе, объект этого вспомогательного класса надо создать - прежде чем начать с ним работать.

В .Net тоже есть типизированные списки
Код:
[Выделить все]
 List<string> arName = new List<string>();
только не надо следить за ним - как вышли в коде за пределы видимости этой переменной, так сборщик "мусора" подберет освободившуюся память по необходимости. Или не дожидаясь выхода за пределы видимости - указать что переменная больше не нужна
Код:
Сергей812 вне форума  
 
Непрочитано 05.05.2021, 19:44
#32
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 1,519


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
статические переменные - это переменные, чье время жизни = жизненному циклу самого приложения. И если их в обычном приложении большинство - это какая то очень странная архитектура приложения, имхо)
Обычно терминология подразумевает использование динамических переменных, для обращения к которым используются указатели, и статические переменные, для обращения к которым указатели не используются. Если переменная объявлена в процедуре, то она может быть объявлена без использования "new", в этом смысле ее можно считать "статической", хотя она будет жить в стеке до выхода из процедуры.
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
ну это скорее всего динамический массив с типизированным параметром, реализация которого спрятана внутри класса. Но он же сам не висит в воздухе, объект этого вспомогательного класса надо создать - прежде чем начать с ним работать.
только не надо следить за ним - как вышли в коде за пределы видимости этой переменной, так сборщик "мусора" подберет освободившуюся память по необходимости. Или не дожидаясь выхода за пределы видимости - указать что переменная больше не нужна
Если в примере #30 массив был создан без использования указателя, то следить за его удалением не нужно - стек очиститься при выходе из процедуры. Программист ведь не очищает память под переменные, объявленные как

Код:
Переменная пропадает, как только выходит из зоны видимости.

Если бы массив по каким-то непонятным причинам был бы создан как указатель

Код:
[Выделить все]
 vector<string>* arName = new vector<string>();
то его пришлось бы удалять "вручную", так как сборщик мусора в c++ не предусмотрен (насколько я знаю, но сейчас уже ни в чем нельзя быть уверенным).

Но никто не заставляет человека юзать динамические указатели.
nickname2019 вне форума  
 
Непрочитано 05.05.2021, 20:02
#33
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Обычно терминология подразумевает использование динамических переменных, для обращения к которым используются указатели, и статические переменные, для обращения к которым указатели не используются. Если переменная объявлена в процедуре, то она может быть объявлена без использования "new", в этом смысле ее можно считать "статической", хотя она будет жить в стеке до выхода из процедуры.
Очень полезный совет "юноше, обдумывающему житье", который хочет писать "команды для Автокада".
ShaggyDoc вне форума  
 
Непрочитано 05.05.2021, 20:18
#34
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,041


static.

А насчет vector был неправ, это специфический шаблон плюсов, управляющий выделением памяти внутри себя. В .Net прямых аналогов нет - но его прекрасно List<T> заменяет.
Сергей812 вне форума  
 
Непрочитано 05.05.2021, 20:35
#35
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,295
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
В последних версиях минус как минимум один: модуль VBA устанавливается отдельно
Ты постояно это упоминаешь, но забываешь добавить, что доступность СОМ модели автокада от этого не зависит. Хоть из блокнота vbs пиши..
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 05.05.2021, 20:39
#36
Кулик Алексей aka kpblc
Moderator

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


Ага, только запустить этот vbs из-под чистого ACAD'а без некоторых танцев с бубнами лично мне в свое время не удалось
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.05.2021, 20:42
#37
miko2009

Инженер-конструктор
 
Регистрация: 13.10.2011
Москва
Сообщений: 2,359


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Java разве неуправляемый язык?
заработался
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
у как сказать - Майкрософт открыл исходный код того же .Net фреймворка и не подглядывать туда, как реализованы конкретные классы и функции - это просто самому себе шоры надевать по сути.
так смотрите документацию, вы же не собираетесь например изменить например Math.Round ? туда вам нечего лезть
Цитата:
Сообщение от nickname2019 Посмотреть сообщение
то его пришлось бы удалять "вручную", так как сборщик мусора в c++ не предусмотрен (насколько я знаю, но сейчас уже ни в чем нельзя быть уверенным).
я так понимаю вы про С++только слышали ? оператор new на ++ имеет немного иной смысл чем в С#, если вы вызвали переменную через new , то должны ее удалить в конце стека через delete, а если вы начнете практиковаться в таких процедурах то вы погрязнете по уши в самом настоящем программировании.
Более рационально записать эту переменную в виде:
Код:
[Выделить все]
vector<string> arName(n);
где n это конкретное значение для резервирования в памяти n*4 байт, которое не может остаться в виде n без конкретного значения перед объявлением переменной arName
miko2009 вне форума  
 
Непрочитано 05.05.2021, 20:58
#38
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,041


Цитата:
Сообщение от miko2009 Посмотреть сообщение
так смотрите документацию, вы же не собираетесь например изменить например Math.Round ? туда вам нечего лезть
не надо передергивать - переписывать фрейворк, конечно, гиблое дело (тем более там есть много внутренних малодокументированных классов и функций). Но разобраться, например, как работает тот же List<T> и написать при необходимости свою реализацию динамического списка - ничего там такого сверхсложного нет даже для несертифицированного программиста)
Сергей812 вне форума  
 
Непрочитано 05.05.2021, 21:34
#39
Кулик Алексей aka kpblc
Moderator

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


Сергей812, напомни ссылку, плиз, с кодами фрейма от MS.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.05.2021, 22:31
1 | #40
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,041


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
с кодами фрейма от MS.
тыц
Сергей812 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Программирование в Autocad: с чего начинать новичку.

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AutoCAD Чего хотите изменить в интерфейсе? Серёга - Bilder AutoCAD 142 11.09.2015 16:18
С чего начинать программирование в Lisp'е? XoRys Поиск литературы, чертежей, моделей и прочих материалов 13 27.02.2013 23:26
Информация по идентификационным кодам программ в сетевых лицензиях Autodesk KSI AutoCAD 1 14.09.2009 15:59
Программирование в ЛИСП: с чего начинать Vavan Metallist LISP 14 24.06.2008 22:42
С чего начинать Диана Проценко Прочее. Программное обеспечение 16 19.05.2008 15:39