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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Макросы и координаты - непонятное "округление"

Макросы и координаты - непонятное "округление"

Ответ
Поиск в этой теме
Непрочитано 10.06.2014, 15:43 #1
Макросы и координаты - непонятное "округление"
Cad-a-Var
 
Регистрация: 10.06.2014
Сообщений: 12

Здравствуйте, уважаемые форумчане.
Пытаюсь начертить "рамку" через макросы (_pline 0,0;210,0;210,270;0,270;0,0;; и т.п.)
И происходит странная проблема. Если "приближение" экрана достаточно большое (чтоб разница между линиями уменщалась на весь экран) - рамка рисуется нормально. Если же "приближение" маленькое (например, чтоб рамка занимала по высоте 1/3 экрана) - происходит какое-то странное "округление" координат. Вместо начала с 20,5 - линия начинается с 20,0. Остальные линии едут точно так же. И чем меньше занимает рамка на экране - тем сильнее "округление". В конечном итоге вместо рамки может получиться просто линии, наложенные друг на друга. Эффект, похожий на "аппроксимацию" окружностей - когда круг приближаешь - пока не регенерируешь - он будет состоять из линий. Только тут регенерация не помогает - он так и рисует изначально... В чём может быть проблема и как с этим бороться?
Просмотров: 4573
 
Непрочитано 10.06.2014, 15:47
1 | #2
AlphaGeo


 
Сообщений: n/a


Может быть, включена привязка?
 
 
Автор темы   Непрочитано 10.06.2014, 16:17
#3
Cad-a-Var


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


Включена, да... Блин... Спасибо! Понять бы эту логику, по которой при задании конкретных точек автокад всё равно привязывается к ближайшим линиям, изменяя их...
Что-то не пойму, а макросом их можно включить/отключить (по аналогии с нажатием F3, а не "снять галочки")?

Последний раз редактировалось Cad-a-Var, 10.06.2014 в 16:30.
Cad-a-Var вне форума  
 
Непрочитано 10.06.2014, 18:10
#4
Веселин


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


Запомнить текущую привязку/отключить/вернуть обратно.
Код:
[Выделить все]
(setq osm (getvar "OSMODE"))
(setvar "OSMODE" 0)
(setvar "OSMODE" osm)
Веселин вне форума  
 
Автор темы   Непрочитано 10.06.2014, 18:46
#5
Cad-a-Var


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


Это если с использованием Лиспа. Это я уже нарыл. Чисто макросом без переменных, видимо, нельзя... Кроме того, как я понял, это просто программное снятие галочек со всех привязок и установка обратно. А интересовало именно отключение привязки (как при нажатии на кнопку с ней или нажатии F3 при неизменённых начальных "горячих клавишах"), чтобы в случае сбоя кода не произошло сбоя настроек.
Всё равно спасибо за ответ! Не мне - так другому кому пригодится
Cad-a-Var вне форума  
 
Непрочитано 10.06.2014, 18:54
#6
AlphaGeo


 
Сообщений: n/a


Cad-a-Var, почитайте Владимира Света. Возможно, найдете что-то для себя.

Добавлено:
В AutoCAD есть команды _SETVAR, _GETVAR и переменные UserI1...5, UserR1...5 и UserS1...5. Они, вероятно, Вам помогут.

Последний раз редактировалось AlphaGeo, 10.06.2014 в 19:07.
 
 
Непрочитано 10.06.2014, 20:47
#7
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от Cad-a-Var Посмотреть сообщение
Понять бы эту логику, по которой при задании конкретных точек автокад всё равно привязывается к ближайшим линиям
Это зависит от того как вы программируете - если (как в Вашем случае), используются командные методы - то это не что иное как "имитация юзера" со всем вытекающими.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 11.06.2014, 11:11
#8
Vladimir_Sergeevich

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


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

Цитата:
Сообщение от Cad-a-Var Посмотреть сообщение
макросом их можно включить/отключить (по аналогии с нажатием F3, а не "снять галочки")
можно: например перед указанием точки задавать опцию _non - самый простой вариант. или копать дизель
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума  
 
Автор темы   Непрочитано 11.06.2014, 13:26
#9
Cad-a-Var


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


Цитата:
Сообщение от AlphaGeo Посмотреть сообщение
почитайте Владимира Света. Возможно, найдете что-то для себя.
"Что-то" нашёл. Ещё до того, как задал здесь вопрос. Но не нашёл ответа на этот вопрос. Как и "var", отвечающий за "включённость" режима привязки. А "юзерские переменные" тут вообще причём?

Цитата:
Сообщение от Дима_ Посмотреть сообщение
это не что иное как "имитация юзера" со всем вытекающими.
Спасибо! Я примерно так и предположил. Одного только не понял. По логике, _pline 0,0;210,0;; имитирует рисование полилинии с задаваемыми с клавиатуры координатами. А по факту получается, как будто имитируется рисование полилинии с "кликаньем" мыши в указанные координаты...

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

Последний раз редактировалось Cad-a-Var, 11.06.2014 в 13:51.
Cad-a-Var вне форума  
 
Непрочитано 16.06.2014, 12:23
1 | #10
Vladimir_Sergeevich

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


_pline _non;0,0;_non;210,0;_non;210,270;_non;0,270;_non;0,0;;
Цитата:
Сообщение от Cad-a-Var Посмотреть сообщение
_pline 0,0;210,0;; имитирует рисование полилинии с задаваемыми с клавиатуры координатами
не совсем так. Имитирует щелчок мыши в заданную координату, и привязка срабатывает в соответствии с установленными режимами.

з.ы. если не ошибаюсь, положение каждой последующей точки должно отсчитываться от предыдущей... если правильно помню работу команды _pline.
т.е. квадрат будет 0,0;100,0;0,100;-100,0;0,-100;;
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...

Последний раз редактировалось Vladimir_Sergeevich, 16.06.2014 в 12:29.
Vladimir_Sergeevich вне форума  
 
Автор темы   Непрочитано 16.06.2014, 12:31
#11
Cad-a-Var


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


Цитата:
Сообщение от Vladimir_Sergeevich Посмотреть сообщение
_pline _non;0,0;_non;210,0;_non;210,270;_non;0,270;_non;0,0;;
Хы. Хитро! Спасибо! Учту на будущее

Цитата:
Сообщение от Vladimir_Sergeevich Посмотреть сообщение
з.ы. если не ошибаюсь, положение каждой последующей точки должно отсчитываться от предыдущей... если правильно помню работу команды _pline
Да нет, вроде... Относительные координаты пишутся с "@" вначале, если правильно помню. Во всяком случае, непрограммным путём в автокаде относительные координаты точно вводятся после "@", а данная команда рисовала нормальный прямоугольник.
Cad-a-Var вне форума  
 
Непрочитано 16.06.2014, 12:39
1 | #12
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от Cad-a-Var Посмотреть сообщение
Относительные координаты пишутся с "@" вначале, если правильно помню
Возможны варианты. В зависимости от включенного / отключенного дин.ввода, насколько я помню.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 16.06.2014, 12:55
#13
Cad-a-Var


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
В зависимости от включенного / отключенного дин.ввода, насколько я помню.
Даже так? ) Определённая логика есть, т.к. макрос иммитирует ввод с клавиатуры, а при дин.вводе вводе координаты вводятся действительно относительно предыдущей точки... Спасибо за уточнение! Это надо учитывать... Просто я не люблю динамический ввод, сразу его отключаю и никогда им не пользуюсь.
Cad-a-Var вне форума  
 
Непрочитано 16.06.2014, 13:34
#14
AlphaGeo


 
Сообщений: n/a


Offtop:
Цитата:
Сообщение от Cad-a-Var Посмотреть сообщение
а при дин.вводе вводе координаты вводятся действительно относительно предыдущей точки...
Зависит от настроек, можно и в абсолютных координатах указывать.
 
 
Автор темы   Непрочитано 16.06.2014, 13:43
#15
Cad-a-Var


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


Offtop:
Цитата:
Сообщение от AlphaGeo Посмотреть сообщение
Зависит от настроек
Жесть... Похоже, чтоб написать простую строку, рисующую примитив, в программе, подходящей всем, сначала надо написать десять строк, отключающих все ненужные настройки и включающих нужные.
Cad-a-Var вне форума  
 
Непрочитано 16.06.2014, 14:06
#16
Кулик Алексей aka kpblc
Moderator

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


А ты думал! Вообще говоря, "САПР на базе AutoCAD - как это делается" в руки и вперед.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 16.06.2014, 14:26
#17
Cad-a-Var


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


Да читал я его... Выборочно... То, что касается Delphi. Ну и захватил некоторые общие понятия. Изучать C для ARX пока не планирую. Возможно и вообще не буду. Буду создавать отдельные окошки в Дельфях, располагать их "поверх всех окон", и в них выводить то, что нужно. А для изучения Lispa пользовался отдельной его книгой.
С таблицами вот только надо разобраться... "Как это делается" вышло раньше появления таблиц.
Cad-a-Var вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Макросы и координаты - непонятное "округление"



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строительные координаты Нефтепроводчик Готовые программы 90 01.03.2021 22:53
Линии электрических соединений Shoorup Программирование 23 07.02.2015 15:13
Прошу помочь запустить макросы для проектирования твердотельных моделей на плоскости листа Геннадий+ Программирование 6 16.10.2009 19:38
Как перевести координаты Модели в координаты Листа? ===AAA=== Программирование 6 24.10.2007 22:09