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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Опять о штриховке и ее толщине.

Опять о штриховке и ее толщине.

Ответ
Поиск в этой теме
Непрочитано 08.04.2008, 12:04
Опять о штриховке и ее толщине.
Red Nova
 
ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Торонто
Регистрация: 23.10.2007
Сообщений: 1,990

Было уже похожее обсуждение. Но вопрос несколько по другому хочу поставить.
Можно ли седлать так, чтобы создаваемая штриховка всегда была определенной толщины? При этом слой не важен. И тул палеты использовать не желательно.
Просмотров: 4031
 
Непрочитано 08.04.2008, 17:33
#21
Олег К.

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


А если изобразить вот такое:
Код:
[Выделить все]
(defun C:hat (/ cur_weight)
(setq cur_weight (getvar "CELWEIGHT"))
(setvar "CELWEIGHT" 15)
(vl-cmdf ".HATCH" pause)
(setvar "CELWEIGHT" cur_weight)
)
И повесить на кнопку.
Правда не уверен насчет pause, одна нужна или несколько?
Проверить могу только в ZWCADe, а там почему-то не срабатывает возврат переменной предыдущего значения.
Олег К. вне форума  
 
Непрочитано 08.04.2008, 17:41
#22
Кулик Алексей aka kpblc
Moderator

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


Олег К., забыл про обработчик ошибок. И потом, можно и так, к примеру, нарисовать:
Код:
[Выделить все]
(defun c:hat (/ *error* _celwt)
  (defun *error* (msg)
    (if _celwt
      (setvar "celweight" _celwt)
      ) ;_ end of if
    (command "_.undo" "_e")
    (princ msg)
    (princ)
    ) ;_ end of defun

  (command "_.undo" "_start")
  (setq _celwt (getvar "celweight"))
  (setvar "celweight" 15)
  (command "_.hatch")
  (while (/= (getvar "cmdactive") 0)
    (command pause)
    ) ;_ end of while
  (command "_.undo" "_e")
  (princ)
  ) ;_ end of defun
Написано "на коленке" и без проверок.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 08.04.2008, 18:12
#23
Олег К.

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


>> Кулик Алексей aka kpblc
Про обработку ошибок не забыл, хотел показать саму идею.
А вот с "undo" интересно. Только в ZWCADe у этой команды опции другие
"Command: _.undo
Undo: Mark/Back to mark/BEgin set/End set/Control/Auto/<Number of steps to undo>: "
и негде даже посмотреть, какие в AutoCADe были.

Кстати, по такому же принципу у меня раньше размеры на свой слой ставились.
Олег К. вне форума  
 
Автор темы   Непрочитано 09.04.2008, 11:42
#24
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Чесно скажу, что как человек ничего не знающий о программировании, не понемаю о чем вы, и что должны делать программы с #21 и 22.
А вопрос для меня так и остался.
Что надо сделать с лиспом от Torino, чтобы добавить возможность регулировать вес линии. Как я понял надо что-то здесь поменять.

Цитата:
(setq *OldLayer* (getvar "CLAYER"))
(vl-cmdf "_layer" "_make" "Dim" "_color" 1 "" "") ;_Создаем слой размеры и задаем цвет 1 ...
(vl-cmdf "_layer" "_make" "Hatch" "_color" 102 "" "") ;_Создаем слой штриховка и задаем цвет 102
(vl-cmdf "_layer" "_make" "Text" "_color" 2 "" "") ;_Создаем слой текст и задаем цвет 2
Но что именно я ....типа
"Тук тук, дома никого нет".
Red Nova вне форума  
 
Непрочитано 09.04.2008, 11:52
#25
Кулик Алексей aka kpblc
Moderator

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


Олег К., я совсем забыл (командными методами метки уже очень давно не ставлю) - возможно, надо (command "_.undo" "_b").
Red Nova, запустим (в английской версии) команду "_.-layer":
Код:
[Выделить все]
Command: _.-layer <Enter>
Current layer:  "0"
Enter an option 
[?/Make/Set/New/ON/OFF/Color/Ltype/LWeight/Plot/Freeze/Thaw/LOck/Unlock/stAte]: 
_Make <Enter>
Enter name for new layer (becomes the current layer) <0>: NewLayerName <Enter>
Enter an option 
[?/Make/Set/New/ON/OFF/Color/Ltype/LWeight/Plot/Freeze/Thaw/LOck/Unlock/stAte]: 
_color <Enter>
New color [Truecolor/COlorbook] : 16 <Enter>
Enter name list of layer(s) for color 16 <NewLayerName>: <Enter>
Enter an option 
[?/Make/Set/New/ON/OFF/Color/Ltype/LWeight/Plot/Freeze/Thaw/LOck/Unlock/stAte]: 
_LW <Enter>
Enter lineweight (0.0mm - 2.11mm): 0.50 <Enter>
Enter name list of layers(s) for lineweight 0.50mm <NewLayerName>: <Enter>
Enter an option 
[?/Make/Set/New/ON/OFF/Color/Ltype/LWeight/Plot/Freeze/Thaw/LOck/Unlock/stAte]:
Можешь прочитать dwg.ru/art/2 (а еще лучше - книгу В.Света "AutoCAD язык макрокоманд и создание макросов"). Там расписано все и даже немного больше
P.S. У меня сейчас совсем нет времени рисовать нормально работающий код
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 09.04.2008, 12:49
#26
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Опробовал. Думал задумка с том, что если лисп в автозагрузке, и некому слою один раз при помощи лиспа задана толщина, то далее во всех файлах толщина будет задаваться такой же. Но такого не происходит. Наверное не правильно понял предназначение Лиспа.

P.S. Дело в том что я по жизни терпеть не могу программирование, но обожаю пользоваться плодами программистов. Такой уж я получаюсь юзер только. А всем программистам облегчающим мне работу я очень благодарен. Будете у нас на Калыме, ыыы, точнее у нас в Ереване, милости прошу. К вашим услугам.
Red Nova вне форума  
 
Непрочитано 09.04.2008, 13:08
#27
Кулик Алексей aka kpblc
Moderator

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


Ладно. С тебя полное ТЗ на команды и слои. То бишь:
команда _.hatch -> слой "Штриховка", цвет 1; вес линии слоя 0,25; тип линии слоя Continuous (непрерывный); слой печатается. Объект получает свойства ByLayer независимо от текущих настроек.
Команды простановки размеров -> слой "Размеры", размерный стиль не меняется и не создается; тип линии слоя - Continuous и т.п.
Команды простановки прямых: слой "Оси", тип линии - "Центр", грузить из файла c:\myfiles\mylin.lin, бла-бла-бла.
Обязательно указать: если слой изменен пользователем, восстанавливать стандартные значения или нет?
---
Гарантировать, что будет написано быстро, не могу.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.04.2008, 14:14
#28
Олег К.

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


Пожалуй приведу, что написал для постановки размеров.
Код:
[Выделить все]
;;;                             DimLayer_DLI
;;;  на время работы команды DIMLINEAR текущим становится слой "Dim".

(defun C:DimLayer_DLI (/ *error* cur_Layer)
 (setq cur_Layer (getvar "CLAYER"))

 ; Переопределение функции *error*, вместо стандартной
 (defun *error* (msg)
   (setvar "CLAYER" cur_Layer)
   (setvar "ERRNO" 0)
 ) ; defun(*error*)

 (if (null (tblsearch "LAYER" "Dim"))
      (entmakex '((0 . "LAYER") (100 . "AcDbSymbolTableRecord") (100 . "AcDbLayerTableRecord")
          (2 . "Dim") (70 . 0) (62 . 5) (6 . "Continuous") (290 . 1) (370 . 15)))
 )
 (setvar "CLAYER" "Dim")
 (vl-cmdf "_.DIMLINEAR" pause pause pause)
 (setvar "CLAYER" cur_Layer)
)
Стопроцентно работало в 2006 AutoCADe. Нужно сохранить это в файл "DimLayer_DLI.lsp" и сделать кнопку с макросом
Код:
[Выделить все]
^C^C^P(if (not C:DimLayer_DLI)(load "D:/shablon/LISP/DimLayer_DLI.lsp"));DimLayer_DLI
В точечной паре №370 задается толщина линий (сейчас 0.15). Для остальных размерных команд создаются копии этого файла, только меняются названия и вызов команд размеров (ну и количество пауз внимательно проверить).

Последний раз редактировалось Олег К., 09.04.2008 в 14:22.
Олег К. вне форума  
 
Автор темы   Непрочитано 09.04.2008, 15:00
#29
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


ТЗ.
Собственно меня вполне устаревает все как в Лиспе от Torino (пост #5). Единственное, что хочется добавить это возможность изменять у слоев и вес линии тоже. (ведь как я понял цвет там настраивается легко). Штриховка у меня 0,13. Цвет у меня для всего только white. Линии у меня continuous. Но думаю это не так важно, ведь главнее то, чтобы их можно было изменять (что захотел, то и поставил). Если пользователь изменил слой, то исправляем обратно.
Для прямых у меня отдельного слоя нет. Не знаю даже насколько это пригодится. Но думаю будет полезно. Во всяком случае думаю надо уметь отключать один из параметров. Скажем если пользователь хочет использовать программу только для штриховки, или только для размеров.
Заранее благодарен.
Red Nova вне форума  
 
Непрочитано 09.04.2008, 15:46
#30
Bull

Конструктор по сути (машиностроитель)
 
Регистрация: 10.10.2005
Набережные Челны (это где КамАЗ)
Сообщений: 11,391


Offtop:
Цитата:
Сообщение от Red Nova Посмотреть сообщение
ТЗ.
Собственно меня вполне уСТАРевает
Да, ACAD нас всех немного устаревает
__________________
Век живи, век учись - ...
Bull вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Опять о штриховке и ее толщине.

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Опять про перепуск арматуры AlfF1 Железобетонные конструкции 52 14.11.2017 08:55
И опять вопросы о мансардах Aragorn Прочее. Архитектура и строительство 3 14.10.2011 10:07
И опять про лицензирование Aragorn Разное 39 27.02.2009 15:31
Fatal Error при штриховке Serz AutoCAD 10 16.03.2004 22:42