Друзья! Из официальной справки:
It is important to understand the difference between the input angle and the angle returned by getangle . Angles that are passed to getangle are based on the current settings of ANGDIR and ANGBASE in theCommand Reference. However, once an angle is provided, it is measured in a counterclockwise direction (ignoring ANGDIR) with zero radians as the current setting of ANGBASE
Я мало что понял. Вот как это трактует Полещук и думаю, он перевёл правильно:
При вводе угла с помощью числа он принимается с учетом значения системных переменных ANGBASE и ANGDIR; возвращаемое значение учитывает значение ANGBASE и игнорирует значение ANGDIR.
Так или иначе, я понял, что величина вводимого угла зависит от переменной ANGBASE. Причём, как именно зависит, не написано. Я бы, например, к вводимому углу прибавлял ANGBASE. Ну то есть устанавливаю ANGBASE, допустим, 60 градусов. Угол с помощью getange ввожу 45 градусов. А при выводе его я учту, что ANGBASE это 60 градусов. То есть к 60-ти прибавлю 45 и получу 105 градусов и это значение и выведу.
(Не забываем также, что про путаницу в автокаде с радианами и градусами, то есть её нужно учесть)
Но суть я думаю, ясна. А теперь два кода абсолютно одинаковых. Только первый устанавливает ANGBASE в 0 градусов, а второй 57. Каким же образом ANGBASE влияет на величину вводимого угла? А никаким. И там и там угол на выходе 0.785398 радиан (45 градусов вводится и 45 градусов и выводится). В общем, непонятно в связи с этим, что значит возвращаемое значение учитывает значение ANGBASE, если по факту наблюдаем обратное.
(defun c:foo () ;сперва установим AUNITS в 0 (command "_setvar" "ANGBASE" 0) ;проверим, что AUNITS равна 0 (setq temp (getvar "AUNITS")) (princ "AUNITS равна ") (princ temp) (princ " ") ;теперь установим ANGBASE в 0 (command "_setvar" "ANGBASE" 0) ;проверим, что ANGBASE равна 0 (setq temp (getvar "ANGBASE")) (princ "ANGBASE равна ") (princ temp) (princ " ") ;теперь введём угол 45 и посмотрим чем он равен (setq temp (getangle "Введи угол ")) (princ "угол равен ") (princ temp) (princ) )
(defun c:foo () ;сперва установим AUNITS в 0 (command "_setvar" "ANGBASE" 0) ;проверим, что AUNITS равна 0 (setq temp (getvar "AUNITS")) (princ "AUNITS равна ") (princ temp) (princ " ") ;теперь установим ANGBASE в 57 градусов (command "_setvar" "ANGBASE" 57) ;проверим, что ANGBASE равна 0 (setq temp (getvar "ANGBASE")) (princ "ANGBASE равна ") (princ temp) (princ " ") ;теперь введём угол 45 и посмотрим чем он равен (setq temp (getangle "Введи угол ")) (princ "угол равен ") (princ temp) (princ) )
Спасибо, кто откликнется.
Решено! Перейти к решению.
Решено: Alexander.Rivilis. Перейти к решению.
(getangle) игнорирует и ANGBASE и ANGDIR, (getorient) игнорирует только ANGDIR
Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"
Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Похоже, что игонрирует. Но что-то же это значит:
Важно понимать разницу между углом ввода и угол, возвращаемой getangle. Углы, которые передаются getangle основаны на текущих настройках ANGDIR и ANGBASE в Command Reference. Однако, как только угол есть, он измеряется в направлении против часовой стрелки (игнорируя ANGDIR) с нулевыми радианами как в текущей настройки ANGBASE.
Не может же эта белиберда значить НИЧЕГО (ну то есть что getangle игнорирует ANGDIR и ANGBASE)
+++++++++++++++++++++++++++++++++++++++++++++++++++++
Я не знаю, я не силён в английском, но в конце концов то, что getangle игнорирует ANGDIR и ANGBASE пишется так:
The getangle ignores ANGDIR and ANGBASE
Что то же умное хотели донести создатели этим абзацем, что же?
@Anonymous wrote:
Что то же умное хотели донести создатели этим абзацем, что же?
Это не создатели, а "технические писатели". К сожалению они не всегда понимают предметную область.
Но в данном случае дело не в этом. Если ты задаешь явно значение угла (в текущих единицах), то значения ANGBASE и ANGDIR игнорируются. Но (!!!) если ты задаёшь угол двумя точками, то отсчет угла идёт от ANGBASE. Например, если я задам ANGBASE = 45 градусов и в ответ на (getangle) укажу точки (0 0) и (10 10) то получу результат - 0. Если же ANGBASE будет равно 0, то для этих же точек (getangle) вернёт 0.785398
Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"
Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
koanichL2GH5 написано:Похоже, что игонрирует. Но что-то же это значит:
Важно понимать разницу между углом ввода и угол, возвращаемой getangle. Углы, которые передаются getangle основаны на текущих настройках ANGDIR и ANGBASE в Command Reference. Однако, как только угол есть, он измеряется в направлении против часовой стрелки (игнорируя ANGDIR) с нулевыми радианами как в текущей настройки ANGBASE.
Не может же эта белиберда значить НИЧЕГО (ну то есть что getangle игнорирует ANGDIR и ANGBASE)
+++++++++++++++++++++++++++++++++++++++++++++++++++++
Я не знаю, я не силён в английском, но в конце концов то, что getangle игнорирует ANGDIR и ANGBASE пишется так:
The getangle ignores ANGDIR and ANGBASE
Что то же умное хотели донести создатели этим абзацем, что же?
В данном случае белиберда - это цитируемый машинный перевод 🙂 А в английском оригинале все написано абсолютно четко (разумеется, для знающих английский язык). Чтобы правильно понять смысл, нужно знать разницу между английскими глаголами PASS и PROVIDE. И тот и другой можно перевести как "передать", "указать". Но! Глагол PASS связан с движением или направлением движения (отсюда паспорт - т.е. буквально проход через порт, "пас" - пропуск хода, "пассажир" и т.д.). А PROVIDE означает прямую передачу чего либо (отсюда "провайдер"- тот, который даёт доступ). Потому PASS AN ANGLE по смыслу означает буквально "указать угол движением" или "задать угол по направлению", т.е., указать его мышкой на экране. А PROVIDE AN ANGLE означает "дать значение угла", т.е. ввести его в виде числового значения. Есть и другие мелочи. Потому вот как должен выглядеть смысловой, а не буквальный перевод цитируемого абзаца:
Важно понимать разницу между задаваемым углом, и углом, который возвращает функция getangle. Углы, задаваемые мышкой на экране, вводятся с учетом текущих настроек ANGDIR и ANGBASE (см. Перечень Команд). Однако, если введено числовое значение угла, он измеряется в направлении против часовой стрелки (игнорируя ANGDIR), а значение ANGBASE полагается равным 0 радиан.
Не нашли то, что искали? Задайте вопросы в сообществе или поделитесь своими знаниями.