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

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

старт с заданного шаблона

Ответ
Поиск в этой теме
Непрочитано 16.01.2004, 09:38 #1
старт с заданного шаблона
Baron
 
Регистрация: 17.12.2003
Сообщений: 114

Всем привет!
Есть такой вопросик, как лучше сделать, так чтобы САD стартовал с заданного шаблона, причем без диалога?
Спасибо всем, кто откликнулся...
Просмотров: 7380
 
Непрочитано 16.01.2004, 09:56
#2
Zero


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


Создать шаблон и сохранить его как acad.dwt (в TEMPLATE).
Способ варварский, но оччень действенный.
 
 
Непрочитано 16.01.2004, 11:37
#3
ksi2003


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


Попробуй в свойствах ярлыка - "Объект", добавить /t "Template file name"
Пример: "d:\AutoCAD 2002\acad.exe" /t "d:\AutoCAD 2002\template\arch1"
 
 
Непрочитано 16.01.2004, 12:16
#4
Dmitri

Строительные конструкции
 
Регистрация: 21.10.2003
Москва
Сообщений: 174
<phrase 1=


Смотри скриншот
[ATTACH]1074244568.gif[/ATTACH]
Dmitri вне форума  
 
Непрочитано 16.01.2004, 12:16
#5
Dmitri

Строительные конструкции
 
Регистрация: 21.10.2003
Москва
Сообщений: 174
<phrase 1=


Что-то не получается удалить свое повторяющееся сообщение - не нашел привычной кнопки.
Dmitri вне форума  
 
Непрочитано 23.01.2004, 14:03 Шаблон глючит
#6
Voland


 
Регистрация: 23.01.2004
Сообщений: 13
<phrase 1=


А что делать если запускаю шаблон, а в ответ тут же мат типа: "Не удается найти файл "C:\путь к файлу" (или один из его компонентов. Проверьте правильность указания имени файла и пути, а так же наличие всех необходимых бибилиотек." После нажатия OK шаблон запускается, пробовал путь из обних латинских букв (файл обозвал по англ. и положил в директорию шаблонов АК, та же история).
__________________
Не имей сто рублей, а имей сто друзей.
Не я сказал, но мысль верная. V.
Voland вне форума  
 
Автор темы   Непрочитано 23.01.2004, 14:27
#7
Baron


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


А какой ACAD, Мессир?
Baron вне форума  
 
Непрочитано 26.01.2004, 09:52
#8
Voland


 
Регистрация: 23.01.2004
Сообщений: 13
<phrase 1=


Baron:
Цитата:
Сообщение от Baron
А какой ACAD, Мессир?
ACAD 2000i
__________________
Не имей сто рублей, а имей сто друзей.
Не я сказал, но мысль верная. V.
Voland вне форума  
 
Непрочитано 26.01.2004, 11:41 Re: Шаблон глючит
#9


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


Цитата:
Сообщение от Voland
"Не удается найти файл "C:\путь к файлу" (или один из его компонентов. Проверьте правильность указания имени файла и пути, а так же наличие всех необходимых бибилиотек."
У меня такое при двойном клике в проводнике по *.dwg под аккаунтом простого пользователя. Под админом вопросов нет.
 
 
Непрочитано 20.04.2005, 11:10
#10
Zydrunas


 
Регистрация: 29.02.2004
Литва
Сообщений: 108
<phrase 1=


Вопрос...

Сделал шаблон *.dwt со слоями...
начинаю новы чертеж...
можно ли сделать так чтобы при команде "purge"
эти слои созданы в файле *.dwt не удалялис? (если пока они неизпользованы)
Zydrunas вне форума  
 
Непрочитано 20.04.2005, 12:12
#11
Кулик Алексей aka kpblc
Moderator

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


При вызове окна purge просто надо последовательно указывать, что хочется отпургенить, а что - нет. Либо как вариант чистки (без слоев):
Код:
[Выделить все]
;;; Очистка чертежа от всего, кроме слоев
;;; Сделано для 2005 (т.е. есть вариант очистки от приложений)

(defun c:cleardraw()
  (command "_-purge" "_B" "*" "_n")	;блоки
  (command "_-purge" "_d" "*" "_n")	;размерные стили
  (command "_-purge" "_lt" "*" "_n")	;стили линий
  (command "_-purge" "_p" "*" "_n")	;стили печати
  (command "_-purge" "_sh" "*" "_n")	;shape
  (command "_-purge" "_st" "*" "_n")	;текстовые стили
  (command "_-purge" "_m" "*" "_n")	;стили мультилиний (mline)
  (command "_-purge" "_t" "*" "_n")	;стили таблиц
  (command "_-purge" "_r" "*" "_n")	;зарегистрированные приложения
  );_defun
Профи в программировании сделают лучше и проще - я так, ламер в этом деле
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.04.2005, 12:29
#12
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,834
<phrase 1=


>>Zydrunas
Решение, которое применяется у нас.
Слои, определенные для проектирования какого либо раздела проекта (например в СТП), создаются ЛИСПом при запуске приложения соответсвующей разделу специальности. Тогда команда "_purge" будет разрешена в любой момент. Во всяком случае для слоёв. А при старте приложения, если слоя(ёв) нет, он(и) создается.
Alan вне форума  
 
Непрочитано 20.04.2005, 13:01
#13
Apelsinov

Проектировщик ВК. LISP-любитель.
 
Регистрация: 15.12.2003
Москва
Сообщений: 1,202
<phrase 1=


По поводу purge кроме слоев вообще.
Я не профи, поэтому те же яйца, только с перламутровыми пуговицами:
Для А2002

Код:
[Выделить все]
(DEFUN c:cleardraw ()
  (FOREACH x (LIST "_B" "_D" "_LT" "_P" "_SH" "_ST" "_M")
    (VL-CMDF "_.-purge" x "*" "_n")
  )
  (princ)
)
Для А2005 (не проверял, будет работать если уважаемый КРЫС дал верные значения)

Код:
[Выделить все]
(DEFUN c:cleardraw ()
  (FOREACH x (LIST "_B" "_d" "_lt" "_p" "_sh" "_st" "_m" "_t" "_r")
    (VL-CMDF "_.-purge" x "*" "_n")
  )
  (princ)
)
Вообще можно, наверное, сделать чистку и слоев кроме указанных, например, в списке, если вместо "*" (типа "ВСЕ") в указании имени слоя можно бы было указать "ВСЕ кроме ...". Как - не знаю.

Можно еще, конечно, сварганить свою прогу чистки...но это микроскопом по гвоздям, легче сделать автогенерацию слоев по списку - это легко. Надо?
Apelsinov вне форума  
 
Непрочитано 20.04.2005, 13:27
#14
Zydrunas


 
Регистрация: 29.02.2004
Литва
Сообщений: 108
<phrase 1=


to Apelsinov

"легче сделать автогенерацию слоев по списку - это легко. Надо?"

Надо...
а то пока лисп мне большой секркет....

Спасибо
Zydrunas вне форума  
 
Непрочитано 20.04.2005, 13:38
#15
Кулик Алексей aka kpblc
Moderator

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


О, а может уважаемый Apelsinov посмотреть мое чудовище в таком случае?
Код:
[Выделить все]
(defun c:cr_Layer(/ lCounter)
  (foreach lCounter '("LayerName1" "LayerName2")
    (vl-cmdf "_-Layer" "_m" lCounter "")
    );_foreach
  );_defun
Остается только один вопрос - как на каждый слой задавать свой цвет / тип линии / вес линии - в общем, все опции?
Добавлено
LISP и для меня секрет.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.04.2005, 14:11
#16
Кулик Алексей aka kpblc
Moderator

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


Тьфу ты, забыл: в предыдущем коде после выполнения не возвращается на предыдущий слой. Здесь исправлено:
Код:
[Выделить все]
(defun c:cr_Layer(/ lCounter old-layer)
  (setq old-layer (getvar "clayer"))
  (vl-cmdf "_-Layer" "_s" 0 "")  ;Переход на слой 0. Создаваемые слои 
                                             ;возьмут настройки с него
  (foreach lCounter '("LayerName1" "LayerName2")
    (vl-cmdf "_-Layer" "_m" lCounter "")
    );_foreach
  (vl-cmdf "_-Layer" "_s" old-layer "")
  );_defun
И все равно вопрос с настройками слоев не решен. Интуитивно я догадываюсь, что надо организовывать фактически двумерный массив, в котором и прописывать все - но как это сделать в лиспе...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.04.2005, 15:58
#17
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,834
<phrase 1=


>>kpblc Добавлено: Ср Апр 20, 2005 12:11
В твоём случае не рассматривается:
1) не назначаются свойства нового слоя (цвет, тип-вес линии и т.д.),
2) слой существует и имеет уже назначенные
свойства (цвет, тип-вес линии и т.д.), не соответствующие твоим.
Вывод (ИМХО):
1) надо писать отдельную программку на создание слоя с характеристиками (см.выше)
2) проверять есть слой или нет и соответственно вызывать или нет
Хорошо, что написал ИМХО. Открыл "САПР на базе..." стр.85-88
Вот там написано, как это делать по Теории (Ув.СА&НН - без иронии), имеется ввиду при создании САПР
Alan вне форума  
 
Непрочитано 21.04.2005, 13:08
#18
Apelsinov

Проектировщик ВК. LISP-любитель.
 
Регистрация: 15.12.2003
Москва
Сообщений: 1,202
<phrase 1=


>Alan, kpblc, ALL

Познание идет как учат - от простого к сложному, но это явно не мой метод...так что кому нужно простое решение проблемы - вэлкам сразу к эпилогу...

Вот я и решил написать "отдельную программку на создание слоя с характеристиками", думал простенько выйдет, но в итоге рождается какой-то монстр :shock: Все конечно "по Теории" (типа по-понятиям 8) ) Однако есть , как говориться, способ проще, так что лисп исключительно ради чуства прекрасного (как допишу выложу). Итак:

Вспоминая заветы небезызвестной Лошадки, для решения проблемы можно обойтись и подручными средствами. Например вставкой блока, примитивы которого находятся на необходимых слоях, и при его вставке эти слои будут автоматически добавлены в текущий чертеж при чем со всеми своими характеристиками (цвет , тип линии и т.д) . Автоматизировать это легко, делается сие простой вставкой блока из файла шаблона, например (при наличие в путях поиска файла SHABLON.DWG ):

Код:
[Выделить все]
(VL-CMDF "-INSERT" "SHABLON" "0,0,0" "1" "1" "0")
, тут есть небесспорный минус, если эти слои уже есть в чертеже, то их свойства останутся такими же как и были, а не как в шаблоне.
Развить , конечно, такой подход можно до удаления (в т.ч и из базы данных файла) вставленного блока, и вообще вставлять другими методами....

Еще один подручный метод ADC (дисигн-центр (коряв я на язык - невзыщите)) и таскать там из шаблона слои как каштаны из печки, тоже удовольствие.

Жаль последующие решения я увидел поздно, коды писать бы не пришлось, дурная голова не дает покоя не только ногам.
Гляньте на команду lman из express tools . Можно сохранять конфигурацию слоев, экспорт/импорт в файл, и все настройки для сохранения. То есть открываем шаблон, экспортируем его настройки в shablon.lay и потом по желанию импортируем из него в текущий чертеж, просто и весело!

И самое веселое:
Стандартный менеджер слоев, кнопочки Save state... и Restore state...
Та же фигня, импорт/экспорт всякие настройки и т.п. (Так и не понял - зачем нужно было писать lman из express tools :?: ) Опять сохраняем шаблон настроек слоев в файл shablon.las (кстати, если у кого-то жизнь слишком скучная - можете и ручками правит вайлы .las и .lay - синтаксис там простой) и импортируем потом в текущий файл, тихо радуемся потирая потные ладошки...

А на десерт вкусное:
Для фанатов ОДНОЙ КНОПКИ,

В кнопку пишем следующее:
Код:
[Выделить все]
(VL-CMDF "_.-Layer" "A" "I" "shablon" "R" "shablon" "D" "shablon" "" "")
Где shablon - имя файла (shablon.las) конфигурации слоев, сохраненного из шаблонного чертежа.

Я думаю что способы есть еще...и не мало...

И чуть не забыл - это все проверялось на A2002, с другими могут быть разности.
Apelsinov вне форума  
 
Непрочитано 22.04.2005, 14:22
#19
Apelsinov

Проектировщик ВК. LISP-любитель.
 
Регистрация: 15.12.2003
Москва
Сообщений: 1,202
<phrase 1=


А вот и лисп:

Код:
[Выделить все]
;;;Создать слой с заданными параметрами:
;;;Аргументы:
;;;NAME - имя слоя / строка
;;;On - включен / T-вкл nil-выкл
;;;COL - цвет
;;;LW - вес линий / число либо nil- "Default"
;;;LT - тип линий / строка - имя типа
;;;FR - заморожен / T-заморожен nil-не заморожен
;;;LOC - заблокирован / T-заблокирован nil-не заблокирован
;;;PL - Печатаемость слоя / T-печатаем nil-не печатаем
;;;Возврат: vla-объект слоя или nil, если не создан
(defun APEL-LAYER-CREATE-PROP
       (NAME ON COL LW LT FR LOC PL / vla-neWlayer)
;;;(APEL-LAYER-CREATE-PROP "newLayer3" T 134 50 "ACAD_ISO100" nil T nil)
;;;Создаст слой  newLayer3:
;;;включенный,  цвет-134, веслиний-50,
;;;тип линий "continous" ("ACAD_ISO100" не найден, о чем выдается сообщение),
;;;незамороженный, заблокированный, не печатаемый
;;;Возврат: #<VLA-OBJECT IAcadLayer 010a9dc4> 

;;;  Создаем слой, проверки на сущ. такого слоя нет, но це не страшно.
  (if (APEL_PROV_STR_LAYERS NAME)	; Проверка имени на непозв. симв.
    (Progn (setq vla-neWlayer (apel-layer-create NAME))
					; 
;;;      Включение слоя
	   (vla-put-LayerOn
	     vla-neWlayer
	     (cond (ON :vlax-true)
		   (:vlax-false)
	     )
	   )
;;;      Присвоение цвета 
	   (vla-put-color vla-neWlayer col)
;;;      Вес линий
	   (vla-put-LineWeight
	     vla-neWlayer
	     (cond ((null LW) acLnWtByLwDefault)
		   (LW)
	     )
	   )
;;;      Тип линий
	   (if (apel_rucad-ltype-load LT "acadiso.lin")
	     (vla-put-Linetype LT)
	     (princ (strcat
		      "\n В файле acadiso.lin не найден тип линии "
		      LT
		      "."
		      "\n Слою "
		      NAME
		      " присвоен тип линии по умолчанию."
		     )
	     )
	   )
;;;      Заморозка слоя
	   (vla-put-Freeze
	     vla-neWlayer
	     (cond (FR :vlax-true)
		   (:vlax-false)
	     )
	   )
;;;      Блокировка слоя
	   (vla-put-Lock
	     vla-neWlayer
	     (cond (LOC :vlax-true)
		   (:vlax-false)
	     )
	   )
;;;      Печатаемость слоя
	   (vla-put-Plottable
	     vla-neWlayer
	     (cond (PL :vlax-true)
		   (:vlax-false)
	     )

	   )
    )
  )
  vla-neWlayer
)

;;;Функция проверки строки на непозволительные символы.
;;;Аргумент - проверяемая строка.
;;;Возвращаемое значение T - если символы в строке не найдены, nil - если найдены
(defun APEL_PROV_STR_LAYERS (str / str_err str_err_s)
  (setq	str_err	  "[~<>/\:?*|='\"]"
	str_err_s ""
  ) 
  (repeat (strlen str)
    (setq str_err_s (strcat str_err_s str_err))
  ) ;_ repeat
  (if (not (vl-string-search "," str))
    (wcmatch str str_err_s)
  ) 
)

;;;Создание слоя с заданным именеем (без проверки корректности имени)
;;;Аргумент - Строка с именем слоя.
(defun APEL-LAYER-CREATE (layer_name /)
  (vla-add
    (vla-get-layers
      (vla-get-activedocument (vlax-get-acad-object))
    )
    layer_name
  )
)

;;;Загрузка типа линии
;;;; По аналогии с ruCAD
 (defun apel_rucad-ltype-load (linetypename filename)
    (if (and
          (not (apel_rucad-ltype-exists linetypename))
          (vl-catch-all-error-p
            (vl-catch-all-apply
              'vla-load
              (list
                (vlax-get-property (vla-get-activedocument (vlax-get-acad-object))'linetypes)
                linetypename
                filename
              ) 
            )
          )
        ) 
      nil
      t
    )
  )



;;; Тип линии существует? 
;;;; По аналогии с ruCAD
(defun apel_rucad-ltype-exists (ltype_name)
    (not
    (not
      (member
        (strcase ltype_name)
        (mapcar 'strcase (apel_rucad-ltype-list-ltypes))
      ) 
    )
  )
)

; Список определенных типов линий
; По аналогии с ruCAD
(defun apel_rucad-ltype-list-ltypes ( / result)
  (vlax-for each (vlax-get-property (vla-get-activedocument (vlax-get-acad-object))'linetypes)
    (setq
      result (cons (vlax-get-property each 'Name) result)
    ) 
  )
  (reverse result)
)
Apelsinov вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > старт с заданного шаблона

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

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