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

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

LWPolyline и две точки

Ответ
Поиск в этой теме
Непрочитано 10.10.2011, 11:00 #1
LWPolyline и две точки
Uduzr
 
проектирование электроснабжения
 
Екатеринбург
Регистрация: 17.03.2009
Сообщений: 44

Привет всем, может кто подскажет решение. Есть LWPolyline №1 с некоторым количеством углов и две точки принадлежащих ей но не обязательно являющиеся ее углами. Надо построить LWPolyline №2 с началом и концом в этих точках таким образом чтобы она наложилась на LWPolyline...
Просмотров: 3685
 
Непрочитано 10.10.2011, 11:07
#2
Кулик Алексей aka kpblc
Moderator

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


Есть как минимум 3 варианта:
1. Командный - скопировать объект и применить два раза команду _.break
2. Через Entget получить ename-представление объекта, проанализировать вершины и исключить ненужные
3. Аналогично п.2 поступить через vla
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 10.10.2011, 11:18
#3
Uduzr

проектирование электроснабжения
 
Регистрация: 17.03.2009
Екатеринбург
Сообщений: 44


Я пока пошел по пути 3 но что то забуксовал с алгоритмом... Координаты вершин то есть, борюсь с лишними.. Вариант 1 интересный, попробую, про _.break я забыл совсем..
Uduzr вне форума  
 
Непрочитано 10.10.2011, 11:32
#4
Дима_

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


Тут еще надо не упустить, что через 1 точку полилиния может проходить неограниченное количество раз.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 10.10.2011, 11:36
#5
Uduzr

проектирование электроснабжения
 
Регистрация: 17.03.2009
Екатеринбург
Сообщений: 44


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Тут еще надо не упустить, что через 1 точку полилиния может проходить неограниченное количество раз.
этот вариант я в голове держу и в последующем учту. Не могу понять как с command работать.. я честно говоря им всегда пренебрегал ((( как нарисовать им что нить я понял а как сделать что либо с уже имеющимся объектом?
Uduzr вне форума  
 
Непрочитано 10.10.2011, 11:47
#6
Дима_

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


Я бы не стал использовать командный метод (потенциально - много проблем вылезает, которые потом устанешь искать/исправлять/заглушать) - ИХМО в данном случае проще всего через DXF и vlax-curve-getDistAtPoint откинуть "ненужные" вершины.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 10.10.2011, 11:50
1 | #7
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Цитата:
Сообщение от Uduzr Посмотреть сообщение
этот вариант я в голове держу и в последующем учту. Не могу понять как с command работать.. я честно говоря им всегда пренебрегал ((( как нарисовать им что нить я понял а как сделать что либо с уже имеющимся объектом?
Начни с прстого:


Код:
[Выделить все]
 (defun C:Bpline	 (/ en osm p1 p2 ss)
  (vl-load-com)

  (setq osm (getvar "OSMODE"))
  (setvar "OSMODE" 0)
  (setvar "CMDECHO" 0)

  (setq	p1 (getpoint "\nFirst point")
	p2 (getpoint p1 "\nSecond point"))
  (if (not
	(setq ss (ssget p1 '((0 . "lwpolyline")))))
    (progn
      (exit)
      (print "\nNothing or Wrong object selected")
      (princ)))
  (setq en (ssname ss 0))
  (setq	p1 (vlax-curve-getclosestpointto en p1)
	p2 (vlax-curve-getclosestpointto en p2))
  (if (< (vlax-curve-getparamatpoint en p1)
	 (vlax-curve-getparamatpoint en p2))
    (progn
      (vl-cmdf "_.break" en "_F" (vlax-curve-getstartpoint en) p1)
      (vl-cmdf "_.break" en "_F" p2 (vlax-curve-getendpoint en)))
    (progn
      (vl-cmdf "_.break" en "_F" (vlax-curve-getstartpoint en) p2)
      (vl-cmdf "_.break" en "_F" p1 (vlax-curve-getendpoint en))))
  (setvar "OSMODE" osm)
  (setvar "CMDECHO" 1)
  (princ)
  )
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 10.10.2011, 11:53
#8
Uduzr

проектирование электроснабжения
 
Регистрация: 17.03.2009
Екатеринбург
Сообщений: 44


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Я бы не стал использовать командный метод (потенциально - много проблем вылезает, которые потом устанешь искать/исправлять/заглушать) - ИХМО в данном случае проще всего через DXF и vlax-curve-getDistAtPoint откинуть "ненужные" вершины.
Вот потому я командным методом и пренебрегал, что более опытные товарищи здесь выражались в таком роде. Склонен Вам верить. За идею с vlax-curve-getDistAtPoint спасибо, думаю упростит алгоритм.

to: Олег (jr.)
Спасибо, действительно просто и работает, то что надо!

Последний раз редактировалось Uduzr, 10.10.2011 в 12:10.
Uduzr вне форума  
 
Непрочитано 10.10.2011, 12:43
#9
VVA

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


Есть еще Pline Tools от DELICAD
Миниатюры
Нажмите на изображение для увеличения
Название: Image 5.jpg
Просмотров: 69
Размер:	30.3 Кб
ID:	67541  
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 10.10.2011, 13:50
#10
Uduzr

проектирование электроснабжения
 
Регистрация: 17.03.2009
Екатеринбург
Сообщений: 44


Цитата:
Сообщение от VVA Посмотреть сообщение
Есть еще Pline Tools от DELICAD
У меня это было подзадачей решаемой по ходу прикладной программы, то что предлагается вряд ли подойдет, тем более что оно не freeware...
Пока остановился на варианте предложенном Олег (jr.), может быть позже переделаю без vl-cmdf но сейчас надо скорее доделать...
Uduzr вне форума  
 
Непрочитано 11.10.2011, 08:59
#11
CB

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


Посмотри здесь:
http://forum.dwg.ru/showpost.php?p=281928&postcount=171
__________________
Никогда не спорьте с дураками - они опустят Вас до своего уровня и победят за счет опыта
CB вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LWPolyline и две точки



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ищу пример расчета инсоляции FINE Поиск литературы, чертежей, моделей и прочих материалов 266 25.10.2017 18:54
Проблемы с расчетом Ж/Б каркаса в ANSYS derik ANSYS 457 04.07.2017 16:16
Почему некорректно работает vla-intersectwith? Кулик Алексей aka kpblc Программирование 23 03.11.2010 15:03
Линия через две готовые точки. Vert Corbi AutoCAD 7 10.08.2010 00:48
как в CIVIL 3D точки нанесенные в 3-ке - перенести в точки п maksimys AutoCAD 3 23.08.2007 14:13