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

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

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

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

помогите написать программу.задание:
построение треугольника по 3-м точкам.
В центре построить окружность.
Предусмотреть ввод пользователем вершин и радиуса окружности
Просмотров: 9002
 
Непрочитано 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,411


Приведи код, напиши, в чем проблема и тогда можно будет уже предметно говорить.
__________________
Моя библиотека 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 вне форума  
 
Непрочитано 21.05.2011, 14:40
#21
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от gomer Посмотреть сообщение
можно по привязкам, но лучше математически вычислить центр и радиус... хм, координаты центра вписанной в треугольник окружности не нашел нигде
поищи у меня, на сайте выкладывал вычисление центра и радиуса окружности по трем точкам...
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
 
Непрочитано 21.05.2011, 15:36
#22
gomer

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


Цитата:
Сообщение от Елпанов Евгений Посмотреть сообщение
поищи у меня, на сайте выкладывал вычисление центра и радиуса окружности по трем точкам...
не нашел... видать стал стар и слеп... может дадите ссылочку ?
gomer вне форума  
 
Непрочитано 21.05.2011, 15:41
#23
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от gomer Посмотреть сообщение
может дадите ссылочку ?
Центр дуги, заданной тремя точками
Радиус дуги, заданной тремя точками
Центр и радиус дуги, заданной тремя точками
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
 
Непрочитано 21.05.2011, 16:09
#24
gomer

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


это не совсем то, насколько я понимаю... для описанной окружности в самый раз, а для вписанной? ведь известны только точки треугольника, а вписанная окружность через них не проходит...
gomer вне форума  
 
Непрочитано 21.05.2011, 20:30
#25
Li6-D


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


Судя по рисунку автора темы под термином "центром треугольника" подразумевается не центр вписанной или описанной окружности, а центр тяжести треугольника (центроид).
В этом случае его проще всего найти с помощью выражения:
Код:
[Выделить все]
(setq pm (mapcar '(lambda (a b c) (/ (+ a b c) 3.)) p1 p2 p3))
А выражение для центра вписанной более интересно и у Елпанова Евгения его нет. Можно объявить конкурс на самый короткий лисп (известны вершины треугольника p1, p2, p3).
Li6-D вне форума  
 
Непрочитано 22.05.2011, 10:01
#26
E-degtyarev

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


Цитата:
Сообщение от gomer Посмотреть сообщение
можно по привязкам, но лучше математически вычислить центр и радиус... хм, координаты центра вписанной в треугольник окружности не нашел нигде
Из школьного курса геометрии известно, что центр вписанной в треугольник окружности лежит на пересечении биссектрис треугольника.
Хотя автора темы это, кажется, уже не интересует. Зачет он сдал.
E-degtyarev вне форума  
 
Непрочитано 22.05.2011, 12:19
#27
Li6-D


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


Цитата:
Сообщение от E-degtyarev Посмотреть сообщение
Из школьного курса геометрии известно, что центр вписанной в треугольник окружности лежит на пересечении биссектрис треугольника...
Из всех школьных теорем надо выбирать ту, которая легче программируется.
Код:
[Выделить все]
(defun C:test ( / cm p1 p2 p3 pl)
  ;;Нахождение центра вписанной окружности, задаваемой 3-мя точками
  (defun cm (pN mN / m+)
    (setq m+ (float (apply '+ mN)))
    (mapcar '(lambda (x) (/ (apply '+ (mapcar '* x mN)) m+)) (apply 'mapcar (cons 'list PN)))
  )
  (and
    (setq p1 (getpoint "\n1-я точка: "))
    (setq p2 (getpoint p1 "\n2-я точка: "))
    (setq p3 (getpoint p1 "\n3-я точка: "))
    (setq pl (cm (list p1 p2 p3) (mapcar 'distance (list p2 p3 p1) (list p3 p1 p2))))
    (command "_.PLINE" "_non" p1 "_non" p2 "_non" p3 "_close" "_.CIRCLE" "_non" pl "_per" pause)
  )
  (princ)
)
Кто скажет, что за теорема использована в этом коде ?

Последний раз редактировалось Li6-D, 23.05.2011 в 20:57.
Li6-D вне форума  
 
Непрочитано 22.05.2011, 12:38
#28
gomer

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


Цитата:
Сообщение от Li6-D Посмотреть сообщение
Можно объявить конкурс на самый короткий лисп (известны вершины треугольника p1, p2, p3).
в общем не долго думая...
Код:
[Выделить все]
 (defun cm (p1 p2 p3 / a d1)
  (inters
    p1
    (polar p1 ((setq ma (lambda (x y z) (* 0.5 (+ (angle x y) (angle x z))))) p1 p2 p3) 1.0)
    p2
    (polar p2 (ma p2 p3 p1) 1.0)
    nil
  )
)

Последний раз редактировалось gomer, 22.05.2011 в 13:25.
gomer вне форума  
 
Непрочитано 22.05.2011, 12:44
#29
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


мои варианты кода можно посмотреть на болоте...
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/

Последний раз редактировалось Елпанов Евгений, 22.05.2011 в 13:18.
Елпанов Евгений вне форума  
 
Непрочитано 22.05.2011, 13:16
#30
gomer

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


Цитата:
Сообщение от Елпанов Евгений Посмотреть сообщение
что делает эта стрка?
это была не правильная строка
код поправил
хм, болот рулит как всегда..

Последний раз редактировалось gomer, 22.05.2011 в 13:25.
gomer вне форума  
 
Непрочитано 23.05.2011, 23:38
#31
Li6-D


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


Цитата:
Сообщение от Елпанов Евгений Посмотреть сообщение
Да, на болоте все есть, включая расчет центра тяжести (барицентра) . А это был секрет моего кода (барицентр считает функция cm).
Немного геометрии: Если поместить в вершины треугольника точечные грузы, вес которых равен длине противоположной стороны,
то центр тяжести (барицентр) этой системы грузов будет совпадать с центром вписанной в треугольник окружности.

Теорему можно распространить и на пространство (вписанная в пирамиду сфера), при этом вес груза, помещаемого в вершину пирамиды, следует принять равным площади противолежащей вершине грани.
Li6-D вне форума  
 
Непрочитано 23.05.2011, 23:47
#32
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от Li6-D Посмотреть сообщение
Да, на болоте все есть, включая расчет центра тяжести (барицентра)
к вопросу о центре тяжести, можно так же глянуть коды у меня на сайте...
Если коротко:
Центроид (центр масс) области, внутри полилинии, имеющей дуговые сегменты.
Центр массы, расположенной вдоль контура полилинии, имеющей дуговые сегменты.
Средняя точка - центр массы, расположенной в вершинах полилинии равными частями
Центроид (центр масс) области, внутри многоугольника
Центр массы, расположенной вдоль контура полилинии, без дуговых сегментов.
Центр массы, средняя точка, пересечение медиан треугольника
Центроид (центр масс) области, внутри дугового сегмента полилинии.
Центроид (центр масс) области, расположенной вдоль контура дугового сегмента полилинии.
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
Ответ
Вернуться   Форум 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