dwg.ru forum rss xml
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму |

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

Ищу программу для расстановки в автокаде блоков вдоль полилинии

Версия для печати
 
Ответ
Опции темы Поиск в этой теме
Непрочитано 07.02.2018, 15:37 #1
Ищу программу для расстановки в автокаде блоков вдоль полилинии
MSWAN
 
Регистрация: 07.02.2018
Сообщений: 4

MSWAN вне форума Вставить имя

Добрый день!
Задача такая - нужно расставить в атокаде блоки вдоль полилинии, расстояния между блоками различные и импортируются из таблицы excel. В жизни это выглядит так: у меня есть журнал расстановки опор, т.е. список пролетов между опорами, и есть трасса, полилиния в автокаде. Хочу автоматизировать процесс переноса опор с профиля на план. Через поиск решение своей задачи не нашел. Буду признателен за помощь!
Просмотров: 923
 
Непрочитано 07.02.2018, 15:47
#2
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 1,558


Язык понятно Lisp.. и в чем сложность? Какие то свои попытки/наработки есть? покажите публике? В каком месте и что не понятно?
__________________
_бложиг
Boxa вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 07.02.2018, 15:56
#3
trir


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


формулой в Excel'е:
(command "_insert" ...)
trir вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 07.02.2018, 15:58
#4
Enik

ГИП
 
Регистрация: 07.06.2015
Сообщений: 872


Ну так, в экселе рассчитать координаты вершин, через cadtools отрисовать по ним полилинию, лиспом blocktopline вставить в вершины блоки.
Enik вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 07.02.2018, 16:02
#5
trir


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


http://www.cadtutor.net/forum/archiv.../t-95548.html?
trir вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 07.02.2018, 16:08
#6
MSWAN


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


С программированием не дружу.. Для расстановки пикетов по трассе пользуюсь лиспом "piket" к сожалению на автора сослаться не могу, т.к. не помню. Возможно ли добавить в код запрос данных из excel вместо запроса дистанции?

Код:
[Выделить все]
 (vl-load-com) 
(defun c:piket ( / name_of_bl dis pln dis_pl dis_run i krd prm_pnt
proiz ugol_pl ugol_pl_gr my_blok my_att spis_att
att_old att_new spis_att strt stp)
(setq snp (getvar "Osmode"))
(setvar "Osmode" 0) 
(setq name_of_bl (getstring "Name of blok? "))
(setq dis (getreal "Distance? "))
(setq strt (getint "\nStart number? "))
(setq stp (getint "\nStep? ")) 
(setq pref (getstring "\nPrefiks? "))
(setq suff (getstring "\nSuffiks? "))
(setq pln (car (entsel)))
(setq dis_pl (vlax-curve-getDistAtParam pln (vlax-curve-getEndParam pln)))
(setq dis_run (- 0.0 dis) i (- strt stp))
(while(< (+ dis_run dis) dis_pl)
(progn
(setq i (+ i stp))
(setq dis_run (+ dis_run dis))
(setq krd (vlax-curve-getPointAtDist pln dis_run))
(setq prm_pnt (vlax-curve-getParamAtPoint pln krd))
(setq proiz (vlax-curve-getFirstDeriv pln prm_pnt))
(setq ugol_pl (angle '(0 0 0) proiz))
(setq ugol_pl_gr (* ugol_pl 57.29747))
(setvar "attreq" 0)
(command "_.insert" name_of_bl krd 1.0 1.0 ugol_pl_gr)
(setq my_blok (entlast))
(setq my_att (entnext my_blok))
(setq spis_att (entget my_att)) ;spisok 
(setq att_old (assoc 1 spis_att)) ;name
(setq num_new (itoa i))
(setq num_new (strcat pref num_new suff))) 
(setq att_new (cons 1 num_new)) ;
(setq spis_att (subst att_new att_old spis_att)); zamena
(entmod spis_att)
(entupd (cdr (assoc -1 spis_att)))
) ;progn
)
(setvar "Osmode" snp)
)
----- добавлено через ~7 мин. -----
Цитата:
Сообщение от Enik Посмотреть сообщение
Ну так, в экселе рассчитать координаты вершин, через cadtools отрисовать по ним полилинию, лиспом blocktopline вставить в вершины блоки.
появится определенная погрешность, т.к. надо учитывать углы
MSWAN вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 07.02.2018, 16:15
#7
trir


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


возможно, я с этого начял изучение lisp'а...
trir вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 08.02.2018, 08:58
#8
koMon


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


Цитата:
Сообщение от MSWAN Посмотреть сообщение
… таблицы excel. … полилиния в автокаде.
А можно их посмотреть?
koMon вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 08.02.2018, 09:32
#9
MSWAN


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


Вот - список пролетов в excel и автокад с полилинией, создан блок с атрибутом - "опора", который нужно копировать.
Вложения
Тип файла: xlsx 1.xlsx (8.7 Кб, 5 просмотров)
Тип файла: dwg
DWG 2000
расстановка вдоль линии.dwg (137.6 Кб, 9 просмотров)
MSWAN вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 08.02.2018, 09:54
#10
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 1,558


Цитата:
Сообщение от MSWAN Посмотреть сообщение
Для расстановки пикетов по трассе пользуюсь лиспом "piket" к сожалению на автора сослаться не могу, т.к. не помню.
Позвольте я за Вас поищу в интернете и напомню Вам автора: http://forum.dwg.ru/showpost.php?p=415536&postcount=20

В указанной теме много кода, возможно что то Вам подойдет.
__________________
_бложиг
Boxa вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 08.02.2018, 11:45
#11
koMon


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


Offtop: Это уже интрига))) Говорил же Профан, не говори гоп…
koMon вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 08.02.2018, 13:31
1 | #12
koMon


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


Цитата:
Сообщение от MSWAN Посмотреть сообщение
Вот - список пролетов в excel и автокад с полилинией, создан блок с атрибутом - "опора", который нужно копировать.
Oops, I did it again)))

Ну если использовать созданную обстановку: dwg с полилинией, блок "Опора" с атрибутом "НОМЕР_ОПОРЫ" , сохранённый в этом dwg, файл с дистанцияями в формате, например *.txt с числами в один столбец (поскольку excel содержит всего лишь один столбец с числами), то лисп может выглядет как-то так.

;************************************************************************************************************************************

Код:
[Выделить все]
 (defun get_listed_objects ( get_prompt objects_list / entity_seleсted vla_object )
	(while
  		(or (not (setq entity_seleсted (vl-catch-all-apply 'entsel (list get_prompt))))
			(= 'VL-CATCH-ALL-APPLY-ERROR (type entity_seleсted))
  			(not
  				(member (vla-get-objectname (setq vla_object (vlax-ename->vla-object (car entity_seleсted))))
  						objects_list
  				)
  			)
  		)
	)
	vla_object
)

;************************************************************************************************************************************

(defun c:Block_Along_PLine ( /
								Acad_Object All_Attributes_List Aux_Get_Angle_Point Current_Distance Current_Footing_Block Current_Footing_Block_Angle
								Current_String Distance_From_Beginning Document_Layers_Collection Document_Object Drawing_Path File_To_Open Footings_File
								Footings_Processed Footing_Block_Name Insertion_Point Modelspace_Object Target_Polyline
							)

	(setq acad_Object (vlax-get-acad-object)
		  document_object (vla-get-ActiveDocument acad_Object)
		  document_layers_collection (vla-get-Layers document_object)
		  modelSpace_object (vla-get-ModelSpace document_Object)
		  drawing_path (strcat (vlax-get document_object 'Path) "\\")
		  footing_block_name "Опора"
		  distance_from_beginning 0.0
		  target_polyline (get_listed_objects "\nSelect Target PolyLine to Arrange Footings: " (list "AcDbPolyline"))
	)
	(if (= (getvar "USERS1") "")
		(setvar "USERS1" drawing_path)
		(if (not (vl-file-directory-p (getvar "USERS1"))) (setvar "USERS1" drawing_path) (setq drawing_path (getvar "USERS1")))
	)
	(if (setq file_to_open (getfiled "Select Footing Data File to Read from" drawing_path "txt" 16))
		(progn
			(setq footings_file (open file_to_open "r")
				  footings_processed 1
			)
			(setvar "USERS1" (vl-filename-directory file_to_open))

			(while (setq current_string (read-line footings_file))
				(setq current_distance (atof current_string)
					  distance_from_beginning (+ distance_from_beginning current_distance)
					  insertion_point (vlax-3d-point (vlax-curve-getPointAtDist target_polyline distance_from_beginning))
					  aux_get_angle_point (vlax-3d-point (vlax-curve-getPointAtDist target_polyline (+ 0.1 distance_from_beginning)))
					  current_footing_block_angle (vla-AngleFromXAxis (vla-get-Utility document_object) insertion_point aux_get_angle_point)
				      current_footing_block (vla-InsertBlock modelSpace_object insertion_point footing_block_name 1 1 1 current_footing_block_angle)
					  all_attributes_list (vlax-safearray->list (vlax-variant-value (vla-getattributes current_footing_block)))
				)
				(foreach attribute_item all_attributes_list
					(if (= "НОМЕР_ОПОРЫ" (vla-get-TagString attribute_item))
						(vla-put-TextString attribute_item (strcat "№" (itoa footings_processed)))
					)
				)
				(setq footings_processed (1+ footings_processed))
  			)
  			(close footings_file)
			(princ (strcat "\nTotal of " (itoa footings_processed) " Footings Were Processed"))
		)
		(princ "\nYou've Just Cancelled the Command!")
	)
	(princ)
)
Вложения
Тип файла: lsp Block_Along_PLine.lsp (3.2 Кб, 2 просмотров)
koMon вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 08.02.2018, 13:42
#13
jackUAROBEY

Проектировщик ВК
 
Регистрация: 18.09.2014
Анапа
Сообщений: 43


Удалено
jackUAROBEY вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 08.02.2018, 14:48
#14
MSWAN


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


Цитата:
Сообщение от koMon Посмотреть сообщение
Oops, I did it again)))

Ну если использовать созданную обстановку: dwg с полилинией, блок "Опора" с атрибутом "НОМЕР_ОПОРЫ" , сохранённый в этом dwg, файл с дистанцияями в формате, например *.txt с числами в один столбец (поскольку excel содержит всего лишь один столбец с числами), то лисп может выглядет как-то так.
Гениально! работает!)) спасибо огромное!

Цитата:
Сообщение от koMon Посмотреть сообщение
Oops, I did it again)))

Ну если использовать созданную обстановку: dwg с полилинией, блок "Опора" с атрибутом "НОМЕР_ОПОРЫ" , сохранённый в этом dwg, файл с дистанцияями в формате, например *.txt с числами в один столбец (поскольку excel содержит всего лишь один столбец с числами), то лисп может выглядет как-то так.
Спасибо огромное!! Настоящий человечище! Прога просто гениальна!!

Последний раз редактировалось Кулик Алексей aka kpblc, 08.02.2018 в 16:45.
MSWAN вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 08.02.2018, 16:44
#15
koMon


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


Пожалуйста) Offtop: Но утврждения 2, 3 всё-таки как-то гиперболизированы)
koMon вне форума вставить имя Обратить внимание модератора на это сообщение  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Ищу программу для расстановки в автокаде блоков вдоль полилинии

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

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возможно ли в Автокаде 2014 в свойствах полилинии сделать площадь в квадратных метрах? erikbond AutoCAD 13 13.04.2016 19:07
Как преобразовать модель автомобиля, из блоков, линий, 3d линий, полилиний... Legion AutoCAD 11 29.08.2015 13:33
в автокаде редактор блоков не закрывается, но выдает себя за основной файл SitchAzamat AutoCAD 3 18.09.2012 16:49
Поворот блоков вдоль полилинии, сплайна Victor Готовые программы 3 19.02.2012 22:12
ищу функцию построения 3d полилинии mankurt Программирование 8 07.02.2012 12:43

|| Главная || Каталог САПР || Тендеры || Публикации || Объявления || Биржа труда || Download || Галерея ||
|| Библиотека || Кунсткамера || Каталог предприятий || Контакты || Файлообменник || Блоги ||