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

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

помогите добить липс, Вставка блока с атрибутом

Ответ
Поиск в этой теме
Непрочитано 10.01.2008, 16:20 #1
помогите добить липс, Вставка блока с атрибутом
gizmo_zx
 
Проектировщик ЭО,ЭМ, ЭОС
 
Нижний Новгород
Регистрация: 18.07.2007
Сообщений: 247

Здраствуйте!
есть програмка для расчета падения напряжения, запрашивает значения и вставляет результат в виде Mtext.
Хочу еще вставить блок "name" передать значения переменных dlin , s1 атрибутам Atrib1 ,Atrib2, соответственно.
подсабите плиз...

Код:
[Выделить все]
(defun C:raschdu2 (/)
  (vl-load-com)
	
	(setq  tochka (getpoint "\n Точка вставки?"))
	
	;расчет тока и dU
	;**********************
	
	(setq p1 (getreal  "\nМощность: "))
	(setq dlin (getreal  "\nДлинна: "))
	(setq s1_0 (getstring  "\nСечение [2.5]: "))
	(if (= s1_0 "" )(setq s1_0 "2.5") )
	(setq s1 (atof s1_0))
	(setq u1s (getstring  "\nНапряжение: [220] "))	
	(setq names (strcat u1s))
	(if ( = names "220") (setq u1 220))
	(if ( = names "380") (setq u1 658.2 ))
	(if ( = names "") (setq u1 220 ))

	;расчет
	(setq p10 (* p1 1000))
	(setq p1_1 (/ p10 u1))
	(setq i1 (/ p1_1 0.8))

	(setq p1_2 (* i1 dlin))
	(setq p1_3 (* p1_2 0.0175))
	(setq p1_4 (* p1_3 2))
	(setq du1 (/ p1_4 s1))

	(setq du1_2 (/ du1 u1))
	(setq du1_3 (* du1_2 100))

	; вывод 
	(setq text "\n сечение= : ")
	(setq text_t (rtos s1 2 2))
	;(princ (strcat text text_t))

	(setq text "\n Длинна= : ")
	(setq text_t (rtos dlin 2 2))
	;(princ (strcat text text_t))
	
	(setq text "\n I= : ")
	(setq text_t (rtos i1 2 2)) 
	;(princ (strcat text text_t))

	(setq text "\n dU%= : ")
	(setq text_t (rtos du1_3 2 2))
	;(princ (strcat text text_t))
  

	;**********************
 
  			(setq tochka1 (mapcar '+ tochka '(-12.152 61.5561 0.0))) 

  			(setq tochka3 (mapcar '+ tochka1 '(4.5 -10.5 0.0))) 

;+ + + + + + + + + + + +
;вставка текстта (в таблицу)
;+ + + + + + + + + + + +

 			(setvar "TEXTSIZE" 2.5)
			; мощность
			(setq text (rtos p1 2 2)) 
  			(setq tochka3 (mapcar '+ tochka '(-8.5 -19.1 0.0))) 
			(command "_.-mtext" 
      	      tochka3
           		"_j" 
	            "_tc" 
	            "_l" 
	            "_e" 
	            "" 
           		tochka3
			text 
	            "" 
           		) ;_ end of command 

			; ток
			(setq text (rtos i1 2 2)) 
  			(setq tochka3 (mapcar '+ tochka '(-8.5 -27.1 0.0))) 
			(command "_.-mtext" 
      	      tochka3
           		"_j" 
	            "_tc" 
	            "_l" 
	            "_e" 
	            "" 
           		tochka3
			text 
	            "" 
           		) ;_ end of command 

			; dU
			(setq text (rtos du1_3 2 2)) 
  			(setq tochka3 (mapcar '+ tochka '(-8.5 -43.1 0.0))) 
			(command "_.-mtext" 
      	      tochka3
           		"_j" 
	            "_tc" 
	            "_l" 
	            "_e" 
	            "" 
           		tochka3
			text 
	            "" 
           		) ;_ end of command 



	(princ)
  )
(prompt "\n\t***\tПрограмма загружена.\n\t***\t Команда для выполнения: raschdu2\t***")
(princ)


и еще вспомнил вопросик.

на липсе или VBA открыть файл "c:\1.xls" и ваполнить встроенный внего макрос

Последний раз редактировалось gizmo_zx, 10.01.2008 в 17:36. Причина: Используй тэги [code]!
Просмотров: 2759
 
Непрочитано 10.01.2008, 23:07
#2
Кулик Алексей aka kpblc
Moderator

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


Как вариант:
Код:
[Выделить все]
(defun c:eval_du (/         *error*   adoc      pt        power     len
                  section   voltage   block_name          blk_def   blk_ref
                  tmp_pt    attr
                  )
  (defun *error* (msg)
    (vla-endundomark adoc)
    (princ msg)
    (princ)
    ) ;_ end of defun

  (vl-load-com)
  (vla-startundomark
    (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
    ) ;_ end of vla-startundomark
  (if
    (and
      (= (type
           (setq
             pt (vl-catch-all-apply
                  '(lambda ()
                     (trans (getpoint "\nТочка вставки <Отмена> : ") 1 0)
                     ) ;_ end of lambda
                  ) ;_ end of vl-catch-all-apply
             ) ;_ end of setq
           ) ;_ end of type
         'list
         ) ;_ end of =
      (= (type (setq power (vl-catch-all-apply
                             '(lambda () (getreal "\nМощность <Отмена> : "))
                             ) ;_ end of vl-catch-all-apply
                     ) ;_ end of setq
               ) ;_ end of type
         'real
         ) ;_ end of =
      (> power 0.)
      (= (type (setq len (vl-catch-all-apply
                           '(lambda () (getdist "\nДлина <Отмена> : "))
                           ) ;_ end of vl-catch-all-apply
                     ) ;_ end of setq
               ) ;_ end of type
         'real
         ) ;_ end of =
      (/= dist 0.)
      (= (type (setq section (vl-catch-all-apply
                               '(lambda (/ res)
                                  (cond ((getreal "\nСечение <2.5> : "))
                                        (t (setq res 2.5))
                                        ) ;_ end of cond
                                  ) ;_ end of lambda
                               ) ;_ end of vl-catch-all-apply
                     ) ;_ end of setq
               ) ;_ end of type
         'real
         ) ;_ end of =
      (=
        (type (setq
                voltage (vl-catch-all-apply
                          '(lambda (/)
                             (initget "220 380")
                             (if (= (getkword "\nНапряжение [220/380] <220> : ")
                                    "380"
                                    ) ;_ end of =
                               658.2
                               220.
                               ) ;_ end of if
                             ) ;_ end of lambda
                          ) ;_ end of vl-catch-all-apply
                ) ;_ end of setq
              ) ;_ end of type
        'real
        ) ;_ end of =
      ) ;_ end of and
     (progn
;;; Определение имени блока для работы с ним.
       (setq block_name "Мой_Крутой_Блок")
       (if (not (tblobjname "block" block_name))
         (progn
           (setq blk_def (vla-add (vla-get-blocks adoc)
                                  (vlax-3d-point '(0. 0. 0.))
                                  block_name
                                  ) ;_ end of vla-add
                 ) ;_ end of setq
           (vla-addattribute
             blk_def
             2.5
             acattributemodenormal
             "attrib01"
             (vlax-3d-point '(0. 0. 0.))
             "attrib01"
             ""
             ) ;_ end of vla-addattribute
           (vla-addattribute
             blk_def
             2.5
             acattributemodenormal
             "attrib02"
             (vlax-3d-point '(0. -3.5 0.))
             "attrib02"
             ""
             ) ;_ end of vla-addattribute
           (vlax-for subent blk_def
             (vla-put-layer subent "0")
             (vla-put-color subent 0)
             (vla-put-lineweight subent aclnwtbyblock)
             (vla-put-linetype subent "ByBlock")
             (setq tmp_pt (vla-get-insertionpoint subent))
             (vla-put-normal subent (vlax-3d-point '(0. 0. 1.)))
             (vla-put-alignment subent acalignmentmiddlecenter)
             (vla-put-textalignmentpoint subent tmp_pt)
             (vla-put-insertionpoint subent tmp_pt)
             ) ;_ end of vlax-for
           ) ;_ end of progn
         (setq blk_def (vla-item (vla-get-blocks adoc) block_name))
         ) ;_ end of if
       (setq attr (vlax-safearray->list
                    (vlax-variant-value
                      (vla-getattributes
                        (setq blk_ref (vla-insertblock
                                        (vla-get-modelspace adoc)
                                        (vlax-3d-point pt)
                                        block_name
                                        1.
                                        1.
                                        1.
                                        0.
                                        ) ;_ end of vla-insertblock
                              ) ;_ end of setq
                        ) ;_ end of vla-GetAttributes
                      ) ;_ end of vlax-variant-value
                    ) ;_ end of vlax-safearray->list
             ) ;_ end of setq
       (vla-put-textstring
         (car (vl-remove-if-not
                '(lambda (x) (= (strcase (vla-get-tagstring x)) "ATTRIB01"))
                attr
                ) ;_ end of vl-remove-if-not
              ) ;_ end of car
         (vl-princ-to-string power)
         ) ;_ end of vla-put-textstring
       (vla-put-textstring
         (car (vl-remove-if-not
                '(lambda (x) (= (strcase (vla-get-tagstring x)) "ATTRIB02"))
                attr
                ) ;_ end of vl-remove-if-not
              ) ;_ end of car
         (vl-princ-to-string (/ (* power 1000.) voltage 0.8))
         ) ;_ end of vla-put-textstring
       ) ;_ end of progn
     ) ;_ end of if
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > помогите добить липс, Вставка блока с атрибутом

Система Техэксперт дает уверенность в правильности и эффективности принимаемых инженерных решений!
Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставка динамического блока с определёнными параметрами. Shade Динамические блоки 2 25.09.2007 15:20
Вставка таблицы внутри анонимного блока Кулик Алексей aka kpblc Программирование 7 21.06.2006 15:05
вставка блока с переопределением Net AutoCAD 17 25.04.2006 18:17
вставка блока Visla AutoCAD 6 13.03.2004 14:03