|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
27.10.2003, 13:13 | #1 | |
Как на LISPе автоматически выбрать линию и точку?
инженер-технолог (ГИП)
Санкт-Петербург
Регистрация: 11.09.2003
Сообщений: 1,116
|
||
Просмотров: 6427
|
|
||||
Сообщений: n/a
|
не ищи сложностей там где не надо
юзай cylinder например так: (defun c:lt() (princ "\nЛинию выбираем") (setq OS (entget(ssname(ssget)0))) (setq LON (distance (cdr(assoc 10 OS))(cdr(assoc 11 OS)))) (command "UCS" "ZA"(cdr(assoc 10 OS))(cdr(assoc 11 OS))) (princ "\nНаружный диаметр") (setq NR (/(getreal)(* 2 (getvar "dimlfac")))) (command "CYLINDER" "0,0,0" NR LON) (command "UCS" "PR") (princ) ) если ты не сторонник простых решений то можно и так: диалог truba.dcl: truba:dialog { label = "Труба бесшовная" ; :boxed_row { :text { key = "MARK" ; fixed_width=true; fixed_height=true; height = 3 ; width=28 ; } }//boxed_row :row { :column { :list_box { label = "Dу"; key = DIAM ; height=9 ; width=10 ; fixed_width=true; fixed_height=true; } //list DN }//column :column { :image { key = IMAG ; height=5 ; width=12 ; fixed_width=true; fixed_height=true; }//image :list_box { label = "Толщина"; key = TOLC ; height=6 ; width=12 ; fixed_width=true; } //list tolc }//column }//row :row { :list_box { label = "Материал" ; key = MATER ; height=4 ; width=30 ; fixed_width=true; } }//row :row { :list_box { label = "Рисовать слоем" ; key = LAYR ; height=4 ; width=30 ; fixed_width=true; } }//row :row { ok_button; }//row } //dialog и лисп (defun c:truba() (truba) ) ;------------------------------------------------------------------- (defun truba() (setq NDIA (load_dialog "truba.dcl") ) (new_dialog "truba" NDIA) (start_list "DIAM") (add_list " 50") (add_list " 80") (add_list "100") (add_list "150") (add_list "200") (add_list "250") (add_list "300") (add_list "350") (add_list "400") (end_list) (start_list "MATER") (add_list "ст.20") (add_list "ст.20 ПАР") (add_list "12Х18Н10Т") (end_list) (start_list "LAYR") (add_list "Текущим") (add_list "Новое") (add_list "Сущ.") (end_list) (start_image "IMAG") (fill_image 0 0 100 100 9) (slide_image -10 -10 90 70 "truba") (end_image) (set_tile "MARK" "Труба бесшовная\nгорячекатанная ВСН 186-74") (if (= DIAMET nil)(setq DIAMET 0) ) (set_tile "DIAM" (itoa DIAMET)) (DIATRU) (if (= MATRL nil)(setq MATRL 0) ) (set_tile "MATER" (itoa MATRL)) (set_tile "LAYR" "0") (setq RLAYER 0) (action_tile "DIAM" "(progn(setq DIAMET (atoi $value))(DIATRU) )" ) (action_tile "TOLC" "(setq TOLCHA (atoi $value))" ) (action_tile "MATER" "(setq MATRL (atoi $value))" ) (action_tile "LAYR" "(setq RLAYER (atoi $value))" ) (start_dialog) (unload_dialog NDIA) (cond ((= DIAMET 0)(setq DIARAL 57.0)) ((= DIAMET 1)(setq DIARAL 89.0)) ((= DIAMET 2)(setq DIARAL 108.0)) ((= DIAMET 3)(setq DIARAL 159.0)) ((= DIAMET 4)(setq DIARAL 219.0)) ((= DIAMET 5)(setq DIARAL 273.0)) ((= DIAMET 6)(setq DIARAL 325.0)) ((= DIAMET 7)(setq DIARAL 377.0)) ((= DIAMET 8)(setq DIARAL 426.0)) );cond (setq DIARAL (/ DIARAL(* 2 (getvar "dimlfac")))) (princ "\nОсь трубы") (setq OSTRUB (ssname(ssget)0)) (setq OS (entget OSTRUB)) (setq LON (distance (cdr(assoc 10 OS))(cdr(assoc 11 OS)))) (command "UCS" "ZA"(cdr(assoc 10 OS))(cdr(assoc 11 OS))) (command "CYLINDER" "0,0,0" DIARAL LON) (command "UCS" "PR") (regapp "TRUBA") (cond ((and(= MATRL 0)(= TOLCHA 0))(setq TIPRAZ '((-3 ("TRUBA"(1000 . "00")))))) ((and(= MATRL 1)(= TOLCHA 0))(setq TIPRAZ '((-3 ("TRUBA"(1000 . "10")))))) ((and(= MATRL 2)(= TOLCHA 0))(setq TIPRAZ '((-3 ("TRUBA"(1000 . "20")))))) ((and(= MATRL 0)(= TOLCHA 1))(setq TIPRAZ '((-3 ("TRUBA"(1000 . "01")))))) ((and(= MATRL 1)(= TOLCHA 1))(setq TIPRAZ '((-3 ("TRUBA"(1000 . "11")))))) ((and(= MATRL 2)(= TOLCHA 1))(setq TIPRAZ '((-3 ("TRUBA"(1000 . "21")))))) ((and(= MATRL 0)(= TOLCHA 2))(setq TIPRAZ '((-3 ("TRUBA"(1000 . "02")))))) ((and(= MATRL 1)(= TOLCHA 2))(setq TIPRAZ '((-3 ("TRUBA"(1000 . "12")))))) ((and(= MATRL 2)(= TOLCHA 2))(setq TIPRAZ '((-3 ("TRUBA"(1000 . "22")))))) ((and(= MATRL 0)(= TOLCHA 3))(setq TIPRAZ '((-3 ("TRUBA"(1000 . "03")))))) ((and(= MATRL 1)(= TOLCHA 3))(setq TIPRAZ '((-3 ("TRUBA"(1000 . "13")))))) ((and(= MATRL 2)(= TOLCHA 3))(setq TIPRAZ '((-3 ("TRUBA"(1000 . "23")))))) ((and(= MATRL 0)(= TOLCHA 4))(setq TIPRAZ '((-3 ("TRUBA"(1000 . "04")))))) ((and(= MATRL 1)(= TOLCHA 4))(setq TIPRAZ '((-3 ("TRUBA"(1000 . "14")))))) ((and(= MATRL 2)(= TOLCHA 4))(setq TIPRAZ '((-3 ("TRUBA"(1000 . "24")))))) );cond (setq OS2 (append OS TIPRAZ)) (entmod OS2) (princ) );truba ;------------------------------------------------------------------- (defun diatru() (if (= DIAMET 0) (progn (start_list "TOLC" 1 0) ;для Dу 50 (add_list " 57x3.5") (add_list " 57x5.0") (add_list " ") (add_list " ") (add_list " ") (end_list) (set_tile "TOLC" "0") (setq TOLCHA 0) );progn );if (if (= DIAMET 1) (progn (start_list "TOLC" 1 0) ;для Dу 80 (add_list " 89x3.5") (add_list " 89x4.0") (add_list " 89x5.0") (add_list " 89x6.0") (add_list " 89x8.0") (end_list) (set_tile "TOLC" "0") (setq TOLCHA 0) );progn );if (if (= DIAMET 2) (progn (start_list "TOLC" 1 0) ;для Dу100 (add_list "108x4.0") (add_list "108x5.0") (add_list "108x6.0") (add_list "108x8.0") (add_list " ") (end_list) (set_tile "TOLC" "0") (setq TOLCHA 0) );progn );if (if (= DIAMET 3) (progn (start_list "TOLC" 1 0) ;для Dу150 (add_list "159x4.5") (add_list "159x6.0") (add_list "159x8.0") (add_list "159x10.0") (add_list "159x12.0") (end_list) (set_tile "TOLC" "0") (setq TOLCHA 0) );progn );if (if (= DIAMET 4) (progn (start_list "TOLC" 1 0) ;для Dу200 (add_list "219x6.0") (add_list "219x8.0") (add_list "219x10.0") (add_list "219x12.0") (add_list "219x16.0") (end_list) (set_tile "TOLC" "0") (setq TOLCHA 0) );progn );if (if (= DIAMET 5) (progn (start_list "TOLC" 1 0) ;для Dу250 (add_list "273x7.0") (add_list "273x8.0") (add_list "273x10.0") (add_list "273x12.0") (add_list "273x16.0") (end_list) (set_tile "TOLC" "0") (setq TOLCHA 0) );progn );if (if (= DIAMET 6) (progn (start_list "TOLC" 1 0) ;для Dу300 (add_list "325x8.0") (add_list "325x10.0") (add_list "325x12.0") (add_list "325x16.0") (add_list "325x20.0") (end_list) (set_tile "TOLC" "0") (setq TOLCHA 0) );progn );if (if (= DIAMET 7) (progn (start_list "TOLC" 1 0) ;для Dу350 (add_list "377x9.0") (add_list "377x12.0") (add_list "377x16.0") (add_list "377x20.0") (add_list " ") (end_list) (set_tile "TOLC" "0") (setq TOLCHA 0) );progn );if (if (= DIAMET 8) (progn (start_list "TOLC" 1 0) ;для Dу400 (add_list "426x10.0") (add_list "426x12.0") (add_list "426x16.0") (add_list " ") (add_list " ") (end_list) (set_tile "TOLC" "0") (setq TOLCHA 0) );progn );if );diatol тока лисп НЕДОДЕЛАНЫЙ, там на нержавейку надо переписывать функцию. Хотя для визуализации это по барабану... ЗЫ. слайдик нарисуй если что... |
|||
|
||||
инженер-технолог (ГИП) Регистрация: 11.09.2003
Санкт-Петербург
Сообщений: 1,116
|
DronT
Спасибо большое. Всё оказывается просто, ну или почти всё Второй развернутый ЛИСП я так и не смог заставить работать понормальному, наверное что то не то делал. Он наверное .dcl не подгружал, просто рисует цилиндр диаметром 57. Но тут наверное мое неумени сказывается. Еще раз спасибо. Вот будет отпуск возьму на море книгу AutoLISP Удачи. |
|||
|
||||
Сообщений: n/a
|
truba.dcl должен сидеть вместе в лиспом в одной папке
Support например ЗЫ. всё для версии акада 2000 или может он из- за слайда? ему там надо ещё truba.sld кажеться- слайд короче. ЗЗЫ. Я все ещё ищу единомышленников для совместного блокорисования. А то сам всё сделаю и никому не дам... |
|||
|
||||
инженер-технолог (ГИП) Регистрация: 11.09.2003
Санкт-Петербург
Сообщений: 1,116
|
Да проблемма наверное в КАДе 2004.
А вот по поводу блокорисования я бы с удовольствием скооперировался, т.к. польза от последующего использования громадная, но времени боюсь выкроить не смогу. Удачи. |
|||