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

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

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

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

Добрый день!

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

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

Просмотров: 3977
 
Непрочитано 30.04.2019, 11:50
#2
trir


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


даже програмировать не нужно, достаточно команды Пакет
trir вне форума  
 
Автор темы   Непрочитано 30.04.2019, 13:18
#3
танбраун


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


Т.е. если написать "Пакет", открыть чертеж, выделить нужные прямоугольники, применить команду "Пакет", то прямоугольники разобьются по тем параметрам, которые написаны в "Пакете"?
танбраун вне форума  
 
Непрочитано 30.04.2019, 13:28
#4
trir


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


1. Пишеш скрипт
2. Запускаешь через пакет
3. Готово
trir вне форума  
 
Автор темы   Непрочитано 30.04.2019, 13:33
#5
танбраун


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


Осталось "за малым" - научиться писать скрипт
танбраун вне форума  
 
Непрочитано 30.04.2019, 13:34
#6
trir


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


_pline
10,10
11,11
12,12
trir вне форума  
 
Автор темы   Непрочитано 30.04.2019, 13:38
#7
танбраун


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


10,10
11,11
12,12

это координаты?
танбраун вне форума  
 
Непрочитано 30.04.2019, 13:48
#8
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,379


следует отметить, что в AutoCAD не существует примитива "прямоугольник"
А из вопроса- ничерта не понял
Хмурый вне форума  
 
Автор темы   Непрочитано 30.04.2019, 14:29
#9
танбраун


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


Изначально я хотел, чтобы выбираешь команду прямоугольник и рисуется прямоугольник, но не сплошной полилинией одного цвета, а прямоугольник разделен: в основании отрезок синего цвета, бока и верх - полилиния зеленого цвета, но наверное так нельзя.
Другой вариант, когда есть прямоугольники из полилиний разного размера и, например при использовании лиспа, они разбиваются на: в основании отрезок синего цвета, бока и верх - полилиния зеленого цвета (как в примере).
танбраун вне форума  
 
Непрочитано 30.04.2019, 14:46
#10
AMDen

Инженер-проектировщик
 
Регистрация: 07.07.2016
Санкт-Петербург
Сообщений: 760


Цитата:
Сообщение от танбраун Посмотреть сообщение
рисуется прямоугольник
Нужны именно прямоугольники? Может использовать подходящий блок? А потом, если надо, расчленять до двух полилиний разных цветов.
AMDen вне форума  
 
Автор темы   Непрочитано 30.04.2019, 14:54
#11
танбраун


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


Прямоугольников много и они разных размеров. Если вставлять блоки, то долго выставлять нужный размер.
танбраун вне форума  
 
Непрочитано 30.04.2019, 14:56
#12
AMDen

Инженер-проектировщик
 
Регистрация: 07.07.2016
Санкт-Петербург
Сообщений: 760


Цитата:
Сообщение от танбраун Посмотреть сообщение
Прямоугольников много и они разных размеров
Они уже есть или их надо рисовать?
AMDen вне форума  
 
Автор темы   Непрочитано 30.04.2019, 15:52
#13
танбраун


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


надо нарисовать
танбраун вне форума  
 
Непрочитано 30.04.2019, 15:59
#14
AMDen

Инженер-проектировщик
 
Регистрация: 07.07.2016
Санкт-Петербург
Сообщений: 760


Цитата:
Сообщение от танбраун Посмотреть сообщение
Если вставлять блоки, то долго выставлять нужный размер
А как Вы вставляете прямоугольники, что это получается значительно быстрее выставления размеров блока?
AMDen вне форума  
 
Непрочитано 30.04.2019, 16:23
#15
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Размеры и точка вставки прямоугольников откуда берутся? Прошло полдня, уже можно было бы руками нарисовать, наверно. Или это чисто учебная задача без практического смысла?
Сергей812 вне форума  
 
Непрочитано 30.04.2019, 17:49
#16
zenon

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


танбраун, вот блок упрошенный
Двухцветный.dwg
вставляешь, тянешь за ручку
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Автор темы   Непрочитано 06.05.2019, 08:16
#17
танбраун


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Размеры и точка вставки прямоугольников откуда берутся? Прошло полдня, уже можно было бы руками нарисовать, наверно. Или это чисто учебная задача без практического смысла?
Есть проемы окон, сформированные отдельными отрезками (выделить их не всегда удобно), нужно в этих проемах нарисовать верхний и боковые откосы и отдельно в низу отлив. Задача не учебная, у меня встречается часто.
Если вставлять блоком, как предлагает zenon, то это довольно долго, т.к. окон много и они разных размеров, т.е. нужно каждый раз вставлять блок и потом ручкой подгонять под размер.
танбраун вне форума  
 
Непрочитано 06.05.2019, 08:23
#18
Кулик Алексей aka kpblc
Moderator

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


Тем не менее динамический блок здесь будет, мне кажется, как раз "в тему". Окна, как ни крути, все же обычно имеют достаточно стандартные размеры. Вынести наиболее часто используемые на палитру - и вперед.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 06.05.2019, 09:12
#19
танбраун


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Тем не менее динамический блок здесь будет, мне кажется, как раз "в тему". Окна, как ни крути, все же обычно имеют достаточно стандартные размеры. Вынести наиболее часто используемые на палитру - и вперед.
Если других вариантов нет, тогда буду пробовать ...
танбраун вне форума  
 
Непрочитано 06.05.2019, 10:31
#20
gumel


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


Цитата:
Сообщение от танбраун Посмотреть сообщение
Если других вариантов нет, тогда буду пробовать ...
Другой вариант есть. Лучше всего составить спецификацию проемов/окон и уже по ней считать сколько нужно откосов, а сколько отливов. Тем более, что на практике необходимо добавлять к длине доборных элементов некую величину.

Другой вопрос, - как в автоматическом режиме составить спецификацию по габаритам замкнутых полилиний?
gumel вне форума  
 
Непрочитано 06.05.2019, 10:43
#21
Кулик Алексей aka kpblc
Moderator

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


Либо _.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