|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
14.05.2012, 14:46 | #1 | |
как выполнить сопряжение для нескольких прямых выделив их секрет рамкой
энергетик
Владивосток
Регистрация: 01.03.2012
Сообщений: 72
|
||
Просмотров: 4541
|
|
||||
энергетик Регистрация: 01.03.2012
Владивосток
Сообщений: 72
|
Спасибо что потратили свое время. Однако у меня программа не работает.
При вводе кода в строке меню у меня следующее: Команда: PJ Select ARCS, LINES, AND POLYLINES to be joined Выберите объекты: Противоположный угол: найдено: 7 Выберите объекты: Enter Polyline Width <0.0> Неизвестная команда "PEDIT". Для вызова справки нажмите F1. <имя объекта: 7EE8C520> Неизвестная команда "Y". Для вызова справки нажмите F1. Неизвестная команда "W". Для вызова справки нажмите F1. 0.000000 *Прервано* У меня Autocad 2011. И еще такой вопрос. После отладки программы радиус сопряжения можно будит как то менять? |
|||
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813
|
|
|||
|
||||
энергетик Регистрация: 01.03.2012
Владивосток
Сообщений: 72
|
Все равно ничего не пологилось. Может я чего не так делаю?
После добавления нижнего подчеркивания перед всеми командами в командной строке у меня следующее Команда: _pj _Select ARCS, LINES, AND POLYLINES to be joined Выберите объекты: Противоположный угол: найдено: 3 Выберите объекты: найдено: 1, всего: 4 Выберите объекты: Противоположный угол: найдено: 5, всего: 9 Выберите объекты: Enter Polyline Width <0.0> Ответьте Да или Нет. ; ошибка: Функция прервана. Сделать его полилинией? <Д> Задайте параметр [Замкнуть/Добавить/Ширина/Вершина/СГладить/СПлайн/Убрать сглаживание/Типлин/оБратить/Отменить]: *Прервано* При запросе соманды pedit что выбирать? Задайте параметр [Замкнуть/Добавить/Ширина/Вершина/СГладить/СПлайн/Убрать сглаживание/Типлин/оБратить/Отменить][/i] Где в коде строчка определяющая радиус сопряжения? Если не сложно опишите как программа должна работать. Я в этом совсем ничего не понимаю. |
|||
|
||||
Конструктор Регистрация: 06.04.2005
Из тех ворот-откуда весь народ.
Сообщений: 357
|
а этой строчки в коде нетути...это не тот лисп который вам нужен..он не рисует сопряжения,а объединяет в полилинии..
__________________
"Мнение не бывает ни истинным, ни ложным, а лишь полезным в жизни или бесполезным. ",- Ауробиндо И не надо делать удивленных движений руками. |
|||
|
||||
энергетик Регистрация: 01.03.2012
Владивосток
Сообщений: 72
|
Этот вариант мне не подходит. Дикое желание выделять объекты рамкой и при запросе радиуса сопряжения все элементы имеющие общую точку на конце приметива образуют сопряжение.
Неужели не у кого небыло такого желания. Или с этим никто не сталкивался? Господа програмисты, не дайте мне пустить корни за компом. Последний раз редактировалось Роман Амосов, 16.05.2012 в 17:57. |
|||
|
||||
энергетик Регистрация: 01.03.2012
Владивосток
Сообщений: 72
|
Спасибо что откликнулись. Тема до сих пор актуальна т.к. задача так и не решена.
Я наверно чего то не понимаю, но при вводе кода в строку получаю следующее Команда: (defun c:soupl (/ x00 x01 x02 x03 x04 x05 x06 x07 x08 x09 x0a x0b x0c) (_> 02 (initget 6) (_> 03 (setq x00 (getreal "\nВведите радиус закругления: ")) (_> 04 (setq x01 '((nil (0.0 . (/ pi 2)) nil ((/ (* pi 3) 2) . 0.0)) (('(_> 05 ((0.0 . (/ pi 2)) nil ((/ pi 2) . pi) nil) (('(_> 06 (nil ((/ pi 2) . pi) nil (pi . (/ (* pi 3) 2))) (('(_> 07 (((/ (* pi 3) 2) . 0.0) nil (pi . (/ (* pi 3) 2)) nil))) (_> 08 (while (setq x02 (ssget '((0 . "line")))) ((_> 09 (setq x03 (list) (((_> 10 x04 -1) ((_> 11 (repeat (sslength x02) (((_> 12 (setq x03 (append x03 (((((_> 13 (list (cdr (assoc 10 (setq x06 (entget (setq x05 (ssname x02 (setq x04 (1+ x04)))))))) ((((((_> 14 (cdr (assoc 11 x06))))) (((_> 15 (entdel x05)) ((_> 16 (setq x02 nil (((_> 17 x04 (list)) ((_> 18 (while x03 (((_> 19 (setq x05 (car x03) ((((_> 20 x06 (cadr x03)) (((_> 21 (or (and (or (and (setq x07 (car (setq x02 (member x05 (cdr x03))))) (((((((_> 22 (setq x05 (polar x06 (setq x08 (angle x06 x05)) (- (distance x06 x05) x00)) ((((((((_> 23 x0c (nth (rem (setq x08 (fix (* x08 (/ 2 pi)))) 2) x05))) ((((((_> 24 (and (setq x07 (car (setq x02 (member x06 (cddr x03))))) (((((((_> 25 (setq x06 (polar x05 (setq x08 (angle x05 x06)) (- (distance x05 x06) x00)) ((((((((_> 26 x0c (nth (rem (setq x08 (fix (* x08 (/ 2 pi)))) 2) x06)))) (((((_> 27 (progn (setq x09 (car x02) (((((((_> 28 x0a (cadr x02) (((((((_> 29 x02 (cddr x02)) ((((((_> 30 (if x0a (((((((_> 31 (or (zerop (rem (setq x0b (- (length x03) (length x02) 2)) 2)) ((((((((_> 32 (setq x02 (cons x0a x02) (((((((((_> 33 x0a x09 (((((((((_> 34 x09 (nth (setq x0b (1- x0b)) x03))) (((((((_> 35 (setq x0b (length x03) ((((((((_> 36 x0a x09 ((((((((_> 37 x09 (cadr (reverse x03)))) ((((((_> 38 (if (equal x07 x09) (((((((_> 39 (setq x09 (polar x0a (setq x07 (angle x0a x09)) (- (distance x0a x09) x00)) ((((((((_> 40 x0c (if (zerop (rem (setq x07 (fix (* x07 (/ 2 pi)))) 2)) (((((((((_> 41 (list 10 (car x09) x0c 0.0) (((((((((_> 42 (list 10 x0c (cadr x09) 0.0))) (((((((_> 43 (setq x0a (polar x09 (setq x07 (angle x09 x0a)) (- (distance x09 x0a) x00)) ((((((((_> 44 x0c (if (zerop (rem (setq x07 (fix (* x07 (/ 2 pi)))) 2)) (((((((((_> 45 (list 10 (car x0a) x0c 0.0) (((((((((_> 46 (list 10 x0c (cadr x0a) 0.0)))) ((((((_> 47 (setq x0a (list x09 x0a)) ((((((_> 48 (entmake (list '(0 . "ARC") ((((((((_> 49 x0c ((((((((_> 50 (cons 40 x00) ((((((((_> 51 (cons 50 (eval (car (setq x09 (nth x07 (nth x08 x01)))))) ((((((((_> 52 (cons 51 (eval (cdr x09))))) ((((((_> 53 (setq x09 (list)) ((((((_> 54 (repeat x0b (((((((_> 55 (setq x09 (append x09 (list (car x03))) ((((((((_> 56 x03 (cdr x03))) ((((((_> 57 (setq x03 (append x09 x02 (list x05 x06) x0a)))) ((((_> 58 (setq x04 (append x04 (list x05 x06)))) (((_> 59 (setq x03 (cddr x03))) ((_> 60 (repeat (/ (length x04) 2) (((_> 61 (entmake (list '(0 . "LINE") (cons 10 (car x04)) (cons 11 (cadr x04)))) (((_> 62 (setq x04 (cddr x04)))) (_> 63 (princ)) ; ошибка: синтаксическая ошибка Команда: *Прервано* Команда: soup Неизвестная команда "SOUP". Для вызова справки нажмите F1. Команда: _soup Неизвестная команда "SOUP". Для вызова справки нажмите F1. Подскажите может я чего не так делаю? |
|||
|
||||
Котло- и реакторостроение Регистрация: 25.02.2010
Барнаул
Сообщений: 807
|
|
|||
|
||||
Котло- и реакторостроение Регистрация: 25.02.2010
Барнаул
Сообщений: 807
|
ciril, Если линии перпендикулярны, то нормально работает. Если линии под другим углом, тогда остается дуга, а линии удаляются.
Не знаю как автору вопроса, можно было бы еще добавить чтобы, предыдущее значение радиуса сохраналось. Блин. Чето совсем непонятно. Раз на раз не приходится. Походу зависит от такого каким образом были начерчены линии. Иногда удаляет вообще все и линии и дугу. Иногда отрисовывает все нормально даже с линиями под углами отличными от 90. |
|||
|
||||
САПР Регистрация: 29.09.2011
СПб
Сообщений: 283
|
Да не за что Еще раз подчеркну, что на отрезках, которые неортогональны в МСК, будет прерываться с ошибкой, также будет прерываться с ошибкой на невзаимоперпендикулярных отрезках. При совпадении более двух узлов - результат непредсказуем Я чуть позже поправлю ее, чтобы работала на невзаимоперпендикулярных.
Astartes, там непредсказуемый результат: углы из списка x01, а позиция в списке - округление угла, под которым расположен отрезок. Такое решение - самое простое, другое пока не придумалось |
|||