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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как автоматизировать процесс

Как автоматизировать процесс

Ответ
Поиск в этой теме
Непрочитано 18.10.2007, 13:36 #1
Как автоматизировать процесс
dextron3
 
проектировшик
 
СССР
Регистрация: 01.01.2007
Сообщений: 5,149

На скриншоте изображено вертикальное армирование, сверху как не надо армировать, а снизу как надо

Как автоматизировать этот процесс?
чтото я устал стренджем тягать

Миниатюры
Нажмите на изображение для увеличения
Название: Захват1.jpg
Просмотров: 111
Размер:	75.9 Кб
ID:	94  

__________________
инженер проектировшик с опттом программа авто гад образование высшие
Просмотров: 2164
 
Непрочитано 18.10.2007, 14:09
#2
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,379


Дополнительные построения не проходят? Если взять приложенный скриншот, то на нём можно провести горизонтальные линии в нужных местах. Вертикальные линии обрезаются (_trim) или удлинняются по горизонтальным. В 2008-ом объекты при обрезке/удлиннении можно выбирать рамкой.
Хмурый вне форума  
 
Автор темы   Непрочитано 18.10.2007, 14:20
#3
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,149


ну это ведь не быстрее чем стрендж
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 18.10.2007, 16:48
#4
VVA

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


А так
Код:
[Выделить все]
(defun lib:group-by-num (lst num / ls ret)
(if (= (rem (length lst) num ) 0)
 (progn (setq ls nil)
  (repeat (/ (length lst) num)
    (repeat num (setq ls (cons (car lst) ls) lst (cdr lst)))
  (setq ret (append ret (list (reverse ls))) ls nil)))) ret)
; Расстояние от точки до отрезка
;----------------------
;P - точка
;P1, P2 - конечные точки отрезка
;Возвращает расстояние от точки до отрезка
;Знак говорит о том, справа или слева расположена точка
;Алгоритм взят
;http://algolist.manual.ru/maths/geom/distance/pointline.php
(defun dist_ptline (P P1 P2 / D2 D1)
   (setq D1 (+
             (* (car P)
                (- (cadr P1)(cadr P2))
                )
             (* (cadr P)
                (- (car P2)(car P1))
                )
             (-
               (* (car P1)(cadr P2))
               (* (car P2)(cadr P1))
                )
             )
        )
  (setq D2
         (sqrt
         (+
           (* (- (car P2)(car P1))
              (- (car P2)(car P1))
              )
           (* (- (cadr P2)(cadr P1))
              (- (cadr P2)(cadr P1))
              )
           )
         )
        )
  (/ D1 D2)
  )
(defun C:T1 ( / pr lst pt1 pt2 e1 e2 ed1 ed2 ptv1 ptv2 ang Flag)
(initget 1)  
(setq pr (getdist "\nВеличина смещения стержней: "))
(princ "\nВыбирите разносимые стрежни динией ... ")  
(initget 1)(setq pt1 (getpoint "\n1-я Точка: "))
(initget 1)(setq pt2 (getpoint pt1 "\n2-я Точка: "))
(and  
(setq ss (ssget "_F" (list pt1 pt2)  '((0 . "LINE"))))
(setq lst (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
(setq lst (vl-sort lst
                   '(lambda(a b)
                      (< (dist_ptline pt1
                           (trans (cdr(assoc 10 (entget a))) 0 1)
                           (trans (cdr(assoc 11 (entget a))) 0 1)
                           )
                         (dist_ptline pt1
                           (trans (cdr(assoc 10 (entget b))) 0 1)
                           (trans (cdr(assoc 11 (entget b))) 0 1)
                           )
                         )
                      )
                   )
      )
(foreach pair (lib:group-by-num lst 2)
  (setq e1 (car pair)
        e2 (cadr pair)
        ed1 (entget e1)
        ed2 (entget e2)
        )
  (if (setq Flag (not Flag))
    (setq ang (* 0.5 PI))
    (setq ang (* 1.5 PI))
    )
  (setq ptv1 (inters pt1 pt2
                  (cdr(assoc 10 ed1))
                  (cdr(assoc 11 ed1))
                     nil
                     )
        )
  (setq ptv2 (inters pt1 pt2
                  (cdr(assoc 10 ed2))
                  (cdr(assoc 11 ed2))
                     nil
                     )
        )
 
   (if (< (distance ptv1 (cdr(assoc 10 ed1)))
          (distance ptv1 (cdr(assoc 11 ed1)))
          )
 
     (setq ed1 (subst (cons 10 (polar (cdr(assoc 10 ed1)) ang pr))
                      (assoc 10 ed1)
                      ed1)
           )
     (setq ed1 (subst (cons 11 (polar (cdr(assoc 11 ed1)) ang pr))
                      (assoc 11 ed1)
                      ed1)
           )
     )
  (entmod ed1)
   (if (< (distance ptv2 (cdr(assoc 10 ed2)))
          (distance ptv2 (cdr(assoc 11 ed2)))
          )
     (setq ed2 (subst (cons 10 (polar (cdr(assoc 10 ed2)) ang pr))
                      (assoc 10 ed2)
                      ed2)
           )
     (setq ed2 (subst (cons 11 (polar (cdr(assoc 11 ed2)) ang pr))
                      (assoc 11 ed2)
                      ed2)
           )
     )
  (entmod ed2)
  )
)
  (princ)
  )

Последний раз редактировалось VVA, 18.10.2007 в 17:13. Причина: Забыл добавить функцию dst_ptline и lib:group-by-num
VVA вне форума  
 
Автор темы   Непрочитано 18.10.2007, 16:53
#5
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,149


Command:
Command: t1

Величина смещения стержней: 600

Выбирите разносимые стрежни динией ...
1-я Точка:
2-я Точка: ; error: no function definition: DIST_PTLINE
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 18.10.2007, 17:08
#6
VVA

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


Исправил
VVA вне форума  
 
Автор темы   Непрочитано 18.10.2007, 17:28
#7
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,149


Вот что пришлось править,
еслиб не помощь VVA
спасибо
Миниатюры
Нажмите на изображение для увеличения
Название: Захват1.jpg
Просмотров: 90
Размер:	51.6 Кб
ID:	102  
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как автоматизировать процесс



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возможности MicroFe 2007 по сравнению со SCAD и Lira Simonoff Расчетные программы 318 29.03.2016 09:40
Как работать с дигитайзером в AutoCad? Yusuf AutoCAD 21 11.09.2010 13:38
на злобу дня !! zaza-noza Разное 63 22.05.2009 15:10
Как из EXCEL перенести таблицу в ACAD2008? dextron3 AutoCAD 18 02.06.2008 09:40
БРЕД СИВОЙ КОБЫЛЫ Kryaker Разное 1876 29.12.2006 23:41