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

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

Каким образом узнать длину нескольких динамических блоков

Ответ
Поиск в этой теме
Непрочитано 05.12.2007, 12:50 #1
Каким образом узнать длину нескольких динамических блоков
ie.spb
 
Инженер
 
Регистрация: 21.08.2007
Сообщений: 596

Блоки- простейшие прямоугольники с линейными параметрами. Каждый блок своей длины. можно ли узнать суммарную их длину. (т.е. просто длину прямоугольного блока). В поиске не нашел ничего подходящего.
__________________
Склероз нельзя вылечить, но о нем можно забыть.
(Ф. Раневская)
Просмотров: 8484
 
Непрочитано 05.12.2007, 12:56
#2
Кулик Алексей aka kpblc
Moderator

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


А то, что надо считать, пускай каждый сам выдумывает?
Образчик где?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 05.12.2007, 13:00
#3
ie.spb

Инженер
 
Регистрация: 21.08.2007
Сообщений: 596
<phrase 1=


Я же говорю, просто прямоугольники разной длины. Будущие воздуховоды. Можно узнать длину обоих фигур
Вложения
Тип файла: dwg
DWG 2004
Блоки.dwg (46.7 Кб, 994 просмотров)
__________________
Склероз нельзя вылечить, но о нем можно забыть.
(Ф. Раневская)
ie.spb вне форума  
 
Непрочитано 05.12.2007, 13:26
#4
Кулик Алексей aka kpblc
Moderator

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


Код:
[Выделить все]
(defun c:get-len (/ summ selset)
  (vl-load-com)
  (if (setq selset (ssget '((0 . "INSERT"))))
    (setq summ
	   (apply
	     '+
	     (mapcar
	       '(lambda (b) (vlax-variant-value (vla-get-value b)))
	       (vl-remove-if-not
		 '(lambda (a)
		    (= (strcase (vla-get-propertyname a)) "DISTANCE")
		    ) ;_ end of lambda
		 (apply
		   'append
		   (mapcar
		     '(lambda (x)
			(vlax-safearray->list
			  (vlax-variant-value (vla-getdynamicblockproperties x))
			  ) ;_ end of vlax-safearray->list
			) ;_ end of lambda
		     (vl-remove-if-not
		       '(lambda	(x)
			  (equal (vla-get-isdynamicblock x) :vlax-true)
			  ) ;_ end of lambda
		       (mapcar 'vlax-ename->vla-object
			       ((lambda	(/ tab item)
				  (repeat (setq	tab  nil
						item (sslength selset)
						) ;_ end setq
				    (setq tab
					   (cons (ssname selset (setq item (1- item))) tab)
					  ) ;_ end of setq
				    ) ;_ end of repeat
				  tab
				  ) ;_ end of lambda
				)
			       ) ;_ end of mapcar
		       ) ;_ end of vl-remove-if-not
		     ) ;_ end of mapcar
		   ) ;_ end of apply
		 ) ;_ end of vl-remove-if-not
	       ) ;_ end of mapcar
	     ) ;_ end of apply
	  ) ;_ end of setq
    ) ;_ end of if
  (if summ
    (alert (rtos summ 2 2))
    ) ;_ end of if
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Последний раз редактировалось Кулик Алексей aka kpblc, 05.12.2007 в 13:43.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 05.12.2007, 13:31
#5
ie.spb

Инженер
 
Регистрация: 21.08.2007
Сообщений: 596
<phrase 1=


Ну вы серьезные ребята. Просто слов нет. Спасибо большое
__________________
Склероз нельзя вылечить, но о нем можно забыть.
(Ф. Раневская)
ie.spb вне форума  
 
Автор темы   Непрочитано 05.12.2007, 13:32
#6
ie.spb

Инженер
 
Регистрация: 21.08.2007
Сообщений: 596
<phrase 1=


Можно вопрос? Ты так быстро сам написал программу, или готовая была?
__________________
Склероз нельзя вылечить, но о нем можно забыть.
(Ф. Раневская)
ie.spb вне форума  
 
Непрочитано 05.12.2007, 13:33
#7
Кулик Алексей aka kpblc
Moderator

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


Спасибо, конечно, на добром слове, но... Подсчет вестись будет только для тех блоков, у которых есть свойство DISTANCE. Если будет свойство DIST_bla_bla_bla, то его значение учитываться уже не будет. Лисп нарисован под конкретную задачу, и не более того.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 05.12.2007, 13:34
#8
ie.spb

Инженер
 
Регистрация: 21.08.2007
Сообщений: 596
<phrase 1=


Нет нет только дистанция. Еще раз спасибо
__________________
Склероз нельзя вылечить, но о нем можно забыть.
(Ф. Раневская)
ie.spb вне форума  
 
Непрочитано 05.12.2007, 13:42
#9
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от Djonikbishkek Посмотреть сообщение
Можно вопрос? Ты так быстро сам написал программу, или готовая была?
С нуля, конечно. Просто с дин.блоками (спасибо Supermax'y) качественно пришлось в свое время повоевать.
Пока печатал последний пост, нашел мелкую ошибку. Код исправлен.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.12.2007, 23:37
#10
SLADE

проектировщик-новобранец
 
Регистрация: 14.09.2005
Minsk
Сообщений: 324


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Спасибо, конечно, на добром слове, но... Подсчет вестись будет только для тех блоков, у которых есть свойство DISTANCE. Если будет свойство DIST_bla_bla_bla, то его значение учитываться уже не будет. Лисп нарисован под конкретную задачу, и не более того.
Кулик Алексей aka kpblc - Получается для полярного DISTANCE , он не подойдет , или он не считает, потому что полярный DISTANCE неименовал в "Длина_элемента"??? спасибо
SLADE вне форума  
 
Непрочитано 06.12.2007, 23:46
#11
Кулик Алексей aka kpblc
Moderator

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


Фильтрация "подсчитываемых" свойств ведется по имени. Distance, DISTance или disTaNcE - ему по барабану. Но "_Dist" лисп уже не "поймет". Поэтому вопрос, скорее всего, именно в переименовании.
Я ж говорю, что лисп сделан под конкретную задачу. Со всеми вытекающими.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.12.2007, 05:21
#12
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


...н-да...для начала надо пробовать стандартные средства.
data extraction вам поможет...
+не зависит от имен блоков и всяких dist-бла-бла-бла
+при создании нового вхождения меняется таблица
+при изменении существующего вхождения меняется таблица
ессно после нажатия update
Вложения
Тип файла: dwg
DWG 2004
Блоки.dwg (57.8 Кб, 981 просмотров)
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)

Последний раз редактировалось wetr, 12.12.2007 в 07:02.
wetr вне форума  
 
Автор темы   Непрочитано 12.12.2007, 06:34
#13
ie.spb

Инженер
 
Регистрация: 21.08.2007
Сообщений: 596
<phrase 1=


А когда на чертеже 1000 таких блоков. Это каждый занеси в таблицу. Издохнешь ведь.
__________________
Склероз нельзя вылечить, но о нем можно забыть.
(Ф. Раневская)
ie.spb вне форума  
 
Автор темы   Непрочитано 12.12.2007, 06:55
#14
ie.spb

Инженер
 
Регистрация: 21.08.2007
Сообщений: 596
<phrase 1=


Прошу прощения. Не разобрался сразу. Тоже вариант хороший. Но программно по моему проще посчитать длину этих блоков.
__________________
Склероз нельзя вылечить, но о нем можно забыть.
(Ф. Раневская)
ie.spb вне форума  
 
Автор темы   Непрочитано 12.12.2007, 07:14
#15
ie.spb

Инженер
 
Регистрация: 21.08.2007
Сообщений: 596
<phrase 1=


Да и еще, насчет data extraction если надо посчитать много объектов, Cad виснет минут на 10.
__________________
Склероз нельзя вылечить, но о нем можно забыть.
(Ф. Раневская)
ie.spb вне форума  
 
Непрочитано 12.12.2007, 07:26
#16
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


ну так считай на здоровье! Просто, как сказал Алексей, лисп под конкретную задачу, а через месяц у тебя появиться другая проблема... Ну не писать же под каждую лисп! Тем более что многое решается стандартными средствами. Я ни коим образом не преуменьшаю заслуг КРЫСа, просто data extraction более универсален...
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 12.12.2007, 07:27
#17
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,535
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Цитата:
Сообщение от Djonikbishkek Посмотреть сообщение
Да и еще, насчет data extraction если надо посчитать много объектов, Cad виснет минут на 10.
смени машину
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Автор темы   Непрочитано 12.12.2007, 08:32
#18
ie.spb

Инженер
 
Регистрация: 21.08.2007
Сообщений: 596
<phrase 1=


Цитата:
Сообщение от wetr Посмотреть сообщение
смени машину
Машина в порядке. Так что тебе волноваться незачем. И спасибо что помог!!!.
__________________
Склероз нельзя вылечить, но о нем можно забыть.
(Ф. Раневская)
ie.spb вне форума  
 
Непрочитано 12.12.2007, 11:36
#19
Кулик Алексей aka kpblc
Moderator

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


data extraction - это имеется в виду извлечение атрибутов? Потому что таблица в #12 как-то странновато сделана: обновления не выполняется при копировании объектов. Проверял на ADT 2006 Rus.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 12.12.2007, 11:48
#20
ie.spb

Инженер
 
Регистрация: 21.08.2007
Сообщений: 596
<phrase 1=


Такая же история на 2008 каде. Но когда сам создаешь все нормально, обновляется как положено.
__________________
Склероз нельзя вылечить, но о нем можно забыть.
(Ф. Раневская)
ie.spb вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Динамические блоки > Каким образом узнать длину нескольких динамических блоков

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сквозная нумерация динамических блоков zenon Программирование 214 28.08.2020 08:45
Руководство по созданию динамических блоков tanushka_ch Динамические блоки 20 25.11.2015 20:46
Проблема вставки Динамических блоков Владимир М Программирование 11 12.09.2007 15:42
Игра -Пятнашки- С использованием динамических блоков Gig Динамические блоки 1 11.12.2006 10:32
Библиотека динамических блоков Коробейников Алексей Динамические блоки 2 05.04.2005 16:08