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

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

Разбить примитив (прямоугольник) на 2 части (основание и остальное)

Ответ
Поиск в этой теме
Непрочитано 30.04.2019, 10:33
Разбить примитив (прямоугольник) на 2 части (основание и остальное)
танбраун
 
Регистрация: 28.02.2019
Сообщений: 53

Добрый день!

Помогите с решением вопроса: нужно вычертить много прямоугольников, разбитых на 2 части (основание и все остальное). Основание будет - отрезок зеленого цвета, п-образная часть - полилиния синяя. Решить наверное можно с помощью лиспа, но к сожалению ноль в этом вопросе. AutoCad 2019. За ранее благодарен.

Вложения
Тип файла: dwg
DWG 2013
Чертеж1.dwg (175.6 Кб, 14 просмотров)

Просмотров: 3969
 
Непрочитано 06.05.2019, 10:43
#21
Кулик Алексей aka kpblc
Moderator

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


Либо _.dataextraction, либо вопрос в другом разделе.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.05.2019, 12:16
#22
koMon


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


Цитата:
Сообщение от танбраун Посмотреть сообщение
Решить наверное можно с помощью лиспа
наверняка...с упрощённым группообразованием
Код:
[Выделить все]
 
;*************************************************************************************************************************

(vl-load-com)

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

(defun draw_rect (parsed_point_3 parsed_point_1 parsed_modelspace_object parsed_rect_exists /
				  point_1 point_2 point_3 point_4 p1_p3_distance pline_coordinates_array line_object_dxf pline_object_dxf)

    (setq point_1 (list (car parsed_point_1) (cadr parsed_point_1))
		  point_2 (list (car parsed_point_1) (cadr parsed_point_3))
		  point_3 (list (car parsed_point_3) (cadr parsed_point_3))
		  point_4 (list (car parsed_point_3) (cadr parsed_point_1))
		  p1_p3_distance (distance parsed_point_1 parsed_point_3)
		  pline_coordinates_array (vlax-make-safearray vlax-vbDouble '(0 . 7))
	)
	(vlax-safearray-fill pline_coordinates_array (append point_1 point_2 point_3 point_4))
	(if (null parsed_rect_exists)
		(if (null (zerop p1_p3_distance))
			(progn
    			(setq line_object (vla-addline parsed_modelSpace_object (vlax-3d-point point_1) (vlax-3d-point point_4))
					  pline_object (vla-addlightweightpolyline parsed_modelSpace_object pline_coordinates_array)
					  rect_exists t
					  line_object_dxf (entget (vlax-vla-object->ename line_object))
					  pline_object_dxf (entget (vlax-vla-object->ename pline_object))
				)
				(if (assoc 420 line_object_dxf)
					(setq line_object_dxf (vl-remove (assoc 420 line_object_dxf) line_object_dxf))
				)
				(if (null (assoc 62 line_object_dxf))
					(setq line_object_dxf (append line_object_dxf (list (cons 62 3))))
					(setq line_object_dxf (subst (cons 62 3) (assoc 62 line_object_dxf) line_object_dxf))
				)
				(if (assoc 420 pline_object_dxf)
					(setq pline_object_dxf (vl-remove (assoc 420 pline_object_dxf) pline_object_dxf))
				)
				(if (null (assoc 62 pline_object_dxf))
					(setq pline_object_dxf (append pline_object_dxf (list (cons 62 5))))
					(setq pline_object_dxf (subst (cons 62 5) (assoc 62 pline_object_dxf) pline_object_dxf))
				)
				(entmod line_object_dxf)
				(entmod pline_object_dxf)
			)
		)
		(if (null (zerop p1_p3_distance))
			(progn
				(vla-put-endpoint line_object (vlax-3d-point point_4))
    			(vla-put-coordinates pline_object pline_coordinates_array)
			)
		)
	)
)


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

(defun c:2_Color_Rect (/ modelSpace_object point_1 getting_point_3 rect_exists groups_collection group_sset group_index error_ocurred gread_data)
	(setq modelSpace_object (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object)))
		  point_1 (getpoint "\nПервая точка диагонали прямоугольника: ")
		  getting_point_3 t
		  rect_exists nil
		  groups_collection (vla-get-groups (vla-get-ActiveDocument (vlax-get-acad-object)))
		  group_sset (ssadd)
		  group_index (getvar 'useri1)
	)
	(while getting_point_3
		(setq error_ocurred (if (vl-catch-all-error-p (setq gread_data (vl-catch-all-apply 'grread (list t 8 0)))) t nil))
    	(cond
			(
				error_ocurred
					(prompt "\nНеверно!")
			)
			(
			   	(= 25 (car gread_data))				;Mouse Right Click
					(setq point_3 (getpoint point_1 "\nВторая точка диагонали прямоугольника: ")
						  getting_point_3 nil
					)
					(draw_rect point_3 point_1 modelspace_object rect_exists)
			)
			(
			   	(= 5 (car gread_data))				;Mouse Moving
					(draw_rect (cadr gread_data) point_1 modelspace_object rect_exists)
			)
			(
				(or
					(equal gread_data (quote (2 32)))		;Space
					(equal gread_data (quote (2 13)))     	;Enter
					(= 3 (car gread_data))				    ;Mouse Left Click
				)
					(setq getting_point_3 nil)

			)
			(
			 	t
					(prompt "\nНеверно!")
			)
		)
	)
	(ssadd (vlax-vla-object->ename line_object) group_sset)
	(ssadd (vlax-vla-object->ename pline_object) group_sset)
	(while (null (vl-catch-all-error-p (vl-catch-all-apply 'vla-item (list groups_collection (setq group_name (strcat "Rect_" (itoa (setq group_index (1+ group_index))))))))))
	(setvar 'useri1 group_index)
	(command "_-group" "_c" group_name "2_Color_Rect" group_sset "")
	(vlax-release-object line_object)
	(vlax-release-object pline_object)
	(princ)
)

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

Последний раз редактировалось koMon, 06.05.2019 в 12:59.
koMon вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Разбить примитив (прямоугольник) на 2 части (основание и остальное)



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заглубление подземной части до 15 метров. denisnsmaster Прочее. Архитектура и строительство 12 05.05.2025 12:21
Почему просаживается щебеночное основание dahunpao Основания и фундаменты 2 02.04.2014 15:07
Расчет рамы с ступенчатыми колоннами в СКАДе. Смущает эпюра моментов в нижней части колонны. Николай695 SCAD 2 17.07.2012 18:46
Как посчитать площадь некой части 3d поверхности импортированной с Google Earth в AutoCAD., Как посчитать площадь некой части 3d поверхности Johny AutoCAD 6 07.07.2012 19:56
Устройство фундаментов вдоль сохраняемой части здания при реконструкции NSW Основания и фундаменты 4 22.11.2011 13:33