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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Ввод данных в АВТОЛИСПе

Ввод данных в АВТОЛИСПе

Закрытая тема
Поиск в этой теме
Непрочитано 19.06.2009, 18:24 #1
Ввод данных в АВТОЛИСПе
vovkam
 
Регистрация: 11.06.2009
Сообщений: 29

Уважаемые программеры. Нужен Ваш совет.
Есть чертеж, построенный по лиспу. Основные его переменные это координаты точек. Как сделать так, чтобы ввод данных координат можно было производить, например из экселя? Или формы в VBA?


Код:
[Выделить все]
;  - имя файла - (load 

"C:\\DataBase\\AutoCad\\ЧертежиРазвертокLSP\\Интерполяция_LSP\\P230030.lsp")

; построение развертки конуса:

(command "_rectang" "0,0" "7993,2506" " ")
(setq name0 (entlast))
(command "_point" "_none" "15,114")
(command "_arc" "_none" "15,114" "_C" "3996.5,76582" "_none" "_L" "7963")
(command "_divide" (entlast) 40)
(command "_point" "_none" "7978,114")
(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 41)
  (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)
(command)

(command "_point" "_none" "139,2496")
(command "_arc" "_none" "139,2496" "_C" "3996.5,76583" "_none" "_L" "7715")
(command "_divide" (entlast) 38)
(command "_point" "_none" "7854,2496")
(setq le1 (entget (setq name1 (entlast))))
(setq le1 (entget (setq name1 (entnext))))
(setq name2 name1)
(while (/= (cdr (assoc 0 le1)) "POINT")
  (setq le1 (entget (setq name1 name2)))
  (setq le1 (entget (setq name2 (entnext name1))))
)   ; конец while

(command "_pline" (cdr (assoc 10 le1)))     ;первая точка
(setq name1 name2)
(setq le1 (entget name1))
(entdel name1)

(setq i 1)

(setq le2 (entget (setq name2 (entnext name1))))
(while (< i 39)
  (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)
(command)

(command "_line" "_none" "15,114" "_none" "139,2496" "")

(command "_line" "_none" "7978,114" "_none" "7854,2496" "")

(entlast)
(setq name1 (entnext name0))
(cdr (assoc 0 (setq le1 (entget name1))))
(setq name2 (entnext name1))
(cdr (assoc 0 (setq le2 (entget name2))))
(setq name3 (entnext name2))
(cdr (assoc 0 (setq le3 (entget name3))))
(setq name4 (entnext name3))
(cdr (assoc 0 (setq le4 (entget name4))))
(command "_pedit" name1 "_J" name2 name3 name4 "" "")

(command "_zoom" "_all")

(command "_text" "_S" "" "3246.5,1153" "200" "" "P230030" "" "")

(command "_save" 

"C:\\DataBase\\AutoCad\\ЧертежиРазвертокLSP\\Интерполяция_DWG\\P230030.dwg")
(command "_Y" " ")
Просмотров: 2005
 
Непрочитано 19.06.2009, 18:35
#2
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Очень просто. Надо его вставить ка OLE объект и повесить на него реактор. Как только вы там что-то нарушите, так сразу сработает программа и все приведет в соответствие.
Если сделать как внешнюю ссылку, то придется все время ее регенерировать. Сделал изменение в экселе, жми на кнопку - изменение будет передано в Автокад.
При открытии файла Автокада изменение всегда будет отображаться.
Supermax вне форума  
 
Автор темы   Непрочитано 19.06.2009, 19:00
#3
vovkam


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


По подробней пожалуйста.
vovkam вне форума  
 
Непрочитано 19.06.2009, 19:41
#4
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


А подробнее расписать что Вы хотите сделать нельзя?
В чем состояит главная задача? Зачем именно эксель? Зачем Автокад? и т.п.
Supermax вне форума  
Закрытая тема
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Ввод данных в АВТОЛИСПе

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Табличный ввод данных в ЛИРЕ. dagget Лира / Лира-САПР 20 24.12.2019 13:49
При расчете SCAD пишет :Ошибки в исходных данных searcher SCAD 64 26.01.2017 02:47
структурированный список Holon Программирование 22 11.09.2007 14:09
Динамический ввод или демонический ввод? TheBuTeK Динамические блоки 20 13.10.2005 09:36
LISP - ввод данных Torino LISP 4 02.08.2004 12:33