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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Почему программа работает неправильно?

Почему программа работает неправильно?

Ответ
Поиск в этой теме
Непрочитано 26.08.2011, 12:12 #1
Почему программа работает неправильно?
FSergio
 
Регистрация: 26.08.2011
Сообщений: 20

Пытаюсь написать программу котороя дожна рисовать "box" на определённую величину меньше чем указанный точками.

(setq
p1 (getpoint)
p2 (getpoint)
)
(setq
u1 (list (+ (nth 0 p1) 200.0) (+ (nth 1 p1) 200.0) (+ (nth 2 p1) 200.0))
)

(command "_.box" u1 p2)

в разных ситуациях программа работает по разному но практически всегда уменьшает бокс лишь по оси z хотя при отладке видно что переменные которые задают координаты точек вычисляются правильно.
В чём ошибка?
Просмотров: 5879
 
Непрочитано 26.08.2011, 12:20
1 | #2
Дима_

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


В не отключенных привязках (ищи по форуму - стандартная ошибка начинающих лиспописателей).
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 26.08.2011, 13:20
#3
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,835
<phrase 1=


Цитата:
Сообщение от FSergio Посмотреть сообщение
(setq
u1 (list (+ (nth 0 p1) 200.0) (+ (nth 1 p1) 200.0) (+ (nth 2 p1) 200.0))
)
ну и правильнее выделять координаты с помощью функций:
(car p1) - X;
(cadr p1) - Y;
(caddr p1) - Z.
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума  
 
Автор темы   Непрочитано 26.08.2011, 13:36
#4
FSergio


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


Огромное Спасибо! Дело на самом деле в привязках. Не до конца покка правда разобрался как их временно отключать. Вообще довольно странно что при явном указании координат точки в AutoCAD такой проблемы с привязками не возникает а здесь...


(car p1) - X;
(cadr p1) - Y;
(caddr p1) - Z
Я пробовал изначально результат был тот же. Думал в этом проблема поэтому изменил
FSergio вне форума  
 
Непрочитано 26.08.2011, 14:03
#5
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,835
<phrase 1=


Была хорошая тема http://forum.dwg.ru/showthread.php?t...F0%F3%E3%E8%E5 Почитайте...
А с п.36 начните изучение
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума  
 
Автор темы   Непрочитано 26.08.2011, 14:26
#6
FSergio


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


Ну а вот так почему не работает? В конце запрашивает у меня высоту бокса ???????
(setq
p1 (getpoint)
p2 (getpoint)
)
(setq
u1 (list (+ (nth 0 p1) 200.0) (+ (nth 1 p1) 200.0) (+ (nth 2 p1) 200.0))
)

(setq old_osmode (getvar "osmode"))
(setvar "osmode" 0)
(command "_.box" u1 p2)
(setvar "osmode" old_osmode)
FSergio вне форума  
 
Непрочитано 26.08.2011, 14:40
#7
Makson


 
Регистрация: 24.04.2008
Сообщений: 1,131


Цитата:
Сообщение от FSergio Посмотреть сообщение
В конце запрашивает у меня высоту бокса ???????
Это Вы вопрос себе или нам задаете?Или это все таки утверждение?
Makson вне форума  
 
Автор темы   Непрочитано 26.08.2011, 14:43
#8
FSergio


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


Это вопрос. Я вставил отключение привязок
(setq old_osmode (getvar "osmode"))
(setvar "osmode" 0)
(command "_.box" u1 p2)
(setvar "osmode" old_osmode)
и программа перестала нормально работать. А если привязки отключить вручную то всё работает.
FSergio вне форума  
 
Непрочитано 26.08.2011, 14:53
#9
Makson


 
Регистрация: 24.04.2008
Сообщений: 1,131


Что значит перестала нормально работать? Что выдает?
Makson вне форума  
 
Автор темы   Непрочитано 26.08.2011, 14:55
#10
FSergio


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


Запрашивает либо длинну либо высату а бокс не строит
FSergio вне форума  
 
Непрочитано 26.08.2011, 14:59
#11
Makson


 
Регистрация: 24.04.2008
Сообщений: 1,131


НУ так правильно...при построении box ты должен указать две точки и высоту. Точки ты указал, далее высоту нужно указать.
Makson вне форума  
 
Автор темы   Непрочитано 26.08.2011, 15:07
#12
FSergio


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


нет. Если отключена привязка вручную то всё строится нормально указанием двух точек с разными координатами по всем трём осям и всё строится так как надо. А вот когда я попытался на время выполнения отключить привязку програмно бокс не строится.
FSergio вне форума  
 
Непрочитано 26.08.2011, 15:26
#13
Makson


 
Регистрация: 24.04.2008
Сообщений: 1,131


Бред какой то. По двум точкам ни как нельзя построить бокс. Для бокса нужно три координаты. По двум точкам трехмерный объект нельзя ни как построить.
Makson вне форума  
 
Непрочитано 26.08.2011, 15:29
#14
Oliver_88

"ценный кадр"
 
Регистрация: 02.12.2010
Сообщений: 115
<phrase 1=


FSergio, с консоли ваш код (пост №6) прекрасно работает.

Последний раз редактировалось Oliver_88, 26.08.2011 в 16:29.
Oliver_88 вне форума  
 
Автор темы   Непрочитано 26.08.2011, 15:33
#15
FSergio


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


что значит нельзя? вызовите команду _box задайте координаты первой точки 0,0,0 к примеру, затем второй 1000,1000,1000
Будет построен бокс. Я проделал это наверное 1 000 000 раз строя панели мебели от оодного угла до другого.
FSergio вне форума  
 
Непрочитано 26.08.2011, 15:45
#16
mamuk


 
Регистрация: 06.05.2010
Сургут
Сообщений: 248


Цитата:
Сообщение от FSergio Посмотреть сообщение
(command "_.box" u1 p2)
ты вот так попробуй (command "_.box" u1 p2 p1) и почередуй поученные координаты
у тебя же в u1 одна координата вычисляется
просто посчитай сколько раз мышью щелкаешь кода box рисуешь так точно и в встроке должнобыть (command "_.box" u1 p2 p1)
может ты куб хочешь посторить то для него необходимо два щелчка +опция команды [куб]

Последний раз редактировалось mamuk, 26.08.2011 в 15:51.
mamuk вне форума  
 
Непрочитано 26.08.2011, 15:45
#17
Makson


 
Регистрация: 24.04.2008
Сообщений: 1,131


Могу предположить что если обе указанные вами точки лежат в плоскости X-Y то в данном случае программа требует указать высоту.(проверьте с помощью print).
И соответственно не работает.
Makson вне форума  
 
Автор темы   Непрочитано 26.08.2011, 15:59
#18
FSergio


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


Или лыжи не едут или я...
Если я выполняю команду "box" (p1 p2) то строится бокс от точки с координатами p1 до точки с координатами p2
далее я вычасляю координаты новой точки уменьшая значение по всем трём осям на определённую величину.
Строю "box" первая точка с координатами p1 а вторая с вычесленными ранее координатами.
Всё прекросно работает (ЕСЛИ ЗАРАНЕЕ ОТКЛЮЧИТЬ ОБЪЕКТНУЮ ПРИВЯЗКУ ВРУЧНУЮ!!!)
Чтобу не делать этого каждый раз я временно (перед выполнением команды "box") объектную привязку, но бокс не строится а вместо этого запрашевает hight но я же не задаю бокс через wight lenght hight a указываю две точки.
Проблема однозначно в коде отключения привязки потому что до отключения привязки вручную и программно была такая же проблема (запрашивал hight)
Выключая объектную привязку вручную проблема устраняется а програмно нет.
Вот с этим я не могу разобратся. Что то не так с програмным отключением привязки.
FSergio вне форума  
 
Непрочитано 26.08.2011, 16:04
#19
mamuk


 
Регистрация: 06.05.2010
Сургут
Сообщений: 248


Цитата:
Сообщение от FSergio Посмотреть сообщение
Проблема однозначно в коде отключения привязки потому что до отключения привязки вручную и программно была такая же проблема (запрашивал hight)
проверь переменную OSNAPZ может она влияет
mamuk вне форума  
 
Автор темы   Непрочитано 26.08.2011, 16:05
#20
FSergio


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


Вот это очень очень похоже на причину. А как проверить?

Это однозначно из за неё получется что при отключении привязки osnapz устанавливается 1 ?

Последний раз редактировалось FSergio, 26.08.2011 в 16:13.
FSergio вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Почему программа работает неправильно?

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расчет монтажной башни с растяжками в MicroFE 2005 (почему программа не считает?) giparshik Расчетные программы 1 20.07.2011 18:46
Программа AlxdDike под а2004 работает? LLEXA AutoCAD 8 03.05.2011 21:41
Объясните почему такая разница в подобранной арматуре МишаИнженер Расчетные программы 14 26.02.2010 23:15
Фундамент с динамическими нагрузками в Scad Tlelaxu SCAD 9 31.08.2007 10:44
_mpedit неправильно работает? Elfirel AutoCAD 8 05.08.2004 12:14