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

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

Помогите доработать прог. написания имени и адреса файла

Ответ
Поиск в этой теме
Непрочитано 17.12.2003, 17:56 #1
Помогите доработать прог. написания имени и адреса файла
Grinzaid
 
Архитектор
 
Израиль
Регистрация: 14.10.2003
Сообщений: 365

(defun cath ()
(setq name (getvar "dwgname"))
(setq prefix (getvar "dwgprefix"))
(setq path (strcat prefix name))
(setq inspointext (getpoint "\Pick an insertion point of string: "))
(command "text" inspointext pause pause path))

(defun c:name ()
(setq name (getvar "dwgname"))
(setq inspointext (getpoint "\Pick an insertion point of string: "))
(command "text" inspointext pause pause name))


Работает нормально, но когда доходит до (command "text" inspointext pause pause path)), в командной строке всё время остаётся "Pick an insertion point of string:" вместо возможности просмотра высоты и угла текста по умолчанию. Может вместо pause надо что-то другое вписать?
Просмотров: 6453
 
Непрочитано 17.12.2003, 18:51
#2
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


Вобще-то, все в норме. Вот что выдает:

Command: name
Pick an insertion point of string: text
Current text style: "Romant" Text height: 9.9317
Specify start point of text or [Justify/Style]:
Specify height <9.9317>:
Specify rotation angle of text <20>:
Enter text: 3 (1).dwg
Command: nil

Посмотри, может быть, у тебя где-то затесалась (setvar "cmdecho" 0). Проверь и если она действительн = 0, сделай ее = 1.
vk вне форума  
 
Непрочитано 18.12.2003, 09:19
#3
kos

LISP-программист
 
Регистрация: 25.08.2003
Тутэйшы
Сообщений: 238


С командой text при таком ее использовании может быть много проблем. На одну ты уже напоролся. Может случиться так, что в твоем рисунке установлена фиксированная высота шрифта. В таком случае запросов на ввод данных будет меньше (AutoCAD не спросит высоту текста) и, следовательно, количество твоих pause не будет соотвествовать количеству запросов AutoCAD. Результат: сообщение об ошибке и вылет программы.
Единственно верный выход в таком случае: создавать текстовую строку с использованием функций entmake или vla-add-text, предварительно определив параметры текста. Да, получается сложнее, но надежнее, универсальнее, быстрее...
Для себя давно решил: если в программе можно заменить функцию command на entmake или vla-add-*, то именно так и нужно поступить.
__________________
Там все есть для счастья - меня там только нет.
Так это значит, что я там - буду!
kos вне форума  
 
Непрочитано 18.12.2003, 09:29
#4
АЛЕКС


 
Сообщений: n/a


А у меня на кнопке висит макрос
^C^C_text \\\$M=$(getvar,dwgname);
- и никаких проблем....
 
 
Автор темы   Непрочитано 18.12.2003, 09:47 Спасибо, друззя! Помогло!
#5
Grinzaid

Архитектор
 
Регистрация: 14.10.2003
Израиль
Сообщений: 365
<phrase 1=


Спасибо, друззя! Помогло!
cmdecho был 0. При 1 работает отлично.

По ходу дела втолкуйте мне бестолковому, как "повесть макрос на кнопку"? Стыжусь своего скудоумия
Grinzaid вне форума  
 
Непрочитано 18.12.2003, 10:22
#6
kos

LISP-программист
 
Регистрация: 25.08.2003
Тутэйшы
Сообщений: 238


Алекс, попробуйте установить фиксированную высоту шрифта и воспользоваться вашим макросом. Вот протокол:
Код:
[Выделить все]
Command: _text
Current text style:  "Standard"  Text height:  114.3723
Specify start point of text or [Justify/Style]:
Specify rotation angle of text <28>:
Enter text:

Command: Drawing1.dwg
Unknown command "DRAWING1.DWG".  Press F1 for help.
Так что возможны варианты, и обязанность программиста (а мы пишем сообщения в разделе "Программирование", не так ли?) все эти варианты отследить и обработать.
__________________
Там все есть для счастья - меня там только нет.
Так это значит, что я там - буду!
kos вне форума  
 
Автор темы   Непрочитано 18.12.2003, 11:43 Спасибо, светлейшие умы. Лиспик удалось привести в терп. вид
#7
Grinzaid

Архитектор
 
Регистрация: 14.10.2003
Израиль
Сообщений: 365
<phrase 1=


Спасибо, светлейшие умы. Лиспик удалось привести в терп. вид:

;;Designed by Vlad Grinzaid 16.12.2003

(defun cath ()
(setq name (getvar "dwgname"))
(setq prefix (getvar "dwgprefix"))
(setq path (strcat prefix name))
(setq inspointext (getpoint "\Pick an insertion point of string: "))
(command "cmdecho" "1" "")
(command "-style" "Stamp" "txt" "0" "1" "0" "n" "n" "n")
(command "text" inspointext pause pause path))

(defun c:name ()
(setq name (getvar "dwgname"))
(setq inspointext (getpoint "\Pick an insertion point of string: "))
(command "cmdecho" "1" "")
(command "-style" "Stamp" "txt" "0" "1" "0" "n" "n" "n")
(command "text" inspointext pause pause name))

(load "C:/Program Files/ACAD2000/EXPRESS/julian.lsp")
(defun c:dat (/ j c cdate m d y hh mm ss msec)
(setq inspointext (getpoint "\Pick an insertion point of string: "))
(setq cdate (jtod (setq j (getvar "date")))
c (fix cdate)
y (/ c 10000) ; Get year
m (rem (/ c 100) 100) ; Ger month
d (rem c 100) ; Get day
c (- cdate (fix cdate)) ; Strip date from date/time
c (fix (* c 1000000000)) ; Scale time to get HHMMSSmmm integer
hh (/ c 10000000) ; Get hours
mm (rem (/ c 100000) 100) ; Get minutes
ss (rem (/ c 1000) 100) ; Get seconds
msec (rem c 1000) ; Get milliseconds
)

(setq attr (strcat (itoa d) "." (itoa m) "." (itoa y)))

(command "cmdecho" "1" "")
(command "-style" "Stamp" "txt" "0" "1" "0" "n" "n" "n")
(command "text" inspointext pause pause attr))

)
Grinzaid вне форума  
 
Непрочитано 18.12.2003, 14:44
#8
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


К такой строке
(command "-style" "Stamp" "txt" "0" "1" "0" "n" "n" "n")
я отношусь с некоторой опаской. Если для какого то конкретного шрифта, то вроде ничего, а в общем виде для любого шрифта лучше использовать (entmod) и/или (entmake) не указывая параметры, которые могут быть установлены по умолчанию.
vk вне форума  
 
Автор темы   Непрочитано 18.12.2003, 15:10 Еврейские шрифты
#9
Grinzaid

Архитектор
 
Регистрация: 14.10.2003
Израиль
Сообщений: 365
<phrase 1=


Всё дело в еврейских шрифтах. Если не указывать "англоговорящий2 шрифт, надпись выйдет на абракадабрском
Grinzaid вне форума  
 
Непрочитано 21.07.2007, 11:41
#10
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


А у меня почему-то неработает
Код:
[Выделить все]
(defun c:dat (/ j c cdate m d y hh mm ss msec)
  (setq inspointext (getpoint "\Pick an insertion point of string: "))
  (setq	cdate (jtod (setq j (getvar "date")))
	c     (fix cdate)
	y     (/ c 10000)		; Get year 
	m     (rem (/ c 100) 100)	; Ger month 
	d     (rem c 100)		; Get day 
	c     (- cdate (fix cdate))	; Strip date from date/time 
	c     (fix (* c 1000000000))	; Scale time to get HHMMSSmmm integer 
	hh    (/ c 10000000)		; Get hours 
	mm    (rem (/ c 100000) 100)	; Get minutes 
	ss    (rem (/ c 1000) 100)	; Get seconds 
	msec  (rem c 1000)		; Get milliseconds 
  )
)
_$
; 1 form loaded from #<editor "D:/LISP/DATA.LSP">
_$ (c:dat)
; error: no function definition: JTOD
Holon вне форума  
 
Непрочитано 21.07.2007, 11:58
#11
Кочетков Андрей

Java/Kotlin backend
 
Регистрация: 03.02.2006
Сообщений: 5,738


Надо просто набрать dat
Кочетков Андрей вне форума  
 
Непрочитано 21.07.2007, 12:53
#12
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Command: dat
Pick an insertion point of string: ; error: no function definition: JTOD
Holon вне форума  
 
Непрочитано 22.07.2007, 20:08
#13
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Есть вопрос что такое ? JTOD И что это за строка, для чего?
Код:
[Выделить все]
(load "C:/Program Files/ACAD2000/EXPRESS/julian.lsp")
Holon вне форума  
 
Непрочитано 22.07.2007, 20:38
#14
Владимир М

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


Holon, я думаю достаточно
Код:
[Выделить все]
(load "C:/EXPRESS/julian.lsp")
Grinzaid, если надо может перед getvar может сохранить старые настройки setvar? А потом после выполнении функции вернуть при необходимости..
__________________
Я не волшебник, я только учусь…
Владимир М вне форума  
 
Непрочитано 22.07.2007, 21:52
#15
Holon

CNC
 
Регистрация: 07.07.2007
Israel
Сообщений: 302


Честно говоря я так и непонял что, это за файл
Цитата:
(load "C:/EXPRESS/julian.lsp")
, да и JTOD остается под знаком вопроса
Holon вне форума  
 
Непрочитано 23.07.2007, 10:26
#16
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992
<phrase 1= Отправить сообщение для VVA с помощью Skype™


JTOD -- Converts Julian date to AutoCAD calendar date/time
Находится в файле julian.lsp. Файл лежит в папке Express. Чтобы узнать где, набери (findfile "julian.lsp"). Он находится в путях поиска, поэтому достаточно набрать (load "julian.lsp") .
Но это то же самое, что использовать переменную CDATE
Код:
[Выделить все]
(defun c:dat (/ j c cdate m d y hh mm ss msec) 
  (setq inspointext (getpoint "\Pick an insertion point of string: ")) 
  (setq   cdate (getvar "cdate")
   c     (fix cdate) 
   y     (/ c 10000)      ; Get year 
   m     (rem (/ c 100) 100)   ; Ger month 
   d     (rem c 100)      ; Get day 
   c     (- cdate (fix cdate))   ; Strip date from date/time 
   c     (fix (* c 1000000000))   ; Scale time to get HHMMSSmmm integer 
   hh    (/ c 10000000)      ; Get hours 
   mm    (rem (/ c 100000) 100)   ; Get minutes 
   ss    (rem (/ c 1000) 100)   ; Get seconds 
   msec  (rem c 1000)      ; Get milliseconds 
  ) 
)
VVA вне форума  
 
Непрочитано 23.07.2007, 10:33
#17
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992
<phrase 1= Отправить сообщение для VVA с помощью Skype™


А вообще теперь полями это делается без проблем. Из старых способов - RTEXT. Вот ссылочка
http://www.autocad.ru/cgi-bin/f1/board.cgi?t=27579KG
VVA вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Помогите доработать прог. написания имени и адреса файла

Размещение рекламы