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

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

Команда массив - равномерное распределение с отступом от края

Ответ
Поиск в этой теме
Непрочитано 15.11.2017, 13:59 #1
Команда массив - равномерное распределение с отступом от края
Doctor_Che
 
Регистрация: 27.10.2015
Сообщений: 18

Здравствуйте.
Такая задача - необходимо постоянно расстанавливать светильники по помещениям с известным количесвом рядов, но с неизвестным расстоянием между ними.
Можно ли для автоматизации процесса приспособить команду "массив"? Так что бы указывать противоположные углы помещения и количество строк и столбцов в массиве.
У неня не получается сделать отступ от края массива - первый объект всегда помещается на нём.
Желаемый результат приложил.

Миниатюры
Нажмите на изображение для увеличения
Название: массив.jpg
Просмотров: 61
Размер:	39.6 Кб
ID:	195677  

Просмотров: 4035
 
Непрочитано 15.11.2017, 15:46
#2
Bull

Конструктор по сути (машиностроитель)
 
Регистрация: 10.10.2005
Набережные Челны (это где КамАЗ)
Сообщений: 11,391


в массиве нет отступа. Не знаю как в последующих версиях, а в прямоугольном и интервал заполнения невозможно указать (2013). Только интервал между рядами и столбцами. Или я туплю уже
__________________
Век живи, век учись - ...
Bull вне форума  
 
Непрочитано 15.11.2017, 16:13
1 | #3
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,091


Цитата:
Сообщение от Doctor_Che Посмотреть сообщение
Такая задача - необходимо постоянно расстанавливать светильники по помещениям с известным количесвом рядов, но с неизвестным расстоянием между ними.
Подобная задача решалась на данном форуме применительно к расстановке пожарных извещателей. Поиск на форуме по запросу "расстановка пожарных извещателей" находит много интересного.
kp+ вне форума  
 
Автор темы   Непрочитано 16.11.2017, 14:36
#4
Doctor_Che


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


Цитата:
Сообщение от kp+ Посмотреть сообщение
Подобная задача решалась на данном форуме применительно к расстановке пожарных извещателей. Поиск на форуме по запросу "расстановка пожарных извещателей" находит много интересного.
Спасибо. Вроде получается.

По ходу дела ещё вопрос возник.
Как вставить блок не из файла с базой блоков, а из редактируемого файла, где нужный блок уже вставлен и настроен?
Смысл такой - если уже вставлен динамический блок светильника с нужной видимостью, развёрнут как надо и т.д., то не повторять лишние телодвижения.

Пока научился вставлять блок из файла с базой блоков такой конструкцией:
Код:
[Выделить все]
 
(VL-CMDF "_.insert" "имя_файла.dwg")
(VL-CMDF)
(VL-CMDF "_.-insert" "имя_блока" <точка_вставки_блока> (GETVAR "dimscale") (GETVAR "dimscale") "")
Doctor_Che вне форума  
 
Непрочитано 16.11.2017, 16:41
1 | #5
skkkk


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


Цитата:
Сообщение от Doctor_Che Посмотреть сообщение
Как вставить блок не из файла с базой блоков, а из редактируемого файла, где нужный блок уже вставлен и настроен?
Также, только первые две строчки уже не нужны. Третья строка это сделает, если блок уже загружен.
Чтобы каждый раз не вставлять всю базу (а при большом ее размере это небыстро), нужно либо обеспечить ее автоматическую загрузку в начале сеанса, например, добавив в автозагрузку первые две строки кода, либо добавить проверку: если блок есть, то не вставлять. Как вариант:
Код:
[Выделить все]
 (if (null 
		(vla-item 
			(vla-get-blocks 
				(vla-get-activedocument (vlax-get-acad-object))
			)
			"имя_блока"
		)
	)
	(progn
		(vl-cmdf "_.insert" "имя_файла.dwg")
		(vl-cmdf)
	)
)
Не забыть надо, разумеется, и про (vl-load-com).
skkkk вне форума  
 
Автор темы   Непрочитано 16.11.2017, 17:35
#6
Doctor_Che


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


Пытаюсь двигать дальше.

Идея такая
- на чертеже уже есть блок светильника с атрибутом "МОЩНОСТЬ"
- указываю на необходимый блок, считываю его имя и значение атрибута
- вставляю новый блок, такой же с таким же значением атрибута

Нашёл похожий код, но не работает как надо. Заменил в нём одну строку - начал нормально считывать имя блока и вставлять, но не считывает атрибут.

Код:
[Выделить все]
 
(vl-load-com)  ; загружаем функции расширения 
    (setq obj (car (entsel "\nВыберите блок: ")))
    (if (not (= obj nil)) 
    	(progn
    		(setq vla_obj (vlax-ename->vla-object obj))  		; переводим в vla-object
    		(setq P (vlax-ldata-get vla_obj "МОЩНОСТЬ"))      	; извлечение значения атрибута "мощность" 
    		;(setq block_name (cdr (assoc 2 (entget obj)))) 		; имя блока
    		(setq block_name (vla-get-EffectiveName (vlax-ename->vla-object obj))); извлекаем имя блока
    		(command "_insert" block_name IP (GETVAR "dimscale") (GETVAR "dimscale") 0 P)  ; вставка блока
    	);end progn
    ); end if 
Doctor_Che вне форума  
 
Непрочитано 16.11.2017, 18:22
#7
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,091


vlax-ldata-get работает не с атрибутами, а с общим словарем чертежа. Список атрибутов извлекает метод GetAttributes. Если комментарии не Ваши, а из исходного кода, то они ввели Вас в заблуждение.
Код:
[Выделить все]
(setq atrs (vlax-invoke vl-block 'Getattributes))
выдает список атрибутов как vla-объектов
vla-Getattributes выдает массив, с которым в лиспе еще надо повозиться.
kp+ вне форума  
 
Непрочитано 17.11.2017, 09:13
#8
Bull

Конструктор по сути (машиностроитель)
 
Регистрация: 10.10.2005
Набережные Челны (это где КамАЗ)
Сообщений: 11,391


тема плавно перетекла в "программирование". Может и переместить туда?
__________________
Век живи, век учись - ...
Bull вне форума  
 
Непрочитано 17.11.2017, 09:16
#9
Кулик Алексей aka kpblc
Moderator

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


Перенес пока в "Просто программирование", без привязки к языку.

----- добавлено через ~1 мин. -----
Цитата:
Сообщение от kp+ Посмотреть сообщение
vlax-ldata-get работает не с атрибутами, а с общим словарем чертежа.
Вообще-то не обязательно со словарем чертежа, насколько я помню. Со словарем объекта, скорее. Но могу ошибаться.
Цитата:
Сообщение от kp+ Посмотреть сообщение
vla-Getattributes выдает массив, с которым в лиспе еще надо повозиться.
А чего с ним возиться? Все просто как топор ))
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Команда массив - равномерное распределение с отступом от края

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
отступ от края сваи до края ростверка? nado Основания и фундаменты 19 10.04.2019 10:50
Как создать массив элементов по определенному пути? rj45 SolidWorks 7 25.06.2017 18:14
Как правильно выполняется отступ края гр.подушки по низу от края фундамента? _u4enik_ Основания и фундаменты 14 26.04.2013 11:36
Минимальные расстояния между болтами и от болта до края по фланцевых соединениях. eilukha Конструкции зданий и сооружений 4 16.08.2012 11:14
команда аналогичная BURST в autodesk architectural desktop 2011 Vombat Вертикальные решения на базе AutoCAD 4 26.11.2010 14:00