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

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

Рисование дуги-продолжения указаного примитива.

Ответ
Поиск в этой теме
Непрочитано 07.11.2009, 21:38 #1
Рисование дуги-продолжения указаного примитива.
mikmiron
 
Регистрация: 18.05.2008
Сообщений: 14

Здравствуйте.
При рисовании дуги, если нажать на правую клавишу мышки, то она начинает рисоваться как продолжение последнего нарисованного примитива(линии или дуги) по касательной к конечной точке. По идее, это продолжение заложено в каких-то переменных. Может кто-то подскажет в каких, хочу написать програмку которая изменяет это значение по клику на конец нужного примитива, чтоб потом можно было рисовать его "продолжение".
Спасибо.
Просмотров: 3333
 
Непрочитано 07.11.2009, 21:54
#2
Кулик Алексей aka kpblc
Moderator

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


По-моему, LASTPOINT - это координаты последней точки. А дальше только математика...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 07.11.2009, 23:03
#3
mikmiron


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


Нет, изменение LASTPOINT никак не влияет на "выход" дуги из последнего примитива.
mikmiron вне форума  
 
Непрочитано 07.11.2009, 23:09
#4
Кулик Алексей aka kpblc
Moderator

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


Простейший вариант:
Код:
[Выделить все]
(command "_.arc" "_tan" (getvar "lastpoint"))
(while (/= (getvar "cmdactive") 0)
(command pause)
)
Код не проверял (и вообще написал "насухую" - кад не запустить)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 07.11.2009, 23:40
#5
mikmiron


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


Не, не получается.
Хуже, если это сидит не в переменных, а в функции рисования самой дуги.
Тогда придется или просто написать свою функцию рисования дуги, с указанием нужного примитива и конечной точки. Или, попроще, програмка, которая при указании на дугу или отрезок рисует такой-же с окончанием в нужной точке, и тут-же его стирает.
mikmiron вне форума  
 
Непрочитано 08.11.2009, 00:04
#6
Кулик Алексей aka kpblc
Moderator

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


Значит
Код:
[Выделить все]
(command "_.arс" "")
(while (/= (getvar "cmdactive") 0)
(command pause)
)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.11.2009, 09:30
#7
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 860
Отправить сообщение для Disney с помощью Skype™


Цитата:
Сообщение от mikmiron Посмотреть сообщение
хочу написать програмку которая изменяет это значение по клику на конец нужного примитива, чтоб потом можно было рисовать его "продолжение".
А тупо, при запросе начальной точки, указать конец нужного примитива, кстати не факт, что он окажется концом, вполне возможно, что это будет начало. Или в этом и смысл, чтоб найти именно конец, тогда что же считать концом той же дуги Можно ли "поменять местами" StartPoint и EndPoint в дуге?
А про LASTPOINT, не понятно:
задаём новое значение
Цитата:
Команда:LASTPOINT
Новое значение LASTPOINT <971.1140,3719.3525,0.0000>: 0,0,0
проверяем
Цитата:
Команда:LASTPOINT
Новое значение LASTPOINT <0.0000,0.0000,0.0000>:
всё нормально изменили, а вот при рисовании, по правому клику, начинает опять с 971.1140,3719.3525,0.0000
__________________
Почему все вдруг становятся умными, когда уже не надо?

Последний раз редактировалось Disney, 10.11.2009 в 13:41.
Disney вне форума  
 
Автор темы   Непрочитано 10.11.2009, 17:47
#8
mikmiron


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


Я все решил. Написал программу, которая при клике на конец отрезка или дуги рисует поверх него такой-же примитив с последней точкой, ближайшей к указаной. Причем "рисовать" пришлось тупо в команде command, так как другие способы не оставляют информацию о последней точке ( не путайте с LASTPOINT). И в конце програмки стоит (entdel(entlast)). Всё. Лет 6 руки не доходили автоматизировать этот момент, хотя требуется это раз 10 в день.
P.S. А переменная LASTPOINT тут вообще не причем. Решение можно упростить, только если найти переменные(если они есть) которые используются при рисовании дуги или отрезка при нажатии на пр. кнопку или ENTER.
Вложения
Тип файла: lsp cont.lsp (1.4 Кб, 54 просмотров)
mikmiron вне форума  
 
Непрочитано 10.11.2009, 19:56
#9
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от mikmiron Посмотреть сообщение
При рисовании дуги, если нажать на правую клавишу мышки, то она начинает рисоваться как продолжение последнего нарисованного примитива(линии или дуги) по касательной к конечной точке.
Что-то у меня так не получается. По ПКМ контекстное меню выскакивает.
Миниатюры
Нажмите на изображение для увеличения
Название: arc.jpg
Просмотров: 56
Размер:	33.6 Кб
ID:	28589  
Do$ вне форума  
 
Автор темы   Непрочитано 10.11.2009, 20:03
#10
mikmiron


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


Тогда нажмите ENTER. У меня на правой кнопке enter висит, даже забыл, что может быть по другому.
mikmiron вне форума  
 
Непрочитано 10.11.2009, 20:14
#11
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 860
Отправить сообщение для Disney с помощью Skype™


mikmiron,
придумал... главное работает, тока зачем рисовать в случаи дуги дугу, всё так же как и для линии прокатит.
И много кнопкотыканий, надо в конец твоей проги добавить
(vl-cmdf "_.arc" "" pause)
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Автор темы   Непрочитано 10.11.2009, 20:25
#12
mikmiron


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


На счет линии согласен, но нужно тогда вычислять точку, от которой линия в конечную точку дуги будет являться касательной. А на счет автозапуска дуги - нет, я ведь могу захотеть рисовать отрезок после этого.
mikmiron вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Рисование дуги-продолжения указаного примитива.

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск