2 / 41 / 10
Регистрация: 12.09.2012
Сообщений: 334
|
|
1 | |
Почему так работает "_line" ?25.02.2016, 20:50. Показов 1453. Ответов 10
Метки нет (Все метки)
Доброго всем времени суток!
Код
(defun c:my_point () (setq p1 (getpoint "\nââåäèòå áàçîâóþ òî÷êó:")) ; (setq p2 (polar p1 pi 100)) ; Çàäàåì êîîðäèíàòû òî÷êè p2 (setq p3 (polar p2 (/ (- pi) 2) 100)) ; (command "_line" p1 p2 "") ; ðèñóåì ëèíèþ 1 (setq line1 (entlast)) ; Çàïèñûâàåì èìÿ îáúåêòà (command "_line" p2 p3 "") ; ðèñóåì ëèíèþ 2 (setq line2 (entlast)) ; Çàïèñûâàåì èìÿ îáúåêòà (setvar "FILLETRAD" 10) ; óñòàíàâëèâàåì ñèñòåìíóþ ïåðåìåííóþ ðàäèóñà ;(command "_Fillet" line1 line2) ; Ñîïðÿæåíèå ) (command "_line" p1 p2 "") (command "_line" p2 p3 "") то вторая (перпендикулярная) линия начинается из середины горизонтальной и идет под углом к точке p3. Что не так? Добавлено через 1 час 12 минут Решил эту проблему переставлением координат местами, в итоге с сопряжением снова не то что то.. Не могу понять почему? Код
(defun c:my_point () (setq p1 (getpoint "\nââåäèòå áàçîâóþ òî÷êó:")) ; (setq p2 (polar p1 pi 100)) ; Çàäàåì êîîðäèíàòû òî÷êè p2 (setq p3 (polar p2 (/ (- pi) 2) 100)) ; Çàäàåì êîîðäèíàòû òî÷êè p3 (setq p4 (polar p3 0 100)) ; Çàäàåì êîîðäèíàòû òî÷êè p3 (command "_line" p1 p2 "") ; ðèñóåì ëèíèþ 1 (setq line1 (entlast)) ; Çàïèñûâàåì èìÿ îáúåêòà (command "_line" p3 p2 "") ; ðèñóåì ëèíèþ 2 (setq line2 (entlast)) ; Çàïèñûâàåì èìÿ îáúåêòà (command "_line" p4 p1 "") ; ðèñóåì ëèíèþ 1 (setq line3 (entlast)) ; Çàïèñûâàåì èìÿ îáúåêòà (command "_line" p4 p3 "") ; ðèñóåì ëèíèþ 2 (setq line4 (entlast)) ; Çàïèñûâàåì èìÿ îáúåêòà (setvar "FILLETRAD" 10) ; óñòàíàâëèâàåì ñèñòåìíóþ ïåðåìåííóþ ðàäèóñà (command "_Fillet" line1 line2) ; Ñîïðÿæåíèå (command "_Fillet" line3 line4) ; Ñîïðÿæåíèå (command "_Fillet" line2 line3) ; Ñîïðÿæåíèå (command "_Fillet" line1 line4) ; Ñîïðÿæåíèå )
0
|
25.02.2016, 20:50 | |
Ответы с готовыми решениями:
10
Объясните, пожалуйста, почему так происходит в первом варианте и почему второй вариант работает корректно? Почему так работает, а так нет? Aa, bb, cc = [map(int, line) for line in lines] - генератор не работает Глобальные и локальные переменные, одна и та же прога в процедуре Не работает, а просто так работает. Почему? В С++ так не работает, объясните пожалуйста, почему в Pythone работает |
1018 / 964 / 151
Регистрация: 10.08.2015
Сообщений: 5,168
|
|
25.02.2016, 21:32 | 2 |
при рисовании командным методом необходимо обнулять переменные osmode, blipmode и cmdecho. Первые две влияют на результат, третья на скорость
1
|
2 / 41 / 10
Регистрация: 12.09.2012
Сообщений: 334
|
|
26.02.2016, 09:10 [ТС] | 3 |
т.е. просто присвоив "" (пустую строку) или nill ?
Добавлено через 40 минут Код
(defun c:my_point () (setq p1 (getpoint "\nвведите базовую точку:")) ; (setq p2 (polar p1 pi 100)) ; Задаем координаты точки p2 (setq p3 (polar p2 (/ (- pi) 2) 100)) ; Задаем координаты точки p3 (setq p4 (polar p3 0 100)) ; Задаем координаты точки p3 (command "_line" p1 p2 "") ; рисуем линию 1 (setq line1 (entlast)) ; Записываем имя объекта (command "_line" p3 p2 "") ; рисуем линию 2 (setq line2 (entlast)) ; Записываем имя объекта (command "_line" p4 p1 "") ; рисуем линию 1 ; ((( (setq osmode "" blipmode "" cmdecho ""); (setq line3 (entlast)) ; Записываем имя объекта (command "_line" p4 p3 "") ; рисуем линию 2 ; ((( (setq osmode "" blipmode "" cmdecho ""); (setq line4 (entlast)) ; Записываем имя объекта (setvar "FILLETRAD" 10) ; устанавливаем системную переменную радиуса (command "_Fillet" line1 line2) ; Сопряжение ; ((( (setq osmode "" blipmode "" cmdecho ""); (command "_Fillet" line3 line4) ; Сопряжение ; ((( (setq osmode "" blipmode "" cmdecho ""); (command "_Fillet" line2 line3) ; Сопряжение ; ((( (setq osmode "" blipmode "" cmdecho ""); (command "_Fillet" line1 line4) ; Сопряжение ; ((( (setq osmode "" blipmode "" cmdecho ""); )
0
|
1018 / 964 / 151
Регистрация: 10.08.2015
Сообщений: 5,168
|
||||||
26.02.2016, 11:15 | 4 | |||||
osmode, blipmode и cmdecho - это системные переменные автокада, для них есть функции setvar и getvar
1
|
2 / 41 / 10
Регистрация: 12.09.2012
Сообщений: 334
|
|
26.02.2016, 20:08 [ТС] | 5 |
Т.е. ей нужно присвоить нуль перед каждым вызовом command("_line" ....); а после окончания рисования восстановить ее? или как?
Добавлено через 7 минут Код
(defun c:my_point () (setq p1 (getpoint "\nââåäèòå áàçîâóþ òî÷êó:")) ; (setq p2 (polar p1 pi 100)) ; Çàäàåì êîîðäèíàòû òî÷êè p2 (setq p3 (polar p2 (/ (- pi) 2) 100)) ; Çàäàåì êîîðäèíàòû òî÷êè p3 (setq p4 (polar p3 0 100)) ; Çàäàåì êîîðäèíàòû òî÷êè p3 (setq osm (getvar 'osmode)) ; çàïîìèíàåì ñèñòåìíóþ ïåðåìåííóþ (setvar 'osmode 0) ; óñòàíàâëèâàåì ñèñòåìíóþ ïåðåìåííóþ (command "_line" p1 p2 "") ; ðèñóåì ëèíèþ 1 (setq line1 (entlast)) ; Çàïèñûâàåì èìÿ îáúåêòà (command "_line" p3 p2 "") ; ðèñóåì ëèíèþ 2 (setq line2 (entlast)) ; Çàïèñûâàåì èìÿ îáúåêòà (setvar 'osmode 0) (command "_line" p4 p1 "") ; ðèñóåì ëèíèþ 1 (setq line3 (entlast)) ; Çàïèñûâàåì èìÿ îáúåêòà (setvar 'osmode 0) (command "_line" p4 p3 "") ; ðèñóåì ëèíèþ 2 (setq line4 (entlast)) ; Çàïèñûâàåì èìÿ îáúåêòà (setvar 'osmode 0) (setvar "FILLETRAD" 10) ; óñòàíàâëèâàåì ñèñòåìíóþ ïåðåìåííóþ ðàäèóñà (command "_Fillet" line1 line2) ; Ñîïðÿæåíèå (setvar "FILLETRAD" 10) (command "_Fillet" line3 line4) ; Ñîïðÿæåíèå (setvar "FILLETRAD" 10) (command "_Fillet" line2 line3) ; Ñîïðÿæåíèå (setvar "FILLETRAD" 10) (command "_Fillet" line1 line4) ; Ñîïðÿæåíèå )
0
|
1018 / 964 / 151
Регистрация: 10.08.2015
Сообщений: 5,168
|
|
27.02.2016, 10:52 | 6 |
а что должно было получиться?
Нет, достаточно один раз перед всеми вызовами command
0
|
2 / 41 / 10
Регистрация: 12.09.2012
Сообщений: 334
|
||||||
27.02.2016, 13:24 [ТС] | 7 | |||||
Все равно ничего. Проблема похоже не в этом, а в Enlast либо чем то еще.
Задача: Нарисовать квадрат 100 x 100 , с сопряжением в углах R=5 Код:
т.е. в двух углах сопряжение нормальное, в двух других происходит что то не то...
0
|
1018 / 964 / 151
Регистрация: 10.08.2015
Сообщений: 5,168
|
||||||
27.02.2016, 14:28 | 8 | |||||
Так наверное не те отрезки сопрягаются... Внимательнее надо быть...
0
|
2 / 41 / 10
Регистрация: 12.09.2012
Сообщений: 334
|
||||||
27.02.2016, 14:34 [ТС] | 9 | |||||
Убрал все системные переменные, поменял координаты на начальный вид заработало
0
|
1018 / 964 / 151
Регистрация: 10.08.2015
Сообщений: 5,168
|
||||||
27.02.2016, 14:43 | 10 | |||||
Сообщение было отмечено lestat89 как решение
Решение
переключайте расккладку на русский перед копированием кириллицы из влиде
Вот то, о чем я говорил
2
|
2 / 41 / 10
Регистрация: 12.09.2012
Сообщений: 334
|
|
27.02.2016, 15:15 [ТС] | 11 |
Благодарю! Вопрос решен! Сейчас создам новый
0
|
27.02.2016, 15:15 | |
27.02.2016, 15:15 | |
Помогаю со студенческими работами здесь
11
Почему работает не так? Почему так не работает? Почему так не работает Почему так работает? Почему так не работает? почему это так работает Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |