API КОМПАС пробивает очередное дно

Автор Lemieux, 06.01.25, 00:11:48

« назад - далее »

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

Golovanev

Коллинеарность векторов определяется допуском на разницу.... Не надо ничего округлять. И это везде так. Во всех САПР. По другому просто не бывает.

Vi2

Цитата: IgorT от 07.01.25, 00:09:41Так ведь до целого же. 44,999999 и 45.0000000000000000001 должно быть принято как 45. Разве не так?
Я имел в виду вектор оси, повёрнутый на 45 градусов. Типа N=(sqrt(2)/2,sqrt(2)/2,0). Может быть такой вектор? Может. N=(0.70710678118654752440084436210485,0.70710678118654752440084436210485,0). Если будешь вычислять другим способом, то возникнет разница. И вот куда округлять-то?

IgorT

В этом случае округляем до N- го знака.

lavgirb

Цитата: UU от 06.01.25, 00:36:42Да, это днище началось, когда Компас стал 64-разрядным, когда ты знаешь, что размер 45, а он на 0,00000000000000000001 отличается от 45.
Думаю куча глюков из-за этого мусора.
В других САПР это тоже бывает для типа Double, но реже чем в КОПМАС. По ощущениям.
Бывает, что сравнение с числами типа Х >= 1 не срабатывает. Из-за того, что Х после вычислений должен быть равным 1, а по факту X = 0.9999999999999999999999...
Делать нечего, иногда Double меняю на Single. Помогает.
Для некоторых случаев сделал специальную функцию для сравнения.
Как говорится, главное, чтоб работало )

UU

Цитата: lavgirb от 07.01.25, 12:19:15В других САПР это тоже бывает для типа Double, но реже чем в КОПМАС. По ощущениям.
Бывает, что сравнение с числами типа Х >= 1 не срабатывает. Из-за того, что Х после вычислений должен быть равным 1, а по факту X = 0.9999999999999999999999...
Делать нечего, иногда Double меняю на Single. Помогает.
Для некоторых случаев сделал специальную функцию для сравнения.
Как говорится, главное, чтоб работало )
Давно уже так делаю.

Lemieux

Цитата: Vi2 от 06.01.25, 22:42:14Не можете привести свой код определения коллинеарности? Ну чтобы оценить Ваши скиллы в этом.
Ну я лоускил.
Цитироватьdouble dotProduct = vector1.DotProduct(vector2);
double result = Math.Abs(dotProduct);
if (result == 1)
    return true;

Lemieux

Цитата: lavgirb от 07.01.25, 12:19:15В других САПР это тоже бывает для типа Double, но реже чем в КОПМАС. По ощущениям.
Я три года писал под AutoCAD и никогда такого не было. Вот когда я гавнокод начинал писать, то такое появлялось.

Lemieux

Цитата: Golovanev от 07.01.25, 00:34:16Коллинеарность векторов определяется допуском на разницу
Это в мемориз!

Цитата: Golovanev от 07.01.25, 00:34:16Во всех САПР. По другому просто не бывает.
Во всех САПР от АСКОН? Вполне вероятно.

Вообще тема замечательная.

Toptotal

Цитата: Lemieux от 07.01.25, 15:55:31Я три года писал под AutoCAD
А что под автогад написали ?

Lemieux

Цитата: Toptotal от 07.01.25, 16:35:32А что под автогад написали ?
САПР для выпуска КД электротехнических шкафов.

IgorT

#30
Цитата: Lemieux от 07.01.25, 17:04:49САПР для выпуска КД электротехнических шкафов.
О! У меня такой  LSP был однажды сделан. Шкаф менял габариты и начинку, рисовался чертеж.
Заказчик так хотел.
Давно это было.
Сейчас такое сделать Компасом легко.
И API не потребуется.
Хотя до возможностей ТФ Компасу ещё далеко в плане генерации 3D моделей.

Toptotal

Цитата: IgorT от 07.01.25, 17:51:25Шкаф менял габариты и начинку, рисовался чертеж.
в SW ,без програмирование делал такое. если не сильно меняется , исполнения тоже помогали каждого узла в итоге все детали в новом исполнении при создании исполения.
не каких кодов и апи не требовалось.

Lemieux

Цитата: IgorT от 07.01.25, 17:51:25О! У меня такой  LSP был однажды сделан. Шкаф менял габариты и начинку, рисовался чертеж.
Заказчик так хотел.
Сначала разработка велась на AutoLISP, так как DCL предоставляет скудные возможности интерфейса, то всё было переписано на C# и WPF. Что, в свою очередь, дало очень много возможностей. У меня был принцип другой. Если шкаф РЗА, то приходила принципиалка, пользователь с неё делал монтажку и Э7. Из монтажки выходили автоматически ПЭ4, различная маркировка (кембрики, различные наклейки), автоматический занос в 1С. Если был контроллерный шкаф, то Э7 делалась в полуавтоматическом режиме, по Э7 Э4 делалась в автоматическом режиме, после этого выводилось всё, что и для РЗА + делались сборочные чертежи кабелей и автоматически считались длины. Был ещё модуль типовых шкафов питания. Где приходил опросный лист, пользователь его вбивал и сразу же получал Э3, Э7 (там уже всё было, нужно было только оборудование разместить на динрейках), ПЭ3, маркировку. Пример интерфейса ниже. Так же я сделал автоматическое формирование пдф. Пользователь нажимал кнопку, а весь проект выводился в пдф. Это было удобно тем, кто занимается распечаткой РКД.
Screenshot 2025-01-07 185306.png

IgorT

Замечательно!
Пытался в те времена на DCL наваять интерфейс. Но что-то не очень у меня получалось. Забил на DCL и стал делать интерфейсы на  VB. По данным полученным работал lsp. Все замечательно работало! Но это было не эл.шкафы.
Сейчас совсем отошёл от AutoCAD. Возможностей Компаса достаточно для работы, разве что  SW иногда. Но редко, для расчетов и анимации.
Однако есть идеи чего накодить под Компас для облегчения работы, но не уверен, что смогу, того задора уже нет. Я не молод.



YNA

У неопределённости размера есть другая, гораздо более опасная сторона.
На рисунке приведён пример последствий неопределённости. Например, если взять угол 44,9999999 гр. то зависимая величина будет положительной. Если взять угол 45,000000001, то зависимая величина будет отрицательной. С этим явлением легко бороться введя некий гистерезис с использованием ПОС и ограничение. Даже если взять угол ровно 45 гр, то зависимая величина будет отрицательная (видимо имеет больший приоритет).
Несоблюдение этого правила может привести к самовозбуждению системы уравнений. Такой принцип используется в электронике, когда в микросхеме вводится ПОС и триггеры устойчиво переключаются минуя усилительный режим и, соответственно возможность самовозбуждения.
Такое случается в усилителях, когда он впадает в режим самовозбуждения и горят дорогущие пищалки и не менее дорогущие выходные транзисторы от сквозного тока (проверено на собственной шкуре)  :-)))