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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Рисование полилинии по другому объекту с привязкой

Рисование полилинии по другому объекту с привязкой

Ответ
Поиск в этой теме
Непрочитано 26.03.2010, 09:48 #1
Рисование полилинии по другому объекту с привязкой
jagr
 
Регистрация: 26.03.2010
Сообщений: 8

Здравствуйте!

Давно мучает вопрос: существует ли в AutoCAD 2008 (либо в другой версии) возможность рисования части полилинии по существующему объекту (например, по другой полилинии) с точным повторением контура существующего объекта (с привязкой к каждой точке), без указания каждой точки существующего объекта.

Работал с Панораммой и MapInfo, там эта функция реализована, в AutoCAD так найти и не смог. Для иллюстрации приведу пример того, как это реализовано в MapInfo: рисую линию 1, дохожу до точки на линии 2, привязываюсь к точке 2.1 на линии 2, зажимаю шифт и указываю точку 2.2 на линии 2 (между точками 2.1 и 2.2 может быть множество вершин линии 2), программа рисует мне линию 1 по линии 2 точно повторяя ее контур (все это время функция рисовки линии не прерывается). В Панорамме реализовано иначе, но надеюсь смысл вопроса уже понятен.

С уважением.

Последний раз редактировалось jagr, 26.03.2010 в 10:56.
Просмотров: 14608
 
Непрочитано 26.03.2010, 09:59
#2
Profan


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


Если полилинию обводить, то проще скопировать полилинию саму на себя. Для других объектов можно дополнительно к другим привязкам использовать привяку "_nea" ("бли"). Но точки придется указывать.
Profan вне форума  
 
Непрочитано 26.03.2010, 10:09
#3
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,825
<phrase 1=


_pline
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 26.03.2010, 10:10
#4
BM60


 
Регистрация: 08.02.2008
Где-то
Сообщений: 8,460


jagr, когда-то мне такая идея приходила в голову, но цель была другая, и решилась она копированием на другой слой.
Но сейчас мне просто интересно, какая у тебя цель так точно повторять? И не понимаю относительно "привязки без указания другой точки привязки".
Пояснишь?
__________________
Я дарю не рыбу, а удочку и море.
www.zodchii.ws, www.complexdoc.ru,
Библиотеки электронных книг
Download
BM60 вне форума  
 
Непрочитано 26.03.2010, 10:28
#5
KennyMckormik


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


Есть такой шедевр производства VVA & co
входит в набор PL-XX
называется PL_CLONE
__________________
Timeo Danaos et dona ferentes :eek:
KennyMckormik вне форума  
 
Автор темы   Непрочитано 26.03.2010, 10:31
#6
jagr


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


Profan, копирование действительно самый очевидный вариант из тех, что мне пришли в голову, но этот метод достаточно трудоемок, если такие операции используются часто.

BM60, нужна отрисовка отдельных замкнутых (ну или не замкнутых) полилиний (условно назову их полигонами) с точным повторением контуров на местах их стыковки. Такой метод цифрования используется, например, в современной цифровой картографии. По поводу привязки, имеется в виду привязка без указания каждой точки полилинии на отрезке к которому необходимо привязаться (то есть я указываю не 100000000000 точек из которых состоит отрезок полилинии, а лишь 2-3, определяющих направление привязки).

KennyMckormik, PL-XX что это? Что из себя представляет PL_CLONE?
jagr вне форума  
 
Непрочитано 26.03.2010, 10:41
#7
Profan


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


Интересно узнать, а что обводить приходится? Если отрезки и полилинии, то совсем не надо указывать 10000000000000000000 точек, достаточно указать начальную и конечную точки для отрезков и вершины и вторые точки дуговых сегментов (если они есть) для полилиний. Если обводятся сплайны, то тут уже надо указать как можно больше точек для лучшей аппроксимации.
Profan вне форума  
 
Автор темы   Непрочитано 26.03.2010, 10:47
#8
jagr


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


Profan, обводить надо полилинии, но из Вашего объяснения я, к сожалению, не понял как это сделать средствами AutoCAD не указывая каждую вершину (которых на линии може быть 1000000000000)

Приношу извинения, если запутал использовав термин "точка" для "вершины полилинии".
jagr вне форума  
 
Непрочитано 26.03.2010, 10:51
#9
Profan


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


Вершины полилиний придется указывать. А сами исходные полилинии состыкованы?
Profan вне форума  
 
Непрочитано 26.03.2010, 10:57
#10
sbi


 
Регистрация: 27.04.2008
SPB
Сообщений: 3,285
Отправить сообщение для sbi с помощью Skype™


Цитата:
Сообщение от jagr Посмотреть сообщение
Давно мучает вопрос: существует ли в AutoCAD 2008 (либо в другой версии) возможность рисования части полилинии по существующему объекту (например, по другой полилинии) с точным повторением контура существующего объекта (с привязкой к каждой точке), без указания каждой точки существующего объекта.
Переведи на русский!
__________________
С уважением sbi
sbi вне форума  
 
Автор темы   Непрочитано 26.03.2010, 10:58
#11
jagr


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


Исправил пример в первом сообщении:

Рисую линию 1, дохожу до точки 2.1 на линии 2, привязываюсь к точке 2.1 на линии 2, зажимаю шифт и указываю точку 2.2 на линии 2 (между точками 2.1 и 2.2 может быть множество вершин линии 2), программа рисует мне линию 1 по линии 2 точно повторяя ее контур (все это время функция рисовки линии не прерывается).

Profan, какие исходные полилинии имеются ввиду?

sbi, возможно исправленый конкретный пример поможет понять то, что нуждается для Вас в переводе с русского на русский.
jagr вне форума  
 
Непрочитано 26.03.2010, 11:00
#12
Profan


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


Да которые обводить надо. А твое уточнение все равно непонятно. В AutoCAD'е такого приема нет.
Profan вне форума  
 
Автор темы   Непрочитано 26.03.2010, 11:04
#13
jagr


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


Profan вот как раз вопрос первого поста в том и состоит есть такой прием или нет, как это реализовать другими средствами я знаю.
jagr вне форума  
 
Непрочитано 26.03.2010, 11:11
#14
Profan


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


Если исходные полилинии состыкованы, то можно выделить их все, выполнить копирование на себя и получившийся новый набор отдельных полилиний объединить в одну полилинию.
Profan вне форума  
 
Автор темы   Непрочитано 26.03.2010, 11:23
#15
jagr


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


Profan, это совсем другой прием
jagr вне форума  
 
Непрочитано 26.03.2010, 11:24
#16
Profan


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


Другой. Но и программа другая.
Profan вне форума  
 
Непрочитано 26.03.2010, 14:07
#17
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,030


Цитата:
Сообщение от jagr Посмотреть сообщение
нужна отрисовка отдельных замкнутых (ну или не замкнутых) полилиний (условно назову их полигонами) с точным повторением контуров на местах их стыковки. Такой метод цифрования используется, например, в современной цифровой картографии.
Да, для пользователей Автокада-картографов это проблема.
1. Шикарно было бы пользоваться командой создания замкнутых контуров в виде полилинии после указания внутренней точки области - BOUNDARY (КОНТУР). Только эта команда кривая (см. раздел "Баги").
2. Вполне можно "бить через дымоход" - создавать Hatch (штриховку), указывая все элементы, составляющие границу нужной области, потом с помощью команды (по правой кнопке) Generate Boundary создаем границу этой штриховки в виде AEC Polygon, а потом (по правой кнопке) конвертируем его в единую полилинию - Convert To->Polyline. Удобно тем, что нужно указывать не начало-конец полилиний, а прямо сами полилинии. И тем, что в местах пересечений полилиний не обязательно не обязательно должны быть узлы. И тем, что штриховки позволят контролировать правильность полученной площади. Потом штриховку удаляем, остается искомая замкнутая полилиния.
3. С помощью Autocad Map 3D можно создавать топологические площадные модели, указывая или набор полилиний (можно сразу для многих областей, а можно только для одной области), или только слои, в которых лежат нужные полилинии. Потом конвертируем эти "топологии" в замкнутые полилинии (Create closed polylines). Правда, исходные полилинии необходимо сначала основательно подготовить: разбить на пересечениях, удалить дубликаты, замкнуть и т.п. Хотя, функция создания площадных топологий все "плохие" места пометит.

Можно узнать, где еще картографы не разочаровались в Автокаде? Можно в личку.

Последний раз редактировалось АлексЮстасу, 26.03.2010 в 14:34.
АлексЮстасу вне форума  
 
Непрочитано 26.03.2010, 14:54
#18
Olga_@@@


 
Регистрация: 14.03.2008
Екатеринбург
Сообщений: 678
<phrase 1= Отправить сообщение для Olga_@@@ с помощью Skype™


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
3. С помощью Autocad Map 3D можно создавать топологические площадные модели, указывая или набор полилиний (можно сразу для многих областей, а можно только для одной области), или только слои, в которых лежат нужные полилинии. Потом конвертируем эти "топологии" в замкнутые полилинии (Create closed polylines). Правда, исходные полилинии необходимо сначала основательно подготовить: разбить на пересечениях, удалить дубликаты, замкнуть и т.п. Хотя, функция создания площадных топологий все "плохие" места пометит.
Да, это наилучший, из имеющихся, вариант решения проблемы.
Тем более, что предварительная чистка карты в значительной степени автоматизированна.
Olga_@@@ вне форума  
 
Непрочитано 26.03.2010, 14:57
#19
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 860
Отправить сообщение для Disney с помощью Skype™


Сочинил вот такой вариант
[IMG]http://s006.***********/i215/1003/f7/e3e080d1bce1.gif[/IMG]

Код:
[Выделить все]
(defun c:test (/ first second F_v a b)
  (setq	first  (entget (geo_vibor "\nПолучатель: " "LWPOLYLINE" nil))
	second (entget (geo_vibor "\nДователь: " "LWPOLYLINE" nil))
	F_v    (vl-remove-if-not '(lambda (x) (= (car x) 10)) first)
  )
  (repeat (length F_v)
    (if	(and (setq a (vl-position (car f_v) second))
	     (setq b (vl-position (cadr f_v) second))
	)
      (setq first
	     (append
	       (trim_list first 0 (vl-position (car f_v) first))
	       (if (< a b)
		 (trim_list second a b)
		 (reverse (trim_list second a b))
	       )
	       (trim_list first
			  (vl-position (cadr f_v) first)
			  (length first)
	       )
	     )
      )
    )
    (setq f_v (cdr f_v))
  )
  (entmod
    (subst (cons 90
		 (length
		   (vl-remove-if-not '(lambda (x) (= (car x) 10)) first)
		 )
	   )
	   (assoc 90 first)
	   first
    )
  )
)

(defun trim_list (spis a b / c x)
  (setq c (- (min a b) 1))
  (reverse (repeat (- (max a b) c 1)
	     (setq x (cons (nth (setq c (1+ c)) spis) x))
	   )
  )
)


(defun geo_vibor (zap ;_Запрос 
		  tip ;_Тип запрашиваемых примитивов 
		  enter ;_Выход при пустом вводе 
		  / flag name)
  (setq Flag2 t)
  (setvar "ERRNO" 0)
  (while Flag2
    (cond
      ((and
	 (setq name
		(car (entsel zap))
	 )
	 (wcmatch (cdr (assoc 0 (entget name))) tip)
       )
       (setq Flag2 nil
	     name name
       )
      )
      ((and (= (getvar "ERRNO") 52) enter)
       (setq Flag2 nil)
      )
      (name (princ (strcat "\nВыбранный объект не " tip)))
      (t (princ "\nМимо"))
    )
  )
)
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Непрочитано 26.03.2010, 15:15
#20
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,030


Цитата:
Сообщение от Olga_@@@ Посмотреть сообщение
Да, это наилучший, из имеющихся, вариант решения проблемы.
Тем более, что предварительная чистка карты в значительной степени автоматизированна.
Да автоматически, но это если есть Autocad Map 3D.

Disney - "Получатель"-"Даватель" - это что?
АлексЮстасу вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Рисование полилинии по другому объекту с привязкой

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

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