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

Вернуться   Форум DWG.RU > Программное обеспечение > Прочее. Программное обеспечение > Связь переменой MODEMACRO с длинной выбранного объекта

Связь переменой MODEMACRO с длинной выбранного объекта

Ответ
Поиск в этой теме
Непрочитано 21.04.2006, 11:43 #1
Связь переменой MODEMACRO с длинной выбранного объекта
Amzid
 
Москва
Регистрация: 09.06.2005
Сообщений: 100

Подскажите, можно ли организовать связь переменной MODEMACRO с длиной выбранного (а лучше выбранных) отрезков, полилиний, дуг. Да так, чтобы информация автоматический обновлялась.
И, наберусь наглости, может кто реализует такую вещь на халяву? Если конечно не отнимет много времени…
Просмотров: 4625
 
Непрочитано 21.04.2006, 12:07
#2
Zouss


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


Цитата:
Сообщение от Вот первый примитивный вариант проньки
(vl-load-com)

(vlr-command-reactor
nil
'((:vlr-commandEnded . endCommand))
) ;_ vlr-command-reactor

(defun endCommand (calling-reactor
endcommandInfo
/
ssp
ssp_totallength
userstring
)

(defun get_totallength (ss / en ed z n)
(setq z 0
n (sslength ss)
) ;_ setq
(repeat n
(setq notifier-object
(vlax-ename->vla-object (setq en (ssname ss 0)))
) ;_ setq

(cond
((vlax-property-available-p notifier-object "Length")
(setq z (+ z (vla-get-length notifier-object)))
)
) ;cond

(ssdel en ss)
) ;_ repeat
z
) ;_ defun

(setq ssp_totallength
0
userstring
"previous selection set"
ssp (ssget "_P")
) ;_ setq
(princ ssp)
(princ ssp_totallength)
(if ssp
(progn
(princ)
) ;_ progn
) ;_ if
(if
ssp
(setq userstring
(strcat userstring
"length "
(rtos (get_totallength ssp))
) ;_ strcat
) ;_ setq
(setq userstring (strcat "No " userstring))
) ;_ if
(princ userstring)
(setvar "MODEMACRO" userstring)
(princ)
) ;defun

(princ)
достаточно просто загрузить и все будет работать само
а именно - считает общую длину объектов, выбранных последней отработавшей командой редактирования. На дуги и окружности внимания не обращает.
Zouss вне форума  
 
Непрочитано 24.04.2006, 12:10
#3
Zouss


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


поднимаю тему

К вышеприведенному листингу пару вопросов знатокам VLisp:
- в каком направлении рыть, чтобы отловить изменения текущего набора выбора
- есть ли готовая считалка длин дуг и окружностей (что-то типа (vla-get-length

ну и вообще - комментарии, пожелания... ммматериальные какие нибудь...
Zouss вне форума  
 
Непрочитано 24.04.2006, 12:45
#4
Кулик Алексей aka kpblc
Moderator

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


Можно попробовать и таким образом (считалку сделал на ходу, там уж как получится ):
Код:
[Выделить все]
(if *vlr-obj*
  (progn
    (setq *vlr-obj* nil)
    (vlr-remove-all :vlr-miscellaneous-reactor)
    ) ;_ end of progn
  ) ;_ end of if
(if (not *vlr-obj*)
  (setq	*vlr-obj* (vlr-miscellaneous-reactor
		    nil
		    '((:vlr-pickfirstmodified . selchange))
		    ) ;_ end of vlr-miscellaneous-reactor
	) ;_ end of setq
  ) ;_ end of if
(defun selchange (reactor event / selset sum_len)
  (setq sum_len 0)
  (if (and (setq selset	(vla-get-pickfirstselectionset
			  (vla-get-activedocument (vlax-get-acad-object))
			  ) ;_ end of vla-get-PickfirstSelectionSet
		 ) ;_ end of setq
	   (> (vla-get-count selset) 0)
	   ) ;_ end of and
    (progn
      (vlax-for	item selset
	(if (vlax-property-available-p item 'length)
	  (setq sum_len (+ sum_len (vla-get-length item)))
	  ) ;_ end of if
	) ;_ end of vlax-for
      (setvar "modemacro" (rtos sum_len 2 4))
      ) ;_ end of progn
    (setvar "modemacro" ".")
    ) ;_ end of if
  ) ;_ end of defun
Код сохранить как файл и полностью и грузить
===
Добавлено:
Или вот вариант, с учетом вариантов дуг и окружностей:
Код:
[Выделить все]
(if *vlr-obj*
  (progn
    (setq *vlr-obj* nil)
    (vlr-remove-all :vlr-miscellaneous-reactor)
    ) ;_ end of progn
  ) ;_ end of if
(if (not *vlr-obj*)
  (setq	*vlr-obj* (vlr-miscellaneous-reactor
		    nil
		    '((:vlr-pickfirstmodified . selchange))
		    ) ;_ end of vlr-miscellaneous-reactor
	) ;_ end of setq
  ) ;_ end of if
(defun selchange (reactor event / selset sum_len iten_name)
  (setq sum_len 0.0)
  (if (and (setq selset	(vla-get-pickfirstselectionset
			  (vla-get-activedocument (vlax-get-acad-object))
			  ) ;_ end of vla-get-PickfirstSelectionSet
		 ) ;_ end of setq
	   (> (vla-get-count selset) 0)
	   ) ;_ end of and
    (progn
      (vlax-for	item selset
	(if (vlax-property-available-p item 'length)
	  (setq sum_len (+ sum_len (vla-get-length item)))
	  (setq	item_name (strcase (vla-get-objectname item) t)
		sum_len	  (+ sum_len
			     (cond
			       ((= item_name "acdbcircle")
				(* 2 pi (vla-get-radius item))
				)
			       ((= item_name "acdbarc")
				(vla-get-ArcLength item)
				)
			       (t 0.0)
			       ) ;_ end of cond
			     ) ;_ end of +
		) ;_ end of setq
	  ) ;_ end of if
	) ;_ end of vlax-for
      (setvar "modemacro" (rtos sum_len 2 4))
      ) ;_ end of progn
    (setvar "modemacro" ".")
    ) ;_ end of if
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 24.04.2006, 15:31
#5
Amzid


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


Спасибо ВАМ, ЧЕЛОВЕКИ!!!!
Цитата:
Сообщение от Zouss
ну и вообще - комментарии, пожелания... ммматериальные какие нибудь...
Спасибо!!!!. Материальных пожеланий с моей стороны к сожалению нет.

Решил воспользоваться вариантом kpblc
kpblc, если не сложно, добавь в последний код информацию об авторе. Ту, которую сочтёшь нужной. Хочу, чтоб в файле была соответствующая информация, чтобы знать кто делал и для порядка.
Amzid вне форума  
 
Непрочитано 24.04.2006, 16:05
#6
Кулик Алексей aka kpblc
Moderator

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


> Amzid : Бери ты так, чего ты? Я прям не знаю Тут такое, кажись, не принято
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 24.04.2006, 16:31
#7
Amzid


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


Да как сказать... Я не так давно пришел работать в достаточно крупную копанию (системный интегратор). В роде как большая компания. Но средств автоматизации проектирования нет никаких. Нарисуют короба, лотки. Как-то прикидывают, считают чуть ли не в ручную.
Я бы хотел показать как можно, хоть немного упростить процесс проектирования подсчёта материалов, да и себе облегчить жизнь. Вот и хотел этот лисп кинуть в массовой рассылке по почте с указанием рекомендаций, примеров использования и автора (хотя бы ника). Не хочу присваивать чужой труд себе.
Amzid вне форума  
 
Непрочитано 24.04.2006, 16:46
#8
Кулик Алексей aka kpblc
Moderator

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


Если короба, лотки и прочая электрические фиговинки, может, придется вообще смотреть ElectriCS или AutoCAD Electrical, например (я не пробовал ни то, ни другое, так что ничего сказать не могу) - проблема ж не ограничивается только длиной тех же коробов, но и их габаритами, ЯТД, и мощностью проложенных в них кабелей (ща меня порвут как Тузик грелку за такую терминологию), и количеством точек подключения, и... Да мало ли! Факт, что этот лиспик в лучшем случае ничего не даст. В худшем - может вообще отодвинуть нормальное решение в голубую даль. Я через такое уже прошел. Приятного мало.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 24.04.2006, 17:13
#9
Amzid


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


Я согласен, что нормальный софт предназначенный для решения контрактных задач гораздо (во много раз) лучше. Более того, это правильный путь!
Но, AutoCAD в нашей стране в ряде случаев условно бесплатный.
А за дополнительный софт приодеться платить. Не куда не деться.
Опыт и моральный вес у меня небольшой. Сильно сомневаюсь, что меня послушают.
Как правило, основной аргумент: “Делали, делаем и будем делать. Всё отлажено, всё работает. Зачем что-то менять?”. Одним словом я попытаюсь сдвинуть это дело. Но терзают меня смутные сомнения…
Amzid вне форума  
 
Непрочитано 24.04.2006, 17:29
#10
Кулик Алексей aka kpblc
Moderator

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


Насчет платного софта - стоит только захотеть Например, см. ПМ
И сюда:
http://arcada.com.ua/infot/po/electrica.html
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 24.04.2006, 17:47
#11
Zouss


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


по ходу в начале каждого поста надо писать "все нижесказанное и тюдю и тюпю" на американский манер... про ммматериальное это я в обчем не всерьез

про внедрение прогрессивных методов есть очень мудрая пословица - не делай добра людям, не получишь в ответ зла. Так что жизнь надо облегчать прежде всего себе, а там как повернется, станет народу завидно, что нервы у тебе спокойные и работается влегкую может и подорвутся мозгами пошевелить в плане овладения навыками высокоэффективной обработки вектора
Zouss вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Прочее. Программное обеспечение > Связь переменой MODEMACRO с длинной выбранного объекта

Реклама i
Опции темы Поиск в этой теме
Поиск в этой теме:

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