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

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

Программа для всавки даты на чертеж

Ответ
Поиск в этой теме
Непрочитано 24.09.2006, 14:49 #1
Программа для всавки даты на чертеж
Владимир М
 
-
 
Ухта
Регистрация: 31.07.2005
Сообщений: 381

Программа для вставки текущей даты в форматку
Код:
[Выделить все]
(defun c:date_MV( / dat tday tmon tyer strok pt pt1 old_cmd)

 (setq old_cmd  (getvar "CMDECHO"))
 (setvar "CMDECHO" 0)

 (setq dat (itoa (fix(getvar "CDATE")))
      tday (substr dat 7 2)
      tmon (substr dat 5 2)
      tyer (substr dat 3 2) 
    strok (strcat "" tday "." tmon "." tyer "")
        pt (getpoint "\nТочка вставки текста: ")
 )
 (setq pt (list (+(car pt) 1.) (+(cadr pt) 1.)))
 (setq pt1 (list (+(car pt) 8.) (+(cadr pt) 0.)))
 (COMMAND "_TEXT" "_f" pt pt1 3.0 strok)
 (setvar "CMDECHO" old_cmd)
 (princ)
)
особенность программы не работает (пишет "0"), если в текстовом стиле стоит фиксированная высота текта
Просмотров: 7267
 
Автор темы   Непрочитано 24.09.2006, 14:53
#2
Владимир М

-
 
Регистрация: 31.07.2005
Ухта
Сообщений: 381
<phrase 1=


Форматку можете взять у Дениса Флюстикова (ЕСКД) или у меня (СПДС) с http://www.autocad.ru/cgi-bin/f1/board.cgi?t=26477ox
Владимир М вне форума  
 
Непрочитано 24.09.2006, 15:06
#3
Геннадий aka PG

Машиностроение, Проектирование
 
Регистрация: 15.09.2003
Москва
Сообщений: 1,113
<phrase 1=


А где ты эту программу взял?
__________________
С уважением,
Геннадий aka PG
Геннадий aka PG вне форума  
 
Непрочитано 24.09.2006, 18:28
#4
favorite

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


А зачем она нужна программа. Можно Field использовать и начертеже будет дата печати листа??? Очень удобно.
favorite вне форума  
 
Непрочитано 24.09.2006, 18:42
#5
gest

GEODATA Engineering S.p.A.
 
Регистрация: 11.02.2005
Монино
Сообщений: 692


Да исправьте же название темы :)
gest вне форума  
 
Автор темы   Непрочитано 25.09.2006, 00:01
#6
Владимир М

-
 
Регистрация: 31.07.2005
Ухта
Сообщений: 381
<phrase 1=


Цитата:
Геннадий aka PG
А где ты эту программу взял?
Припоминаю, вроде с вашего сайта и называлась эта программа wndate.lsp
Эта программа вставляла на чертеж текущее время и расположение данного файла на компьютере. А мне нужно было, только текущая дата в другой интерпретации для вставки в таблицу форматки даты вот пришлось на базе wndate.lsp сделать что-то иное. Спасибо Геннадию Поспелову!

Цитата:
favorite
А зачем она нужна программа. Можно Field использовать и начертеже будет дата печати листа??? Очень удобно.
Наверно уже понятно, чтобы вписалась в 10-ти мм рамку таблицы
Владимир М вне форума  
 
Непрочитано 25.09.2006, 02:37
#7
Димас

джедай
 
Регистрация: 31.01.2005
Магадан
Сообщений: 460
<phrase 1=


Цитата:
Сообщение от favorite
А зачем она нужна программа. Можно Field использовать и начертеже будет дата печати листа??? Очень удобно.
может для людей со старой версией автокада? где еще нет поддержки полей?
Димас вне форума  
 
Непрочитано 25.09.2006, 10:27
#8
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
особенность программы не работает (пишет "0"), если в текстовом стиле стоит фиксированная высота текта
Лишилась этой особенности. Приобрела новые - корректно обрабатывается OSMODE, высота текстса всегда 3 ед, независимо от того, что там фиксированно выставили
Код:
[Выделить все]
(defun c:date_MV( / dat tday tmon tyer strok pt pt1 old_cmd osm *error*)
 (defun *error* (msg)(princ msg)(setvar "OSMODE" osm))
 (setq old_cmd  (getvar "CMDECHO")
           osm  (getvar "OSMODE")) 
 (setvar "CMDECHO" 0)
  
 (setq dat (itoa (fix(getvar "CDATE"))) 
      tday (substr dat 7 2) 
      tmon (substr dat 5 2) 
      tyer (substr dat 3 2) 
    strok (strcat "" tday "." tmon "." tyer "") 
        pt (getpoint "\nТочка вставки текста: ") 
 ) 
 (setq pt (list (+(car pt) 1.) (+(cadr pt) 1.))) 
 (setq pt1 (list (+(car pt) 8.) (+(cadr pt) 0.)))
 (setvar "OSMODE" 0) 
(if (zerop (cdr (assoc 40 (tblsearch "STYLE" (getvar "TEXTSTYLE")))))
     ;; нулевая высота текста
      (COMMAND "_TEXT" "_f" pt pt1 3.0 strok)
     ;; фиксированнная высота
      (COMMAND "_TEXT" "_f" pt pt1 strok))
 ;;;Высота 3 =====
 (setq strok (entget(entlast))) 
 (setq strok (subst (cons 40 3.0)(assoc 40 strok) strok))
 (entmod strok)
 ;;;======  
 (setvar "CMDECHO" old_cmd) 
 (setvar "OSMODE" osm) 
 (princ) 
)
VVA вне форума  
 
Непрочитано 25.09.2006, 11:34
#9
Геннадий aka PG

Машиностроение, Проектирование
 
Регистрация: 15.09.2003
Москва
Сообщений: 1,113
<phrase 1=


Цитата:
Сообщение от Владимир М
Цитата:
Геннадий aka PG
А где ты эту программу взял?
Припоминаю, вроде с вашего сайта и называлась эта программа wndate.lsp
Эта программа вставляла на чертеж текущее время и расположение данного файла на компьютере. А мне нужно было, только текущая дата в другой интерпретации для вставки в таблицу форматки даты вот пришлось на базе wndate.lsp сделать что-то иное. Спасибо Геннадию Поспелову!
Я почему спросил- Сам тут делал подобную, выкидывая из wndate "лишнее" и никуда не выкладывал. И очень удивился, когда увидел почти анаалогичную, совпадение % 95 !!!
Даже и подумать не мог что старую прогу кто-то еще использует
Спасибо!
__________________
С уважением,
Геннадий aka PG
Геннадий aka PG вне форума  
 
Автор темы   Непрочитано 25.09.2006, 19:18
#10
Владимир М

-
 
Регистрация: 31.07.2005
Ухта
Сообщений: 381
<phrase 1=


Проверь код, VVA, что-то он не хочет работать
Проверь кусок
Код:
[Выделить все]
(if (zerop (cdr (assoc 40 (tblsearch "STYLE" (getvar "TEXTSTYLE"))))) 
     ;; нулевая высота текста 
      (COMMAND "_TEXT" "_f" pt pt1 3.0 strok) 
     ;; фиксированнная высота 
      (COMMAND "_TEXT" "_f" pt pt1 strok))
Что то нехватает или что-то не то?
Но все равно спасибо!
Владимир М вне форума  
 
Непрочитано 26.09.2006, 09:10
#11
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


У меня работает. Попробуй кусок заменить на
Код:
[Выделить все]
(if (zerop (cdr (assoc 40 (tblsearch "STYLE" (getvar "TEXTSTYLE")))))
  (COMMAND "_TEXT" "_j" "_f" pt pt1 3.0 strok) ;_ нулевая высота текста Будет запрос высоты
  (COMMAND "_TEXT" "_j" "_f" pt pt1 strok)     ;_ фиксированнная высота Запроса не будет
  );_end of if
VVA вне форума  
 
Непрочитано 26.09.2006, 16:39
#12
Эдуард

строительство
 
Регистрация: 16.01.2004
Петербург
Сообщений: 165
<phrase 1=


Код:
[Выделить все]
(defun insert_data ()
  (if
    (setq txtpoint (getpoint "\n Введите точку вставки текста:"))
     (progn
       (setq
	 txt (vla-addtext
	       (vla-get-block
		 (vla-get-ActiveLayout
		   (vla-get-ActiveDocument (vlax-get-acad-object))
		 )
	       )
	       (menucmd "M=$(edtime,$(getvar,date),DD\".\"MO\".\"YY)")
	       (vlax-3d-point txtpoint)
	       3

	     )
       )
       (vla-put-alignment txt acalignmentfit)
       (vla-put-TextAlignmentPoint
	 txt
	 (vlax-3d-point (mapcar '+ '(8 0 0) txtpoint))
       )
     )
  )
  (princ)
)
Эдуард вне форума  
 
Автор темы   Непрочитано 26.09.2006, 21:59
#13
Владимир М

-
 
Регистрация: 31.07.2005
Ухта
Сообщений: 381
<phrase 1=


VVA
Вот теперь другое дело – просто супер, все получается!
Код:
[Выделить все]
(defun c:date_MV( / dat tday tmon tyer strok pt pt1 old_cmd osm *error*) 
 (defun *error* (msg)(princ msg)(setvar "OSMODE" osm)) 
 (setq old_cmd  (getvar "CMDECHO") 
           osm  (getvar "OSMODE")) 
 (setvar "CMDECHO" 0) 
  
 (setq dat (itoa (fix(getvar "CDATE"))) 
      tday (substr dat 7 2) 
      tmon (substr dat 5 2) 
      tyer (substr dat 3 2) 
    strok (strcat "" tday "." tmon "." tyer "") 
        pt (getpoint "\nТочка вставки текста: ") 
 ) 
 (setq pt (list (+(car pt) 1.) (+(cadr pt) 1.))) 
 (setq pt1 (list (+(car pt) 8.) (+(cadr pt) 0.))) 
 (setvar "OSMODE" 0) 
(if (zerop (cdr (assoc 40 (tblsearch "STYLE" (getvar "TEXTSTYLE"))))) 
  (COMMAND "_TEXT" "_j" "_f" pt pt1 3.0 strok) ;_ нулевая высота текста Будет запрос высоты 
  (COMMAND "_TEXT" "_j" "_f" pt pt1 strok)     ;_ фиксированнная высота Запроса не будет 
  );_end of if
 ;;;Высота 3 ===== 
 (setq strok (entget(entlast))) 
 (setq strok (subst (cons 40 3.0)(assoc 40 strok) strok)) 
 (entmod strok) 
 ;;;======  
 (setvar "CMDECHO" old_cmd) 
 (setvar "OSMODE" osm) 
 (princ) 
)
И не забудьте макрос кнопки ^C^C^P(progn(if (= C:date_MV nil)(load "date_MV")));date_MV;
Спасибо VVA – просто супер!
Владимир М вне форума  
 
Автор темы   Непрочитано 26.09.2006, 22:03
#14
Владимир М

-
 
Регистрация: 31.07.2005
Ухта
Сообщений: 381
<phrase 1=


Эдуард
Интересное начало
Код:
[Выделить все]
 (defun insert_data () 
  (if 
    (setq txtpoint (getpoint "\n Введите точку вставки текста:"))
AutoCAD ругается и говорит, что не знает такой команды
Владимир М вне форума  
 
Непрочитано 26.09.2006, 23:17
#15
Startrek

AutoCAD/AutoLISP
 
Регистрация: 27.08.2003
Seattle/USA
Сообщений: 1,133


Для тех у кого престарелый акад (до 2006/2007) но наличие EXPRESS TOOLS обязательно скачайте с моего сайта за номером 42, все основано на REMOTE TEXT
http://home.pacifier.com/~nemi
__________________
Сквозь тернии к звездам.... и обратно :yes:
Startrek вне форума  
 
Непрочитано 27.09.2006, 09:47
#16
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


>Владимир М
Цитата:
AutoCAD ругается и говорит, что не знает такой команды
Автокад прав :!: Такой команды нет, есть функция и ее нужно вызывать (insert_data). Если хочешь команду, то объяви так
Код:
[Выделить все]
(defun C:insert_data () 
(vl-load-com)
  (if 
    (setq txtpoint (getpoint "\n Введите точку вставки текста:"))
...
Обязательно добавь (vl-load-com) для загрузки vla-* функций
VVA вне форума  
 
Непрочитано 27.09.2006, 10:38
#17
p_sh

новичок
 
Регистрация: 19.06.2005
Ярославль
Сообщений: 3,396


offtop
в аллплане есть атрибут дата и время (изменяется в реальном времени), который можно вставить в чертеж (типа как текст)
p_sh вне форума  
 
Непрочитано 27.09.2006, 10:41
#18
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


>p_shИменно это и предложил Startrek. В экспрессах есть RTEXT, который понимает DIESEL язык.
VVA вне форума  
 
Непрочитано 16.11.2006, 16:52
#19
Олег К.

Инженер-теплотехник
 
Регистрация: 17.08.2006
Смоленск
Сообщений: 311


Возник тут вопросик один, вроде в тему.
Необходимо программно (LISP) проверять дату создания чертежа. Есть команда TIME, но как из нее достать нужные данные? Может есть какая vla-функция, перерыл все книги и хелп - ничего похожего не обнаружил.
Поскольку это нужно грузить из acad.lsp, то (command "_time" "") уже не работает.
Олег К. вне форума  
 
Непрочитано 16.11.2006, 19:09
#20
p_sh

новичок
 
Регистрация: 19.06.2005
Ярославль
Сообщений: 3,396


можно попробовать использовать API функции операционной системы - тама обязательно должно быть

или
на vba

c = VBA.FileSystem.FileDateTime
p_sh вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Программа для всавки даты на чертеж