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

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

Помогите изменить программу по построению контура объектов.

Ответ
Поиск в этой теме
Непрочитано 13.04.2018, 11:44 #1
Помогите изменить программу по построению контура объектов.
Softdie
 
Регистрация: 10.04.2018
Сообщений: 1

Помогите изменить программу по построению контура объектов. Вот прога http://forum.dwg.ru/showthread.php?t=137740. Нужно сделать контур на расстояние 3 мм от объектов.
Просмотров: 2030
 
Непрочитано 13.04.2018, 12:12
#2
Setvar


 
Регистрация: 10.02.2007
Москва
Сообщений: 611


Сам контур - это просто замкнутая полилиния, построенная командой "_RECTANG" ("ПРЯМОУГОЛЬНИК"). Поэтому достаточно сделать подобие для данного контура с расстоянием 3 мм.
Setvar вне форума  
 
Непрочитано 13.04.2018, 14:29
#3
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,665


А если написать новую программу, например такую? Не для англосаксов!-)
Но вот если попадётся повернутый блок, то криво получится(

Код:
[Выделить все]
 
;**************************************************************************************************************************
;
;                                                koMon 13.04.18
;
;**************************************************************************************************************************
												 (vl-load-com)
;**************************************************************************************************************************

(defun c:Bounding_Box ( / Acad_Object Bounding_Polyline_Array Bounding_Polyline_Object bulge_90_cw bulge_90_cw_Indices
						  Document_Object Document_Selection_Sets Fillet_Radius Llc Modelspace_Object
						  Objects_Sset_Object Ruc There_Is_Objects_Sset Vlax_Executed X_List X_Max_Offsetted
						  X_Min_Offsetted Y_List Y_Max_Offsetted Y_Min_Offsetted
					  )
	(setq acad_Object (vlax-get-acad-object)
		  document_object (vla-get-ActiveDocument acad_Object)
		  modelSpace_object (vla-get-ModelSpace document_Object)
		  document_Selection_sets (vla-get-SelectionSets document_object)
		  there_is_Objects_SSet nil
		  x_list '()
		  y_list '()
		  bulge_90_cw (* -1 (/ (sin (/ pi 8)) (cos (/ pi 8))))
		  bulge_90_cw_indices '(0 2 4 6)
		  offset_number 3.0
		  fillet_radius 5.0
	)
	(vlax-for selection_set document_Selection_sets
		(if (= "Objects_SSet" (vla-get-name selection_set))
			(setq there_is_Objects_SSet t
				  Objects_SSet_Object selection_set
			)
		)
	)
	(if there_is_Objects_SSet
		(progn
			(vla-delete Objects_SSet_Object)
			(vlax-release-object Objects_SSet_Object)
			(setq Objects_SSet_Object (vla-Add document_Selection_sets "Objects_SSet"))
		)
		(setq Objects_SSet_Object (vla-Add document_Selection_sets "Objects_SSet"))
	)

    (vl-catch-all-apply 'vla-SelectOnScreen (list Objects_SSet_Object))

	(vlax-dump-object Objects_SSet_Object t)

	(if (< (vla-get-count Objects_SSet_Object) 1)
		(princ "\nНичего не выбрано или команда прервана.")
		(progn
			(vlax-for sset_object Objects_SSet_Object
				(if (null (vl-catch-all-apply 'vla-getboundingbox (list sset_object 'llc 'ruc)))
					(setq x_list (cons (car (vlax-safearray->list llc)) (cons (car (vlax-safearray->list ruc)) x_list))
						  y_list (cons (cadr (vlax-safearray->list llc)) (cons (cadr (vlax-safearray->list ruc)) y_list))
					)
				)
			)
			(if x_list
				(progn
					(setq x_list (vl-sort x_list '<)
						  y_list (vl-sort y_list '<)
						  x_min_offsetted (- (car x_list) offset_number)
						  x_max_offsetted (+ (last x_list) offset_number)
						  y_min_offsetted (- (car y_list) offset_number)
						  y_max_offsetted (+ (last y_list) offset_number)
		  				  bounding_polyline_array (vlax-make-safearray vlax-vbDouble '(0 . 15))
		  				  vlax_executed (vlax-safearray-fill bounding_polyline_array (list
						  																	    (+ x_min_offsetted fillet_radius)
																								   y_min_offsetted

																								   x_min_offsetted
																								(+ y_min_offsetted fillet_radius)

																								   x_min_offsetted
																								(- y_max_offsetted fillet_radius)

						  																		(+ x_min_offsetted fillet_radius)
																								   y_max_offsetted

						  																		(- x_max_offsetted fillet_radius)
																								   y_max_offsetted

																								   x_max_offsetted
																								(- y_max_offsetted fillet_radius)

																								   x_max_offsetted
																								(+ y_min_offsetted fillet_radius)

						  																		(- x_max_offsetted fillet_radius)
																								   y_min_offsetted
						  																   )
						  					  )
		  				  bounding_polyline_object (vla-AddLightWeightPolyline modelSpace_object bounding_polyline_array)
						  vlax_executed (vla-put-closed bounding_polyline_object :vlax-true)
					)
					(foreach bulge_index bulge_90_cw_indices
						(vla-setBulge bounding_polyline_object bulge_index bulge_90_cw)
					)
					(vlax-release-object bounding_polyline_object)
				)
				(princ "\nНеприемлемый(е) объект(ы).")
			)
		)
	)
	(princ)
)

Последний раз редактировалось koMon, 13.04.2018 в 17:34.
koMon вне форума  
 
Непрочитано 13.04.2018, 15:29
#4
frostmourn


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


Offtop: Интересный прикол. В посте в строчках 51, 52 точка с запятой есть, а в исходнике нет.
frostmourn вне форума  
 
Непрочитано 13.04.2018, 15:47
#5
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,665


Цитата:
Сообщение от frostmourn Посмотреть сообщение
Offtop: Интересный прикол. В посте в строчках 51, 52 точка с запятой есть, а в исходнике нет.
Offtop: Американские хакеры?

----- добавлено через ~2 ч. -----
Offtop: Теперь строчки 58, 59
koMon вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Помогите изменить программу по построению контура объектов.

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти контура iskatel111 Программирование 7 23.08.2012 19:02
Как называется и где скачать программу конвертирования объектов СПДСГрафикс в обычные объекты AutoCAD? МишаИнженер Прочее. Программное обеспечение 3 10.10.2011 08:05
помогите написать программу расчета температуры MathCad Olga12345 Другие CAD системы 4 22.02.2011 15:25
Помогите выбрать программу для проектирования городских улиц us_ypsp Прочее. Программное обеспечение 3 11.12.2010 10:53