|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
|
||||
Инженер-конструктор, магистр СПбГПУ. Регистрация: 27.11.2005
Санкт-Петербург
Сообщений: 78
![]() |
>ynopum
А Вы не могли бы мне скинуть Вашу программу на e-mail: inner_mail@mail.ru ? Я буду очень благодарен, т.к она сильно мне поможет в написании моей работы.
__________________
Начинаю писать магистерскую диссертацию на тему нелинейных методов совместных расчетов оснований и фундаментов. Буду рад любой помощи со стороны профессионалов. |
|||
![]() |
|
||||
Регистрация: 26.03.2006
Сообщений: 20
|
(princ "\nExports the definitions of the selected objects in M-Series .GEO format")
(princ "\n(a) 2002 ********") ;здесь убрал мое имя (defun pointlist_round (points / result pt ptf) ;; Закръгля списък с координати до знаците след запетаята - 3 (setq result (list)) (foreach pt points (setq ptf (mapcar '(lambda (coord) (atof (rtos coord 2 3))) pt)) (setq result (cons ptf result)) ) (reverse result) ) (defun points_order (points / pt rest result) ;;за всяка точка проверява дали я има в списъка *pt_coords. ;;ако я има я намира и дава поредният й номер в този смисък; ;;ако я няма я добавя и й дава следващият пореден номер. (setq result (list)) (foreach pt points (if (setq rest (member pt *pt_coords)) (setq nom (- (length *pt_coords) (length rest))) ;започват от нула 0 ! (setq *pt_coords (append *pt_coords (list pt)) nom (1- (length *pt_coords)) ) ) (setq result (cons nom result)) ) (setq result (reverse result)) ) (defun p2l (ename / e edata edata elist pt tlist vlist i ei ei_1) ;връща списък с координатите на върховете (setvar "CMDECHO" 0) (setq e ename edata (entget e) vlist nil ) ;Ако е LW да се преобразува в Тежка (if (= (cdr (assoc 0 edata)) "LWPOLYLINE") (progn (command "._CONVERTPOLY" "_HEAVY" e "") (setq e (ssname (ssget "_P") 0) edata (entget e) ) ) ) ;end if (cond ((= (cdr (assoc 0 edata)) "POLYLINE") (progn ; ако е полилиния (setq flag (cdr (assoc 70 edata))) (if (/= flag (* 2 (abs (/ flag 2)))) (setq flag 1) ) (setq elist (append elist (list e))) (while (setq pt (cdr (assoc 10 (entget (setq e (entnext e)))))) (setq vlist (cons (trans pt 0 1) vlist)) ) ; надолу следва премахване на повтарящите се върхове (if (= flag 1) (setq vlist (cons (car (reverse vlist)) vlist)) ) (setq tlist (list (car vlist))) (setq i 0) (setq ei (nth i vlist)) (repeat (- (length vlist) 1) (setq ei_1 ei) (setq i (1+ i)) (setq ei (nth i vlist)) (if (> (distance ei_1 ei) 0.0) (setq tlist (cons ei tlist)) ) ) ; край на премахването на повтарящите се редове ) ;end progn ) ((= (cdr (assoc 0 edata)) "LINE") ; ако е линия (setq pt (cdr (assoc 10 edata))) (setq tlist (cons (trans pt 0 1) tlist)) (setq pt (cdr (assoc 11 edata))) (setq tlist (cons (trans pt 0 1) tlist)) ) ((= (cdr (assoc 0 edata)) "SOLID") ; ако е 2DSOLID (setq pt (cdr (assoc 10 edata))) (setq tlist (cons (trans pt 0 1) tlist)) (setq pt (cdr (assoc 11 edata))) (setq tlist (cons (trans pt 0 1) tlist)) (setq pt (cdr (assoc 12 edata))) (setq tlist (cons (trans pt 0 1) tlist)) (setq pt (cdr (assoc 13 edata))) (setq tlist (cons (trans pt 0 1) tlist)) (setq pt (cdr (assoc 10 edata))) (setq tlist (cons (trans pt 0 1) tlist)) ) ((= (cdr (assoc 0 edata)) "POINT") (setq pt (cdr (assoc 10 edata))) (setq tlist (cons (trans pt 0 1) tlist)) ) ((= (cdr (assoc 0 edata)) "3DAFCE") ; ако е 3dface (setq pt (cdr (assoc 10 edata))) (setq tlist (cons (trans pt 0 1) tlist)) (setq pt (cdr (assoc 11 edata))) (setq tlist (cons (trans pt 0 1) tlist)) (setq pt (cdr (assoc 12 edata))) (setq tlist (cons (trans pt 0 1) tlist)) (setq pt (cdr (assoc 13 edata))) (setq tlist (cons (trans pt 0 1) tlist)) (setq pt (cdr (assoc 10 edata))) (setq tlist (cons (trans pt 0 1) tlist)) ) ) ; end cond ) (defun c ![]() (setvar "CMDECHO" 1) (princ "\nFollowing will be valid: POINT LINE (LW)POLYLINE SOLID") (setq ss (ssget (list (cons -4 "<OR") (cons 0 "POINT") (cons 0 "LINE") (cons 0 "POLYLINE") (cons 0 "LWPOLYLINE") (cons 0 "SOLID") (cons -4 "OR>") ) ) ) (if (not ss) (quit) ) (setq percent (/ (sslength ss) 100.0)) (setq *pt_coords (list)) (setq laylist '()) (setq i -1) ; брояч по елементи (repeat (sslength ss) (setq i (1+ i)) (princ (strcat "\rscan " (rtos (/ i percent) 2 1) " %")) (setq e (ssname ss i)) (setq dummy1 (p2l e)) (setq dummmyyy (pointlist_round dummy1)) (setq laypts (points_order dummmyyy)) (setq laylist (cons laypts laylist)) ) (setq laylist (reverse laylist)) (princ "\n") (setq fslp (getfiled "Data file for PLAXIS " (getvar "DWGPREFIX") "GEO" 1)) (if (not fslp) (quit) ) (setq fd (open fslp "w")) (princ "POINTS\n" fd) (princ (length *pt_coords) fd) (princ "\n" fd) (setq i 0) (repeat (length *pt_coords) (setq i (1+ i)) (setq pt (nth (1- i) *pt_coords)) (princ (strcat (itoa i) " " (rtos (car pt)) " " (rtos (cadr pt)) " " (rtos (caddr pt)) "\n") fd) ) (princ "LAYERS\n" fd) (princ (1- (length laylist)) fd) (princ "\n" fd) (foreach layer laylist (princ (strcat (itoa (length layer)) "\n") fd) (foreach pt layer (princ " " fd) (princ (itoa (1+ pt)) fd) ) (princ "\n" fd) ) (princ "PIEZO\n0\nEND OF DATA FILE" fd) (close fd) (princ) ) |
|||
![]() |
|
||||
Регистрация: 26.03.2006
Сообщений: 20
|
Скопировал программку в преднее сообщение.
Если кто то усовершенствовать ее - можно здесь публикует "постижения своего труда" ![]() Еще интересно если кто то может документировать формат .PLX ?! Я успел найдти программу TALREN, которая может читать файлы .PLX. Оно конечно не читает все, а только то, что ее угодно. Хорошо что она написана на Java, и можно увидеть самый текст программы для чтения .PLX. Но не хорошо то, что я знаю Java точно только как я знаю язык аборигенов Австралий. Если есть кто то кто может помочь с jav-ы? И Еще: кто то "слышал" от Midas-GTS ( или CRISP, Z_Soil) ? |
|||
![]() |
|
||||
Регистрация: 24.03.2005
Москва
Сообщений: 293
![]() |
Решил поднять тему.
Вопрос номер один - не была ли усовершенствована программа plxout? Вопрос номер два - интересует такой вопрос - нет ли возможности получить на чертеже в автокаде координаты точек пересечения автоматически, чтобы не наводить на каждую точку мышку? |
|||
![]() |
|
||||
Регистрация: 26.03.2006
Сообщений: 20
|
Цитата:
Отговор номер два - возможности есть. Будет один недостаток: ето быстро можно сделать только с VLX функциональност. Ето значить, что прогу не будеть работать на версии ниже R15. Если можно обяснить почему надо знать ети точки пересечения? Сам Плаксис находит их. (конечно близкие точки становятся в одна - в ето ли проблема?) |
|||
![]() |