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

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

Автолисп. Ввод точек.

Ответ
Поиск в этой теме
Непрочитано 22.06.2009, 16:48 #1
Автолисп. Ввод точек.
vovkam
 
Регистрация: 11.06.2009
Сообщений: 29

Уважаемые программеры. Помогите советом начинающему ламеру.
Ну
Код:
[Выделить все]
(setq K 105)
(setq tx 15)
(setq ty 15)

(setq A1 (quote (tx, ( + K ty ))))
		
 (command "_point" "_none" "A1")
вот такой не большой пример.

Последний раз редактировалось vovkam, 22.06.2009 в 17:14.
Просмотров: 2133
 
Непрочитано 22.06.2009, 16:56
#2
E-degtyarev

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


Не понятно, что вы желаете сделать.
E-degtyarev вне форума  
 
Автор темы   Непрочитано 22.06.2009, 17:07
#3
vovkam


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


Я хочу построить точку А1 с координатами Ах=tx Ay= K+ty.
Возможно, тут функция quote не уместна.


Даже так не работает (

(setq A1x tx)
(setq A1y (+ K ty))
(setq A1z 0)
(setq A1 (list A1x A1y A1z)

Последний раз редактировалось vovkam, 22.06.2009 в 17:32.
vovkam вне форума  
 
Непрочитано 22.06.2009, 17:34
#4
Елпанов Евгений

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


Код:
[Выделить все]
(setq K 105)
(setq tx 15)
(setq ty 15)
(entmakex (list '(0 . "point") (list 10 tx (+ K ty))))
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
 
Автор темы   Непрочитано 22.06.2009, 17:53
#5
vovkam


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


а как быть с таким вариантом?

Код:
[Выделить все]
(command "_line" "_none" "A1" "_none" "B1" "")
(command "_line" "_none" "A2" "_none" "B2" "")
(command "_arc" "_none" "A1" "_C" "AR" "_none" "_L" "LA")
при
Код:
[Выделить все]
 (setq E 8872)
(setq F 8652)
(setq G 2425)
(setq J 2322)
(setq H 93720)
(setq I 91398)
(setq K 105)
(setq L 102)
(setq M 9064)
(setq tx 15)
(setq ty 15)

(setq A1x tx)
(setq A1y (+ K ty))
(setq A1z 0)
(setq A1 (list A1x A1y A1z)

(setq A2x (+ E tx))
(setq A2y (+ K ty))
(setq A2z 0)
(setq A2 (list A2x A2y A2z))

(setq B1x (+ tx (/ ( - E F) 2)))
(setq B1y ( + G ty ))
(setq B1z 0)
(setq B1 (list B1x B1y B1z)

(setq B2x (+ tx ( /( + E F) 2)))
(setq B2y ( + G ty ))
(setq B2z 0)
(setq B2 (list B2x B2y B2z))

(setq ARx (+ tx ( / E 2)))
(setq ARy (+ H ty))
(setq ARz 0)
(setq AR (list ARx ARy ARz))

(setq BRx (+ tx ( / E 2)))
(setq BRy (- (+ I G ty) L ))
(setq BRz 0)
(setq BR (list BRx BRy BRz))

(setq LA E)
(setq LB F)

Последний раз редактировалось vovkam, 22.06.2009 в 17:59.
vovkam вне форума  
 
Непрочитано 22.06.2009, 18:17
#6
Елпанов Евгений

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


Код:
[Выделить все]
(setq c  (list (+ tx (/ E 2)) (+ H ty))
      p  (list tx (+ K ty) 0.)
      r  (distance c p)
      a1 (angle c p)
      a2 (+ a1 (/ e r))
) ;_  setq
(entmakex (list '(0 . "ARC")
                (cons 10 c)
                (cons 40 r)
                (cons 50 a1)
                (cons 51 a2)
          ) ;_  list
) ;_  entmakex
add:
Пока отвечал, ты успел добавить еще вопросов...
В следующий раз, либо не спеши отвечать, либо сам подожди ответа на уже опубликованный вопрос.
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
 
Автор темы   Непрочитано 24.06.2009, 11:57
#7
vovkam


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


Подскажите, пожалуйста, как заменить вот этот код:
Код:
[Выделить все]
(command "_line" "_none" "A1" "_none" "B1" "")
?
vovkam вне форума  
 
Непрочитано 24.06.2009, 12:09
#8
Елпанов Евгений

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


Цитата:
Сообщение от vovkam Посмотреть сообщение
Подскажите, пожалуйста, как заменить вот этот код:
Код:
[Выделить все]
(command "_line" "_none" "A1" "_none" "B1" "")
?
Код:
[Выделить все]
(entmakex (list '(0 . "line") (cons 10 a1)(cons 11 b1)))
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
 
Автор темы   Непрочитано 24.06.2009, 13:38
#9
vovkam


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


Спасибо. Все пока работает.
Следующий вопросик.
Как осушествить такую операцию:

L/200= 20.545 -
принимаем n=21
vovkam вне форума  
 
Непрочитано 24.06.2009, 13:54
#10
Елпанов Евгений

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


Цитата:
Сообщение от vovkam Посмотреть сообщение
L/200= 20.545 -
принимаем n=21
Ты действительно думаешь, что я телепат или просто ленив и тебе не хочется написать несколько лишних слов, для пояснения вопроса?
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
 
Автор темы   Непрочитано 24.06.2009, 14:37
#11
vovkam


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


Код:
[Выделить все]
(setq 
 	E 8872
 	F 8652
 	G 2425
 	J 2322
 	H 93720
 	I 91398
 	K 105
 	L 102
 	M 9064
 	Name 086798
 	tx 15
 	ty 15
)
(setq 
	 A1x tx
	 A1y (+ K ty)
	 A2x (+ E tx)
	 A2y (+ K ty)
	 B1x (+ tx (/ ( - E F) 2))
	 B1y ( + G ty )
	 B2x (+ tx ( /( + E F) 2))
	 B2y ( + G ty )
	 ARx (+ tx ( / E 2))
	 ARy (+ H ty)
 	 LA E
	 LB F
)

(entmakex (list '(0 . "point") (list 10 A1x A1y)))

(setq c  (list ARx ARy)
      p  (list A1x A1y 0.)
      r  (distance c p)
      a1 (angle c p)
      a2 (+ a1 (/ e r))
) ;_  setq
(entmakex (list '(0 . "ARC")
                (cons 10 c)
                (cons 40 r)
                (cons 50 a1)
                (cons 51 a2)
          ) ;_  list
) ;_  entmakex 
(command "_divide" (entlast) 62)          ; вместо 62 n раз.

(entmakex (list '(0 . "point") (list 10 A2x A2y)))

(setq le1 (entget (setq name1 (entnext))))
(setq name2 name1)
(while (/= (cdr (assoc 0 le1)) "POINT")
  (setq name1 name2)
  (setq le1 (entget (setq name2 (entnext name1))))
)   ; конец while

(command "_pline" (cdr (assoc 10 le1)))

(setq i 1)

(setq name1 name2)
(setq le2 (entget (setq name2 (entnext name1))))
(entdel name1)

(while (< i 63)                               ; n+1
  (if (= (cdr (assoc 0 le2)) "POINT")
    (progn
      (command (cdr (assoc 10 le2)))
      (entdel name1)
      (setq i (1+ i))
    )   ; конец progn
  ) ; конец if
  (setq name1 name2)
  (setq le2 (entget (setq name2 (entnext name1))))
)   ; конец while

(setq le1 (entget name1))
(entdel name1)
(command)
Необходимо поделить дугу на отрезки примерно по 200-250мм и найти их количество.
vovkam вне форума  
 
Непрочитано 24.06.2009, 14:55
#12
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Необходимо поделить дугу на отрезки примерно по 200-250мм и найти их количество
Т.е. 200-250 мм - это длина хорды или все-таки длина дуги?
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 24.06.2009, 15:57
#13
vovkam


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


Желательно поделить дугу на отрезки 250мм, но, в крайнем случае, так как длина хорды=> к длине дуги, можно и хорду.
vovkam вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Автолисп. Ввод точек.



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Экспорт координат выбранных точек в *.txt slan.ru Программирование 184 23.03.2023 08:17
Ввод точек через вставку даних из буфера VOVAMAT AutoCAD 1 06.11.2005 13:30
Динамический ввод или демонический ввод? TheBuTeK Динамические блоки 20 13.10.2005 09:36
Нужна помощь! Полилиния с равными интервалами опорных точек. pffafer AutoCAD 8 14.03.2005 21:24