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

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

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

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

Здравствуйте.
Помогите новичку выбрать перспективный язык программирования для создания собственных команд (программ) для autocad
Просмотров: 74167
 
Непрочитано 01.05.2021, 14:59
#2
Кулик Алексей aka kpblc
Moderator

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


Неужели поиск по слову *программиров* не выводит никаких результатов?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 01.05.2021, 15:06
#3
Сергей812


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


каким владеете или можете овладеть в кратчайшие сроки - на том и пишите (lisp, vba, Net, C++ и т.д.). А то так и застрянете на выборе перспективного языка вместо реализации своих команд)
Сергей812 вне форума  
 
Автор темы   Непрочитано 01.05.2021, 18:37
#4
Publipor


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Неужели поиск по слову *программиров* не выводит никаких результатов?
Есть, но несколько тем датированы за 2007-2010 год, я дума за 10 лет, что-то могло измениться
Publipor вне форума  
 
Непрочитано 01.05.2021, 20:09
#5
trir


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


C#
trir вне форума  
 
Непрочитано 01.05.2021, 20:35
#6
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от Publipor Посмотреть сообщение
Есть, но несколько тем датированы за 2007-2010 год, я дума за 10 лет, что-то могло измениться
В сегодняшних реалиях я бы ставил на .NET. Offtop: Сам пытаюсь на нем что-то ваять, процесс захватывает.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 01.05.2021, 20:49
#7
Boxa

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


как минимальный порог вхождения то C#, если всерьез и на долго, то плюсы.
Уже давно смотрю в сторону плюсов... но все не варианта перейти...
Boxa вне форума  
 
Непрочитано 02.05.2021, 00:51
#8
Сергей812


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


Как обычно, ТС тщательно шифруется насчет своих намерений/желаний и существующих навыков в программировании)
Сергей812 вне форума  
 
Непрочитано 04.05.2021, 08:10
| 2 #9
Vladimir_Sergeevich

рисую дороги, в перерывах курю Lisp
 
Регистрация: 20.04.2011
Пермь
Сообщений: 475
<phrase 1= Отправить сообщение для Vladimir_Sergeevich с помощью Skype™


В соседней ветке уже определили большинством голосов в 37 %, что выбирать надо "матерный".
Все прочее от лукавого.
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума  
 
Непрочитано 04.05.2021, 15:52
#10
Сергей812


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


главное - начать хоть что-то писать..) а язык программирования можно и сменить со временем
Сергей812 вне форума  
 
Непрочитано 04.05.2021, 23:01
#11
LenidSN


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


Тема такая, из доброго старого времени...
Для инженера-автокадчика, а не профессионального программиста, нет ничего лучше VBA for AutoCAD.
Перечислять плюсы можно долго, но пока сам не попробуещь, оценить их (а также минусы) не представляется возможным.
LenidSN вне форума  
 
Непрочитано 04.05.2021, 23:15
#12
Кулик Алексей aka kpblc
Moderator

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


В последних версиях минус как минимум один: модуль VBA устанавливается отдельно.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 04.05.2021, 23:35
1 | #13
v.psk

конструктор
 
Регистрация: 14.08.2014
Псков
Сообщений: 7,349


Цитата:
Сообщение от Publipor Посмотреть сообщение
Помогите новичку выбрать перспективный язык программирования для создания собственных команд (программ) для autocad
а какое прикладное применение? Какая должность, обязанности? Для саморазвития или для выполнения должностных обязанностей?
ну вот еще родственные темы, мало ли не загуглилось...
обучение чайника лиспу ... это на мой взгляд ... тернистый путь
создание софта
айти или проектирование
без прикладной задачи трудно и скучно читать теорию.... есть задача то?
v.psk на форуме  
 
Непрочитано 05.05.2021, 01:05
#14
Сергей812


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
В последних версиях минус как минимум один: модуль VBA устанавливается отдельно.
c 2010 акада - это явно не последние версии) Да и связку Excel -> COM -> AutoCAD пока еще вполне можно использовать для задач малой автоматизации в сжатые сроки.
Offtop:
Цитата:
Сообщение от v.psk Посмотреть сообщение
для выполнения должностных обязанностей?
заходит программист САПР на сайт dwg.ru: А на каком языке программирования лучше начинать новичку?
Сергей812 вне форума  
 
Непрочитано 05.05.2021, 07:49
#15
Кулик Алексей aka kpblc
Moderator

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


Сергей812, ну я не помню с какой именно это началось
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.05.2021, 08:03
#16
zahhhhh


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


Сейчас актуальнее программировать для Revit...

Можно начать с dynamo и питона.
Для чего-то более продвинутого - С#
zahhhhh вне форума  
 
Непрочитано 05.05.2021, 08:46
#17
trir


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


Цитата:
Можно начать с dynamo и питона.
знать python конечно полезно, но по мне это только всё усложнит...
trir вне форума  
 
Непрочитано 05.05.2021, 09:21
#18
Сергей812


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


Offtop:
Цитата:
Сообщение от zahhhhh Посмотреть сообщение
Сейчас актуальнее программировать для Revit...
и пофиг, что ТС работает в акаде на текущий момент
Цитата:
Сообщение от Publipor Посмотреть сообщение
для создания собственных команд (программ) для autocad
))
Сергей812 вне форума  
 
Непрочитано 05.05.2021, 09:23
#19
bigden


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


Цитата:
Сообщение от Boxa Посмотреть сообщение
как минимальный порог вхождения то C#, если всерьез и на долго, то плюсы.
Уже давно смотрю в сторону плюсов... но все не варианта перейти...
а в чём у плюсов преимущество?
bigden вне форума  
 
Непрочитано 05.05.2021, 12:11
1 | 1 #20
nickname2019


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


Цитата:
Сообщение от bigden Посмотреть сообщение
а в чём у плюсов преимущество?
Основное преимущество - ядро автокада на писано на c++. Это дает возможности расширять функционал Autocad при помощи c++ любым образом, включая создание собственных графических (и не только графических) объектов путем наследования от существующих стандартных акадовских классов.

Скорость работы ресурсоемких алгоритмов на c++ должна быть выше, так как c++ - создает комилируемый файл, а не интерпретируемый.
C# , VBA и т.д. вызывают функции и работаю с объектами, большинство которых написано на c++, а при программировании на c++ это можно делать напрямую.

Можно много времени потратить на программирование в VBA, создать кучу наработок, чтобы однажды понять, что некоторые задачи на нем решить невозможно. У c++ таких ограничений, насколько я знаю, практически нет.

А новичку, имхо, желательно начинать с освоения существующего функционала, а именно - динамических блоков.

Последний раз редактировалось nickname2019, 05.05.2021 в 12:34.
nickname2019 вне форума  
 
Непрочитано 05.05.2021, 12:53
1 | #21
Boxa

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


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


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


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

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


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


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


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


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

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


Сергей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,499


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

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

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


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


Цитата:
Сообщение от Сергей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,499


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


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


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

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

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

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


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


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

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

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


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


Цитата:
Сообщение от Сергей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,372


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


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


static.

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

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,299
Отправить сообщение для 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
С.-Петербург
Сообщений: 40,450


Ага, только запустить этот 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,499


Цитата:
Сообщение от 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
С.-Петербург
Сообщений: 40,450


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


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
с кодами фрейма от MS.
тыц
Сергей812 вне форума  
 
Непрочитано 05.05.2021, 22:38
#41
Кулик Алексей aka kpblc
Moderator

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


Спасибо! Offtop: Жаль, что из-под VS CommunityEdition туда мне не удается влет не добраться
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.05.2021, 23:56
#42
Сергей812


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


Offtop:
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Жаль, что из-под VS CommunityEdition туда мне не удается влет не добраться
так прямо в браузере и изучать можно. Там все кликабельно и открывается стандартно либо в той же вкладке, либо в новой. Ну и загляни на вкладку Down_load справа вверху - там можно в виде проекта скачать, правда не полного - без ресурсов.
Сергей812 вне форума  
 
Непрочитано 06.05.2021, 07:45
#43
trir


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


Цитата:
так как сборщик мусора в c++ не предусмотрен
каждый пишет свой
trir вне форума  
 
Непрочитано 06.05.2021, 09:02
#44
nickname2019


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


Цитата:
Сообщение от miko2009 Посмотреть сообщение
я так понимаю вы про С++только слышали ? оператор new на ++ имеет немного иной смысл чем в С#, если вы вызвали переменную через new , то должны ее удалить в конце стека через delete, а если вы начнете практиковаться в таких процедурах то вы погрязнете по уши в самом настоящем программировании.
Более рационально записать эту переменную в виде:
vector<string> arName(n);
где n это конкретное значение для резервирования в памяти n*4 байт, которое не может остаться в виде n без конкретного значения перед объявлением переменной arName
Пост #32, на который Вы ответили, иллюстрирует как не надо делать и написан в противовес посту #30 (как надо делать), в котором массив был объявлен статически как vector<string> arName;
Смысл написанного был в том, что в С++ при правильной организации работы следить за утечками памяти практически не придется.

По поводу рациональности объявления размерности массива строк заранее (n) - это не правильно.
1. Так как под каждую строку string массива так или иначе память будет выделяться отдельно (при формировании строки, а не инициализации массива), в целом это может не дать существенной экономии (в отличии от массивов с фиксированным размером элементов - например vector <double>).
2. Кроме того, сам класс vector при добавлении элементов память выделяет не по одному элементу, а блоками, что уже дает ускорение. Т.е. выделять 4 элемента при объявлении массива - бессмысленно (вектор, скорее всего, сам больше зарезервирует памяти "про запас", чем под 4 элемента). Если уж выделять память под массив заранее - то уж под массивы на сотни элементов и при помощи метода reserve, а не (n) при объявлении. Метод reserve - выделяет память, но не меняет размер массива.
nickname2019 вне форума  
 
Непрочитано 06.05.2021, 09:35
#45
Сергей812


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


создается впечатление, что этот шаблон vector создан вдогонку управляемым языкам - это их идеология: программист управляет данными в явном виде, но не ресурсами) В принципе, логично - сейчас все идет по пути убыстрения/удешевления разработки кода, а не экономии каждого байта - как во времена 286/386 компьютеров с несколькими мб оперативки и тактовыми частотами в десятки МГц.
Сергей812 вне форума  
 
Непрочитано 06.05.2021, 09:43
#46
bigden


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
создается впечатление, что этот шаблон vector создан вдогонку управляемым языкам
так в этом и прикол плюсов. хочешь экономить каждую миллисекунду - делай все вручную, задолбало все и хочется меньше гемороя - используй stl

----- добавлено через ~2 мин. -----
В комитете создали группу по линейной алгебре. Так что когда реализую будет полный фарш. Ни фортранов тебе, ни питонов не надо будет
bigden вне форума  
 
Непрочитано 06.05.2021, 09:46
#47
trir


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


Цитата:
а не экономии каждого байта - как во времена 286/386 компьютеров с несколькими мб оперативки и тактовыми частотами в десятки МГц.
как во времена PDP
trir вне форума  
 
Непрочитано 06.05.2021, 12:49
#48
miko2009

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


Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Пост #32, на который Вы ответили, иллюстрирует как не надо делать и написан в противовес посту #30 (как надо делать), в котором массив был объявлен статически как vector<string> arName;
Смысл написанного был в том, что в С++ при правильной организации работы следить за утечками памяти практически не придется.

По поводу рациональности объявления размерности массива строк заранее (n) - это не правильно.
1. Так как под каждую строку string массива так или иначе память будет выделяться отдельно (при формировании строки, а не инициализации массива), в целом это может не дать существенной экономии (в отличии от массивов с фиксированным размером элементов - например vector <double>).
2. Кроме того, сам класс vector при добавлении элементов память выделяет не по одному элементу, а блоками, что уже дает ускорение. Т.е. выделять 4 элемента при объявлении массива - бессмысленно (вектор, скорее всего, сам больше зарезервирует памяти "про запас", чем под 4 элемента). Если уж выделять память под массив заранее - то уж под массивы на сотни элементов и при помощи метода reserve, а не (n) при объявлении. Метод reserve - выделяет память, но не меняет размер массива.
вы все дальше закапываетесь , выложите пример вашего кода с векторами, я вижу что вы что то гуглите без понимания
Например как у меня , и с обычными векторами и с векторами CUDA
miko2009 вне форума  
 
Непрочитано 06.05.2021, 13:27
#49
nickname2019


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


Цитата:
Сообщение от miko2009 Посмотреть сообщение
вы все дальше закапываетесь , выложите пример вашего кода с векторами, я вижу что вы что то гуглите без понимания
Функция чтения массива произвольной длины (double) из файла. Добавление элементов производится в конец вектора.
Код:
[Выделить все]
 
typedef vector <double> tmardouble;
bool load_vector_from_file(CString fname, tmardouble &arv){		
	std::string s1;	
	ACHAR ach[3024];	
	arv.clear();//Очищаем вектор	
	copyCStringtoACHAR(ach,fname);//Путь из CString копируем в строку с нулем в конце
	ifstream in(ach);//Открываем файл на чтение
    if (!in){
		return false;
	}
	double x1;
	while (getline(in,s1,'\n')){
		val1(s1,x1);//Функция преобразования строки в число double
		arv.push_back(x1);//Добавляем значение в конец вектора
	}
	in.close();
	return true;
}
Можно конечно файл прочитать два раза - один раз для определения количества элементов, чтобы зарезервировать память под массив - потом прочитать еще раз с заполнением массива. Если размерность массива известна заранее - конечно его можно инициализировать (задать размер и заполнить нулями) при объявлении.
nickname2019 вне форума  
 
Непрочитано 06.05.2021, 14:11
#50
Сергей812


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


1. Если известно количество элементов в векторе - что мешает записать в файл в начале вектора количество элементов?
2. Если заранее неизвестно - запомнить позицию в файловом потоке, записать "пустышку" - нулевое количество, после завершения записи вектора с подсчетом количества во вспомогательной переменной записать по ранее сохраненной позиции реальное число элементов.
Сергей812 вне форума  
 
Непрочитано 06.05.2021, 15:32
#51
nickname2019


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
1. Если известно количество элементов в векторе - что мешает записать в файл в начале вектора количество элементов?
2. Если заранее неизвестно - запомнить позицию в файловом потоке, записать "пустышку" - нулевое количество, после завершения записи вектора с подсчетом количества во вспомогательной переменной записать по ранее сохраненной позиции реальное число элементов.
Это конечно на любителя. Я обычно не занимаюсь оптимизациями сразу, так как эффект заранее оценить сложно, а время на это намного больше уйдет.
Если код тормозит совсем уж безбожно - тогда надо думать начинать. Но все равно обычно тормозит не из-за особенности реализации "сишных" методов (типа разового выделения памяти под массивы), а из-за того, что свой алгоритм коряво построен, сортировки не оптимальны и т.д.
nickname2019 вне форума  
 
Непрочитано 06.05.2021, 15:45
#52
Сергей812


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


Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Это конечно на любителя. Я обычно не занимаюсь оптимизациями сразу, так как эффект заранее оценить сложно, а время на это намного больше уйдет.
Offtop: профессионалы построили Титаник
причем тут на любителя - просто голову включать в процессе написания кода, а не когда уже
Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Если код тормозит совсем уж безбожно - тогда надо думать начинать.
какие затраты времени - записать число в файл перед содержимым самого вектора, а при считывании задать сразу нужную емкость вектора?
Сергей812 вне форума  
 
Непрочитано 06.05.2021, 16:42
#53
nickname2019


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Offtop: профессионалы построили Титаникпричем тут на любителя - просто голову включать в процессе написания кода, а не когда уже какие затраты времени - записать число в файл перед содержимым самого вектора, а при считывании задать сразу нужную емкость вектора?
В реальной жизни обычно приходится разбирать текстовые файлы, созданные сторонней программой - например, расчетные схемы Лиры или Скада. А их разработчики не настолько любезны, чтобы писать в файл размерность массивов.
Когда я это делал в Delphi - приходилось по два раза перечитывать расчетную схему (для определения размера массива и для заполнения), так как в Delphi были чудовищные тормоза с выделением памяти.
nickname2019 вне форума  
 
Непрочитано 06.05.2021, 16:46
#54
Сергей812


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


а можно от лени вообще наделать наследуемых классов от того же List<T> типа:

Код:
[Выделить все]
 /// <summary>
    /// Расширение стандартного списка с функциями записи и чтения из файла
    /// </summary>
    /// <remarks>На тип Т наложено ограничение в виде обязательной реализации
    /// интерфейса IItemFIO, студия даже не даст скомпилировать приложение
    /// в противном случае</remarks>
    /// <typeparam name="T">Тип элемента</typeparam>
    public class ExtList<T> : List<T> where T : IItemFIO<T>, new()
    {
        /// <summary>
        /// Запись содержимого списка в бинарный файл
        /// </summary>
        /// <param name="aNameFile">Имя записываемого файла</param>
        /// <returns>true - запись файла прошла успешно, false - нет</returns>
        public bool Write(string aNameFile)
        {
            try
            {
                // Открываем файловый поток на запись
                using (FileStream lFS = new FileStream(aNameFile, FileMode.Create, FileAccess.Write))
                {
                    using (BinaryWriter lBW = new BinaryWriter(lFS, Encoding.UTF8))
                    {
                        // Записываем количество элементов в списке
                        lBW.Write(Count);
                        // Заносим содержимое элементов в поток
                        ForEach(delegate (T aItem) { aItem.Write(lBW); });
                    }
                }
                // Возвращаем успешное завершение записи
                return true;
            }
            catch
            {
                // Возвращаем признак ошибки
                return false;
            }
        }


        /// <summary>
        /// Чтение содержимого списка из бинарного файла
        /// </summary>
        /// <param name="aNameFile">Имя читаемого файла</param>
        /// <returns>true - чтение файла прошло успешно, false - нет</returns>
        public bool Load(string aNameFile)
        {
            try
            {
                // Открываем файловый поток на запись
                using (FileStream lFS = new FileStream(aNameFile, FileMode.Open, FileAccess.Read))
                {
                    using (BinaryReader lBR = new BinaryReader(lFS, Encoding.UTF8))
                    {
                        // Считываем количество элементов в списке
                        Capacity = lBR.ReadInt32();
                        // В цикле читаем элементы в список
                        T lTempItem = new T();
                        for (int i = 0; i < Capacity; i++)
                        {
                            Add(lTempItem.Load(lBR));
                        }
                    }
                }
                // Возвращаем успешное завершение чтения
                return true;
            }
            catch
            {
                // Возвращаем признак ошибки
                return false;
            }
        }

    }
где интерфейс
Код:
[Выделить все]
 /// <summary>
    /// Интерфейс чтения и записи содержимого элемента в файл
    /// </summary>
    /// <typeparam name="T">Тип элемента</typeparam>
    public interface IItemFIO<T>
    {
        /// <summary>
        /// Чтение значения элемента из бинарного потока
        /// </summary>
        /// <param name="aBR">Открытый на чтение бинарный поток</param>
        /// <returns>Считанное содержимое элемента</returns>
        T Load(BinaryReader aBR);

        /// <summary>
        /// Запись содержимого элемента в бинарный поток
        /// </summary>
        /// <param name="aBW">Открытый на запись бинарный поток</param>
        void Write(BinaryWriter aBW);
    }
и потом использовать для любого незапечатанного или своего типа. А можно и о сериализации вспомнить, в принципе)

----- добавлено через ~4 мин. -----
Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Когда я это делал в Delphi - приходилось по два раза перечитывать расчетную схему (для определения размера массива и для заполнения), так как в Delphi были чудовищные тормоза с выделением памяти.
в дельфях тоже свой менеджер памяти, насколько помню - откуда там дикие тормоза? Если, конечно миллионами мелких кусочков не оперировать одновременно, что сам менеджер памяти начинает томозить...
Сергей812 вне форума  
 
Непрочитано 06.05.2021, 17:21
#55
nickname2019


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
а можно от лени вообще наделать наследуемых классов от того же List<T> типа:
Прикольно. Но из 18 строчек кода в #49 получилось более 80 строчек кода в #54. Я не люблю ООП, классов много, файлов много, отлаживать трудно. Особенно, если наследовать объекты друг от друга кучу раз.
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
в дельфях тоже свой менеджер памяти, насколько помню - откуда там дикие тормоза? Если, конечно миллионами мелких кусочков не оперировать одновременно, что сам менеджер памяти начинает томозить...
Не разбирался. Помню, что проблемы с памятью были. Перешел на с++ - исчезли.
nickname2019 вне форума  
 
Непрочитано 06.05.2021, 17:31
#56
doctorraz

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


Уот вы тут теесу мощно помогли..
Зато писюнами друг с другом знатно померились
Крассучеги.. помогли теесу знатно))
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 06.05.2021, 18:02
#57
Сергей812


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


а ТС, судя по активности вхождения на форум и отсутствию новых сообщений - почитал ветку несколько дней, понял, что за 10 лет никакой новой халявы не появилось и подуныл)

----- добавлено через ~27 мин. -----
Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Я не люблю ООП, классов много, файлов много, отлаживать трудно. Особенно, если наследовать объекты друг от друга кучу раз.
Вообще то смысл ООП как раз замкнуть (инкапсулировать) часть общей логики приложения внутри соответствующего класса - отладил и забыл) А наследовать объекты друг от друга кучу раз - это вообще логике не поддается, оргия уже какая то) Недаром в .Net сразу запретили множественное наследование.
Сергей812 вне форума  
 
Непрочитано 06.05.2021, 19:57
#58
nickname2019


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Вообще то смысл ООП как раз замкнуть (инкапсулировать) часть общей логики приложения внутри соответствующего класса - отладил и забыл) А наследовать объекты друг от друга кучу раз - это вообще логике не поддается, оргия уже какая то) Недаром в .Net сразу запретили множественное наследование.
Это теоретически. Практически что-то эдакое возникает https://forum.dwg.ru/showpost.php?p=...postcount=1589
nickname2019 вне форума  
 
Непрочитано 06.05.2021, 20:03
#59
Сергей812


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


Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Это теоретически. Практически что-то эдакое возникает https://forum.dwg.ru/showpost.php?p=...postcount=1589
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Недаром в .Net сразу запретили множественное наследование.
чтобы не плодили таких монстров)
Сергей812 вне форума  
 
Непрочитано 06.05.2021, 20:14
| 1 #60
Кулик Алексей aka kpblc
Moderator

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


Offtop:
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
чтобы не плодили таких монстров)
Типа MVVM, DI etc?

Мне все же кажется, что тут радостно запугали и запутали ТС. Мое мнение - фиолетово на каком языке писать. Главное - начать, а там как карта ляжет.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.05.2021, 21:44
#61
Сергей812


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Типа MVVM, DI etc?
ну более логически структурированные) Там по ссылке титанический многолетний труд у человека - уже ничего не сделаешь в плане изменения архитектуры приложения)

Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Мое мнение - фиолетово на каком языке писать. Главное - начать, а там как карта ляжет.
ТС хочет перспективный язык для акада. Учитывая, что сам акад уже столько лет не развивается толком - то трудновато ему будет подобрать перспективный язык)
Сергей812 вне форума  
 
Непрочитано 06.05.2021, 22:06
#62
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


Цитата:
Сообщение от nickname2019 Посмотреть сообщение
В реальной жизни обычно приходится разбирать текстовые файлы, созданные сторонней программой - например, расчетные схемы Лиры или Скада. А их разработчики не настолько любезны, чтобы писать в файл размерность массивов.
Когда я это делал в Delphi - приходилось по два раза перечитывать расчетную схему (для определения размера массива и для заполнения), так как в Delphi были чудовищные тормоза с выделением памяти.
Делфи выделяет память ровно также как другие нативные языки. Чудовищные тормоза там от неправильного подхода изза непонимания "програмистом" как оно работает
В реальной жизни надо прочитать, посчитать, выделить и заполнить. Если файл гиганских размеров читать\считать\выделять\заполнять пачками. С этой задачей все нативные языки справятся одинаково что делфи, что цпп

----- добавлено через ~1 мин. -----
Как обычно на двгюру очередной тред-детектор мамкиных програмистов от инженерии))

----- добавлено через ~2 мин. -----
я у мамки главный програмист, если что))
zamtmn вне форума  
 
Непрочитано 06.05.2021, 22:28
#63
Сергей812


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


тормоза начинаются обычно при свопинге - когда операционная система начинает выгружать неактивные страницы памяти в файл виртуальной памяти в попытках выделить запрашиваемый пул памяти.

Цитата:
Сообщение от zamtmn Посмотреть сообщение
Если файл гиганских размеров читать\считать\выделять\заполнять пачками.
зачем пачками, когда в любом приличном языке есть файловые потоки (FileStream), берущие это на себя
Сергей812 вне форума  
 
Автор темы   Непрочитано 06.05.2021, 22:50
#64
Publipor


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


Цитата:
Сообщение от v.psk Посмотреть сообщение
а какое прикладное применение? Какая должность, обязанности? Для саморазвития или для выполнения должностных обязанностей?
ну вот еще родственные темы, мало ли не загуглилось...
обучение чайника лиспу ... это на мой взгляд ... тернистый путь
создание софта
айти или проектирование
без прикладной задачи трудно и скучно читать теорию.... есть задача то?
Для саморазвития. Должность инженер-конструктор. Работаю в это отрасли всего год, но уже появилась необходимость написать собственные не большие команды для ускорения работы
Publipor вне форума  
 
Непрочитано 06.05.2021, 22:52
#65
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


Чтоб уйти в своп нужно еще постараться память чемто забить. У nickname2019 насколько я понял проблемы от перераспределения памяти на каждой итерации. Штатные списки делфи вырастают каждый раз при заполнении на capacity элементов, в то время как стлный вектор вырастает при заполнении в 1.5 - 2 раза (зависит от реализации). Конечно с виду будет прирост, но при этом перерасход памяти и тогоже поведения легко добиться в делфи.

>>зачем пачками, когда в любом приличном языке есть файловые потоки (FileStream), берущие это на себя
Нужен именно поток с кешем в памяти приложения а не с кэшем средствами ос, тогда все будет сделано без повторного вызова ио операций оси.
В терминах делфи таким является TBufferedFileStream, TFileStream - просто обертка над файловыми средствами оси - будут лишние вызовы ос, в зависимости от настроек кеширования ос возможно будут повторные чтения с диска
zamtmn вне форума  
 
Автор темы   Непрочитано 06.05.2021, 22:59
#66
Publipor


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


Цитата:
Сообщение от LenidSN Посмотреть сообщение
Тема такая, из доброго старого времени...
Для инженера-автокадчика, а не профессионального программиста, нет ничего лучше VBA for AutoCAD.
Перечислять плюсы можно долго, но пока сам не попробуещь, оценить их (а также минусы) не представляется возможным.
Я б удовольствием хотел бы изучить все языки.Но на это уйдет достаточно много времени, и мне кажется, не очень эффективно . На данном форуме есть много специалистов , с огромным опытом, в том числе в программировании. Мне б хотелось услышать ихние рекомендации, как для новичка-любителя, который не изучал программирование. Мне когда-то мне преподавали "дельфи", сейчас я так понимаю это мертвый язык, и он не единственный, и чтоб не потратить время в пустую хотелось бы изучить действительно нужный язык для инженера конструктора)

----- добавлено через ~4 мин. -----
Цитата:
Сообщение от nickname2019 Посмотреть сообщение
А новичку, имхо, желательно начинать с освоения существующего функционала, а именно - динамических блоков.
С динамическими блоками я знаком, уже пол года, как минимум. И так же с лиспом( частично). И хотелось бы, пока есть возможность, поднять свой уровень владения автокада, путем написания собственных команд.) Но сложность в выборе языка, слишком их много, и порой ,сложно понять какой из них в моей сфере пригоден, и не слишком сложный для новичка.
Publipor вне форума  
 
Непрочитано 06.05.2021, 23:12
#67
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


Publipor
Тут было уже много топиков когда непонимание что и как делать прикрывается вечным перебором языков.
Знаешь что делать, делай на том на чем умеешь.
Когда поймешь чего не хватает - определишься и перейдешь на тот единственный и неповторимый всем тебя устраивающий.

зы
C# - стильно, модно, молодежно
zamtmn вне форума  
 
Непрочитано 06.05.2021, 23:22
#68
Сергей812


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


Цитата:
Сообщение от zamtmn Посмотреть сообщение
Штатные списки делфи вырастают каждый раз при заполнении на capacity элементов
в C# аналогичная реализация штатных списков - просто увеличивает вдвое емкость до определенного предела. Если в качестве элементов не ссылочные типы - даже "пустой" список может откушать нехило оперативки.

Цитата:
Сообщение от Publipor Посмотреть сообщение
Мне когда-то мне преподавали "дельфи", сейчас я так понимаю это мертвый язык,
не мертвый, просто появились альтернативы, причем нередко с бесплатными и достаточно удобными средствами разработки - в том числе и C#)

----- добавлено через ~6 мин. -----
у меня в свое время был переход дельфи -> VBA -> VB.NET -> C#. С легким касанием краешком сознания лиспа где то между двумя последними языками)
Сергей812 вне форума  
 
Автор темы   Непрочитано 06.05.2021, 23:38
#69
Publipor


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
не мертвый, просто появились альтернативы, причем нередко с бесплатными и достаточно удобными средствами разработки - в том числе и C#)
Наверное я погорячился, когда сказал что дельфи мертв, просто на просторах интернета он негде не упоминается, новой литературы по делфи нету, я предположил что он уже потерял свою актуальность. Но, появился перспективный язык, питон. И человеку , который не мониторил актуальность языков , очень сложно не прогадать с выбором языка)
Publipor вне форума  
 
Непрочитано 07.05.2021, 00:24
#70
Сергей812


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


ну просто по факту - официальный сайт разработчиков на русском - "погуляйте" по нему и посмотрите: на каких языках программирования больше всего примеров для того же акада) Заодно и начнете изучать программирование под акад
Сергей812 вне форума  
 
Непрочитано 07.05.2021, 07:48
#71
trir


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


Что бы программировать на Python'е под AutoCAD - нужно знать VBA и/или C#
trir вне форума  
 
Непрочитано 07.05.2021, 08:18
#72
Vladimir_Sergeevich

рисую дороги, в перерывах курю Lisp
 
Регистрация: 20.04.2011
Пермь
Сообщений: 475
<phrase 1= Отправить сообщение для Vladimir_Sergeevich с помощью Skype™


Цитата:
Сообщение от trir Посмотреть сообщение
Что бы программировать на Python'е под AutoCAD - нужно знать VBA и/или C#
Простите, для чего? Питон язык со свободной типизацией, c# со строгой типизацией. И тот и другой могут крутить фреймворками и АПИ...
Тут только встанет вопрос удобности среды разработки. Студия мне нравится, а за питон адепты тоже найдутся.
В частности у меня был опыт писания для другого ПО, где примеры программы были на писаны на питоне и не требовалась компиляция для исполнения (прям как лисп в акаде XD) только быстро я на это дело забил после установки студии. Другое дело что среды разработки под питон существуют и свои и в студии тоже можно создавать проекты на питоне.
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума  
 
Непрочитано 07.05.2021, 08:26
#73
trir


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


Цитата:
Простите, для чего? Питон язык со свободной типизацией, c# со строгой типизацией. И тот и другой могут крутить фреймворками и АПИ...
что бы читать документацию - примеры на этих языках
trir вне форума  
 
Непрочитано 07.05.2021, 08:47
#74
Vladimir_Sergeevich

рисую дороги, в перерывах курю Lisp
 
Регистрация: 20.04.2011
Пермь
Сообщений: 475
<phrase 1= Отправить сообщение для Vladimir_Sergeevich с помощью Skype™


Цитата:
Сообщение от trir Посмотреть сообщение
примеры на этих языках
Отчасти соглашусь. Но по большому счету, это не столь критично. Я успешно писал на с# имея примеры только на питоне. Полагаю в обратную сторону это тоже прекрасно работает.
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума  
 
Непрочитано 07.05.2021, 08:54
#75
trir


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


Для C# под AutoCAD есть много доков, в том числе и на русском. С Python'ом придётся разбираться самому и там много тонких и запутанных моментов в которых новичку будет сложно разобраться
trir вне форума  
 
Непрочитано 07.05.2021, 09:28
#76
Сергей812


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


есть тема питона на форуме разработчиков в разделе VBA - т.е. отдельного своего раздела питон еще не заслужил)
Сергей812 вне форума  
 
Непрочитано 07.05.2021, 09:33
#77
Pan Lipen

Инженер-конструктор
 
Регистрация: 06.06.2017
Москва
Сообщений: 5
Отправить сообщение для Pan Lipen с помощью Skype™


Цитата:
Сообщение от Publipor Посмотреть сообщение
Должность инженер-конструктор. Работаю в это отрасли всего год, но уже появилась необходимость написать собственные не большие команды для ускорения работы
Все стандартные задачи КР решаются связкой AutoCAD + Excel + VetCAD.
В AutoCAD нужно сделать шаблон слоев, изучить извлечение данных с помощью таблиц, заготовить свои динамические блоки. Сами блоки можно набрать на dwg.ru и творчески переработать под себя. Изучить ввод команд с клавиатуры. Можно сделать кнопки под себя на макросах - где-то здесь лежит книжка одного участника этого форума.
VetCAD очень облегчает оформление по ГОСТ, сбор спецификаций и ведомостей расхода стали. Это можно делать и через Excel, но это дольше и сложнее. К тому же vetcad самый доступный по цене.
Все дать значительный прирост производительности

Не имея опыта по профессии, я бы концентрировался на изучении нормативной документации и работе конструкций, а программы и команды можно скачать с этого сайта. Если "большую красную кнопку" разбивать на более мелкие, то практически все можно найти в интернете.
Pan Lipen вне форума  
 
Непрочитано 07.05.2021, 10:00
#78
Сергей812


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


Offtop:
Цитата:
Сообщение от Pan Lipen Посмотреть сообщение
Не имея опыта по профессии, я бы концентрировался на изучении нормативной документации и работе конструкций, а программы и команды можно скачать с этого сайта. Если "большую красную кнопку" разбивать на более мелкие, то практически все можно найти в интернете.
ничего, что ТС новичек в программировании?
Сергей812 вне форума  
 
Непрочитано 07.05.2021, 14:23
#79
Pan Lipen

Инженер-конструктор
 
Регистрация: 06.06.2017
Москва
Сообщений: 5
Отправить сообщение для Pan Lipen с помощью Skype™


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
ничего, что ТС новичек в программировании?
1. Чтобы запускать программы на Лиспе вообще программирование знать не нужно.
2. ТС новичок в конструировании.
Pan Lipen вне форума  
 
Непрочитано 07.05.2021, 14:56
| 1 #80
Кулик Алексей aka kpblc
Moderator

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


Может, все же сначала стоит автора темы спросить? )
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 07.05.2021, 14:59
#81
Сергей812


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


Цитата:
Сообщение от Pan Lipen Посмотреть сообщение
1. Чтобы запускать программы на Лиспе вообще программирование знать не нужно.
чтобы запустить любую готовую программу - не надо знать программирование) Но если человек смотрит вперед и хочет иметь возможность написания надстроек, являющихся "продолжением" своих пальцев - а не просто пользоваться "винегретом" из готовых чужих программ и костылей между ними - это можно только приветствовать)

Цитата:
Сообщение от Pan Lipen Посмотреть сообщение
2. ТС новичок в конструировании.
даже интересно - на основание чего вы сделали такие далеко идущие выводы? На основе даты регистрации?) Или что динблоками полгода назад стал пользоваться
Цитата:
Сообщение от Publipor Посмотреть сообщение
С динамическими блоками я знаком, уже пол года, как минимум.
ну так и сейчас встречаешь проектировщиков с опытом работы, которые и обычные блоки используют с большим скрипом. У нас 80+ процентов проектировщиков используют чужие наработки, блоки, шаблоны и т.д. Просто потому что работодатель не оплачивает ни создания уникального контента для фирмы, ни повышения уровня квалификации - одни хотелки получить это задарма под прикрытием тяжелой обстановки)
Сергей812 вне форума  
 
Автор темы   Непрочитано 07.05.2021, 16:36
#82
Publipor


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
даже интересно - на основание чего вы сделали такие далеко идущие выводы? На основе даты регистрации?) Или что динблоками полгода назад стал пользоваться
Я новичек в программировании и в конструировании. Всего лишь 1 год опыта в конструировании 0- в программировании)

----- добавлено через ~7 мин. -----
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
ну так и сейчас встречаешь проектировщиков с опытом работы, которые и обычные блоки используют с большим скрипом. У нас 80+ процентов проектировщиков используют чужие наработки, блоки, шаблоны и т.д. Просто потому что работодатель не оплачивает ни создания уникального контента для фирмы, ни повышения уровня квалификации - одни хотелки получить это задарма под прикрытием тяжелой обстановки)
Лично для меня использования динамических блоков это хороший способ сэкономит огромное количество времени. И неплохой способ быстрого подсчета сборных конструкций. Иногда проще потратить дополнительное время для создания нужного блока, а потом, в дальнейшем, сэкономить в разы больше времени при использовании его.
Publipor вне форума  
 
Непрочитано 07.05.2021, 17:18
#83
Сергей812


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


Цитата:
Сообщение от Publipor Посмотреть сообщение
Я новичек в программировании и в конструировании. Всего лишь 1 год опыта в конструировании 0- в программировании)
главное, чтобы мозги работали.. Ничего страшного в программировании нет - если не бояться искать информацию в инете дальше первых строчек результатов поиска. Например, достаточно неплохой учебник по C# как дополнение к справке.
Сергей812 вне форума  
 
Непрочитано 07.05.2021, 19:46
#84
Нубий-IV

Инженер-философ
 
Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,083


Цитата:
Сообщение от Publipor Посмотреть сообщение
0- в программировании
Тогда лучше начать с бейсика. На нем наименьший объем писанины на единицу полезного действия выходит. Программы запускаются сразу, без компиляций-загрузок. Автодополнение само подсказывает что набирать, при небольшом опыте даже доки читать почти не придется. Первые команды в первый же день можно слепить.

Потом, когда обнаружится, что не все в автокаде доступно через бейсик, можно уже на шарпы пересаживаться, если к тому времени желание не отпадет. Или на плюсы - там можно сделать вообще все, что только можно делать под автокад.
Миниатюры
Нажмите на изображение для увеличения
Название: c++.jpg
Просмотров: 638
Размер:	57.7 Кб
ID:	237010  
Нубий-IV вне форума  
 
Непрочитано 07.05.2021, 23:16 ничего не понял, но очень интересно
#85
StupidDuck


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


к сожалению, не смог в диалоге найти именнто тот мессаж, когда на c# создаются новые примитивы с своим функционалом. был бы очень интересен пример
а так то лисп заходит за доступность на большом количестве форумов (можно найти все, что угодно). перспективен c#, помоему дольше писать, но там и ревиты подходят и тд

лизнуть крысу) молодец хороший сайт, много из него изучил
StupidDuck вне форума  
 
Непрочитано 10.05.2021, 15:59
#86
Сергей812


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


Цитата:
Сообщение от StupidDuck Посмотреть сообщение
новые примитивы с своим функционалом
custom objects
ну еще jig механизм
Сергей812 вне форума  
 
Непрочитано 10.05.2021, 17:18
1 | 1 #87
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


Т.е. полноценных своих примитивов на c# не сделать. прискорбно
zamtmn вне форума  
 
Непрочитано 10.05.2021, 17:21
#88
Boxa

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


Цитата:
Сообщение от zamtmn Посмотреть сообщение
Т.е. полноценных своих примитивов на c# не сделать. прискорбно
Multicad.NET API
Boxa вне форума  
 
Непрочитано 10.05.2021, 18:33
#89
Сергей812


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


Цитата:
Сообщение от zamtmn Посмотреть сообщение
Т.е. полноценных своих примитивов на c# не сделать. прискорбно
очень хорошо - что хотя бы .Net-цы не пихают свои кастомные объекты куда руки дотянутся)
Сергей812 вне форума  
 
Непрочитано 10.05.2021, 19:02
#90
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


Без своих примитивов качественную автоматизацию работы сделать проблемно
zamtmn вне форума  
 
Непрочитано 10.05.2021, 19:35
#91
nickname2019


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


Цитата:
Сообщение от zamtmn Посмотреть сообщение
Без своих примитивов качественную автоматизацию работы сделать проблемно
Если не касаться C#, то есть еще один вариант.
Примитивы можно делать блоками. Параметры блоков можно задавать атрибутами, а на изменение атрибутов вешать запуск скрипта, меняющего блок. Можно использовать динамические блоки (если формирование геометрии "примитива" простое), или блоками, управляемыми скриптами (если "примитив" сложный).
Такой подход позволяет избавиться необходимости перекомпиляции dll примитива при изменении кода, и избавиться от головной боли при переходе с версии на версию Acada.
Т.е. отладку кода примитива можно производить без перекомпиляции dll и без постоянного перезапуска Autocad.
nickname2019 вне форума  
 
Непрочитано 10.05.2021, 19:38
#92
Кулик Алексей aka kpblc
Moderator

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


nickname2019, объясни сирому - что означает "dll примитива"?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.05.2021, 19:48
#93
nickname2019


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
nickname2019, объясни сирому - что означает "dll примитива"?
Если в C++ создавать свои примитивы, то студия создает два вида файлов:
1. *.arx - код пользовательских функций;
2. *.dbx - код пользовательских объектов (в т.ч. примитивов).

По своей сути они являются динамически линкуемыми библиотеками (dll), поэтому я их и назвал так обобщенно.
Так как эти библиотеки подключаются к Autocad при работе, то для внесения изменения в код этих библиотек при отладке, их приходится отключать от акада, перекомпилировать и обратно подключать (или перезапускать акад).
nickname2019 вне форума  
 
Непрочитано 18.05.2021, 05:56
#94
CalcProg


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


запишись на курсы программистов, там тебе всё объяснят. ))))

----- добавлено через ~2 мин. -----
за 10 лет ничего не изменилось )))
всё то же самое.

----- добавлено через ~6 мин. -----
Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Если в C++ создавать свои примитивы, то студия создает два вида файлов:
1. *.arx - код пользовательских функций;
2. *.dbx - код пользовательских объектов (в т.ч. примитивов).

По своей сути они являются динамически линкуемыми библиотеками (dll), поэтому я их и назвал так обобщенно.
Так как эти библиотеки подключаются к Autocad при работе, то для внесения изменения в код этих библиотек при отладке, их приходится отключать от акада, перекомпилировать и обратно подключать (или перезапускать акад).
интересно, а новичок знает что такое динамически линкуемые библиотеки?
вместо линкуемых написал бы присоединяемые. ))) было бы понятнее для новичка )))
CalcProg вне форума  
 
Непрочитано 18.05.2021, 08:00
#95
veb86

Проектировщик электрических сетей
 
Регистрация: 17.01.2014
Пенза
Сообщений: 178


zamtmn, правду пишет. без своих примитивов, нормальную автоматизацию не сделать.
Multicad.NET API - это же для nanoCAD, вроде же, или на автокаде тоже работает нормально?
veb86 на форуме  
 
Непрочитано 18.05.2021, 08:24
#96
nickname2019


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


Цитата:
Сообщение от veb86 Посмотреть сообщение
zamtmn, правду пишет. без своих примитивов, нормальную автоматизацию не сделать.
Смотря что понимать под "нормальной" автоматизацией. Например, вот такая автоматизация работает на одних стандартных акадовских блоках (первую минуту надо "промотать")
https://youtu.be/oGqZH7OReoU
nickname2019 вне форума  
 
Непрочитано 18.05.2021, 09:27
#97
Сергей812


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


пока новичек дойдет до своих примитивов... он уже явно не будет новичком)
Сергей812 вне форума  
 
Непрочитано 19.05.2021, 11:27
#98
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


nickname2019
На уровне расставить блоков и посчитать их количество - да
zamtmn вне форума  
Ответ
Вернуться   Форум 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