Телескопы покупают здесь


A A A A Автор Тема: Моделирование оптических систем в AutoCAD  (Прочитано 14566 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ДрюшаАвтор темы

  • *****
  • Сообщений: 4 947
  • Благодарностей: 98
  • Вы сышите только мой голос...
    • Сообщения от Дрюша
Предлагаю вашему вниманию свою собственную программную разработку для моделирования оптических систем.

См. обновление в НАИБОЛЕЕ ПОЗДНЕМ ПОСТЕ этой темы (где есть файловые вложения). Старьё отсюда убрал.

ВСЁ ОБНОВЛЕНО на АВГУСТ 2006г Здесь осталась только документация (устаревшая, но которую я с тех пор не правил)
 
Она может быть полезна только тем, у кого есть AutoCAD, и кто умеет с ним работать. Дело в том, что она целиком реализована на языке АвтоЛИСП, который входит в состав операционной среды AutoCAD. Работает она только в среде AutoCAD, пользуется его мощным графическим интерфейсом, делает геометрические построения в 3-мерном пространстве, и результаты своей работы представляет в виде геометрических объектов в текущем чертеже. Их можно исследовать интерактивными средствами AutoCADa (рассматривать в разных проекциях и масштабах), вырезать фрагменты, масштабировать и т.п. Сам бы я просто не смог реализовать такой графический интерфейс (или на это бы у меня ушла вся жизнь).

Мне, конечно, тяжело тягаться с ZEMAX или OSLO, но моя программа гораздо проще, и там у меня всё по-русски. Ничего лишнего и непонятного. Для любителя - самое оно. Конечно, тут предполагается наличие AutoCADа. Но я полагаю, что AutoCAD известен гораздо большему количеству народа, чем тот же ZEMAX.

Я полагаю, что обычный любитель не будет замахиваться на постройку рефрактора-апохромата (и даже просто ахромата). А у крутых любителей и профессионалов все эти ZEMAXы OSLO и т.п. - уже давно стоят. Мои изваяния предназначены исключительно для любительского применения и удовлетворения собственного любопытства. Ну, типа, "а что если сделать так-сяк-эдак-разэдак". Ну, хотя бы прикинуть, что на самом деле выйдет фигня, и на этом успокоиться. Вовремя избавиться от какой-нибудь навязчивой идеи по поводу какой-то принципиально новой оптической системы...

Для общеизвестных схем оптической системы телескопов, доступных любителю для постройки, все расчётные параметры обычно берутся из различных соображений и источников. В литературе многократно обсуждались такие вопросы как выбор расчётных параметров для постройки телескопа системы Ньютона, Кассегрена, Ричи-Кретьена и даже более сложных зеркально-линзовых систем вроде Максутова, Шмидта, Райта, Волосова и т.п. Там приводятся все необходимые расчётные формулы и даются соответствующие рекомендации.  Надо полагать, что любитель, который реально берётся за постройку такого телескопа, уже ознакомился со всеми этими источниками, и сделал свой выбор. И оптимизировать ему, особо, уже нечего.  Тут, наверное, ни ZEMAX, ни OSLO ему тоже не принесёт особой пользы.  Для канонических зеркальных систем всё тривиально просто, и в расчётных (идеализированных) оптических схемах все аберрации на оси сводятся к нулю, а что там получается по полю - с этим всё равно ничего не сделаешь (без выхода за рамки выбранной сисиемы и усложнения общей схемы). Задача мастера тут - это просто реально изготовить то, что задумано, и выдержать все расчётные параметры с требуемой точностью.  Сами же расчётные параметры, вернее, их нахождение, как правило, проблем собой не представляют. В некоторых случаях любителю даже совсем не нужно их знать (например, величину асферики или эксцентриситет поверхности вращения конического сечения: эллипсоида или гиперболоида), а при изготовлении рабочих поверхностей оптических деталей используются специфические тесты (в частности, нуль-тесты, и методы контроля с коллимацией и автоколлимацией), при которых целевая форма рабочей поверхности должна автоматически стремиться к расчётной. 

Но по ходу дела у любителя может возникнуть ряд вопросов. Например:

- Какова будет величина комы, астигматизма и прочих внеосевых аберраций (даже не важно, как они называются) на таком-то удалении от оптической оси (или от центра поля зрения в фокальной плоскости) в линейной или угловой мере. Как будет выглядеть пятно рассеяния, создаваемое всеми аберрациями в совокупности? Как можно оценить полезное поле зрения моего будущего телескопа? Что значит, "величина аберраций остаётся в допустимых пределах"? В каких именно? Что я там реально смогу там увидеть? На каких увеличениях? Стоит ли мне гнаться за большим полем зрения (например, размером в два градуса), расчитывать под это дело вторичное зеркало соответствующего размера? Или там изображение будет настолько испорчено комой, астигматизмом и другими внеосевыми аберрациями, что на это большое поле можно сразу забить, и лучше уменьшить размер вторички, ЦЭ и всё такое?

- Как поведёт себя простой самодельный окуляр (например, системы Гюйгенса или Рамсдена, собранный из каких-то случайных линз)? Какие аберрации он может внести? Годится ли он вообще? А для окулярной проекции - сойдёт? Как вообще поведёт себя окуляр в сочетании с объективом, у которого тоже есть свои аберрации? Будут ли эти аберрации складываться, или могут (хотя бы частично) взаимно компенсироваться? Что для этого можно или нужно сделать? Конечно, интнресно было бы расчитать систему с применением ахроматических склеек, микро- фото- и кино- объективов, фирменных окуляров и т.п. Но для этого надо знать все параметры (радиусы кривизны, толщины), а так же свойства материалов, из которых они сделаны. Но как измерить радиус кривизны внутренней поверхности у склейки? Разве что только, если есть доступ к полной технической документации.

- Какое влияние на качество может оказать простая (не ахроматизированная) линза Барлоу? Например, вот эта конкретная плоско-вогнутая стекляшка, которая у меня есть? А могут ли, хотя бы частично, её аберрации компенсироваться теми аберрациями, которые есть у простых окуляров (хотя бы, того же Гюйгенса)? А можно ли так подобрать эту Барлоу и самодельный окуляр (тоже из тех стекляшек, которые у меня реально есть), чтобы все их аберрации, вместе взятые, оказались в пределах нормы? Ну, хотя бы на оси? Тут можно шевелить только расстояниями между линзами (перешлифовка и переполировка поверхностей на другой радиус не предполагается).

- А если я вместо плоского диагонального зеркала в телескопе системы Ньютона я возьму призму полного внутреннего отражения? Говорят, что она внесёт свои аберрации (в частности, сферическую, хроматизм).  Но может быть интересно точно знать, а какую именно по величине? Может ли качество изображения при этом остаться приемлемым? А можно эти аберрации как-нибудь скомпенсировать противоположными аберрациями окуляра или линзы Барлоу? Самодельных, разумеется.

- А при каком относительном фокусе главного зеркала все эти простые окуляры и линзы Барлоу (которые я могу себе позволить), а так же призма вместо вторичного зеркала, ну, короче, вся эта фигня, может обеспечить мне более-менее приемлемое качество изображения? Возможно, что именно это и станет одним из критериев выбора относительного фокуса главного зеркала. Если, предположим, для главного зеркала диаметром 150 мм в книжках (Навашин, Сикорук и др.) рекомендуют выбрать относительный фокус около 8 (фокусное расстояние 1200-1250 мм), но я по результатам модельных расчётов вижу, что не только само зеркало (если оно сферическое), но и вся моя простая (самодельная, не ахроматизированная) окулярная оптика при таком относительном фокусе будет работать плохо. Но если фокус главного зеркала сделать 1650-1800 мм (это будет относительный фокус около 11-12), то тогда и оно само может быть оставлено сферическим, и к тому же любые окуляры с линзами Барлоу будут работать более-менее сносно, и ещё не придётся лезть на стремянку даже при наблюдении зенита... Тогда, наверное, стоит заложиться именно на такой фокус.

- Вот, положим, у меня есть какие-то разные линзы. Плоско-выпуклые, плоско-вогнутые, какие-то мениски и т.п. В частности, можно взять даже очковые стёкла. Я могу узнать или как-то сам измерить радиусы кривизны их поверхностей, толщины, а так же определить оптическую силу (хотя бы по центральной или какой-то радиальной зоне)...  А через эти данные - найти оптические свойства материала (т.е., грубо говоря, определить, из чего они, эти линзы, были изготовлены). Даже дисперсию могу оценить примерно, и тогда уже подобрать по справочнику наиболее близкий сорт стекла. С большой вероятностью можно предположить, что это какой-нибудь крон типа К-8. Так вот, из них я хотел бы сделать что-нибудь такое эдакое. Ну, скажем, Редьюсер фокуса, корректор комы или хотя бы корректор сферической аберрации для сферического ГЗ. Возможно ли это вообще? А если я возьму два стекла (например, два очковых мениска) равной по величине оптической силы, но противоположной по знаку. Можно ли из них что-нибудь сваять? Если суммарная оптическая сила у них близка к 0, то следует ожидать, что хроматизм будет очень мал. Но зато, можно сделать сферическую аберрацию и кому. Специально для компенсации чего-то. Как их следует для этого располагать? Что это даст? Какие аберрации они внесут при этом, и каким в итоге будет общее пятно рассеяния? И на оси, и на каком-то удалении от неё... Стоит ли вообще вся эта затея чего-нибудь?

- Вот, в некоторых книжках (например, у Л.Л. Сикорука во втором издании) приводятся расчётные данные для постройки телескопа системы Шмидта, Максутова и т.п. Даны все конструктивные данные: радиусы кривизны, толщины, расстояния... Надо думать, что эти параметры уже как-то оптимизированы, и им можно верить. Но какие именно там получатся остаточные аберрации? Ну, там, остаточная сферическая и хроматизм, сферохроматизм и всё остальное. И на оси, и в стороне от неё... А если там, например, предполагается использование такого-то сорта стекла, которого у меня на самом деле нет, зато у меня есть стекло другого сорта (и положим, его свойства я могу определить или идентифицировать это своё стекло по справочнику). Как мне теперь пересчитать те оптимизированные параметры на другой сорт стекла? Ну, хотя бы, под другой показатель преломления.

Все эти вопросы, возможно, кому-то представляются глупыми и второстепенными. Допускаю, что при постройке телескопа встают другие, более важные и актуальные вопросы. К тому же, расчитать - это расчитать, а изготовить - это изготовить. Можно заложиться на какие-то жутко оптимизированные расчётные параметры, такие что по результатам всех модельных расчётов всё будет выходить чоки-поки, но как их, эти параметры, реально выдерживать? Как контролировать? За счёт чего?  Обеспечивают ли доступные методы контроля надлежащую точность? Если нет соответствующей технологии и схемы контроля, то грош цена всем этим расчётам и модельным вычислениям!

Хотя, с другой стороны, вопрос о допусках - это тоже нетривиальная задача, и именно для таких расчётов. А что будет, если я ошибусь с вон тем радиусом кривизны на 1 мм? А если с толщиной промахнусь на 0.1 мм? А остаточная косина 0.01 мм к чему приведёт? А если будет сразу то, другое и третье? А могут ли одни ошибки, хотя бы частично, компенсировать другие? Ну, например, если проскочил я с толщиной, снял лишнего, то можно ли исправить ситуацию за счёт небольшого изменения радиуса кривизны вон той поверхности? Так что, это всё тоже - очень нетривиальная задача. И она вполне решаема для модельных расчётов.

Так что, наверное, расчёты на моделях представляют какой-то интерес для любителя. Серьёзные системы типа ZEMAX или OSLO стоят немалых денег (а рекомендовать пользоваться ворованными хаками я не могу, да и предложить мне на этот счёт нечего). Да и вникать в них надо... К тому же, там всё по-английски. Так что вот, я тут предлагаю заценить свою программулину. Авось, кому понравится? Интересно было бы выслушать критические замечания, причём такие, которые я мог бы реально исправить, не выходя за рамки сложившейся концепции.

________________ВНИМАНИЕ!____________________________

В связи с обновлениями напоминаю. Документация (OPTIC.DOC в архиве OP4ACAD2.ZIP) лежит здесь. Сами же программные файлы, составляющие сам этот комплекс программ, в своей самой новой версии приклеены к последнему сообщению этого топика. Смотрите дальше, и там берите. Держать всё вместе почему-то не позволяют ограничения этого форума.
« Последнее редактирование: 06 Сен 2006 [23:26:18] от Дрюша »

stepan

  • Гость
Re: Моделирование оптических систем в AutoCAD
« Ответ #1 : 26 Мая 2005 [22:04:57] »
Цитата
Ну, хотя бы прикинуть, что на самом деле выйдет фигня, и на этом успокоиться. Вовремя избавиться от какой-нибудь навязчивой идеи по поводу какой-то принципиально новой оптической системы...
Прям под меня написал!
А вобщем то классно что хоть кто-то этим занимается. Молодец!

johnson

  • Гость
Re: Моделирование оптических систем в AutoCAD
« Ответ #2 : 11 Июл 2005 [16:09:06] »
Уважаемый Дрюша!
Тестировали ли Вы свою программу с AutoCAD 2005 ?
Я пробую загрузить файл примера и вот, что автокад выдает:

Команда: opload
Имя файла для загрузки [Drawing1.lnz]: c:\work\shmidt.lnz
Имеется не пустая (созданная или загруженная ранее) текущая модель оптической
системы.
При загрузке другой модели из файла, текущая модель будет потеряна!
Сохранить имеющуюся (текущую) модель оптической системы? <[Yes] No>: no
OP_PRM_REDRW: nil
C:OPRIZMDR: Неизвестная команда "UCS".  Для вызова справки нажмите F1.
Неизвестная команда "W". Для вызова справки нажмите  F1.
Неправильное ключевое слово.
;ошибка: Функция отменена


            johnson.

johnson

  • Гость
Re: Моделирование оптических систем в AutoCAD
« Ответ #3 : 11 Июл 2005 [17:39:58] »
Установил AutoCAD 2000. Ура! Все работает. :o
Перемудрила Autodesk c 2005 автокадом, похоже все ранние программы надо под него переписывать. :-\

Оффлайн ДрюшаАвтор темы

  • *****
  • Сообщений: 4 947
  • Благодарностей: 98
  • Вы сышите только мой голос...
    • Сообщения от Дрюша
Re: Моделирование оптических систем в AutoCAD
« Ответ #4 : 11 Июл 2005 [20:59:14] »
2005 пока не пробовал. Но с РУССКИМИ версиями 12-13 (под DOS) была проблема. Там НЕ БЫЛО "родных" команд оригинального (англоязычного) ACAD, а были свои - РУССКОЯЗЫЧНЫЕ команды.
Например, команде английской команде "UCS" (User Coordinate System) соответствует русская команда "ПСК" (что означает "Пользовательская Система Координат") Правда, здорово?  >:( >:( ;D
Аналогичная фигня - в русском офисе от Мелкософт, скажем, EXCEL. Там тоже названия функций зависят от версии...

Потом я обнаружил, что в русскоязысных версиях ACAD все "русскоязычные" команды продублированы английскими аналогами, начинающимися с ундербара. Например, там есть команда "ПСК", а есть "_UCS", причём, в англоязычной версии понимается и "UCS" и "_UCS". Что мешало AutoDesk поддержать одновременно "русские" и "английские" версии команд одновременно - для меня загадка. Впрочем, можно догадаться, что кроме русской локализации есть ещё другие (немецкая, французска, итальянская), тоже основанные на латинице... Поэтому общее правило: оригинальные англоязычные версии команд начинаются с ундербара, и поддерживаются во всех локализациях. Это вселяет надежду.

Надо будет перелопатить весь свой код. Многие команды я уже зебыл. Проще, наверное, написать макрос или прогу, которая автоматически перелопачивает текст на Лиспе, вылавливает функцию "COMMAND", и во всех параметрах, заданных строковыми литералами (кроме чисел и точек) вставляет ундербар. Ну а если ACAD 2005 её и после этого не возьмёт - ну его на фиг, такой ACAD!

Пока что я здесь не обновлял версию (что выложена в первом посте - она ещё не знает произвольных поверхностей вращения конических сечений), но когда обновлю - это учту обязательно. Правда, возможно, потеряется обратная совместимость с ACAD 10 под DOS, но невелика потеря...

Оффлайн ДрюшаАвтор темы

  • *****
  • Сообщений: 4 947
  • Благодарностей: 98
  • Вы сышите только мой голос...
    • Сообщения от Дрюша
Re: Моделирование оптических систем в AutoCAD
« Ответ #5 : 05 Авг 2005 [17:22:20] »
Ну, вот я сделал кое-какое обновление своего программного комплекса. Исправил кое-какие ошибки и добавил новые.

Обновлённые версии файлов прикреплены к первому посту этого топика (старые я убрал, заменив из новыми). Теперь там лежат новые версии.

За это время, как видно, программа скачана не менее 20 раз. Я полагаю, что по крайней мере 10 человек её реально попробовало, и у 5 хоть чего-то получилось :) .

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

Из нововведений: теперь я добавил поддержку осесимметричных поверхностей вращения 2-го порядка с заданным эксцентриситетом (или его квадратом, либо с иным способом задания, но по сути - то же). Итак, теперь у меня поддерживаются любые гиперболоиды (хоть инженера Гарина), эллипсоиды и сплюснытые сфероиды. С ними можно моделировать любые Кассегрены, Ричи-Кретьены, Грегори (в том числе, в апланатической модификации - а ля Ричи-Кретьен), Райты и иже с ними. Я полагаю, что на этом количество поддерживаемых типов поверхностей можно остановить в росте.

Для этого мне пришлось вникнуть в собственный исходный код 12-летней давности, и вспомнить язык АвтоЛИСП. Я тут поступил довольно просто: скопировал какую-то часть исходного кода (только по-другому обозвав некоторые функции), и там его стал корёжить. За основу было взято то, что касалось поддержки параболоидов. Но всё оказалось очень просто. Все вычисления с этими поверхностями 2-го порядка сводятся к решению квадратного уравнения, что уже было с параболоидами. Но тут даже всё оказалось гораздо проще, чем с параболоидом. Дело в том, что параболоид (т.е. случай с эксцентриситетом = 1.0) - это вырожденный случай. При некоторых вычислениях получается так, что некая величина, которой надлежит стоять в каком-то знаменателе, обращается в 0, и как результат - ошибка "Divide by zero". На самом деле при этом одно из двух решений (например, пересечение параболоида с прямой линией) уходит на бесконечность, и физически не существует. Этот случай принципиально отличается от наличия одного, но кратного решения (когда линия касательна к параболоиду). Это происходит тогда, когда пересекающая линия (модельный луч света), падающий на параболоид, параллельна его оси (вполне реальный случай при модельных вычислениях). И даже при малом отличии (когда угол падающего луча света к оси параболоида измеряется секундами и долями секунды) второе решение оказывается в сотнях тысяч и даже миллионах километров от зеркала (где находится вершина параболоида, фокус, и действуют все разумные ограничения). Такие случаи тоже приходилось принудительно отслеживать, распознавать и отбрасывать. С параболоидом всё это приходилось предусматривать особо, и делать соответствующие проверки. А с поверхностью любого другого эксцентриситета такого уже просто быть не может. Фактически, если при вводе данных эксцентриситет оказывается задан в пределах от 0.9999 до 1.0001 (1.0+-1.0E-4), а его квадрат находится в пределах 1.0+-2.0E-4, то второй фокус или дополнительное пересечение с осевым лучом лежит в десятках километрах или ещё дальше, то тут уже целесообразно тип поверхности принудительно приводить к параболоиду (считать её параболоидом и описывать как параболоид), поддержка которого уже реализована ранее. Величина отклонения поверхности от "расчётной" формы, которая получается в результате такого округления, обычно не превышает тысячной доли лямбды. Ею заведомо можно пренебречь. А для "общего" представления поверхности второго порядка с заданным эксцентриситетом можно считать, что этот эксцентриситет никогда не обращается точно в 1.0 (описания таких поверхностей просто не генерируются, а заменяются на параболоиды). Распознавать эксцентриситет = 0 (сферическая поверхность) оказалось нецелесообразно, хотя сфера как самостоятельный тип поверхности тоже уже поддерживалась. Тут просто имеет место другое представление (возможно, более сложное для вычислений, ну и что с того?), но результат получается идентичным тому, который получается со сферой (как самостоятельным типом поверхности). Никаких артефактов, особых случаев, больших ошибок, неопределённостей и т.п. при значении эксцентриситета близком к 0 не наблюдается. Просто, время вычислений увеличивается даром.

Кстати, эксцентриситет (или его квадрат, в зависимости от выбранного способа задания параметров) можно задавать и отрицательным. Условно это понимается как мнимый эксцентриситет (т.е. отрицательным понимается его квадрат), что характерно для сплюснутого сфероида. Сплюснутые сфероиды применяются для камер Райта. Так же и здесь, если строить ряд поверхностей, последовательно задавая для них различные эксцентриситеты с малым шагом (например,  0.1, 0.05, 0.0, -0.05, -0.1...), то можно видеть как обычный вытянутый эллипсоид плавно переходит в сферу и далее в сплюснутый сфероид. Такое уж тут принято условное соглашение. Просто вместо заворота на мнимую ось он этот параметр продолжается в отрицательную область. Зависимость свойств поверхности от параметра "эксцентриситет" здесь такая же непрерывная и гладкая. Сплюснытые сфероиды описываются отрицательными значениями параметра "эксцентриситет", хотя, возможно, это не очень вяжется с физическим (геометрическим) смыслом этой величины в общепринятом её понимании. Но эдесь это разрешено.

Ещё из дополнительных удобств и возможностей.

- Теперь, когда запрашивается имя модельного тела, можно сделать пустой ввод (нажать Enter), и тогда по новому запросу программы можно указать курсором мышки на изображение тела, которое отрисовано в графическом окне. Если указано не то (в этом месте нет объекта, либо этот объект не относится к визуальной модели какого-либо модельного тела), то возобновляется запрос на ввод имени тела (можно снова дать пустой ввод, и тогда снова выбирать на чертеже). Но выбор модельных тел указанием на чертеже возможен только в том случае, если все они отрисованы (регенерированы) в данном сеансе работы с чертежом. Так, если отрисовка была произведена в прошлом сеансе, то этот способ не работает (не будет распознавать тела по их изображениям). Такой выбор запрашивается при всех операциях редактирования (перемещения, поворота, удаления) модельных тел, как параметризованных, так и обычных (непараметризованных).

- Добавлена новая команда-функция C:DIFRSPOT (её вызов осуществляется вводом команды DIFRSPOT). Она вычисляет размер дифракционного кружка Эри, и рисует окружность соответствующего диаметра (радиуса). В качестве исходных данных она запрашивает указание прямоугольной области на чертеже. Эту область должен пересекать пучок линий, который являет собой модель светового пучка. Для получения адекватного результата следует выбирать прямоугольник, через который однократно проходят ВСЕ лучи сходящегося светового конуса (это должен быть результат трассировки лучей света вблизи своего эквивалентного фокуса). Чем-то это напоминает работу с командой-функцией SELFRAG. Но здесь можно указать и область, в которой целиком содержится уже готовый результат выполнения команды-функции SELFRAG, в том числе и развёрнутый, масштабированный, перемещённый... (это может быть вынесенный фрагмент, спот-диаграмма), но тут важно, чтобы туда попали все лучи (или их вынесенные фрагменты). Размер кружка Эри вычисляется на основании анализа разброса направлений всех лучей света (линий), проходящих через выделенную область. При этом дополнительно анализируется симетричность и равномерность этого разброса. Имеет значение только разброс направлений, когда как разброс положений этих линий не учитывается (принимается допущение, что этот разброс пренебрежимо мал по сравнению с эквивалентным фокусом оптической системы). Фактически, этот разброс соответствует относительному отверстию в эквивалентном фокусе. По нему однозначно вычисляется размер кружка Эри (для длины волны 0.555 мкм - жёлто-зелёного цвета, к которому глаз имеет максимум чувствительности). Кружок Эри отрисовывается на текущей рабочей плоскости в чертеже, и кроме того текстовая информация выводится на экран. Центр отрисовываемого кружка располагается в центре той прямоугольной области, как она была указана. Также на экран выводится условная оценка надёжности вычисленного значения (1-5), которая зависит от того, насколько симметричен и равномерен разброс направлений линий, по которому оно вычислялось. Если пучок света нигде не виньетирован, его угол к оптической оси не превышает 12 градусов, то как правило, результат оценивается как "надёжный" (5). Если линии имеют неправильный, асимметричный разброс направлений, то результат оценивается как "сомнительный" (1) или "ненадёжный" (2). Условные оценки 3-4 означают, что результату, как правило, можно верить с точностью 10%. В случае сомнительной и ненадёжной оценки (1-2), результат (диаметр или радиус кружка Эри) как правило занижается (может быть занижен в 2 раза).
Обычно, с размерами кружка Эри сравнивается пятно рассеяния, которое получается в результате аберраций. Это пятно должно входить (а лучше - с 2-3-кратным запасом) в кружок Эри. Тогда можно считать, что данная рптическая система обеспечивает дифракционное качество (расчётное). В реале, конечно, всё зависит ещё и от точности изготовления оптических деталей. Но если даже модельная система (которая "идеальна" в плане соблюдения заданной формы поверхностей, толщин, соосности и т.п.) даёт некоторые расчётные аберрации, то реальная может быть только хуже.

- Добавлена возможность создания и повторной отработки сценариев трассировки (команды-функции C:OPTRMAKE и C:OPTRREP). Они позволяют создавать и многократно отрабатывать трассировку широких модельных пучков света при идентичных начальных условиях (избегая муторного ввода параметров трассировки для команды-функции OPTRACE).

Изменены и примеры. Например, оказалось, что тот пример из книжки Л. Л. Сикорука, который он привёл для менисковых систем (менисковый Ньютон, построенный Р. Тутиллом) у меня был задан не с тем стеклом для мениска (там у меня были забиты данные на какой-то сверхтяжёлый крон, которые просто оказались у меня под рукой, а на самом деле стекло К8 (самый распространённый обычный крон) даёт гораздо лучший результат). Кстати, у Сикорука там есть ошибка. Ну, никак не получается при указанных расстояниях получить тот вынос фокуса, который заявлен там. Либо надо вторичку пододвинуть к главному, либо фокус Ньютона получается утопленным. Впрочем, при внимательном рассмотрении это видно без всякого моделирования. Если учесть, что рефракция мениска практически нулевая...

Кроме того, ЗДЕСЬ прилагаются утилиты для преобразования исходных текстов программ на языке АвтоЛИСП. Подробнее см. файл README.TXT в архиве UTILS.ZIP. В частности, можно адаптировать лисп-файлы к разным версиям ACAD (под DOS, Windows, русским, английским), структурировать и деструкттурировать исходный текст, максимально конденсировать (сжимать) текст программ, одновременно тем самым защищая его от прочтения (сконденсированный текст программ, хоть и исходный, но практически нечитабельный для человека). Там же есть батные файлы, которые организуют обработку (преобразование в самих себя) всех лисп-файлов (или других файлов указанного типа) в текущем каталоге.
« Последнее редактирование: 05 Авг 2005 [17:23:53] от Дрюша »

Оффлайн ДрюшаАвтор темы

  • *****
  • Сообщений: 4 947
  • Благодарностей: 98
  • Вы сышите только мой голос...
    • Сообщения от Дрюша
Re: Моделирование оптических систем в AutoCAD
« Ответ #6 : 29 Дек 2005 [21:02:55] »
Очередное обновление на 29.12.2005
За время, прошедшее с последнего обновления этой программы (на 5 августа 2005 г) утекло много воды. Хотя тут никаких отзывов так и не появилось, но по статистике видно, что програму скачало более 40 человек. Надо думать, среди них и те (около 20), которые ознакомились с первоначальной версией этой программы (которая лежала с мая по июль 2005), но к ним добавились ещё новые люди. Ещё примерно столько же народу скачало её на конференции Старлаба, куда я её тоже выкладывал, хотя я не знаю, как тут учитывать возможные повторные скачивания. Но так или иначе, я полагаю, что где-то около 50 человек ознакомилось с этой программой, и среди них найдётся хотя бы десяток, у которых всё получилось, и кому всё это интересно. А что отзывов нет... Ну, наверное, значит, нет никаких нареканий и особых поводов для критики.

Я тут и сам кое-чего считал на ней, да и вообще... Даже тут, на этой конференции я кой-чего из своих результатов выкладывал: про линзу Барлоу, линзовый компенсатор сферической аберрации... Даже схему контроля (нуль-тест) для кассегреновских систем сам придумал (а придумал ли её кто-то ещё кроме меня - не знаю, я тут спрашивал, а мне не ответили).  Ну, короче, программа не стояла на месте, и я её продолжал дорабатывать. По своим собственным ощущениям, чего там явно не хватает, без чего работать было просто тяжело. Ну и ошибочки кой-какие исправлял по ходу дела. Ошибки мелкие и некритичные. Например, при повороте модельных тел (команды-функции C:OPROTATE и C:OP_PRM_ROTATE) по умолчанию предлагалось значение угла "Oppozite" (то есть, на 180 градусов), но на самом деле пустой ввод не принимался, а угол надо было вводить конкретно (или хотя бы ключевым словом типа Right, Left, Oppozite). Там же (тоже при повороте тел) при задании оси поворота предлагалось сделать пустой ввод, и далее указать линию на чертеже. При пустом вводе действительно появлялся режим выбора (указания) объекта, но никакой объект (линия на чертеже) в качестве оси поворота не принимался. Можно, конечно, было вводить ось по точкам (в том числе, с объектной привязкой), но программа не делала того, что сама же предлагала. И ещё где-то подобный глюк, похоже, был. Потому я сразу и не заметил те глюки, что те ветки алгоритма очень редко когда бывают нужны.

Ну вот, короче, обновление. Сами обновлённые файлы лежат здесь. В этом посте поместились только программы. Но теперь вместо одного архива с лисп-модулями (который назывался OP4ACAD1.ZIP) стало два архива: OP4ACAD0.ZIP и OP4ACAD1.ZIP .  Это связано с тем, что теперь все лисп-модули не помещаются в один архив ёмкостью до 80 Кб, и я раскидал их по двум.

Чего нового.

1. Группировка модельных тел и поддержка групповых операций над группами модельных тел. Если конкретно и на пальцах, то группой тел можно объявить любую совокупность из нескольких модельных тел: линз, зеркал, призм... Это могут быть разные модельные тела, разных типов (видов, классов): параметризованные, непараметризованные, осесимметричные (тела вращения), плоскогранные призмы, какие там ещё есть (и могут появиться в дальнейшем...). Группой можно сделать склейку линз (ахромат, триплет и т.п.), целостный блок (окуляр, фотообъектив, короче, некую целостную оптическую систему в сборе). Над такой группой тел можно выполнять групповые операции: перемещать, поворачивать, копировать её как единое целое. Кроме того, на уровне групп (и только как групповая операция) реализован экспорт-импорт групп модельных тел в отдельные файлы, через которые возможна их передача между моделями. Если надо передать между моделями одно модельное тело, всегда можно оформить группу из одного этого тела, и экспортировать-импротировать её. Таким образом, между моделями можно передавать одиночные модельные тела.

2. Полноценная поддержка параметризованных моделей с ВЫЧИСЛЯЕМЫМИ параметрами. Первоначально (при формировании параметризованного модельного тела) все его параметры задаются конкретными значениями - числовыми константами. Но при редактировании параметризованного модельного тела командой-функцией OP_PRM_EDIT (C:OP_PRM_EDIT) можно заменить параметр-константу на параметр, заданный переменной или формулой. Формулы могут иметь одну из следующих синтаксических форм:
- лисп-выражения (вызов функции на языке АвтоЛИСП в синтаксисе ЛИСПа)
- обычное выражение с инфексной записью операций - как в большинстве "обычных" языков программирования (кроме Лиспа) и по-человечески.
- переменная или константа как тривиальный частный случай, одинаково понимаемый с позиций лисп-выражений и "обычных" инфексных выражений.
Вычисляемые параметры могут зависеть от глобальных переменных среды АвтоЛИСПА, которые автоматически сохраняются вместе с моделью оптической системы. Об этом заботится процедура сохранения модели оптической системы в файле.
Смысл всего этого таков. Зачастую некоторые параметры, относящиеся к разным телам или поверхностям одного тела (это без разницы) должны быть связаны для обеспечения некой логической зависимости (например, из чисто геометрических соображений). Иногда удобно варьировать только немногими (внешними) конструктивными параметрами, такими как апертура, фокусное расстояние, вынос фокуса, линейное (или угловое) поле зрения. Другие же параметры, менее очевидные (радиусы кривизны и эксцентриситеты поверхностей, толщины, размеры вторичных зеркал, расстояния между оптическими элементами, и т.п.), которых и по количеству больше, и по степени понятности меньше, но они, очевидно, находятся в жёсткой зависимости от первых... Ну, короче, всё понятно, только нудно и противно. А связь жёсткая и однозначная. Ну, один раз можно постараться, вбить формулу, и дальше забыть о ней. Дальше можно искать, например, оптимальное сочетание параметров, при котором, скажем, полезное поле зрения (ограниченное аберрациями комы, астигматизма и т.п.) соответствует конструктивным ограничениям.
Как примеры см. p_kasseg.lnz - параметризованный Кассегрен и p_right.lnz - параметризованный Райт-Ньютон, построенные на вычисляемых параметрах, зависящих от немногих глобальных переменных. Этими глобальными переменными задаются самые понятные и осязаемые конструктивные параметры системы. Посмотреть и изменить эти переменные можно (вновь введённой) командой-функцией OP_PRM_EDVAR (C:OP_PRM_EDVAR). Изменив эти параметры можно изменить всю модель, но при этом она остаётся внутренне согласованной. Впрочем, параметризованный Кассегрен в виде такой модели потерял фактическую актуальность ввиду наличия отдельного модуля, специально для обсчёта Кассегренов, Ричи-Кретьеннов и Долл-Керкэмов... Он имеет чисто иллюстративный характер.

3. Отдельный модуль для генерации моделей кассегренновских и кассегрено-подобных систем (классический Кассегрен, Ричи-Кретьен, Долл-Керкэм-Максутов, разновидность со сферическим ГЗ). Расчёт компоновки, радиусов кривизны, эксцентриситетов... Кроме того, там реализован экспорт-импорт данных в/из файлы(ов) типа ".OPT" для программы "Бленды" (BLEND.EXE - расчёт бленд и отсекателей для телескопов системы Кассегрена и Ричи-Кретьена от Д. Маколкина). В частности, можно загрузить (импортировать) все прилагаемые примеры (от Маколкина, Чекалина, Розовики, Навашина, УФТ и др. телескопов). Этот модуль упрощает генерацию конкретных моделей типов оптических систем (кассегрено-подобных).

4. Новые конкретные примеры, соответствующие новым возможностям. Среди них есть не только модели типа .LNZ, но и файлы .OPG - экспортированные группы (для импорта). Например, окуляр ОК40 (Плёссл от НПЗ 40 мм) и ЛБ 2Х от НПЗ же. Кстати, если импорт *.OPG не удаётся из-за несовместимости цветов или чего-то ещёЮ импортировать можно в пустую модель, предварительно выполнив команду-функцию OPCLEAR (C:OPCLEAR).

5. Разработана методика изготовления решётки Ронки для испытания вогнутых зеркал любой формы (параболоидов, гиперболоидов, эллипсоидов, сплюснутых сфероидов, да хоть чёрта с рогами) по методу Ронки-Мобсби. Решётка Ронки предназначена для распечатывания на высококачественном принтере для последующего перефотографирования на плёнку (в негативе или позитиве). Метод изготовления решёток Ронки с помощью данной программы не связан с какими-либо новшествами, и возможен даже с прежней версией этой программы.

6. Для упрощения (а может, и для усложнения) жизни путём автоматической загрузки комплекса OPTIC.LSP, а так же модели оптической системы (*.LNZ) или импорта описания кассегреновской системы от BLEND (*.OPT) одноимённой текущему (открываемому) чертежу (файлу .DWG в AutoCAD), если таковая имеется, а если нет, то таблицы цветов-материалов MATTAB.LSP, написан специальный ACAD.LSP. Вообще, файл с именем ACAD.LSP, если таковой есть в текущей или доступной (по конфигурации) AutoCADу папке, понимается как лисп-файл автозагрузки, и AutoCAD автоматически загружает (и отрабатывает) его при своём старте. Надо это лично Вам или нет - смотрите сами. Автозагрузка помогает новичкам, которые не знают, с чего начать. А как появляется хоть небольшой опыт, то она встаёт поперёк горла. Так вот, вся эта фича сосредоточена в лисп-модуле ACAD.LSP, и если его убрать куда-нибудь подальше, то её не будет.

Подробнее см. whatsnew.txt, который находится здесь же. Документацию я пока не трогал (берите OPTIC.DOC в OP4ACAD2.ZIP с первого поста этой темы - другой нет, если угодно, то этот whatsnew.txt дополняет её до актуальной). Примеры тоже лежат на первом посте в OP4ACAD3.ZIP, они там обновлены и актуальны.

____________________________В связи с обновлением_________________________________

Убираю отсюда OP4ACAD0.ZIP и OP4ACAD1.ZIP как устаревшие. Смотрите далее, в последнем сообщении. Там приклеены более актуальные версии этих архивов под прежними именами. Порядок распаковки тот же.
« Последнее редактирование: 05 Мая 2006 [00:59:12] от Дрюша »

Оффлайн ДрюшаАвтор темы

  • *****
  • Сообщений: 4 947
  • Благодарностей: 98
  • Вы сышите только мой голос...
    • Сообщения от Дрюша
Re: Моделирование оптических систем в AutoCAD
« Ответ #7 : 13 Янв 2006 [15:39:57] »
Насчёт взаимодействия с программой расчёта бленд для телескопов системы Кассегрена и Ричи-Кретьена, которую можно скачать с сайта http://www.shvedun.ru/ или прямо здесь: http://www.shvedun.ru/T.exe. Сам T.EXE - это установщик (самораскрывающийся архив), а установленная программа называется BLEND.EXE. Вообще, эта программа обсуждалась здесь, на этой конференции https://astronomy.ru/forum/index.php/topic,9456.from1120707721/topicseen.html. Её авторы Фидель Горбунов и Владимир Суворов.

Здесь же у меня лежит исправленный модуль KASSEGRN.LSP, который наконец-то научился взаимодействовать с этой программой. Кого интересует расчёт кассегренов, и ричи-кретьенов, а также использование этих данных для расчёта бленд и отсекателей, для них эти исправления могут быть актуальны. Кто уже скачал версию от 29 декабря 2005г, тут я кладу только этот файл. Там же теперь я положил подправленную версию (в архиве OP4ACAD1.ZIP подправлен только файл KASSEGRN.LSP). Хотел я тут обновить ещё и документацию, но тут проблема: обновлённый файл OPTIC.DOC, даже сжатый зипом (и любым другим архиватором) стал занимать больше чем 80 Кб, а этот форум не хочет прикреплять файлы такого размера. Так что, документация пока старая, но к ней есть whatsnew.txt...

Исправления касаются экспорта и импорта данных в/из файлов типа .OPT, которые предназначены для программы "Бленды" (BLEND.EXE). Впрочем, это касается той её версии, которая когда-то выкладывалась где-то здесь, и она там была довольно сыровата (со слов её же авторов). Возможно, сейчас появилась версия посвежее, но я с ней не проверял. Но я полагаю, что исправление глюков и заморочек не должно особо повлиять на совместимость, если только формат файлов OPT не претерпел кардинальных изменений.

Напомню, что экспорт данных осуществляется командой-функцией OPT2BLEND (C:OPT2BLEND), а импорт - командой-функцией OPT3BLEND (C:OPT3BLEND). При отработке этих команд-функций запрашивается имя файла типа OPT (расширение ".OPT" имеется в виду по умолчанию, и его можно не указывать, но если указать явно другое расширение (в том числе пустое: просто точку в конце имени файла), то будет использовано явно указанное расширение). В файле типа OPT сохраняются данные по "текущей" кассегрено-подобной оптической системы (модель телескопа системы Кассегрена либо Ричи-Кретьена, Долла-Керкэма), которая создана и отрисована посредством команды-функции KASSEGRN (C:KASSEGRN). Эта "текущая" кассегрено-подобная система фактически являет собой группу модельных тел (главное и вторичное зеркало, а так же, возможно, две бленды) в составе текущей модели оптической (либо являет собой всю модель, если кроме этих модельных тел там ничего больше нет). Наличие каких-либо других модельных тел и их групп в составе текущей модели оптической системы не имеет значения. Внешние (основные) конструктивные параметры "текущей" кассегрено-подобной системы задаются в диалоге при отработке команды-функции KASSEGRN (C:KASSEGRN), при этом запоминаются и при последующей (повторной) отработке этой команды-функции предлагаются по умолчанию. Эти параметры можно условно считать "текущими". Кроме генерации с помощью команды-функции KASSEGRN (C:KASSEGRN) эта "текущая" модель кассегрено-подобной системы может быть импортирована из файла типа OPT с помощью команды-функции OPT3BLEND (C:OPT3BLEND). Соответствующий файл типа OPT (на самом деле, текстового формата) можнт быть предварительно подготовлен программой BLEND, либо ранее экспортирован посредством команды-функции OPT2BLEND (C:OPT2BLEND). Файл типа OPT содержит в своём составе кроме основных (внешних) параметров кассегрено-подобной системы ещё и данные по блендам. При импорте из этого файла, кроме зеркал (главного и вторичного) формируются также бленды, оформленные как модельные тела в составе той же группы модельных тел. При генерации модели кассегрено-подобной системы посредством команды-функции KASSEGRN (C:KASSEGRN) бленды не расчитываются и не создаются.

Программа "Бленды" (BLEND.EXE) требует задать ей исходные данные, среди которых есть избыточные и весьма нетривиальные. Их надо где-то и как-то расчитать. Например, радиусы кривизны, квадраты эксцентриситетов главного и вторичного зеркал, расстояние между зеркалами... И там же задаётся эквивалентный фокус (наряду с фокусом главного зеркала), вынос фокуса и т.п. Многие эти параметры связаны между собой жёсткой функциональной зависимостью. Зная одни, можно было бы посчитать некоторые другие. Но сама программа BLEND не содержит в себе никаких средств для проведения таких расчётов, а требует ввести эти данные как исходные, откуда-то уже взятые. Но если ею открывается готовый файл типа OPT, который подготовлен моей программой, то там все эти параметры уже заданы и согласованы друг с другом. Моя же программа (команда-функция KASSEGRN) запрашивает для ввода только самые основные и независимые параметры, смысл которых очевиден. Зависимые величины расчитываются ею автоматически. Но в прошлой версии были некоторые проблемы при взаимодействии с программой BLEND. Эти проблемы я сам обнаружил не сразу, но на самом деле они были.

Мне, вроде бы, удалось нащупать особенности формата этого файла, при котором программа BLEND уже больше не ругается на какую-то свою непонятную "ошибку в расчётах". Раньше BLEND почему-то ругалась на мои файлы, и отказывалась их загружать, и только особыми мерами их можно было туда "протолкнуть". Теперь, вроде бы, она их "глотает" сразу без ругательств. По большому счёту это не принципиально, но теперь стало красивше.

Кроме того, при экспорте данных в такой файл (но только первый раз в данном сеансе работы с AutoCAD) моя программа спрашивает, какой разделитель целой и дробной части в числах там использовать (можно указать ключевое слово Comma - запятая по-русски, либо Dot - точка по-английски, она же принимается по умолчанию). Сама программа BLEND в таком качестве использует точку или запятую в зависимости от версии (национальной локализации) или глобальных настроек "Язык и стандарты" операционной системы Windows. В русской версии Windows по умолчанию (а так же в прилагаемых файлах примеров) используется запятая. Лично я свою машину настроил на точку, но у большинства пользователей русской версии Windows по умолчанию стоит запятая. Прежняя версия моей программы была ориентирована только на точку, поэтому она не могла нормально взаимодействовать с BLEND без особых мер в русской версии Windows. Программа BLEND устроена так, что она "не понимает" даже свои же собственные файлы типа OPT, подготовленные в другой версии (при других настройках) Windows. Но моя программа теперь может сама настроиться на общий язык с BLEND "по факту". Для этого придётся ответить на вопрос о разделителе в числах при первой попытке экспорта данных в файл типа OPT. Если у Вас русский Windows, и Вы не меняли настроек "языка и стандартов" (лично я у себя поменял, но это мне надо было для других целей), то там следует ввести "Comma" (достаточно даже только первой буквы "C"). В противном случае можно принять "Dot" (можно "D" или пустым вводом по умолчанию), но тогда и все примеры, прилагаемые к программе BLEND (в папке "Системы", которая расположена там, куда установлена сама программа BLEND) не годятся для открытия в BLEND, и должны быть преобразованы. Преобразовать их мо

Кстати, при импорте файла типа OPT (от программы BLEND или из прилагаемых к ней примеров) моя программа теперь с одинаковым аппетитом "ест" файлы и с точками, и с запятыми, и паче того, при этом она сама автоматически настраивается на тот или иной разделитель, который там фактически используется, и делее учитывает (не задавая лишних вопросов) при экспорте данных в файлы типа OPT для этой программы BLEND. В частности, можно импортировать любой пример, прилагаемый к программе BLEND (в папке "Системы"). Моя программа нарисует и саму оптическую систему, и даже бленды, и может использовать эту модель для трассировки лучей... А можно и слегка модифицировать её (например, заменить систему "Кассегрена" на "Ричи-Кретьена" или "пошевелить" любой исходный параметр, оставляя другие без изменения), и снова экспортировать, загрузить и пересчитать в BLEND, там сохранить, и импортировать опять ко мне...

Экспортируя данные в файл типа OPT командой-функцией OPT2BLEND (C:OPT2BLEND) моя программа расчитывает свой вариант бленд. Если этот файл тут же снова импортировать командой-функцией OPT3BLEND (C:OPT3BLEND), то эти бленды будут построены и отображены как дополнительные модельные тела в составе модели кассегрено-подобной системы. Их можно посмотреть и образмерить средствами AutoCADа. Эти модельные тела никак не "преломляют" и не "отражают" модельные лучи света, но могут задерживать (поглощать) модельные лучи при трассировке, если эти лучи вдруг попадут на "чёрную" боковую поверхность бленды. Но эти бленды располагаются так, что все "правильные" модельные лучи света, которые могут участвовать в формировании изображения в пределах заявленного (заданного в основных параметрах) линейного поля зрения, никогда не попадут на боковые поверхности этих бленд. На боковые поверхности бленд могут попасть только "паразитные" лучи. Так вот, этот вариант бленд, который расчитывает моя программа, является не оптимизированным, и отличается от результатов, предлагаемых программой BLEND (которая делает полную оптимизацию). Совпадают эти результаты только для нулевого поля (невиньетированного и незасвеченного). Мой (неоптимизированный) вариант бленд обеспечивает одинаковое невиньетированное и незасвеченное линейное поле зрения (которое задано в основных параметрах, невиньетированное и незасвеченное принимаются равными друг другу). Он также характерен тем, что если снять бленду со вторичного зеркала (и тогда появится засветка), то бленда на главном зеркале нигде не будет виньетировать свет или увеличивать эффективное ЦЭ. Но при наличии бленды на вторичном зеркале ЦЭ у меня получается несколько больше, чем в оптимизированном варианте (который расчитывается программой BLEND). Насколько это "больше" критично - смотрите сами.

Программа BLEND, открывая файл типа OPT (тут предполагается, что формат представления чисел в этом файле и глобальные настройки Windows "Язык и стандарты" cоответствуют друг другу, что уже заранее как-то обеспечено пользователем), автоматически пересчитывает данные для бленд. Если даже в этом файле были приведены какие-то (оптимизированные или не оптимизированные) данные по блендам, эти данные программой игнорируются, и пересчитываются заново. Для сохранения этих расчитанных (оптимизированных) программой BLEND данных по блендам, этот файл надо явно "сохранить" средствами BLEND даже если в исходные данные никаких изменений внесено не было. Если исходные данные сформированы моей программой, то в программе BLEND их менять не надо. При сохранении файла типа OPT, туда записываются расчитанные данные по блендам. Теперь этот файл можно обратно импортировать в мою программу (в среду AutoCAD) посредством команды-функции OPT3BLEND (C:OPT3BLEND), и тогда в текущей модели будут сформированы бленды по параметрам, предлагаемым программой BLEND. Эти параметры более точно оптимизированы чем у меня при экспорте, и ЦЭ с такими блендами получается несколько меньше, чем у меня. Но в этом варианте размеры бленд на главном и вторичном зеркале согласованы друг с другом так, что если снять бленду со вторичного зеркала, то это не приведёт к уменьшению эффективного ЦЭ. Бленда на главном всё равно будет затенять по центру ровно столько же, сколько и раньше (но при снятии бленды со вторичного зеркала появляется паразитная засветка). Мыслим ещё и такой компромиссный вариант опримизации бленд, при котором вне оси (в стороне от центра поля зрения) допускается частичное срезание лучей по центру (увеличение эффективного ЦЭ), но за счёт этого допущения размеры бленды на вторичном зеркале и итоговое ЦЭ (для центра поля зрения) можно ещё уменьшить. Но расчёт этого варианта не реализован ни у меня, ни в BLEND. Пожалуй, самым оптимальным вариантом был бы сменный комплект разных бленд, чтобы можно было менять их под разные виды наблюдений. Например, для планетных наблюдений можно было бы задаться нулевым полем (незасвеченным и невиньетированным), обойтись только одной блендой на главном зеркале (которая не виньетирует только в самом центре, но и не увеличивает эффективное ЦЭ). Таким образом, при наблюдении планет можно минимизировать ЦЭ. А для наблюдения комет и дипская, когда нужно большое незасвеченное поле, можно установить другой комплект бленд, расчитанных под данное поле. Можно расчитать несколько комплектов под разные размеры поля: под нулевое, под визуальное (15-20 мм), под фотографическое (43 мм в поперечнике для стандартного кадра 24х36 мм или 70-75 мм для кадра на широкой плёнке 60х60 мм), разные соотношения невиньетированного и незасвеченного поля... Чем больше должно быть поле (то и другое), тем больше будет ЦЭ. Следует учесть, что ЦЭ > 30% заметно портит дифракционную картину, но для фотографических целей это не столь существенно (фотографические телескопы с достаточно широким полем могут иметь ЦЭ 45-50%, что приводит к затенению 20-25% света). Следует заметить, что если комплект бленд расчитан программой BLEND, то сменными должны быть обе бленды сразу. Моя же программа "предлагает" более простой и универсальный вариант, когда бленда на главном зеркале всегда остаётся одна и та же, а на вторичном она может быть сделана съёмная и сменная. Это проще реализовать конструктивно (например, устанавливать её там на магнитном креплении), а сделать сменную бленду на главном зеркале значительно сложнее.

______________________ В связи с обновлением______________________________________ ___

Убрал отсюда (это тут второй экземпляр даже был) приклеенный файл OP4ACAD1.ZIP как устаревший. См в самом последнем сообщении этой темы более актуальные версии архивов OP4ACAD0.ZIP и OP4ACAD1.ZIP под прежними именами. У кого установлены те версии - просто заменить файлы новыми. В документации и примерах обновлений нет (берите какие есть их тех сообщений этой темы, где они фактически лежат).
« Последнее редактирование: 05 Мая 2006 [01:09:28] от Дрюша »

Оффлайн Leonid_F

  • ***
  • Сообщений: 131
  • Благодарностей: 1
    • Сообщения от Leonid_F
Re: Моделирование оптических систем в AutoCAD
« Ответ #8 : 15 Янв 2006 [20:37:20] »
Дрюша, привет! Что там про бленды так много? Конструктор я по призванию и по недавней жизни. Свой Р-К полтора года держал на кульмане, - воплотил и не нашел крамолы. Да, Ваша программа черезвычайно для меня актуальна и желаема, предыдущие релизы все скачал, но ACAD2000LT их не поддерживает, - поставлю нормальную версию. Надо проверить влияние величины выноса фокуса на вносимые аберрации, если вынос изменять на сотню мм от расчетного. Михельсон приводит противоречивые формулы и у других авторов их в явном виде нет. Практически, влияние улавливается на уровне предела восприятия глаза. А бленды и отсекатели и их оптимизация с карандашом много нагляднее.
Leonid_F

Оффлайн Дядя Вова

  • *****
  • Сообщений: 8 084
  • Благодарностей: 95
    • Сообщения от Дядя Вова
Re: Моделирование оптических систем в AutoCAD
« Ответ #9 : 15 Янв 2006 [20:49:40] »
А дайте, пожалуйста, примерчик. Что бы поиграться.
(Vixen ED80+Canon300Da, 9x50+QHY5)+EQ6upg
Meade ETX-90PE

Оффлайн ДрюшаАвтор темы

  • *****
  • Сообщений: 4 947
  • Благодарностей: 98
  • Вы сышите только мой голос...
    • Сообщения от Дрюша
Re: Моделирование оптических систем в AutoCAD
« Ответ #10 : 16 Янв 2006 [22:21:58] »
Примерчики у меня все лежат в архиве OP4ACAD3.ZIP, который приклеен к первому посту (недавно я его обновлял путём редактирования.
ACAD LT не поддерживает АвтоЛИСП. Нужен настоящий ACAD (который стоит, между прочим, те же 70-80 рублей, что и любой компакт-диск с крякнутым софтом). Лично я не вижу смысла ставить кастрированные версии ACAD, и, виноват, даже не учёл факта их наличия. Надо было оговорить.

Насчёт бленд. Я написал, что мой расчёт не оптимизирован. Больше стоит доверять программе BLEND.EXE ("Бленды"), ссылку на которую я туда поместил. Я дико извиняюсь, что с самого начала не указал, о чём идёт речь, и даже автора неправильно указал. Сейчас я исправил сам тот пост. Там и ссылки добавлены, и авторы указаны. Там, в той программе честно реализован расчёт по формулам Федера, которые взяты из книжки Михельсона, но в той книжке была ошибка (опечатка), которая в этой программе исправлена... Что я сделал (и так долго описывал в своём прошлом посте) - это экспорт-импорт файлов в формате той программы. Сделав примерчик кассегреновской системы у меня, его можно экспортировать в файл типа ".OPT", открыть его с помощью BLEND.EXE, там он будет пересчитан, и его надо сохранить, а потом можно обратно импортировать ко мне. Расчёт бленд - не такая уж и тривиальная задача, особенно если различать "невиньетированное" и "незасвеченное" поле. Не сразу бывает ясно, а чего, вообще, самому хочется. Можно сделать большое незасвеченное и невиньетированное поле ценой большого ЦЭ. Если это не нравится, то можно, например, уменьшить невиньетированное (вплоть до нуля). Незасвеченным тоже пошевелить интересно. И посмотреть бы динамику всего этого при изменении разных параметров. Так ли много мы теряем, закладываясь на такое-то поле? ну и т.д. А "карандашом и бумагой" (как это рекомендуется у Наумова, например), во-первых, решается задача только "в одну сторону", во-вторых, там не всё оптимизировано (принимаются некоторые упрощающие допущения, при которых результат будет не самый точный и не самый оптимальный). И, наконец, есть вероятность что-то упустить из виду. Например, когда бленда на главном зарезает центр, и тем самым даёт увеличенное ЭФФЕКТИВНОЕ ЦЭ, что отнюдь не очевидно даже глядя на чертёж. Ну, в общем, похоже на "скрытое диафрагмирование".

Ещё я извиняюсь, что в якобы "подправленном" посте от 29 декабря я на самом деле положил старый файл OP4ACAD1 со второй частью своих программ. Теперь подновил (кто его скачал - скачайте снова). Там же подправлен ACAD.LSP, чтобы он не открыват галимое текстовое окно (это он зря делал).

И в прошлый релиз KASSEGRN.LSP я тоже внёс изменения (и в OP4ACAD1 он подновлён по сравнению с 13 января). Изменения таковы.

Кроме модельных зеркал (главного и вторичного) в состав этой группы могут быть включены другие модельные тела: светозащитные бленды и "терминатор" - чёрная плоская поверхность круглой формы, которая поглощает попадающий на неё свет. Этот "терминатор" располагается вблизи фокальной плоскости, но не на ней самой, а примерно в 2 мм позади неё. Размер его примерно соответствует размеру невиньетированного поля зрения, но тоже с запасом около 1 мм. Этот запас гарантирует, что весь свет от трассируемого модельного пучка, который соответствует условиям (отражается от зеркал, и относится к изображению в пределах заявленного поля зрения. Отстояние "терминатора" на 2 мм от предполагаемой фокальной плоскости также гарантирует, что истинный фокус (оптимальное сечение пучка по какому-либо критерию) будет располагаться перед ним, и можно будет проследить поведение пучка вблизи фокуса (найти оптимальное сечение, продольную и поперечную аберрацию...).

Для облегчения трассировки модельного пучка света через модель телескопа системы Кассегрена (или касегрено-подобной модификации, которые поддерживаются здесь) реализована команда-функция KASS_TRACE (C:KASS_TRACE). Эта команда-функция трассирует модельный пучок света ТОЛЬКО через модель кассегрено-подобной системы, которая сформирована командой-функцией KASSEGRN (C:KASSEGRN) либо импротирована из файла типа OPT командой-функцией OPT3BLRND (C:OPT3BLEND) в этом же сеансе работы в AutoCAD. Если эта группа или какое-либо модельное тело в её составе (главное или вторичное зеркало) были модифицированы другими средствами (перемещены, повёрнуты...), то команда-функция KASS_TRACE (C:KASS_TRACE) не будет с ней работать. Она использует данные, по которым построена эта модель и закладывается на определённое размещение модельных тел, которое обеспечивается при генерации моделей кассегрено-подобных систем средствами именно этого програмного модуля (KASSEGRN.LSP). Эти данные сохраняются в памяти АвтоЛИСПа, и предлагаются по умолчанию как "текущие" при отработке команды-функции KASSEGRN (C:KASSEGRN), но не все они явным образом содержатся в самой модели (внутреннем представлении модельных тел и их групп). Только когда модель кассегрено-подобной системы сформирована (пересчитана или импортирована) в данном сеансе, эти данные оказываются согласованы, и только в этом случае возможна трассировка посредством команды-функции KASS_TRACE (C:KASS_TRACE). Эта команда-функция фактически формирует и отрабатывает сценарий трассировки с помощью команды-функции OPTRACE (C:OPTRACE), но берёт на себя ввод параметров трассировки (который достаточно муторный и при ручном вводе требует внимательности). Здесь же задаются типовые условия трассировки, которые вычисляются автоматически. Из запрашиваемых и вводимых вручную данных есть только один параметр, который фактически означает желаемое линейное расстояние изображения точки (фокуса) от оптической оси (центра поля зрения) в фокальной плоскости эквивалентного фокуса Кассегрена. Вообще, этот параметр довольно нетривиально связан с начальными условияи трассировки, и соответствующие начальные условия (стартовая точка, направление) при ручном вводе надо было бы вычислять. Здесь же они вычисляются автоматически. Несоответствие задаваемого параметра и реального положения изображения точки (центра оптимального сечения модельного пучка) возможно вследствие различных аберраций. Начальные условия трассировки вычисляются исходя из идеализированной оптической системы без учёта аберраций (комы, астигматизма, кривизны поля, дисторсии). Расстояние ожидаемого изображения точки от оси можно задавать в миллиметрах (т.е. в линейной мере), либо в процентах радиуса заявленного поля зрения (которое обеспечивается невиньетированным). В процессе работы этой команды-функции также вычисляется и выводится на экран это расстояние в угловой мере (в пространстве предметов). По умолчанию предлагается взять точку на самом краю заявленного поля зрения, т.к. именно этот случай наиболее интересен с точки зрения аберраций (на оси-то они обычно правятся в 0, что это даже не интересно) и проверки правильности всех размеров (вторичного зеркала, бленд, отсекателей). Конечные условия трассировки обеспечиваются специальным модельным телом - "терминатором", который располагается вблизи фокальной плоскости (но примерно в 2 мм позади неё). Когда все модельные лучи трассируемого модельного пучка света поглощаются какой-нибудь чёрной поверхностью, то ввода условий завершения не требуется. Ах, да, а количество шагов по диаметру здесь всегда задаётся жёстко, и составляет 20, таким образом получается 250-300 модельных лучей (из 400=20*20 выбираются только те, которые попадают на главное зеркало (вписанный круг квадрата 20*20), и не экранируются вторичным зеркалом. Но это уже хорошая точность и количество лучей достаточно для статистических оценок. Поскольку зеркальная система ко всем цветам одинакова, трассировка производится только цветом N 1 (обычно это "Red" - понимаемый как "красный", но здесь это не важно). Количество "лучей" и время вычисления получается примерон такое же, как и при 10 шагах (при разбиении 10*10) в трёх цветах.

« Последнее редактирование: 16 Янв 2006 [23:28:37] от Дрюша »

Оффлайн ДрюшаАвтор темы

  • *****
  • Сообщений: 4 947
  • Благодарностей: 98
  • Вы сышите только мой голос...
    • Сообщения от Дрюша
Re: Моделирование оптических систем в AutoCAD
« Ответ #11 : 17 Янв 2006 [22:21:23] »
Ещё раз насчёт примерчиков
А дайте, пожалуйста, примерчик. Что бы поиграться.

Насчёт примеров чтобы поиграться.

Примеров - чего? Тут можно разное захотеть. И, соответственно, предложить. Можно предложить готовые примеры моделей оптических систем в виде файлов типа *.LNZ . Можно экспортированные группы модельных тел для импорта в виде файлов типа *.OPG (их можно вставить в текущую модель, не вытесняя последней). А ещё есть возможность импортировать данные из файла формата OPT (*.OPT), который, вообще, создаётся программой BLEND.EXE, и предназначен для неё. Вместе с той программой прилагаются свои примеры, и их можно импортировать в OPTIC. Тогда будет построена модель кассегрено-подобной системы (какой там фактическии есть: классический Кассегрен, Ричи-Кретьен, Долл-Керкэм и т.п.) с блендами.
В архиве OP4ACAD3.ZIP лежат примеры файлов типа *.LNZ и даже парочка *.OPG .

Или нужны какие-то другие "примеры"? Какие? Примеры чего? Листинги диалога с программой? Снимки экрана (окон) AutoCAD? Подробные инструкции, про то, как что конкретно можно сделать? По идее, даже и это всё есть, только разбросано по разным файлам.

Наглядный пример выполнения построений с помощью моей программы и штатных средств AutoCAD с соответствующими картинками приведён у меня в теме "Решётка Ронки" в разделе "Телескопосторение, оптика". Там приложет ZIP-архив, в котором есть DOC для Word, и там всё подробно с картинками. Конкретно, как создать решётку Ронки. Это, кстати, было бы неплохой практикой в смысле "поиграится". Если Вы сумели нарисовать решётку Ронки по той инструкции - значит уже поняли, что к чему.

Ну и в файле документации OPTIC.DOC, который покоится в OP4ACAD2.ZIP (последний прикреплён к первому посту этой темы - см. её начало), в самом его конце приведён листинг диалога с AutoCAD. Там и создание модельных тел, и трассировка... Простейшие вещи, но какие примеры ещё нужны? Сложнейшие? Я думаю, что примеров у меня дано больше чем достаточно, а насчёт ликбеза по работе с AutoCAD вообще - я тут себе такой задачи не ставил. Разумеется, у меня здесь предполагается некоторое знакомство с системой AutoCAD.

Тут я могу ещё раз прокомментировать примеры, прилагаемые в OP4ACAD3.ZIP . Что с ними можно можно делать?

Прилагаю тут текстовый файлик, где подробнее комментируются примеры и приёмы работы для начинающих.

Оффлайн ДрюшаАвтор темы

  • *****
  • Сообщений: 4 947
  • Благодарностей: 98
  • Вы сышите только мой голос...
    • Сообщения от Дрюша
Re: Моделирование оптических систем в AutoCAD
« Ответ #12 : 05 Мая 2006 [01:32:14] »
В эти майские дни между праздниками исполняется ровно год, как я впервые выложил первый публичный релиз своей разработки. Здесь и дублировал на Старлабе. Потом были обновления в августе, декабре-январе...

Почему-то здесь, по Интернету, я так и не смог получить внятных отзывов, критики или иных рекомендаций и дельных предложений по поводу моей разработки. Ну, что у кого-то не ставится AutoCAD - это проблемы другого характера... Хотя, в общей сложности (здесь, и на Старлабе, но даже не учитывая обновления) программу скачало около 50 человек... Полагаю, что среди них есть хотя бы несколько таких, у кого AutoCAD уже стоял, и они умеют с ним грамотно работать. Иначе, с чего это им было интересоваться моей прогой? Ведь у меня чётко сказано, что она у меня сделана именно под AutoCAD, так что наличие и знание основ последнего  здесь просто предполагается. Или тогда уж придётся чуть-чуть вникнуть. А кто вообще не хочет связываться c AutoCADом, тому она абсолютно бесполезна. К тому же, руководство пользователя по моей программе не является ликбезом по AutoCADу, и знание основных команд, принципов интерфейса и вообще, стиля работы с ним, там предполагается как само собой разумеющееся. Короче, моя программа расчитана на тех, кто уже въехал в работу с AutoCADом.

Но, думаю, что после того как здесь были засвечены ссылки на крякнутый Земакс, Осло, Систем-файв и всякое такое прочее (не демо-версии, а полнофункциональный кряк), да ещё с русскоязычной документацией, то тут, наверное, пропал всякий интерес к таким доморощенным разработкам, как эта у меня. Тут даже не важно, под AutoCAD она или под что-то ещё... Все, кому было интересно, те скачали себе фирменный продукт, и я тоже скачал (хотя, пока ещё не разобрался до конца). Поэтому я, пожалуй, буду потихоньку сворачивать свой проект, и никаких существенных доработок больше не планирую. Хотя, были задумки, но лично мне они не особо нужны, а всем остальным, как видно, - и подавно. Впрочем, все эти задумки касаются верхнего уровня, как, например, модуль насчёт кассегреновских и кассегрено-подобных систем (генерация всей модели, анализ и т.п.). Были подобные задумки насчёт системы Ньютона (она проще Кассегрена, и посему нет такой нужды в особой автоматизации: всё что нужно нетрудно сделать вручную).

И всё же, мне удалось вживую пообщаться по крайней мере с двоими пользователями моей программы, которые ею заинтересовались. Сюда, на эту конфу, они не заходят, так что их имена здесь мало кому чего скажут. Оптикой и телескопостроением они даже вообще не занимаются, к астрономии тоже отношения не имеют, а так, их больше интересовало само по себе программирование под AutoCAD. А моделирование оптики - это не самая тривиальная задача, и она хорошо идёт в качестве примера, демонстрирует возможности программирования под AutoCAD.

Одной из основных претензий, высказанной мне этими пользователями практически хором, было отсутствие меню, экранных форм, и вообще, каких-либо признаков современного пользовательского интерфейса. Это мне, как разработчику, который сам всё писал, и наизусть помнит все свои команды-функции, работать с консольным диалогом казалось более-менее удобно. А юзера со стороны это сильно отпугивает. И наконец-то, я это понял. Тогда я написал некое подобие менюшки. И сразу даже сам для себя понял, что это намного удобнее. Забросив программу и всякую работу с ней на пару месяцев, я и сам порядком подзабыл свои же собственные команды-функции, и менюшка оказалась очень кстати даже мне самому. Там всё расписано по-русски, и достаточно развёрнуто. Для понятливого пользователя нет нужды даже лезть в документацию. Теперь это меню, которое сопровождает комплекс программ OPTIC (и теперь является его частью) само по себе практически исчерпывающе документирует этот комплекс, демонстрирует его основные возможности и т.п. Кроме того, как оказалось, через это самое меню (по факту его установки) стало возможно обеспечить автоматическую загрузку всего программного комплекса OPTIC без использования файла автозагрузки ACAD.LSP, который сам по себе весьма навязчив, и может конфликтовать с другими разработками под AutoCAD (но об этом - далее). Тем не менее, этот файл (по имени ACAD.LSP) в составе комплекса по-прежнему включён (мало ли, кому-то, всё же, с ним окажется удобнее), но он, этот файл, уже совершенно не обязателен для работы с этим комплексом. Его можно не распаковывать, либо перемеситить в другое мест, удалить, переименовать... Ну, кроче, сделать так, чтобы его там не было (то есть, в той папке, где размещаются все другие файлы, относящиеся к комплексу программ OPTIC). Единственное, что придётся сделать, если работать без этого файла, это первый раз вручную инициировать загрузку комплекса программ OPTIC: как это описано в самой старой версии документации вводом командной стоки (LOAD "OPTIC"), и при этом также меню OPTIC будет установлено автоматически, и далее может быть обеспечена автоматическая загрузка этого меню вместе со всеми лисп-модулями комплекса прорамм OPTIC при входе в любой новый сеанс работы AutoCAD. Но можно убрать (переместить, переименовать, удалить) файл ACAD.LSP не сразу, а после первого сеанса работы с OPTIC, когда он обеспечит автоматическую загрузку и "сделает своё дело". Тогда даже не надо заморачиваться с ручной загрузкой в первый раз.

И вот, я выкладываю здесь последний релиз своей программы, которая дополнена меню. Возможно, что он будет и в самом деле последним, поскольку я сам как-то уже потерял интерес к дальнейшему развитию этого проекта. Чего было нужно лично мне, моя программа уже давно умеет, а кому-либо ещё, похоже, вообще ничего не нужно. Опоздал я с ней, наверное, лет на 15-20. Документацию я тоже не стал править и дописывать.

Тут прилагается ещё текстовый файл OP_MENU.TXT с подробными пояснениями по этому обновлению, реализованному там меню и всему такому прочему. Если угодно, то этот текст можно считать дополнением к документации. Поэтому по порядку: чего нового реализовано, и что с ним делать.

А так, кроме меню я исправил одну ошибочку в модуле OPRIZM (для одного из вариантов ввода параметров при построении модели плоскогранной призмы по отдельным плоскостям) и изменил некоторые сообщения-подсказки на более понятные. А кроме того я исключил навязчивые (и глупые) вопросы пользователю типа "Надо ли отрисовывать (перерисовывать) модель?" после создания или изменения какого-нибудь тела. Теперь без вопросов - конечно же надо! Этот запрос когда-то был введён для обеспечения возможности отказа от немедленной перерисовки (на самом деле при этом перерисовывалась вся модель оптической системы, а не только это одно модельное тело, которое было создано или модифицировано). Это было актуально при работе на 286-х компьютерах (AutoCAD тогда был версии 10.х-11.х под MS DOS), тогда эта перерисовка длилась до нескольки минут, и естественно было желание не ждать перерисовки после каждой операции, а сделав несколько операций (по созданию и изменению модельных тел) потом уже выполнить одну общую перерисовку и визуальное отображение всех изменений. Но сейчас на современных компьютерах перерисовка модели длится от долей секунды до нескольких секунд (даже на старом  PII), и это стало уже не актуально. К тому же все более новые операции (над параметризованными телами и группами тел) изначально уже были реализованы без такого запроса, поскольку ко времени написания этих модулей он был уже не актуален. Теперь, вроде бы, моя программа больше не задаёт таких глупых вопросов.

Ещё у меня тут немножко причёсан вывод информации о модельных телах или всей модели в текстовом виде. Улучшена структура и читабельность текста, и реализован вывод в текстовый файл (а не только в текстовое окно на экране). Но моя программа не может воссоздавать модель по такому файлу, и он предназначен только для чтения.

Ну, вот пока и всё.

************** ВНИМАНИЕ! *******************
В связи с выходом нового релиза (см. последний пост от меня) убрал отсюда старьё. Файлы для закачки, как всегда, см. в последнем посте.
« Последнее редактирование: 26 Июл 2006 [01:13:09] от Дрюша »

Оффлайн ·

  • *****
  • Сообщений: 537
  • Благодарностей: 21
  • ·
    • Сообщения от ·
Re: Моделирование оптических систем в AutoCAD
« Ответ #13 : 05 Мая 2006 [10:42:20] »
Уважаемый Дрюша, Вы сделали очень интересную игрушку! (Трудноватую для
пользователя, не очень искушённого в расчётах оптических систем. По всей видимости,
в основном Вы её делали для себя.) В связи с тем, что Вы начинали на десятом, да ещё и
на ДОСовской платформе, Вы не могли иметь доступа к тогда ещё неродившимся мощным
новациям AutoDesk в части модельного 3-d проектирования, которые сейчас уже у них
реализованы. Вот если бы Вы не бросили своего детища и модернизировали его под новые
возможности AutoCad, да  ещё  попытались  бы  повысить  наглядность,  именно для ЛА
(профессионалам это не нужно ;)), — то получилось бы неплохое учебное пособие по расчёту
оптических систем. Высоко ценю Ваше обращение к AutoCad'у и к программированию на LISP'e —
не слишком простом, но прекрасном языке.
·

Оффлайн ДрюшаАвтор темы

  • *****
  • Сообщений: 4 947
  • Благодарностей: 98
  • Вы сышите только мой голос...
    • Сообщения от Дрюша
Re: Моделирование оптических систем в AutoCAD
« Ответ #14 : 05 Мая 2006 [12:03:11] »
Спасиб на добром слове. И всё же, под современные средства отображения я делать, пожалуй, не буду. Насколько я знаю, и там, и в OpenGL и в DirectX и в аппаратно-программных возможностях современных 3D-ускорителей всё реализовано через аппроксимацию многогранниками. Возможно, со сглаживанием. Но здесь это не то.

Оффлайн ДрюшаАвтор темы

  • *****
  • Сообщений: 4 947
  • Благодарностей: 98
  • Вы сышите только мой голос...
    • Сообщения от Дрюша
Re: Моделирование оптических систем в AutoCAD
« Ответ #15 : 11 Мая 2006 [22:51:42] »
Я, конечно, дико извиняюсь, но в той версии, которую я выложил 5 мая вкралась ошибка. Она была в файле OPBASE.LSP, что в архиве OP4ACAD0.ZIP. Теперь я её подправил, и тот файл (вернее, весь архив OP4ACAD.ZIP) заменён непосредственно там, где он был выложен (см. мой же пост за 5 мая, чуть выше). Там, внутри того архива, OPBASE.LSP от 11.05.2006 - это и есть исправленная версия того модуля, где обнаружены баги.

Ошибка касалась исключительно вывода текстовых данных о модели оптической системы (модельном теле, отдельной поверхности) в файл или на экран (в окно текстового вывода). В общем-то, не самая важная функция, и без неё вполне можно обойтись. Выводимая текстовая информация имеет неформализованный характер, и не предназначена для импорта какой-либо программой. В результате той ошибки функция просмотра данных о модели (теле, поверхности тела) при наличии там поверхностей некоторого типа (вращение произвольного конического сечения - тип "Е") выдавала глупую ошибку "Incorrect number of arguments". Кроме того, при выводе этой информации в файл (текстовый), не было закрытия этого самого файла. Поскольку с точки зрения ОС (Windows) владельцем файла является AutoCAD (приложения на языке AutoLISP в таком качестве не фигуируют, и после завершения их выполнения в среде AutoCAD автоматического закрытия файлов не производится), формируемый текстовый файл остаётся открытым (и недоступным для чтения из других программ) до завершения сеанса AutoCAD. Теперь и этот глюк исправлен. Кроме того, улучшен формат выводимых данных (текст): стало меньше лишних деталей и повторений. Текстовые данные дают некоторое представление о внутреннем формате описания модельного тела, но в отличие от списка на языке Лисп, это читабельный по-русски текст.

А так, по функционалу ничего нового. Я не вижу смысла выкладывать в качестве примеров многочисленные и довольно однообразные модели оптических систем. Их можно легко наклепать самому. Документацию тоже править пока не стал. И, вероятно, не буду. Это просто на фиг никому не надо. А все основные функции и возможности программы видно через меню.

Чего я, возможно, ещё сделаю (не знаю, когда, и буду ли выкладывать сюда) - это

1) средства для отображения и генерации (построения) плоской поверхности, ограниченной неортогональным (и не параллельным ей) цилиндром, а так же цилиндра, ограниченного косой плоскостью. Чтобы можно было моделировать плоские диагональные зеркала эллиптической формы (для моделей системы Ньютона, Нэсмита и т.п.). Интересно, что на внутреннем уровне поддержка этого уже есть (и уже возможна трассировка модельных лучей), но средства для отображения (визуализации) и сколько-нибудь автоматизированного построения таких вещей здесь пока отсутствуют.

2) Высокоуровневый модуль для генерации модели телескопа системы Ньютона (включая расчёт размеров и положения диагонального зеркала для заданного выноса фокуса и размера невиньетированноо поля зрения)

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

Ещё, я смотрю, Алексей Смирнов вспомнил свою программу (интересно, а вспомнил бы, если бы я не поднял эту свою тему наверх?). Вроде как, тут получается некоторое подобие гонки. Но я уже никуда не гоню. Тот финиш, который я намечал себе, уже давно прошёл, а теперь даже не знаю, куда и зачем дальше плыть.
« Последнее редактирование: 13 Мая 2006 [00:26:59] от Дрюша »

mihel

  • Гость
Re: Моделирование оптических систем в AutoCAD
« Ответ #16 : 23 Мая 2006 [20:14:16] »
Я скачивал почти все релизы этой программы. Специально под это дело купил диск с Акадом (2004, Eng+Рус) и книжку про него. Более-менее вник, и теперь даже могу работать в Акаде. Да, там есть свой стиль, и если его уловить, то можно даже работать с ним. Как я понял, работа с этой программой оптического моделирования требует сначала вжиться в сам стиль работы с Акадом. Без этого - просто никак. Год назад, когда я только начинал, то хотел сразу заняться оптическими расчётами. Надо было кое-что прикинуть. Но с наскока не получилось, и освоение работы с этой программой казалось мне чем-то таким далёким и несбыточным... Так что, первое время даже забросил. Но что-то мне подсказало вернуться к ней.

Скачал очередную версию. Даже уже с исправленной ошибкой (с неисправленной я даже как-то упустил). Попробовал поиграться с ней. Но вообще, дать здесь свою рецензию я собирался давно.

Не буду разделять свои комментарии "за здравие" и "за упокой". Изложу по хронологии возникновения каких-то вопросов, соображений и эмоций. "Заупокойных" тут будет больше, но только лишь потому, что "заздравные" понимаются по умолчанию как само собой разумеющееся. Если бы у меня был один только сплошной "заупокой", то я бы вообще не стал разбираться с этой программой, а выкинул бы её нафиг. Но есть и просто нейтрал. Может быть, это чисто мои личные непонятки.

Например, я так и не понял, чем различаются разные варианты установки этой программы, о которых было так подробно написано в сообщении, сопровождающем выложенные файлы (последнее обновление). Чем подробнее, тем непонятнее. У меня меню появилось само сразу, как только я обновил файлы и вошёл в Акад. А функция "Деинсталяция (удаление, выгрузка) этого меню" почему-то не работает. То есть, это меню тогда сразу исчезает, но следующий раз при входе в Акад, - снова появляется. Смысл этой "деинсталяции"? И никаких других способов как грамотно "снести" эту программу, нигде не описано. Я считаю, что всякая программа должна предусматривать полную деинсталяцию и удаление из системы. Я, конечно, понимаю, что можно просто удалить все её файлы, и тогда её не будет. Но где могут остаться битые ссылки на неё, это для меня далеко не очевидно. Но мне очевидно, что нормальная программа должна иметь нормальнй инсталятор, конфигуратор и деинсталятор. Ещё, возможно, мастер обновления и восстановления прежней версии. Это если предусмотрено обновление поверх старой версии. И чтобы не лазить по документации и разным топикам какой-то конференции в инете, а чтобы с экрана русским по белому было понятно, что сейчас можно, а чего нельзя. И с пояснениями, зачем и для чего это может быть нужно. Какие варианты установки возможны? Что они дают? А что отбирают? На основании какой информации я должен решать, что именно надо лично мне?

Меню - это, конечно, хорошо. Много понятнее стало. Открылось много новых возможностей, о которых я раньше просто и не знал. Я даже не знаю, описаны ли они в документации, но совершенно очевидно, что ни я, ни кто-либо другой не стал бы читать её от начала до конца только затем, чтобы выяснить, а нет ли там случайно такой-то возможности... А из меню сразу всё видно как на ладони! Правда, меню это всё равно какое-то примитивное. Оно только по первому уровню запускает какие-то команды, а когда эти команды начинают задавать всякие вопросы, то ответов на них в меню почему-то нет. Ответы приходится набирать вручную, хотя в некоторых случаях, когда возможных вариантов там всего лишь несколько, и почему бы тогда не дать такую возможность выбрать их из меню? Ведь многие встроенные команды Акада так и делают! Значит, и здесь можно было бы - что же мешает? Как я понимаю, вводиться с клавиатуры могут числа и короткие ключевые слова, которые набираются латиницей (например, на вопрос, сформулированный по-русски, ответ должен быть по-английски: например, Yes или No). Может быть, конечно, есть какие-то особые причины, почему все типовые ответы должны быть именно по-английски. Например, для совместимости а Акадом разных версий и локализаций (у кого-то русский, у кого-то английский). Но если бы их можно было вводить не с клавиатуры, а выбирать из меню, то тогда, как я понимаю, ничто не мешало бы в меню отображать развёрнутые ответы на русском языке. Чтобы пользователю было понятно, что он делает, и зачем. Ведь можно же! Вон, даже сейчас в меню представлены более-менее понятные описания действий по-русски, а то, что по ним вызываются какие-то команды на каком-то внутреннем птичьем языке - это пользователя не касается. Лишь бы работало! Так ведь?

Странно как-то сгруппированы команды меню. Нет, я понимаю, в этом есть своя логика. Но логика какая-то не человеческая, а ориентированная на компьютер и внутреннюю реализацию модели. Я не спец в Акаде, но даже на примере того, что там уже есть, мне кажется, что структуру меню можно было бы полностью отвязать от структуры программы и внутреннего представления модели опрической системы в ней. И привязать к нормальным человеческим понятиям.

Например, вот, есть там такие "обычные" (непараметризованные) модельные тела (сложно как-то сказано, но так там написано у Вас в документации и в самом меню, поэтому я тоже выражаюсь тут Вашими же словами), а есть ещё какие-то особые "параметризованные" модельные тела. Хорошо, положим, - есть. Ну, то что они внутренне как-то по-разному реализованы, этого можно не объяснять. Но пользователю-то зачем про это всё знать? Если честно, то лично я не заметил никакой разницы между этими "параметризоваными" и теми самыми "обычными" (непараметризованными) модельными телами. Те же операции над ними. У "параметризованных", правда, вроде бы, есть какие-то дополнительные возможности (с ними я не разобрался, но, вроде как, можно изменять их внутренние параметры уже после их построения, а у "обычных", выходит дело, - нельзя). Но тогда - зачем нужны те самые "обычные" (непараметризованные) модельные тела? Понятно, что так оно сложилось "исторически". В первой версии (май 2005 г) "параметризованных модельных тел", кажется, вообще ещё даже не было. Сейчас уже не помню. Но если даже эти более новые и продвинутые "параметризованные модельные тела" теперь есть, и они умеют всё то же самое, что и старые - "обычные" (непараметризованные), и плюс к тому, ещё что-то своё, то пускай будут только они. А пользователю-то зачем голову забивать этой требухой, относящейся чисто к внутренней реализации? Ну, понятно, внутренняя реализация - она многоуровневая. "обычные" ушли на более глубокий уровень. Ну, пускай там и будут!

Ну, так вот, есть, значит, какие-то там "обычные" (непараметризованные), а есть ещё и "параметризованные" модельные тела... И есть целые разделы меню, посвящённые тем или другим по отдельности. Во многом они повторяют друг друга. И соответствующие команды выполняются внешне неотличимо друг от друга. Одни и те же вопросы, одни и те же ответы. И те и другие модельные тела можно создавать и удалять, можно копировать, перемещать, поворачивать... Ах, да, кстати, а есть ещё и "группы модельных тел", и "групповые операции" над ними. А там - всё то же самое. И опять же, их (теперь уже "группы") можно копировать, перемещать, поворачивать... Те же вопросы и те же ответы. Те же самые действия. И что интересно, в этих "группах" могут присутствовать такие и сякие модельные тела, и программа как-то умеет сама разбираться между ними. Значит, можно же! Чем, скажем, одно "модельное тело" (не важно, какое) принципиально отличается от "группы модельных тел", имеющей в своём составе только одно это "тело"? Нет, не во внутреннем способе кодирования и представлении, а для юзера. Для юзера это должен быть просто "объект", над которым можно выполнять такие-то и такие-то операции. И всё!

Так, почему бы не собрать всё воедино? Чтобы пользователю не надо было задумываться, вспоминать, и вообще знать про "параметризованные" и "обычные" модельные тела... Какое оно есть - такое есть. Есть более общее понятие "объект". А уж чем он фактически там является... Может быть это "обычное модельное тело", может быть "параметризованное", а может, даже "группа", включающая в себя те и другие... Какая разница? Надо переместить? Пожалуйста! Повернуть? Нет проблем! Ну, или, на крайний случай, если какие-то тонкие различия всё же есть, то собрать в меню их можно было бы  по-другому:
- "Создать" - как раздел меню, а там внутри пусть будут пункты и подразделы: "параметризованные", "непараметризованные", "группы" и др.
- "Редактировать" - тоже как раздел, а там "копировать", "переместить", "повернуть", "удалить", "восстановить"... Насчёт видов - то же.
- и т.д. и т.п.
Если выбрано, скажем, "копировать" или "повернуть", то после того как указан конкретый объект (по имени или тыком курсора на экране), то тут уже сразу можно определить, что он из себя являет: "обычное", "параметризованное" модельное тело, или это даже не "модельное тело", а "группа"... И чтобы пользователь об этом даже не задумывался. Трудно? Но ведь внутри групп при групповых операциях всё именно так уже и есть! Всё работает! Только спрятано куда-то далеко. Зачем?

Тогда это самое меню можно было бы сделать меньше раза в два, и во столько же понятнее. А то, просто глаза разбегаются, и лезут всякие "дурацкие" вопросы типа "А это что такое?", "А вон то ещё зачем?". И действительно, совершенно непонятно, зачем было высовывать наружу столько технических подробностей? Все эти "потроха", все "кишки" должны быть спрятаны глубоко внутри. А наружу должен высовываться только простой и понятый, дружественный пользовательский интерфейс. Пока же он остаётся довольно "вражественным". Хотя, с появлением меню ситуация улучшилась очень даже заметно! И вообще, я считаю, что введение в программу меню это прорыв! Если бы эту программу писал я, то я именно с меню бы и начинал!

Кстати, еще одно замечание. Или пожелание... Ну, короче, когда запрашивается какой-то объект (параметризованное, непараметризованное модельное тело, либо группа модельных тел) для какой-то операции (копирование, перемещение, поворот...), то в первую очередь предлагается ввести имя этого тела или группы. Ну, это понятно: все эти объекты там как-то именованы, и имя однозначно идентифицирует каждый из них. Но есть и другая возможность отождествления объектов: если имя по такому запросу не вводить (а сразу нажать Enter), то тогда предлагается выбрать объект на чертеже, ткнув в него курсором мышки. Но на самом деле по именам вводить очень неудобно. Я не могу упомнить, как я чего называл... А тыком - это самое простое и понятное. Надо бы именно этот способ указания выдвинуть на первую очередь. А уж если там будет введён пустой "Enter", то тогда, так уж и быть, можно предоставить возможность ввести по имени. Как запасной вариант. А пока этот вариант как основной, хотя самый неудобный и никому не нужный. Тут важно, какой способ более удобный и употребительный, а не какой первый сложился исторически. А ведь не каждый догадается лишний раз нажать Enter! Я, и то, не сразу догадался!

Ещё я совсем запутался, когда запрашиваемые для ввода слова (всякие там имена, опции, режимы - кроме чисел, точек и выбора объектов), которые должны быть введены с клавиатуры в ответ на запрос программы, понимаются безразлично или небезразлично к регистру букв. Самое понятное - когда этот ввод безразличен к регистру. То есть, я, например, могу ввести Yes или yes, да хоть yES или просто Y или y, и это будет понято одинаково правильно. Как я понял, в Акаде, когда выводятся подсказки, что можно вводить, то большими буквами показаны обязательные буквы, а маленькие - необязательные. Например, если там Yes, то достаточно одной буквы Y или y, но можно ввести и Ye или yE или полностью Yes. Это всё хорошо и понятно. Но почему-то в одних случаях так оно и есть, а в других... Ну, как бы это объяснить... Ну, скажем, когда требуется имя модельного тела, то там надо вводить именно так, как оно было изначально названо. Если какая-то буква в другом регистре - значит, всё, уже не понимает! То же самое про имена групп. А имена цветов,  материалов, чего-то там ещё, - всё это воспринимается по-нормальному. Очень напрягает помнить, как и когда надо вводить эти самые имена! Можно, конечно, всегда вводить полностью и точь в точь. Но тогда надо помнить, какие буквы там были большие, а какие маленькие, и Shift нажимать...

А так, даже не знаю, чего ещё и желать. Чёткой и понятной документации? Вроде бы, она есть. Но неудобоваримая какая-то! И как тут верно сказано, устаревшая. Ну, что устаревшая - это понять можно. Документирование - это такая нудная рутина, и вполне естественно, что она отстаёт от программирования. Но как она составлена... Там всё в кучу: и описание реализации, и руководство пользователя... Возможно, следовало бы разделить её на несколько разных документов
- Описание постановки задачи, основные концепции: что, для чего и зачем.
- Описание реализации (теория), описание алгоритма (структурные блок-схемы и всё такое)
- Руководство программиста или системного программиста. Установка, конфигурирование, снос. Всё про тонкую настройку Акада.
- Руководство пользователя. Всё что нужно неискушённому юзеру.  Меню, команды, возможности... Куда нажимать.
- Краткий справочник команд (выжимка из руководства пользователя на одну страничку, котрую можно повесить перед глазами).
- Примеры, пояснения, комментарии...

А так, система вполне на уровне. Я так и не докопался до самых её глубин, но чувствуется, что это вполне работоспособный инструмент. Любительского уровня, конечно. Но на то и любитель, что он любит это дело. А профессионал - у него другая цель: срубить бабок. У профи может быть основная цель даже не качество, а давай-давай, скорей-скорей, объём, себестоимость, цена/качество и всё такое прочее. Но тут даже не в этом дело. Чувствуется, что эта программа может посчитать всё, что обычный любитель реально может сделать, и даже то, чего он сделать не сможет. Из того, что ему доступно. И время, которое уйдёт на моделирование, расчёты и оптимизацию (пусть она тут возможна только вручную), всё равно не идёт ни в какое сравнение со временем на изготовление самой оптики. А можно ничего не изготавливать, а просто играться, и ловить от этого кайф.

Не хватает, конечно, реальной бызы данных по стёклам. Хотя, лично мне кроме стекла типа К8 (оно же марки "Оконное") даже ничего больше и не надо. А оно там где-то есть. Тут ещё одна непонятка: то оно есть, то его нет, и как сделать, чтобы было всегда? Таблица материалов оказывается доступна почему-то не всегда. Возможно, в документации есть ответ на этот вопрос, но я не разобрался. А так, то предлагается выбрать марку стекла по имени, то вдруг сразу спрашиваются показатели преломления...

Но конкретные данные по конкретным стёклам - это уже так, не по конкретному делу. Всё равно, вряд ли мне придётся варить самому или заказывать какие-то специальные марки оптических стёкол. А если кто-то реально делает рефракторы-апохроматы, то, как я понимаю, ему даже справочник или база данных по оптическим стёклам не особо-то и нужен. У него тогда есть свой рефрактомер, которым он измеряет реальные оптические характеристики каждой конкретной плавки оптического стекла. Или если он заказывает, то там конкретно прилагается сопроводительный документ, где всё указано. И исходя из этого, именно для данной плавки, тогда уж он и считает. Но обычного любителя, как правило, это не касается. У него могут быть готовые линзочки непонятно какого качества и происхождения. Но для простых линз (не склеек) можно измерить радиусы кривизны, толщины и т.п., и предположить, что они сделаны из стекла марки K8. Можно даже проверить: посчитать, какое у них при этом должно быть фокусное расстояние (оптическая сила) при таких-то радиусах, толщинах, и сравнить с измеренным. А для того чтобы посчитать, эта программа годится вполне.

Для зеркальной же оптики (в том числе, с асферикой), самостоятельное изготовление которой более реально доступно простому любителю, программа делает всё что надо, и даже то, чего ему не надо. Особо интересна возможность моделирования разных схем контроля асферических зеркал. Если делать по книжке, то придётся в одном месте где-то искать формулы, как считать схему Ричи-Кретьена (положим), а когда она уже посчитана, и известны такие параметры как квадраты эксцентриситетов каждого зеркала, тогда уже вычислять продольную аберрацию каждой зоны или компенсационную схему... Но если работать с этой программой, то всё проще. К тому же, никто не мешает пользоваться другими средствами, в том числе книжками, таблицами, аналитическими формулами. Но если пользоваться только ими, то до всегда остаётся червь сомнений: "А всё ли я правильно посчитал? Так ли я всё это понял? А нет ли в книжке какой-нибудь опечатки?". Если же схема контроля и расчётные цифры получаются одинаково и по книжке (по приведённым в ней формулам), и по этой программе, и это получается совершенно независимо, то тогда значит, никакой ошибки там уж точно нет. Ещё интересно применение этой программы для изготовления решётки Ронки, которое обсуждалось в разделе "Телескопостроение и оптика". Пусть метод Ронки сомнителен по части точности, но никто не мешает применить его "до кучи". Когда в дело идут разные методы: и компенсационные схемы, и испытания на коллиматоре, и по зонам, и окулярные пробы, и по звёздам (внефокальные изображения)... Ну и Ронки туда же... Для пущей надёжности, хотя бы. А почему бы и нет? Если, скажем, метод Ронки даёт идеальную картинку (как она и ожидалась для правильной формы зеркала), а более точные методы показывают отклонения на уровне 1/4Л, то оно понятно. Значит, метод Ронки действительно, недостаточно чувствителен. Но если вдруг окажется, что метод Ронки выявляет что-то такое, что не было обнаружено другими методами, значит - где-то что-то напротачено. Ну, может такое быть! Это как швабра к двери. Но тем не менее.

Оффлайн ДрюшаАвтор темы

  • *****
  • Сообщений: 4 947
  • Благодарностей: 98
  • Вы сышите только мой голос...
    • Сообщения от Дрюша
Re: Моделирование оптических систем в AutoCAD
« Ответ #17 : 26 Июл 2006 [01:04:57] »
Я, правда, обещал, что больше не буду дорабатывать свою программу. Но, вот, не сдерживаю обещания. Кой-чего мне было интересно самому. И вот, получился ещё один релиз. Надеюсь, что тепрь-то он будет последний. Упор там сделан на высокоуровневые модели целостных оптических систем. То есть, не на отдельные оптические детали (модельные тела) и поверхности, а сразу целиком взятые системы из нескольких линз, зеркал... Чтобы даже начинающий юзер мог сразу сделать интересующую его модель оптической системы, и начать играться с ней. А то, не совсем очевидно, с чего начать даже самую простейшую оптическую систему. Где взять параметры деталей? Как их расположить? Ведь первоначально там у меня не было ничего для таких расчётов общего дизайна. Можно было только ввести готовые данные (откуда-то взятые), и на основе их создавать модель. Вроде бы, затем чтобы что-то там анализировать. А чего анализировать-то?

На практике очень хорошо зарекомендовал себя модуль KASSEGRN.LSP, хотя поначалу он замышлялся как пример, или как надстройка (опять же, как пример того, что можно писать такие, вот, надстройки), которая как-то по-своему частично автоматизирует генерацию целостных моделей. Сначала я многие надежды возлагал на гибкие параметризованные модели. Больших надежд они не оправдали, хотя я их тоже использую. Удобнее и практичнее показали себя такие, вот, высокоуровневые модели целостных оптических систем.

Первой из них была система Кассегрена. Оно понятно. Там нужен не слишком тривиальный расчёт основных параметров, по которым строятся модельные тела. Система Ньютона мне представлялась слишком тривиальной. Но на самом деле, как оказалось, - тоже не очень. Каковы должны быть размеры вторичного зеркала для обеспечения такого-то поля зрения при таком-то выносе фокуса Ньютона (или наоборот, какое можно позволить поле зрения при таком-то выносе и размерах... Или вынос...)? Как его расположить? Каково должно быть смещение геометрического центра вторичного зеркала от оптической оси системы? Ведь есть и такое... Всё это считается по довольно простым, но муторным формулам. Можно было бы воспользоваться программами - "калькуляторами" типа TeleCalc, Blend и другими программами для расчёта геометрии телескопов различных систем (точное моделирование оптики тут не причём). Потом полученные данные вводить вручную... Но зачем? Если АвтоЛИСП - это такая языковая среда для программирования, то почему бы не запрограммировать эти калькуляторы прямо там? Что я и сделал. Теперь не только для системы Кассегрена, но и для системы Ньютона (по-хорошему, с неё надо было бы начинать). Как я понимаю, система Ньютона для начинающего оптика-любителя представляет наибольший интерес. Кассегрены его обычно интересуют только чисто теоретически. А насчёт Ньютона обычно сразу возникают конкретные вопросы:
- На какое невиньетированное поле зрения заложиться? На каком поле ожидаются какие аберрации (кома, астигматизм)? На каком поле может быть обеспечено дифракционное качество изображения? А на каком оно будет приемлемым?
- Какого размера выбрать диагональное зеркало? Хотелось бы иметь поменьше ЦЭ, но если не выходит, то что делать? Может быть, уменьшить вынос фокуса? Отказаться от большого и длинного фокусёра, скажем, Крейфорда (резьбовой-то покороче будет), или, может быть, вообще отказаться от фокировочного узла в фокусе Ньютона, а обеспечить фокусировку перемещением всей передней части трубы или главного зеркала? Можно также "утопить" фокус Ньютона в падающем рабочем пучке света, используя окулярный микроскоп (он же - линзовая оборачивающая система).
- Или если диагональное зеркало уже есть (сделано на заказ, куплено, есть в продаже...), то при данном выносе фокуса какое поле зрения оно обеспечивает? При каком поле?
- А может быть, лучше увеличить фокусное расстояние главного зеркала? Но что это даст? Полезное поле зрения будет больше? Насколько? А увеличится или уменьшится при этом центральное экранирование?

Итак, что у меня тут конкретно нового наработано, а старого изменено.

1. Добавлен новый программный модуль NEWTON.LSP, кототый обеспечивает поддержку целостной высокоуровневой модели системы Ньютона. Он аналогичен реализованному ранее модулю KASSEGRN.LSP, который обеспечивает поддержку воддевысокоуровневой модели системы Кассегрена. Так же как и там, на основе немногих ключевых (внешних) параметров, которые вводятся пользователем по запросам программы, расчитываются все остальные необходимые параметры (в том числе размеры и параметры расположения) элементов системы (модельных тел), и по ним строится целостная модель всей оптической системы. Она имеет типовое расположение относительно начала координат. Значения вводимых ключевых (внешних) параметров запоминаются как "текущие", и следующий раз (в том же сеансе) они предлагаются по умолчанию. Поэтому повторно формируя высокоуровневую модель (системы Кассегрена или Ньютона средствами соответствующего модуля), например, на очередной итерации при подборе и ручной оптимизации ключевых параметров, можно вводить только те значения, которые подлежат изменению, остальные же можно принимать по умолчанию, жмя Enter (пустой ввод).
Небольшая особенность модели. Поскольку у меня так и не реализовано построение и отображение плоского зеркала эллиптической формы (что сдерживало меня в написании такого модуля), оно условно заменяется круглым. Боковая сторона у него скошена на конус. Но по размерам круглого зеркала нетрудно определить соответствующие размеры эллиптического зеркала: его большая ось соответствует диаметру круглого, а малая ось получается делением оного на 1.41=sqrt(2).

2. Доработан также старый модуль KASSEGRN.LSP, обеспечивающий поддержку высокоуровневой модели системы Кассегрена. Аналогичные возможности сразу включены в модуль NEWTON.LSP - его реализацию поддержки высокоуровневой модели системы Ньютона, и возможности обоих высокоуровневых моделей соответствуют друг другу (кроме экспорта и импорта файлов типа OPT (специально для программы BLEND) и расчёта бленд, специфичного для системы Кассегрена).

- При загрузке модели оптической системы из файла типа .LNZ по команде-функции OPLOAD (C:OPLOAD) проверяется, есть ли в данной модели характерные признаки наличия высокоуровневой модели системы Ньютона или Кассегрена, построенные соответствующими средствами (т.е. модельные тела и их группы с конкретными именами). Если таковые там есть, то по ним восстанавливаются сохраняемые ключевые параметры соответствующей системы (Ньютона или Кассегрена), и при повторной генерации такой высокоуровневой модели в новом сеансе (если модель загружена из файла) эти параметры предлагаются по умолчанию. Напомню, что повторная генерация высокоуровневой модели (системы Кассегрена или Ньютона) вытесняет предыдущую такую модель, полностью заменяя её на обновлённую (но только те модельные тела, которые относятся именно к ней, к этой высокоуровневой модели). Старые версии модельных тел этих систем при этом полностью теряются и восстановлению не подлежат. В данном случае ключевые (внешние) параметры теперь сохраняются не только в пределах данного сеанса AutoCAD, но и восстанавливаются при загрузке файла типа .LNZ (можно считать, что они сохраняются в этом файле при наличии высокоуровневой модели).

- Реализована отдельная команда-функция просмотра параметров каждой высокоуровневой модели (NEWT_SEE (C:NEWT_SEE) для системы Ньютона, и KASS_SEE (C:KASS_SEE) для системы Кассегрена соответственно). Они выводия на экран как ключевые (введённые пользователем), так и вычисленные параметры системы и каждого её элемента. То есть, так можно посмотреть все геометрические параметры (размеры, расстояния, сдвиги, толщины) и оптические (радиусы кривизны, эксцентриситеты поверхностей), а так же экв. и отн. фокус, коеффициент центрального экранирования, поле зрения в линейной и угловой мере и т.п. То есть, с нею моя программа полностью заменяет (т.е. содержит в себе) программу-"калькулятор" для телескопов систем Ньютона и Кассегрена. Они же (эти самые команды-функции просмотра данных на экране) автоматически вызываются сразу же после генерации (регенерации) высокоуровневой модели (команды-функции NEWTON (C:NEWTON) и KASSEGRN (C:KASSEGRN) соответственно). При этом автоматически вызывается текстовое окно (в древних версиях AutoCAD под DOS при одноэкранной конфигурации при этом происходит переключение дисплея в текстовый режим), на котором видно достаточно много строк (обычно 25, хотя размер окна можно изменить), и вся выводимая информация видна вразу даже без использования прокрутки.

- Команда(-функция) трассировки пучка света через высокоуровневую модель (команды-функции NEWT_TRACE (C:NEWT_TRACE) и KASS_TRACE (C:KASS_TRACE) соответственно) теперь запрашивают цвет трассируемого пучка. Можно задать цвет White=0 (это полихром: все определённые для данной модели цвета), либо конкретный цвет. Это может быть интересно при дополнительном наличии линзовых (преломляющих) элементов. Если задаётся один конкретный цвет (кроме 0=White), то количество шагов разбиения по диаметру входного зрачка берётся 20, но если указывается цвет 0=White (полихром), то берётся 10 шагов. В результате количество трассируемых лучей получается примерно около 200-300, что не слишком много, но вполне достаточно для статистического экспресс-анализа с приемлемой точностью.

- Кроме того, отдельной командой-функцией реализована упрощённая трассировка специфического модельного пучка через соответствующую высокоуровневую модель оптической системы (команды-функции NEWT_TRCL (C:NEWT_TRCL) и KASS_TRCL (C:KASS_TRCL) соответственно) там моделируется плоский (как бы исходящий от линии - типа LINE) осевой параллельный пучок света, лежащий в рабочей плоскости чертежа (координата Z==0). Там всегда угол наклона к оси задаётся 0, число шагов 10, а цвет задаётся пользователем (единственный вводимый по запросу параметр). Такая упрощённая трассировка позволяет быстро оценивать осевые аберрации (сферическую, хроматическую, сферохроматизм...).

- Реализованы ещё команды-функции (для каждого типа системы: Кассегрена и Ньютона - своя), которые предлагают отредактировать параметры, от которых модель зависит (если они есть), либо создать её заново (введя новые значения либо оставив старые по умолчанию), после чего выполняется упрощённая трассировка плского (меридионального) осевого пучка и устанавливается масштаб отображения, при котором предполагаемый фокус находится на экране. По сути, это макрос, обеспечивающий последовательное выполнение трёх команд-функций. Это бывает удобно при ручной оптимизации на оси. А уж чего там оптимизировать, и какими параметрами шевелить - решайте сами.

- Как для высокоуровневой системы Ньютона, так и Кассегрена введён ещё один ключевой параметр - "Отстояние входного зрачка от главного зеркала" (его зрачение сохраняется в глобальной переменной NEWT_DEFAULT_L и KASS_DEFAULT_L соответственно). Обычно (раньше для системы Кассегрена это подразумевалось, а теперь только изначально предлагается по умолчанию) этот параметр задаётся равным 0, то есть, входной зрачок совпадает с главным зеркалом соответствующей системы. Но если этот параметр указан не 0, то считается, что входной зрачок не совпадает с главным зеркалом. При этом главное зеркало имеет размер больше входного зрачка (для обеспечения невиньетированного поля зрения), а размеры вторичного зеркала считаются по другой формуле. Такое несовпадение входного зрачка с главным зеркалом имеет место в системах с полноапертурным линзовым корректором: Шмидта, Райта, Максутова, Волосова... Обычно там входной зрачок определяется корректором (мениском).
Кстати, расчёт бленд и экспорт данных в файл типа OPT для Кассегренов (для Ньютонов такого аналога вообще нет) работает только когда вынос входного зрачка от глпвного зеркала равен 0. Это связано с тем, что программа расчёта бленд BLEND.EXE, к сожалению, не предусматривает вынос входного зрачка.

- Предусмотрен вариант кассегрено-подобной системы с обоими сферическими зеркалами: главным и вторичным. В таком варианте у этой системы никак не исправлена сферическая аберрациия на оси. Как, впрочем, и для системы Ньютона предусмотрена возможность указать, что главное зеркало не параболическое, а сферическое, гиперболоидное, эллипсоидное (с заданным эксцентриситетом), или даже сплюснуто-сфероидное, как для камеры Райта. Такие варианты (кроме параболоида) также не обеспечивают коррекцию сферической аберрации на оси. Обычно в таких случаях предусматривается специальный линзовый корректор (полноапертурный перед главным зеркалом или предфокальный в сходящемся пучке). И сама эта высокоуровневая модель (системы Ньютона или Кассегрена) может являть собой не всю текущую модель оптической системы, а только её часть. Кроме модельных тел, которые относятся к высокоуровневой модели какой-то оптической системы (Ньютона или Кассегрена), и генерируются автоматически средствами модулей NEWTON.LSP или KASSEGRN.LSP, туда могут входить другие модельные тела, созданные другими средствами (вручную, как параметризованные или обычные непараметризованные модельные тела). Это могут быть полноапертурные или предфокальные корректоры различных аберраций (сферической, комы и т.п.), дополнительные зеркала или призмы (например, модификация Нэсмита для системы Кассегрена), линзы Барлоу, окуляры и окулярные микроскопы. В частности, эти дополнительные модельные тела могут быть оформлены как гибкие параметризованные модельные тела. Их параметры (расположение, размеры, толщины, радиусы кривизны, асферика) могут быть заданы не просто числами-константами, но и формулами, зависящими от некоторых глобальных переменных (сама переменная или константа - это частный случай формулы). В качестве этих переменных могут быть взяты глобальные переменные, в которых запоминаются ключевые (внешние) параметры высокоуровневых систем. Тогда получается целостная, автоматически согласованная гибкая параметризованная модель всей оптической системы (например, Волосов-Ньютон или Шмидт-Кассегрен-Нэсмит).

- Исправлены найденные старые баги и добавлены новые ненайденные. Например, раньше выдавалась ошибка "Divide by zero" (деление на 0) при попытке ввести коеффициент увеличения в системе Кассегрена равном 1.0 (тогда вторичное зеркало должно быть плоским, а радиус кривизны - бесконечным, что получается делением на величину, обращающуюся в 0, но это фиксировалось как ошибка). Теперь этот особый случай обрабатывается корректно. Был ещё баг с загрузкой файла типа LNZ  командой-функцией OPLOAD (C:OPLOAD). При указании имени несуществующего файла выдавалась системная ошибка "Bad argument type" вместо сообщения о неправильнои имени файла. Впрочем, это не фатально (всё равно, ошибка, только её диагностика была неверной).

3. Другие модули (кроме исправления багов) практически не претерпели изменений. Хотя, впрочем, например, для нужд новых модулей KASSEGRN и NEWTON в модуле OPTRASSA был выделен в отдельную функцию запрос насчёт цвета, который раньше был частью функции трассировки. Это я к тому, что всё равно надо распаковывать и обновлять все модули целиком. В меню (OPTIC.MNU) также введены вызовы новых команд-функций. Но
ДЛЯ ТОГО ЧТОБЫ УСТАНОВИЛАСЬ НОВАЯ ВЕРСИЯ МЕНЮ, НУЖНО УНИЧТОЖИТЬ ФАЙЛЫ OPTIC.MNC, OPTIC.MNS и OPTIC.MNR, а OPTIC.MNU и OPTIC.MNL заменить новыми.

В примерах приведены системы Шмидт-Ньютона, Райта-Ньютона, Волосов-Ньютона. Они сделаны с использованием новых продвинутых возможностей модуля NEWTON.LSP. Там корректоры (типа пластинки Шмидта или двухлинзовый корректор в системе Волосова) реализованы как ГИБКИЕ параметризованные модельные тела. То есть, они не просто параметризованные, а некоторые их параметры задаются не конствнтами, а переменными и формулами с использованием переменных. Переменные, от которых они зависят, являются глобальными переменными среды АвтоЛИСП. Среди них такие переменные как
NEWT_DEFAULT_D - диаметр входного зрачка текущей системы Ньютона
NEWT_DEFAULT_F - фокусное расстояние системы Ньютона
NEWT_DEFAULT_H - вынос фокуса Ньютона от главной оптической оси (подразумевается положительное значение >0)
NEWT_DEFAULT_W - линейный размер (диаметр) невиньетированного поля зрения системы Ньютона
NEWT_DEFAULT_L - отстояние входного зрачка от главного зеркала системы Ньютона (обычно 0, но для этих систем иначе: для Шмидта в 2 раза больше, а для Райта и Волосова (примерно) равно NEWT_DEFAULT_F)
NEWT_DEFAULT_K - вариант геометрии главного зеркала (это число, задающее квадрат эксцентриситета поверхности ГЗ как конического сечения: обычно 1=параболоид, но для моделей систем Шмидта и Волосова используется значение 0=сфера, а для системы Райта -1=сплюснутый сфероид, а ещё может быть эллипсоид, гиперболоид... послендий может быть целесообразен с предфокальным линзовым корректором сферической и комы)
Это те самые переменные, в которых модуль NEWTON.LSP хранит значения по умолчанию для вводимых ключевых параметров системы Ньютона. Кроме того, в тех (конкретных) гибких моделях используются свои специфические переменные. Их значения подобраны численно-экспериментальным путём, и менять их обычно не следует. Им нужно будет подобрать другие значения только если изменить, например, оптические характеристики материала (стекла), из которого сделан корректор. У меня там ориентировано на крон марки К8 как самый распространённый. Если не менять материал, то изменять эти коэффициенты не следует.
Аналогичные глобальные переменные используются модулем KASSEGRN.LSP
KASS_DEFAULT_D - диаметр входного зрачка текущей системы Кассегрена
KASS_DEFAULT_F - фокусное расстояние системы Кассегрена
KASS_DEFAULT_G - Увеличение системы Кассегрена (отн. эквивалентного фокуса к главному)
KASS_DEFAULT_H - вынос фокуса Кассегрена за рабочую поверхность главного зеркала
KASS_DEFAULT_W - линейный размер (диаметр) невиньетированного поля зрения системы Кассегрена в эквивалентном фокусе
KASS_DEFAULT_L - отстояние входного зрачка от главного зеркала системы Кассегрена (обычно 0)
KASS_DEFAULT_K - вариант геометрии главного зеркала. Задаётся ключевым словом типа строки: всего есть несколько вариантов, для которых эксцентриситеты (или их квадраты) каждого из зеркал (главного и вторичного) расчитываются по соответствующим формулам, а этот параметр может быть "RICHI", "KASS", "DOLL", "SPHERIC" или "CORR"

Возвращаясь к примерам. Там я расчитал системы типа Ньютона с полноапертурными корректорами. При заявленных диаметре и светосиле они имеют дифракционное качество на оси. При большей светосиле вылезает сферохроматизм. Я обнаружил, что если слегка изменить какой-нибудь из радиусов кривизны у любой поверхности корректора (так что его оптическая сила обретает небольшую положительность, и фокусное расстояние системы уменьшается на несколько мм), то небольшой вносимый хроматизм положения может примерно вдвое компенсировать тлетворное влияние сферохроматизма. Таким образом, пятно рассеяния удаётся полностью вогнать в дифракционный кружок. Именно для такого случая я нашёл параметры.
Райт у меня получился для D=270 F=1000 (1:3.7)
Шмидт для D=300 F=1000 (1:3.3), причём, качество дифракционное до самого края поля зрения, и дальше (на частично виньетированном поле)
Волосов с двухлинзовым корректором для D=270 F=1000 (1:3.7)
Если брать диаметр 120-150 мм, то светосилу можно увеличить на 25-30%, а если не требовать дифракционного качества, а только фотографическое, то и того более (например: при тех диаметрах 270-300 мм до 1:2 (F 540-600 мм) и при этом обеспечивается кружок рассеяния диаметром менее 20 мкм, хотя до дифракционного ему уже далеко.

Параметры, от которых зависит коррекция аберраций, найдены как специфические коэффициенты, входящие в выражения, связывающие радиусы кривизны, фокус, диаметр входного зрачка... Они найдены мной для конкретного материала (стекло марки К8 по справочнику). Менять их не следует. Это другие параметры кроме вышеперечисленных. Их имена также выводятся при отработке команды-функции NEWT_SEE (С:NEWT_SEE). А ещё их можно видеть и изменять значения командой-функцией OP_PRM_EDVAR (C:OP_PRM_EDVAR).

З.Ы.
Странное что-то творится со статистикой закачек. С прошлого обновления файл OP4ACAD0.ZIP и OP4ACAD1.ZIP закачаны разное количество раз! Но для их работоспособности НУЖНО ОБНОВЛЯТЬ ВСЁ СРАЗУ! Примеры (OP4ACAD3.ZIP) - не обязательно. Но новые примеры на старом софте могут не работать. Сейчас я по-другому перетасовал модули, которые были в архивах OP4ACAD0 и OP4ACAD1 - только для того чтобы архивы уложились в ограничение этого форума 80 Кб. Оба уже стали почти под завязку (а в первой версии, помнится, все программные модули влезали в один такой архив).

Спасибо всем, кто не забыл меня! Удачи!

Теперь всё вот здесь
http://andrrog.narod.ru/Download/OptSetup.EXE
Там инсталлер
« Последнее редактирование: 11 Ноя 2006 [20:33:12] от Дрюша »

Оффлайн ДрюшаАвтор темы

  • *****
  • Сообщений: 4 947
  • Благодарностей: 98
  • Вы сышите только мой голос...
    • Сообщения от Дрюша
Re: Моделирование оптических систем в AutoCAD
« Ответ #18 : 11 Ноя 2006 [21:44:37] »
Ну, вот. Опть я со своей программой. Проект мо потихоньку продвигается. Уже в связи с конкретными задачами. Но не в них суть. Как бы то ни было, а релиз новый созрел.

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

Дизайн её пока никакой (она в разработке), но ссылку для скачивания использовать уже можно
http://andrrog.narod.ru/Download/OptSetup.EXE - программа-инсталлятор. Смораспаковывается и устанавливается
http://andrrog.narod.ru/Download/op4acad2.ZIP - документация в архиве.ZIP. Устаревшая, но будет потихоньку обновляться
http://andrrog.narod.ru/Download/op4acad3.zip - примеры. Пока тоже старые, те же, что и выкладывались здесь.

Новый релиз имеет
- Инсталлятор/деинсталлятор. Инсталяция - как обычно: запускаем OPTSETUP.EXE и отвечаем на все вопросы. Деинсталяция - через Панель Управление - "Установка и удаление программ"... В частности, эта инсталляция выполняет все действия по внесению изменений в конфигкрацию AutoCAD (установка путей Support Files Directory Paths, меню и т.п.). Для установки дпнного комплекса должен быть предварительно установлен AutoCAD версии не ниже 2000, и это проверяется. При деинсталляци комплекса программ всё автоматически восстанавливается.

- Специальный программный модуль, который обеспечивает "открытие" файлов типа .LNZ (сохранённые модели оптических систем) и .OPG (экспортированные группы модельных тел). Эти расширения (типы) файлов регистируются в Windows. Теперь эти файлы можно "открывать" средствами Windows (в Проводнике, Wintows/Total Commander, DisCommander, FAR и иже с ними). При "открытии" такого файла из Windows запускается AutoCAD (при этом создаётся новый чертёж), и ему предписывается загрузить комплекс OPTIC (все лисп-модули, меню) и загрузиль данную модель (типа .LNZ) либо импортировать группу модельных тел (типа .OPG) в пустую модель.

- Лисп-модули "причёсаны" так, что можно использовать компилированный файл проекта OPTIC.FAS. И такой файл включён в состав комплекта поставки. Пользователь сам может выбрать вариант установки: компилированный, некомпилированный, тот и другой (фактически грузится компилированный). Впрочем, имея некомпилированный проект (в исходны текстах) можно самостоятельно откомпилировать его средствами Visual Lisp, который входит в состав комплекта поставки AutoCAD.

- При работе с файлами (как-то "открытие" или "загрузка" и "сохранение модели в файле типа *.LNZ, экспорт и импорт групп модельных тел из файлов типа .OPG, экспорт и импорт высокоуровневой модели кассегрено-подобной системы из файлов типа .OPT и т.п.) открываются стандартные диалоговые экранные формы "Open File" и "Save File". Имя файла моно выбрать, ввести, найти и т.п.

- Появился новый модуль OP_OPTIM.LSP - оптимизация. Эта оптимизация реализована только для гибких параметризованных моделей (т.е. моделей, содердщих гибкие параметризованные модельные тела). В процессе оптимизации варьируются "внешние" параметры, являющиеся глобальными переменными среды АвтоЛИСПа, от которых зависит гибкая параметризованная модель.

- Исправлены некоторые недоработки и глюки. Например, раньше выскакивала ошибка при импорте группы модельных тел, содержащей гибкие модельные тела (либо требовалась предварительная подготовка вручную). Теперь гибкие модельные тела в составе групп импортируются нормально.

А здесь, на этом форуме я прекращаю даьнейшую публикацию... Но если у кого есть что ответить... Буду рад.

« Последнее редактирование: 11 Ноя 2006 [23:37:34] от Дрюша »

Оффлайн ДрюшаАвтор темы

  • *****
  • Сообщений: 4 947
  • Благодарностей: 98
  • Вы сышите только мой голос...
    • Сообщения от Дрюша
Re: Моделирование оптических систем в AutoCAD
« Ответ #19 : 18 Апр 2007 [19:35:49] »
Внимание!

У меня появилась новая прога. Называется SelZmX. Я её выложил туда же:

Вот она

http://andrrog.narod.ru/Download/SELZMX.ZIP

В этом ZIP-архиве содержится программа SelZmx.EXE

Она
- Не требует специальной установки, готова к запуску с любого места (хоть с флеш-диска, хоть с дискеты, хоть с CD-ROM)
- Не гадит в реестре Windows и не создаёт дополнительных файлов на диске
- Требует, чтобы на компьютере был установлен ZEMAX (хотя бы демонстрационная версия, распространяемая бесплатно)
- Весьма желательно наличие установленного комплекса OPTIC (инсталлятор здесь: http://andrrog.narod.ru/Download/OptSetup.EXE ), который ставится при наличии AutoCAD 2000 и выше (о нём, собственно, этот топик)

Что делает эта программа

- Позволяет просматривать папки по фильтру *.ZMX, а так же *.ZMF и *.ZMX, *.ZMF : это файлы, в которых ZEMAX хранит свои дизайны (модели потических систем в своём представлении) и библиотеки линз (в файле типа .ZMF может быть множество дизайнов)

- Быстро просматривать содержимое этих файлов *.ZMX и библиотек *.ZMF При этом она показывает для каждого дизайна (модели)
а) Внутреннее название (может отличаться от имени файла)
б) Комментарии (Notes) на нескольких строчках
в) быстрый превью (простой эскиз чертежа, аналогичный 2D Layout в самом ZEMAX)

- Открывать эти файлы ZEMAXoм (по двойному клику мышки в списке файлов, только файлы типа *.ZMX)

- Преобразовывать одну модель (файл .ZMX или конкретный текущий дизайн из файла .ZMF) в формат .LNZ или .OPG для работы в OPTIC

- Открывать только что сформированный (последний) файл типа .LNZ или .OPG средствами OPTIC. Для этого должен быть установлен AutoCAD и OPTIC последней версии. При "открытии" модели (или группы модельных тел) автоматически запускается AutoCAD, которому предписано загрузить комплекс OPTIC и открыть данную модель средствами OPTIC.

- Сохранять на диске (в заданной папке) в формате .LNZ или .OPG (для дальнейшей работы в OPTIC) все модели (дизайны) оптических систем, которые содержатся в текущей (просматриваемой) папке (каталоге) в файлах типа .ZMX или (и) .ZMF . Причём, если преобразуется файл типа .ZMX, содержащий одну модель (дизайн) оптической системы, то имя файла типа LNZ или OPG однозначно соответствует имени оригинального файла .ZMX (меняется только расширение), а если преобразуется библиотека линз (файл типа .ZMF), то формируется множество файлов типа LNZ или OPG, имена которых (обычно они получаются "длинные") формируются так
ИМЯ_ОРИГИНАЛЬНОГО_ФАЙЛА~НОМЕР~НАЗВАНИЕ.LNZ (.OPG)
где ИМЯ_ОРИГИНАЛЬНОГО_ФАЙЛА - имя исходного файла.ZMF без расширения
НОМЕР - порядковый номер модели (дизайна) внутри этой библиотеки
НАЗВАНИЕ - внутреннее название модели, в которой символы, недопустимые в именовании файлов, заменены на ундербар ('_')

Основное назначение программы - преобразование моделей оптических систем от формата ZEMAX в формат представления OPTIC

Но её можно использовать просто с ZEMAX (без OPTIC) для бысторй навигации в многочисленных файлах

Ограничения.

На сегодняшний день реализована поддержка ограниченного класса моделей, в которых:
- Используется только последовательный режим
- Используются поверхности только стандартного типа (сферы, плоскости, поверхности вращения конических сечений)
- Используются материалы из каталогов ZEMAX с номинальными характеристиками, либо в модельном представлении
- Не используются разрывы координат, в том числе поворотные зеркала и призмы полного внутреннего отражения

Многие дизайны (модели) ZEMAX не открываются, не отображаются и он могут быть преобразованы для OPTIC по той причине, что они выходят за рамки указанных ограничений. Но тем не менее множество оптических систем.

На самом деле во внутреннем формате представления OPTIC возможны и поворотные зеркала, и непоследовательный ход лучей (там модель представления изначально "непоследовательная", а ближе к физической сути), и некоторые поверхности "нестандартных" типов (например, планоид, используемый для коррекционной пластинки в камерах Шмидта и Райта, описываемый чётным полиномом). Но формат представления и кодирования отличается от ZEMAXoвского, и хотя возможно однозначное преобразование, но мне было круто в лом заниматься этими "рюшечками", поэтому я изначально задался такими жёсткими ограничениями. Может быть, когда-нибудь я реализую что-то ещё. А пока предлагается то, что есть. И всё же полное и абсолютное преобразование всех возможных дизайнов от ZEMAX для OPTIC вряд ли когда-либо будет возможно. Поэтому какие-то ограничения будут оставаться всегда.

_________________________________________________ __________________
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Кто заливал себе версию от 18 апреля 2007г (она лежала там до 19-00 19 апреля 2007)
рекомендую обновить. По той же ссылке. Исправлена глупая и досадная ошибочка.

Кстати, теперь в принципе можно работать без установленного ZEMAXа (но зачем?)
« Последнее редактирование: 19 Апр 2007 [19:09:46] от Дрюша »