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

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

Выравнивание полилинии в одну линию.

Ответ
Поиск в этой теме
Непрочитано 25.03.2008, 14:55 #1
Выравнивание полилинии в одну линию.
f0lk
 
Регистрация: 16.10.2007
Сообщений: 7

Здравствуйте.
Есть полилиния - нужна программа которая выравнивает точки полилинии по одной прямой, со сохранением длин между вершинами полилинии.
С лиспом практически незнаком, а стандартными средствами такое сделать не получается.
Просмотров: 30909
 
Непрочитано 25.03.2008, 15:01
#2
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


1. Полилиния LW, 2d, 3d ?
2. Есть или нет дуговые сегменты?
3. Примерчик приложи
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 25.03.2008, 15:15
#3
f0lk


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


VVA :
2d полилиния без дуговых сегментов.

Технически это выглядело бы примерно так:
1. Взять координаты вершин полилинии.
2. Вычислить длину каждого сегмента.
3. Построить полилинию из заданной точки с заданными длинами. Либо математически изменить координаты вершин существующей линии.
Вот только в лиспе не силен, к сожалению.

Последний раз редактировалось f0lk, 25.03.2008 в 16:53.
f0lk вне форума  
 
Непрочитано 25.03.2008, 17:14
#4
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Примерчик (возможно) требует пригонки и обработки напильником

(defun c:razv ( / P lst2 lst n obj krd)
(setq krd 0 n 0 obj (entget (car (entsel "Выберите полилинию "))))
(if (/= (cdr (assoc 0 obj)) "LWPOLYLINE") (progn (alert "Это не LW полилиния") (exit)))
(setq p (trans (getpoint "Куда вставлять развертку ") 1 0))
;записывает координаты вершин
(while (/= krd nil)
(setq krd (nth n obj))
(if (= (car krd) 10) (setq lst (append lst (list (list (cadr krd) (caddr krd)))))
);end of if
(setq n (1+ n))
);end of while
;записывает расстояния
(setq n 0)
(while (/= (nth (1+ n) lst) nil)
(setq lst2 (append lst2 (list (distance (nth n lst) (nth (1+ n) lst))))
n (1+ n)
);end of setq
);end of while
;строит полилинию
(setq n 0)
(entmakex '((0 . "POLYLINE") (66 . 1)))
(entmakex (list '(0 . "VERTEX") (append '(10) (list (car p) (cadr P)))))
(while (/= (nth n lst2) nil)
(setq p (list (+ (car p) (nth n lst2)) (cadr p)))
(setq n (1+ n))
(entmakex (list '(0 . "VERTEX") (append '(10) (list (car p) (cadr P)))))
);end of while
(entmakex '((0 . "SEQEND")))
);end defun

P.S. Запускать командой "razv".
__________________
Когда в руках молоток все вокруг кажется гвоздями.

Последний раз редактировалось Дима_, 25.03.2008 в 21:40.
Дима_ вне форума  
 
Автор темы   Непрочитано 25.03.2008, 17:22
#5
f0lk


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


Дима - то что нужно!! Огромное спасибо!
f0lk вне форума  
 
Непрочитано 25.03.2008, 17:46
#6
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Не торопись благодорить - вначале погоняй как следует.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 25.03.2008, 21:40
#7
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


А опять забыл - в не мировой пск - будет со смещением рисовать - исправил в 4-ом посте. (разворачивает все равно в мировую, но по моему так лучшее.)
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 26.03.2008, 10:00
#8
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Я тут тоже немного размялся
RAZV1 - создает развернутую новую LW полилинию
RAZV2 - разворачивает существующую
Код:
[Выделить все]
(defun c:razv1 ( / ss ed vxLIST dstLIST newEd n Y X)
 (if 
 (and
   (princ "Выберите полилинию ")
   (setq ss (ssget "_+.:S:E:L" '((0 . "LWPOLYLINE"))))
   (setq ed (entget (ssname ss 0)))
   (mapcar '(lambda(x)(if(= (car x) 10)(setq vxLIST (cons (cdr x) vxLIST)))) ed)
   (setq ss nil vxLIST (reverse vxLIST))
   (setq dstLIST (mapcar 'distance vxLIST  (cdr vxLIST)))
   (setq dstLIST (cons 0 dstLIST))
   (setq n '-1 Y (cadar vxLIST) X (caar vxLIST))
   (foreach item ed
     (if (= (car item) 10)
       (setq item (list 10 (setq X (+ X (nth (setq n (1+ n)) dstLIST))) Y))
       )
     (setq newEd (cons item newEd))
     )
   )
 (entmakex (reverse newED))
 (princ "\nНе LW полилиния")
 )
  (princ)
  )
(defun c:razv2 ( / ss ed vxLIST dstLIST newEd n Y X)
 (if 
 (and
   (princ "Выберите полилинию ")
   (setq ss (ssget "_+.:S:E:L" '((0 . "LWPOLYLINE"))))
   (setq ed (entget (ssname ss 0)))
   (mapcar '(lambda(x)(if(= (car x) 10)(setq vxLIST (cons (cdr x) vxLIST)))) ed)
   (setq ss nil vxLIST (reverse vxLIST))
   (setq dstLIST (mapcar 'distance vxLIST  (cdr vxLIST)))
   (setq dstLIST (cons 0 dstLIST))
   (setq n '-1 Y (cadar vxLIST) X (caar vxLIST))
   (foreach item ed
     (if (= (car item) 10)
       (setq item (list 10 (setq X (+ X (nth (setq n (1+ n)) dstLIST))) Y))
       )
     (setq newEd (cons item newEd))
     )
   )
 (entmod (reverse newED))
 (princ "\nНе LW полилиния")
 )
  (princ)
  )
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 26.03.2008, 15:45
#9
CB

Конструирование в области нефтеразведки
 
Регистрация: 10.02.2006
Гомель
Сообщений: 321


Аналогично (в смысле размялся )
RAZV - создает развернутую новую LW полилинию

Код:
[Выделить все]
(defun c:razv (/ ent)
  (if (and (setq ent (car (entsel "\nВыберите полилинию: ")))
           (= (cdr (assoc 0 (entget ent))) "LWPOLYLINE")
      ) ;_ end of and
    ((lambda (lst / test)
       (defun test (pt lst)
         (if (cadr lst)
           (cons pt
                 (test (polar pt 0. (distance (car lst) (cadr lst)))
                       (cdr lst)
                 ) ;_ end of test
           ) ;_ end of cons
           (list pt)
         ) ;_ end of if
       ) ;_ end of defun
       (entmake
         (append
           (list
             '(0 . "LWPOLYLINE")
             '(100 . "AcDbEntity")
             '(100 . "AcDbPolyline")
             (cons 90 (length lst))
           ) ;_ end of list
           (mapcar '(lambda (x) (cons 10 x)) (test (car lst) lst))
         ) ;_ end of append
       ) ;_ end of entmake
     ) ;_ end of lambda
      (mapcar 'cdr
              (vl-remove-if-not
                '(lambda (x) (= (car x) 10))
                (entget ent)
              ) ;_ end of vl-remove-if-not
      ) ;_ end of mapcar
    )
  ) ;_ end of if
  (princ)
) ;_ end of defun
CB вне форума  
 
Непрочитано 21.05.2008, 09:11
#10
Дмитррр

НЛО
 
Регистрация: 09.07.2007
Тутошние мы.
Сообщений: 6,078


А можно сделать так, что бы привязанные к узлам метки сохранялись и на разогнутой полилиние? (круги, линии, точки или блоки...)
Что-нибудь на подобие этого...
Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.jpg
Просмотров: 440
Размер:	15.4 Кб
ID:	6654  
Дмитррр на форуме  
 
Непрочитано 21.05.2008, 12:22
#11
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Копирует так-же круги и любые блоки, НО чтоб центр (или точка вставки для блока) лежали строго на вершине полилинии.
Код:
[Выделить все]
(defun c:razv2 ( / P lst lst2 lst3 n obj krd)
(setq krd 0 n 0 obj (entget (car (entsel "Выберите полилинию "))))
(if (/= (cdr (assoc 0 obj)) "LWPOLYLINE") (progn (alert "Это не LW полилиния") (exit)))
(setq p (trans (getpoint "Куда вставлять развертку ") 1 0))

;записывает координаты вершин
(while (/= krd nil)
(setq krd (nth n obj))
(if (= (car krd) 10) (setq lst (append lst (list (list (cadr krd) (caddr krd)))))
);end of if
(setq n (1+ n))
);end of while

;записывает расстояния 
(setq n 0)
(while (/= (nth (1+ n) lst) nil)
(setq lst2 (append lst2 (list (distance (nth n lst) (nth (1+ n) lst))))
n (1+ n)
);end of setq
);end of while

;записывает координаты новых вершин
(setq n 0 krd p lst3 (list krd))
(repeat (length lst2)
(setq
krd (list (+ (car krd) (nth n lst2)) (cadr krd))
lst3 (append lst3 (list krd))
n (1+ n)
);end of setq
);end of repeat

;строит полилинию
(pl lst3)

;переносит объекты
(setq obj (entnext))
(while (/= obj nil)
(if (or
	(= (cdr (assoc 0 (entget obj))) "CIRCLE")
	(= (cdr (assoc 0 (entget obj))) "INSERT")
)
(progn
(setq n 0)
(repeat (length lst3)
(if (equal (cdr (assoc 10 (entget obj))) (append (nth n lst) (list 0.0)) 1e-6)
(entmakex (cdr (subst (append (list 10) (nth n lst3)) (assoc 10 (entget obj)) (entget obj))))
);end of if
(setq n (1+ n))
);end of repeat
);end of progn
);end of if
(setq obj (entnext obj))
);end of while
);end defun

(defun pl (obj / ed n tmp); создает полилинию по списку вершин obj.
(setq 	ed (list (cons 0 "LWPOLYLINE")
		(cons 100 "AcDbEntity")
		(cons 100 "AcDbPolyline")
		(cons 90 (length obj)));end of list
	n 0
	tmp (nth n obj)
);end of setq
(while (/= tmp nil)
(setq 	ed (append ed (list (append (list 10) (nth n obj))))
	n (1+ n)
	tmp (nth n obj)
);end setq 
);end of while
(entmakex ed)
);end of defun
P.S. Запускать "RAZV2".
__________________
Когда в руках молоток все вокруг кажется гвоздями.

Последний раз редактировалось Дима_, 21.05.2008 в 12:57.
Дима_ вне форума  
 
Непрочитано 21.05.2008, 12:45
#12
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Дима_, Только я бы сравнивал координаты с допуском. У меня бывали случаи, когда 2 одинаковые точки не были equal

Код:
[Выделить все]
;Строчку
(equal (cdr (assoc 10 (entget obj))) (append (nth n lst) (list 0.0)))
;Записать так
(equal (cdr (assoc 10 (entget obj))) (append (nth n lst) (list 0.0)) 1e-6)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 21.05.2008, 12:56
#13
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


To VVA спасибо - я только учусь - подправил.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 21.05.2008, 13:13
#14
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Слушайте, а не послать ли эту программу в раздел "Готовые программы"? Вроде бы, тот раздел надо пополнять, но я прекратил это, когда форум caduser.ru восстановился.
Profan вне форума  
 
Непрочитано 21.05.2008, 13:21
#15
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Один из вариантов:
Код:
[Выделить все]
(defun test (/			    _kpblc-conv-ent-pline-vertex-to-wcs
	     _kpblc-conv-list-to-3dpoints
	     _dwgru-conv-pickset-to-list
	     adoc		    *error*
	     ent		    selset
	     base_pt		    len
	     space		    vertex_block
	     vertex_block_name	    new_obj
	     )

  (defun _kpblc-conv-list-to-3dpoints (lst / res)
				      ;|
*    Функция конвертации списка чисел в список 3-мерных точек.
*    Параметры вызова:
*	lst	список чисел
*    Примеры вызова:
(_kpblc-conv-list-to-3dpoints '(1 2 3 4 5 6)) ;-> ((1 2 3) (4 5 6))
(_kpblc-conv-list-to-3dpoints '(1 2 3 4 5))   ;-> ((1 2 3) (4 5 0.))
|;
    (cond
      ((not lst)
       nil
       )
      (t
       (setq res (cons (list (car lst)
			     (if (cadr lst)
			       (cadr lst)
			       0.
			       ) ;_ end of if
			     (if (caddr lst)
			       (caddr lst)
			       0.
			       ) ;_ end of if
			     ) ;_ end of list
		       (_kpblc-conv-list-to-3dpoints (cdddr lst))
		       ) ;_ end of cons
	     ) ;_ end of setq
       )
      ) ;_ end of cond
    res
    ) ;_ end of defun

  (defun _kpblc-conv-ent-pline-vertex-to-wcs (ent / elevation normal)
					     ;|
*    Функция получения координат легкой полилинии (LWPOLYLINE) в WCS. Возвращает
* список 3Д-точек
*    Автор: BOZ (http://www.autocad.ru/cgi-bin/f1/board.cgi?t=26461HC)
*    Оригинальный код:
(defun lwpoly_vert (lwpoly / plinee elev vnv)
  (setq	plinee (entget lwpoly)
	elev   (cdr (assoc 38 plinee))
	vnv    (cdr (assoc 210 plinee))
	) ;_ end of setq
  (mapcar
    (function (lambda (x) (trans (list (cadr x) (caddr x) elev) vnv 0)))
    (vl-remove-if-not (function (lambda (x) (= (car x) 10))) plinee)
    ) ;_ end of mapcar
  ) ;_ end of defun
*    Параметры вызова:
*	ent	ename-указатель на LWPOLYLINE (контроля не производится)
*    Примеры вызова:
(_kpblc-conv-ent-pline-vertex-to-wcs (car (entsel)))
|;
    (setq elevation (cdr (assoc 38 (entget ent)))
	  normal    (cdr (assoc 210 (entget ent)))
	  ) ;_ end of setq
    (if	(not elevation)
      (setq elevation 0.)
      ) ;_ end of if
    (mapcar '(lambda (x) (trans (list (cadr x) (caddr x) elevation) normal 0))
	    (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget ent))
	    ) ;_ end of mapcar
    ) ;_ end of defun

  (defun _dwgru-conv-pickset-to-list (value / tab item)
    (repeat (setq tab  nil
		  item (sslength value)
		  ) ;_ end setq
      (setq tab (cons (ssname value (setq item (1- item))) tab))
      ) ;_ end repeat
    ) ;_ end defun

  (defun *error* (msg)
    (vla-regen adoc acactiveviewport)
    (vla-endundomark adoc)
    (princ msg)
    (princ)
    ) ;_ end of defun

  (vla-startundomark
    (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
    ) ;_ end of vla-startundomark
  (if
    (and
      (= (type (setq ent
		      (vl-catch-all-apply
			'(lambda ()
			   (car
			     (entsel
			       "\nУкажите полилинию или сплайн для разворачивания <Отмена> : "
			       ) ;_ end of entsel
			     ) ;_ end of car
			   ) ;_ end of lambda
			) ;_ end of vl-catch-all-apply
		     ) ;_ end of setq
	       ) ;_ end of type
	 'ename
	 ) ;_ end of =
      (member (cdr (assoc 0 (entget ent))) '("LWPOLYLINE" "SPLINE"))
      ((lambda ()
	 (prompt
	   "\nВыберите точки, блоки или окружности, располагающиеся на разворачиваемом примитиве <Отмена> : "
	   ) ;_ end of prompt
	 (setq selset (ssget '((0 . "INSERT,POINT,CIRCLE"))))
	 ) ;_ end of lambda
       )
      (= (type
	   (setq
	     base_pt (vl-catch-all-apply
		       '(lambda	()
			  (getpoint
			    "\nНачальная точка отрисовки развертки <Отмена> : "
			    ) ;_ end of getpoint
			  ) ;_ end of lambda
		       ) ;_ end of vl-catch-all-apply
	     ) ;_ end of setq
	   ) ;_ end of type
	 'list
	 ) ;_ end of =
      ) ;_ end of and
     (progn
       (setq ent	       (vlax-ename->vla-object ent)
	     len	       (vlax-curve-getdistatpoint ent (vlax-curve-getendpoint ent))
	     space	       (vla-objectidtoobject adoc (vla-get-ownerid ent))
	     selset	       (vl-remove-if-not
				 '(lambda (x)
				    (vlax-curve-getdistatpoint ent (cdr (assoc 10 (entget x))))
				    ) ;_ end of lambda
				 (_dwgru-conv-pickset-to-list selset)
				 ) ;_ end of vl-remove-if-not
	     vertex_block_name "dwgru-vertex"
	     vertex_block      (if (tblobjname "block" vertex_block_name)
				 (vla-item (vla-get-blocks adoc) vertex_block_name)
				 ((lambda (/ res)
				    (setq res (vla-add (vla-get-blocks adoc)
						       (vlax-3d-point '(0. 0. 0.))
						       vertex_block_name
						       ) ;_ end of vla-add
					  ) ;_ end of setq
				    (vla-addcircle res (vlax-3d-point '(0. 0. 0.)) 5.)
				    (vla-addline
				      res
				      (vlax-3d-point '(-5. -5. 0.))
				      (vlax-3d-point '(5. 5. 0.))
				      ) ;_ end of vla-AddLine
				    (vla-addline
				      res
				      (vlax-3d-point '(-5. 5. 0.))
				      (vlax-3d-point '(5. -5. 0.))
				      ) ;_ end of vla-AddLine
				    (vlax-for sub res
				      (vla-put-layer sub "0")
				      (vla-put-color sub 3)
				      (vla-put-linetype sub "Continuous")
				      (vla-put-lineweight sub aclnwtbyblock)
				      ) ;_ end of vlax-for
				    res
				    ) ;_ end of lambda
				  )
				 ) ;_ end of if
	     new_obj	       (append
				 (list
				   (vla-addline
				     space
				     (vlax-3d-point base_pt)
				     (vlax-3d-point
				       (list (+ (car base_pt) len)
					     (cadr base_pt)
					     (caddr base_pt)
					     ) ;_ end of list
				       ) ;_ end of vlax-3d-point
				     ) ;_ end of vla-addline
				   ) ;_ end of list
				 (mapcar
				   '(lambda (x / tmp res)
				      (setq tmp	(vlax-curve-getdistatpoint ent x)
					    res	(cons (vla-insertblock
							space
							(vlax-3d-point
							  (list	(+ (car base_pt) tmp)
								(cadr base_pt)
								(caddr base_pt)
								) ;_ end of list
							  ) ;_ end of vlax-3d-point
							vertex_block_name
							1.
							1.
							1.
							0.
							) ;_ end of vla-InsertBlock
						      res
						      ) ;_ end of cons
					    ) ;_ end of setq
				      res
				      ) ;_ end of lambda
				   (cond
				     ((wcmatch (strcase (vla-get-objectname ent)) "*POLYLINE")
				      (_kpblc-conv-ent-pline-vertex-to-wcs
					(vlax-vla-object->ename ent)
					) ;_ end of _kpblc-conv-ent-pline-vertex-to-wcs
				      )
				     ((wcmatch (strcase (vla-get-objectname ent)) "*SPLINE")
				      (_kpblc-conv-list-to-3dpoints
					(vlax-safearray->list
					  (vlax-variant-value (vla-get-fitpoints ent))
					  ) ;_ end of vlax-safearray->list
					) ;_ end of _kpblc-conv-list-to-3dpoints
				      )
				     ) ;_ end of cond
				   ) ;_ end of mapcar
				 (mapcar
				   '(lambda (x / tmp)
				      (setq tmp	(vlax-curve-getclosestpointto
						  ent
						  (cdr (assoc 10 (entget x)))
						  ) ;_ end of vlax-curve-getclosestpointto
					    ) ;_ end of setq
				      (vlax-ename->vla-object
					(entmakex
					  (subst
					    (cons 10
						  (list	(+ (car base_pt)
							   (vlax-curve-getdistatpoint ent tmp)
							   ) ;_ end of +
							(cadr base_pt)
							(caddr base_pt)
							) ;_ end of list
						  ) ;_ end of cons
					    (assoc 10 (entget x))
					    (vl-remove-if
					      '(lambda (a)
						 (member (car a) '(-1 330 5))
						 ) ;_ end of lambda
					      (entget x)
					      ) ;_ end of vl-remove-if
					    ) ;_ end of subst
					  ) ;_ end of entmakex
					) ;_ end of vlax-ename->vla-object

				      ) ;_ end of lambda
				   selset
				   ) ;_ end of mapcar
				 ) ;_ end of append
	     ) ;_ end of setq
       (princ)
       ) ;_ end of progn
     ) ;_ end of if
  (vla-regen adoc acactiveviewport)
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
Создает отрезок длиной в разворачиваемый примитив; проставляет вершины исходного примитива; обрабатывает точки, круги и блоки. Исключает не попадающие на примитив. Короче, протестируй, если есть желание.
---
Добавлено: слои должны быть разморожены и разблокированы (этот контроль не выполняется). Отрисовка нового отрезка и простановка блоков вершин выполняется на текущем слое с текущими установками; точки, блоки и окружности - копируются исходные.
---
Добавлено, часть 2: и тишина...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Последний раз редактировалось Кулик Алексей aka kpblc, 22.05.2008 в 23:02.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 27.05.2008, 13:48
#16
f0lk


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


Кулик Алексей aka kpblc - пытаюсь разобраться с функциями =)
Можно ли сделать так чтобы не только окружности и блоки разворачивались, а также отрезки, в идеале еще и выноски, не обязательно красиво - это уже мелочи =)
Всем откликнувшимся огромное спасибо!
f0lk вне форума  
 
Непрочитано 27.05.2008, 14:11
#17
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Чего-чего?? ОБразец в студию!
Хотя... ближайшие два дня точно не сяду - не до того будет
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 27.05.2008, 15:14
#18
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


А выноску в блок загнать?
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 01.07.2008, 15:36
#19
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Посоветуйте пожалуйста, как поступить в моем случае. В прикрепленном чертеже желтая полилиния и ее пересекает некое кол-во полилиний других цветов. Хотелось бы выпрямить желтую так, чтобы остальные остались ее пересекать в тех же местах, т.е. на тех же расстояниях от начала желтой. Реально ли осуществить?
Вложения
Тип файла: dwg
DWG 2007
Чертеж.dwg (75.1 Кб, 1680 просмотров)

Последний раз редактировалось skkkk, 01.07.2008 в 16:19.
skkkk вне форума  
 
Непрочитано 01.07.2008, 16:13
#20
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Думается, надо загнать каждую из пересекаемых линий в блок. Тогда возникает вопрос, как загнать в блок их попроще (меньшими телодвижениями)? Что-то типа нажать кнопку на панели, затем кликнуть объект - (оп!) и он уже блок (без диалоговых окон)....Может есть в КАДе стандартное решение, но я его не знаю
skkkk вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Выравнивание полилинии в одну линию.

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
lisp: Длина по полилинии до точки vosh LISP 19 15.07.2013 15:10
Как получить контур полилинии с различной шириной Marina AutoCAD 5 26.12.2008 09:16
Странное выравнивание в таблице Bull AutoCAD 8 12.03.2008 12:01
Как рисуя одну полилинию получить сразу 4? Димас AutoCAD 33 22.07.2006 01:17
некорректно определяется площадь замкнутой полилинии elena_din AutoCAD 16 23.09.2005 17:37