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

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

написать программу-листинг в AutoLisp

Ответ
Поиск в этой теме
Непрочитано 05.04.2011, 19:06 #1
написать программу-листинг в AutoLisp
students
 
Регистрация: 05.04.2011
Сообщений: 5

помогите написать программу.задание:
построение треугольника по 3-м точкам.
В центре построить окружность.
Предусмотреть ввод пользователем вершин и радиуса окружности
Просмотров: 9000
 
Непрочитано 05.04.2011, 19:12
#2
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


1. Под "центром" понимается центр тяжести?
2. Окружность именно произвольного радиуса или вписанная (описанная)?
Profan вне форума  
 
Непрочитано 05.04.2011, 19:33
#3
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Стучись, помогу недорого
gomer вне форума  
 
Автор темы   Непрочитано 05.04.2011, 19:36
#4
students


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


нарисовать треугольник, найти центр треугольника, и этот центр треугольника и будет центр круга.Радиус произвольный ,но чтобы был внутри треугольника.Отпраляю рисунок
Вложения
Тип файла: doc рисунок.doc (22.0 Кб, 119 просмотров)
students вне форума  
 
Непрочитано 05.04.2011, 20:19
#5
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от students Посмотреть сообщение
помогите написать
так ты людям конкретные вопросы задавай - где и в чём у тебя затык. А то это больше смахивает на "напишите за меня", хотя судя по всему так оно по факту и подразумевается топикстартером...
Offtop: Самое печальное, что за этого лодыря тут действительно напишут... На др. форуме пишут по др. дисциплине.... А в итоге ему дадут диплом специалиста...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 05.04.2011, 20:34
#6
students


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


Я пробовал другой вариант.вставил листинг, выдает ошибку.тут нашел другой листинг - без ошибок но AutoCadе не открыл.Заморочка какая-то
Хотелось бы свой сделать.
students вне форума  
 
Непрочитано 05.04.2011, 22:38
#7
Кулик Алексей aka kpblc
Moderator

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


Приведи код, напиши, в чем проблема и тогда можно будет уже предметно говорить.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.04.2011, 06:21
#8
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


Код:
[Выделить все]
 (defun c:test (/ pt1 pt2 pt3 ds1 an1 ds2 an2 pt4 pt5 cen)
  (setq	pt1 (getpoint "\nПервая точка")
	pt2 (getpoint pt1 "\nВторая точка")
	pt3 (getpoint pt1 "\nТретья точка")
	ds1 (/ (distance pt1 pt2) 2)
	an1 (angle pt1 pt2)
	ds2 (/ (distance pt1 pt3) 2)
	an2 (angle pt1 pt3)
	pt4 (polar pt1 an1 ds1)
	pt5 (polar pt1 an2 ds2)
	cen (inters pt3 pt4 pt2 pt5)
  ) 
  (vl-cmdf "_pline" "_non" pt1 "_non" pt2 "_non" pt3 "_non" pt1 "")
  (vl-cmdf "_circle" "_non" cen pause)
) 
Вот простенький пример. Может сгодится?

Если покомпактнее, то так:

Код:
[Выделить все]
 (defun c:test (/ pt1 pt2 pt3 cen)
  (setq	pt1 (getpoint "\nПервая точка")
	pt2 (getpoint pt1 "\nВторая точка")
	pt3 (getpoint pt1 "\nТретья точка")
	cen (inters pt3
		    (polar pt1 (angle pt1 pt2) (/ (distance pt1 pt2) 2))
		    pt2
		    (polar pt1 (angle pt1 pt3) (/ (distance pt1 pt3) 2))
	    ) 
  ) 
  (vl-cmdf "_pline" "_non" pt1 "_non" pt2 "_non" pt3 "_non" pt1 "")
  (vl-cmdf "_circle" "_non" cen pause)
) 

Последний раз редактировалось E-degtyarev, 06.04.2011 в 06:31.
E-degtyarev вне форума  
 
Непрочитано 06.04.2011, 07:26
#9
void2005

Инженегр-констбезруктор
 
Регистрация: 12.11.2010
Красноярск
Сообщений: 61


ваще класс!!! в каде 2008 англицком работает
void2005 вне форума  
 
Непрочитано 06.04.2011, 07:39
#10
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Блин, ну на хрена здесь это форматирование кода? Тормозит загрузку страницы страшно.
Profan вне форума  
 
Непрочитано 06.04.2011, 08:22
#11
Лиспер


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


Profan, провайдера смени (или браузер настрой). На USB-модеме тормозов не замечено.
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Автор темы   Непрочитано 06.04.2011, 09:12
#12
students


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


У меня AutoCad 2006\\скопировал код в Lisp\ в панели нажал "check edit window"\открылось окно
<Build Output> прописала ошибку ;error: bad variable name in SETQ: 3
Как ее устранить?
students вне форума  
 
Непрочитано 06.04.2011, 09:57
#13
lastloch


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


У меня тоже AutoCAD2006 - и никаких ошибок. Все работает нормально.
lastloch вне форума  
 
Автор темы   Непрочитано 06.04.2011, 10:06 код лиспа
#14
students


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


Если я делаю тоже что и ты в чем тогда проблема?А как ты делаешь?
students вне форума  
 
Непрочитано 06.04.2011, 19:28
#15
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от E-degtyarev Посмотреть сообщение
Вот простенький пример.
Это к посту #1, а к посту #4?
gomer вне форума  
 
Непрочитано 07.04.2011, 06:40
#16
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


Код:
[Выделить все]
 (defun c:test (/ pt1 pt2 pt3 pt4 pt5 pt6 cen rad)
  (setq	pt1 (getpoint "\nПервая точка")
	pt2 (getpoint pt1 "\nВторая точка")
	pt3 (getpoint pt1 "\nТретья точка")
	pt4 (polar pt1 (angle pt1 pt2) (/ (distance pt1 pt2) 2))
	pt5 (polar pt1 (angle pt1 pt3) (/ (distance pt1 pt3) 2))
        pt6 (polar pt2 (angle pt2 pt3) (/ (distance pt2 pt3) 2))
	cen (inters pt3 pt4 pt2 pt5)
	rad (min (/ (distance pt1 pt2) 4)
		     (/ (distance pt1 pt3) 4)
		     (/ (distance pt2 pt3) 4)
                     (/ (distance cen pt4) 2)
		     (/ (distance cen pt5) 2)
		     (/ (distance cen pt6) 2)
	    ) 
  ) 
  (vl-cmdf "_pline" "_non" pt1 "_non" pt2 "_non" pt3 "_non" pt1 "")
  (vl-cmdf "_circle" "_non" cen rad)
) 
Ежели к #4, можно этак, хотя с точки зрения науки геометрии - очень некрасивый вариант. Не всегда окружность вписывается в теугольник.
Gomer, я уверен, ты можешь предложить более изящное решение.

Последний раз редактировалось E-degtyarev, 07.04.2011 в 08:54.
E-degtyarev вне форума  
 
Непрочитано 07.04.2011, 22:18
#17
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от E-degtyarev Посмотреть сообщение
уверен, ты можешь предложить более изящное решение.
могу, но чет я злой сегодня...
не хочу потакать дремучей студенческой лени, принципиально и бескорыстно...
Всем остальным заинтересовавшимся, дабы не быть голословным, вариант, может и не достаточно изящный, но вроде как рабочий...
Код:
[Выделить все]
 ((lambda (sp / p0 p1 p2 ln dp md l1 l2 l3 mc)
   (if
     (and
       (setq p0 (getpoint "\nУкажите первую точку треугольника: "))
       (setq p1 (getpoint p0 "\nУкажите вторую точку треугольника: "))
       (setq p2 (getpoint p0 "\nУкажите третью точку треугольника: "))
     )
      (progn
	(setq
	  dummy	(vl-load-com)
	  ln	(lambda	(p1 p2)
		  (vla-AddLine
		    sp
		    (vlax-3d-point p1)
		    (vlax-3d-point p2)
		  )
		)
	  dp	(lambda	(p1 p2 df)
		  (polar p1 (angle p1 p2) (* df (distance p1 p2)))
		)
	  md	(lambda	(ln)
		  (distance mc (vlax-curve-getClosestPointTo ln mc))
		)
	  l1	(ln p0 p1)
	  l2	(ln p1 p2)
	  l3	(ln p2 p0)
	  mc	(dp p0 (dp p1 p2 0.5) (/ 2.0 3))
	)
	(vla-addCircle
	  sp
	  (vlax-3d-point mc)
	  (* 0.75 (min (md l1) (md l2) (md l3)))
	)
      )
   )
 )
  (vla-get-Block
    (vla-get-ActiveLayout
      (vla-get-ActiveDocument (vlax-get-acad-object))
    )
  )
)
gomer вне форума  
 
Непрочитано 08.04.2011, 05:32
#18
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


Gomer. Крутизна, dummy имеет lambd-у, уважуха, преклоняю колени.

Последний раз редактировалось E-degtyarev, 08.04.2011 в 06:14.
E-degtyarev вне форума  
 
Непрочитано 21.05.2011, 13:20
#19
atollon


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


Чтоб окружность вписалась, надо круг строить по трем касательным.

После ввода точек надо определить середины сторон, которые использовать как выбор объектов-касательных
__________________
Толстов Евгений
atollon вне форума  
 
Непрочитано 21.05.2011, 14:22
#20
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


можно по привязкам, но лучше математически вычислить центр и радиус... хм, координаты центра вписанной в треугольник окружности не нашел нигде
gomer вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > написать программу-листинг в AutoLisp



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите написать программу расчета температуры MathCad Olga12345 Другие CAD системы 4 22.02.2011 15:25
Требуется помощь, дабы написать на лиспе программу проверяющую топологию WeMaN LISP 23 26.01.2011 01:26
Помогите написать программу на AUTOLISP'e Сергей123 LISP 28 06.09.2007 12:20
Как написать программу на С++ Builder 6 под AutoCAD 2002 dimaxxx Программирование 4 19.10.2006 14:38
Как из Delphi запустить программу на AutoLISP Valery LISP 1 23.09.2005 20:51