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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Создание объекта вращения в AutoLISP

Создание объекта вращения в AutoLISP

Ответ
Поиск в этой теме
Непрочитано 05.06.2008, 18:59 #1
marisha21_84
 
Регистрация: 05.06.2008
Сообщений: 2

Вот эта программка должна повернуть часть построенной фигурки на 360 градусов, но у меня ничего не выходит... Помогите пожалуйста

Код:
[Выделить все]
(defun c:bolt ()
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(setq p1 (getpoint "\nНачальная точка: "))
(setq d (getreal "\nДиаметр резьбы: "))
(setq a (getreal "\nРазмер фасок: "))
(setq z (getint "\nВведите количество зубчиков (от 6 до 12): "))
	(while (or (< z 6) (> z 12))
	(alert "Неверный ввод! Число зубчиков должно быть от 6 до 12." )
	(setq z (getint "\nВведите количество зубчиков (от 6 до 12): "))
	)
(setq p2 (polar p1 (/ pi 2.0) (* 0.5 d)))
(setq p3 (polar p2 (/ pi 4.0) a))
(setq p4 (polar p3 0.0 d))
(setq p5 (polar p4 (* (/ pi 4.0) -1) a))
(setq p6 (polar p5 0.0 (* 6.0 d)))
(setq p7 (polar p6 (/ pi 2.0) (- (* 1.75 d) a)))
(setq p8 (polar p7 (/ pi 4.0) a))
(setq p9 (polar p8 0.0 (* 1.5 d)))
(setq p10 (polar p9 (* (/ pi 2.0) -1) (* 0.25 d)))
(setq p11 (polar p10 (* pi 2.0) d))
(setq p12 (polar p11 (/ pi 2.0) (* 2 d)))
(setq p13 (polar p12 (* pi 2.0) d))
(setq p14 (polar p13 0.0 (* 3.0 d)))
(setq p15 (polar p14 0.0 d))
(setq cen1 (polar p13 0.0 (* 1.5 d)))
(setq p16 (polar p15 (* (/ pi 2.0) -1) (* 3.9 d)))

(setvar "celtype" "Continuous")    ;Тип и толщина линий
(setvar "celweight" 70)
;Строим половину болта
(command "_line" p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 "")
(command "_line" p14 p15 p16"")
(command "_arc" p13 "_c" cen1 p14)
(command "_line" p16 p1 "")

(repeat z
	(setq p17 (polar p2 (/ (* pi 2) 3) a))
	(setq p18 (polar p17 (- (/ (* pi 2) 3)) a))
	(setq p19 (polar p18 (* (/ pi 2.0) -1) (* 0.5 d)))
	(command "_line" p17 p2 "")
	(command "_line" p17 p18 "")
	(command "_line" p18 p19 "")
	(setq p2 p18)
)

(command "_region" "_all" "") 
(command "_zoom" "_e")
(command "_revsurf" "" "")
(command "_shademode" "_g")
(command "_3dorbit")
)
Уважаемые знатоки, помогите пожалуйста...

Последний раз редактировалось Кулик Алексей aka kpblc, 06.06.2008 в 08:16.
Просмотров: 2561
 
Непрочитано 06.06.2008, 10:50
#2
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Особо в код не вникал, но зачем вызываешь в конце _3dorbit? Может вызвать _Rotate?
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 06.06.2008, 13:00
#3
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Объяви все переменные как локальные

Код:
[Выделить все]
(defun c:bolt ()
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(command "_.plan" "w")
(setq p1 (getpoint "\nНачальная точка: "))
(setq d (getreal "\nДиаметр резьбы: "))
(setq a (getreal "\nРазмер фасок: "))
(setq z (getint "\nВведите количество зубчиков (от 6 до 12): "))
	(while (or (< z 6) (> z 12))
	(alert "Неверный ввод! Число зубчиков должно быть от 6 до 12." )
	(setq z (getint "\nВведите количество зубчиков (от 6 до 12): "))
	)

(setq p2 (polar p1 (/ pi 2.0) (* 0.5 d)))
(setq p3 (polar p2 (/ pi 4.0) a))
(setq p4 (polar p3 0.0 d))
(setq p5 (polar p4 (* (/ pi 4.0) -1) a))
(setq p6 (polar p5 0.0 (* 6.0 d)))
(setq p7 (polar p6 (/ pi 2.0) (- (* 1.75 d) a)))
(setq p8 (polar p7 (/ pi 4.0) a))
(setq p9 (polar p8 0.0 (* 1.5 d)))
(setq p10 (polar p9 (* (/ pi 2.0) -1) (* 0.25 d)))
(setq p11 (polar p10 (* pi 2.0) d))
(setq p12 (polar p11 (/ pi 2.0) (* 2 d)))
(setq p13 (polar p12 (* pi 2.0) d))
(setq p14 (polar p13 0.0 (* 3.0 d)))
(setq p15 (polar p14 0.0 d))
(setq cen1 (polar p13 0.0 (* 1.5 d)))
(setq p16 (polar p15 (* (/ pi 2.0) -1) (* 3.9 d)))

(setvar "celtype" "Continuous")    ;Тип и толщина линий
;;;(setvar "celweight" 70)
;Строим половину болта
(command "_.line" p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 "") 
(command "_.line" p14 p15 p16 "")
(command "_.arc" p13 "_c" cen1 p14)
;;;(command "_line" p16 p1 "")
;;;(ssadd (entlast) ss)
(repeat z
	(setq p17 (polar p2 (/ (* pi 2) 3) a))
	(setq p18 (polar p17 (- (/ (* pi 2) 3)) a))
	(command "_.line" p17 p2 "") 
	(command "_.line" p17 p18 "")
	(setq p2 p18)
)
 (setq p19 (polar p18 (* (/ pi 2.0) -1) (* 0.5 d)))
 (command "_.line" p18 p19 "")
 
 (command "_.zoom" "_e")
 (command "_.zoom" ".9x")  
 (setvar "peditaccept" 1)
 (command "_.pedit" "_m" (ssget "X" '((0 . "LINE,ARC"))) "" "_j" "0.1" "") 
 (command "_.revolve" "L" "" "X" "360")
 (command "_.shademode" "_g")
 (command "_.view" "_swiso")
 (command "_.vscurrent" "_r")
)
~'J'~
fixo вне форума  
 
Автор темы   Непрочитано 06.06.2008, 17:45
#4
marisha21_84


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


Извиняюсь конечно за назойлливость, но у меня этот код не запускается на выполнение... Выходит сообщение, что выполняется регенерация модели, но ничего не происходит
marisha21_84 вне форума  
 
Непрочитано 06.06.2008, 18:54
#5
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


У меня работала и предыдущаф версия
(правда она для пустого черетежа)
Это код будет работать корректно

Код:
[Выделить все]
(defun c:bolt  (/
		a
		cen1
		d
                   osm
		p1
		p10
		p11
		p12
		p13
		p14
		p15
		p16
		p17
		p18
		p19
		p2
		p3
		p4
		p5
		p6
		p7
		p8
		p9
		ss
		z)
  (setvar "cmdecho" 0)
  (setq osm (getvar "osmode"))
  (setvar "osmode" 0)
  (command "_.plan" "w")
  (setq ss (ssadd))
  (setq p1 (getpoint "\nНачальная точка: "))
  (setq d (getreal "\nДиаметр резьбы: "))
  (setq a (getreal "\nРазмер фасок: "))
  (setq z (getint "\nВведите количество зубчиков (от 6 до 12): "))
  (while (or (< z 6) (> z 12))
    (alert
      "Неверный ввод! Число зубчиков должно быть от 6 до 12.")
    (setq z (getint "\nВведите количество зубчиков (от 6 до 12): "))
    )

  (setq p2 (polar p1 (/ pi 2.0) (* 0.5 d)))
  (setq p3 (polar p2 (/ pi 4.0) a))
  (setq p4 (polar p3 0.0 d))
  (setq p5 (polar p4 (* (/ pi 4.0) -1) a))
  (setq p6 (polar p5 0.0 (* 6.0 d)))
  (setq p7 (polar p6 (/ pi 2.0) (- (* 1.75 d) a)))
  (setq p8 (polar p7 (/ pi 4.0) a))
  (setq p9 (polar p8 0.0 (* 1.5 d)))
  (setq p10 (polar p9 (* (/ pi 2.0) -1) (* 0.25 d)))
  (setq p11 (polar p10 (* pi 2.0) d))
  (setq p12 (polar p11 (/ pi 2.0) (* 2 d)))
  (setq p13 (polar p12 (* pi 2.0) d))
  (setq p14 (polar p13 0.0 (* 3.0 d)))
  (setq p15 (polar p14 0.0 d))
  (setq cen1 (polar p13 0.0 (* 1.5 d)))
  (setq p16 (polar p15 (* (/ pi 2.0) -1) (* 3.9 d)))

  (setvar "celtype" "Continuous")		  ;Тип и толщина линий
;;;(setvar "celweight" 70)
						  ;Строим половину болта
  (command "_.pline")
  (mapcar 'command
	  (list p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13))
  (command "")
  (ssadd (entlast) ss)
  (command "_.pline")
  (mapcar 'command (list p14 p15 p16))
  (command "")
  (ssadd (entlast) ss)
  (command "_.arc" p13 "_c" cen1 p14)
  (ssadd (entlast) ss)
;;;(command "_line" p16 p1 "")
;;;(ssadd (entlast) ss)
  (repeat z
    (setq p17 (polar p2 (/ (* pi 2) 3) a))
    (setq p18 (polar p17 (- (/ (* pi 2) 3)) a))
    (command "_.line" p17 p2 "")
    (ssadd (entlast) ss)
    (command "_.line" p17 p18 "")
    (ssadd (entlast) ss)
    (setq p2 p18)
    )
  (setq p19 (polar p18 (* (/ pi 2.0) -1) (* 0.5 d)))
  (command "_.line" p18 p19 "")
  (ssadd (entlast) ss)
  (command "_.zoom" "_e")
  (command "_.zoom" ".9x")
  (setvar "peditaccept" 1)
  (command "_.pedit" "_m" ss "" "_j" "" "")
  (command "_.revolve" "L" "" p1 p19 "360")
  (command "_.shademode" "_g")
  (command "_.view" "_swiso")
  (setvar "cmdecho" 1)
  (setvar "osmode" osm)
  (princ)
  )
(c:bolt)
fixo вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Создание объекта вращения в AutoLISP

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание слоев в autolisp Badulaque Прочее. Программное обеспечение 3 26.10.2005 10:05
Создание разреза импортированного объекта 3d studio Cormorant AutoCAD 8 05.07.2005 12:25
Одна из целей: Создание экспертных систем на базе AutoCAD. Сергей Юрьевич Программирование 9 01.01.2005 15:17