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

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

Автоматический выбор заданного слоя

Ответ
Поиск в этой теме
Непрочитано 06.10.2009, 13:42 #1
Автоматический выбор заданного слоя
Aqualung
 
машиностроитель
 
Тольятти
Регистрация: 24.08.2009
Сообщений: 259

Можно ли сделать так, чтобы при выборе Construction Line автоматически выбирался слой "Вспомогательная". Собственно как реализовано в Компасе - а то приходится в 3 раза больше кликов делать: развернуть слои, выбрать слой, выбрать Constr. Line.
__________________
рисую чертежи... можно акварелью
Просмотров: 13775
 
Непрочитано 06.10.2009, 13:50
#2
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Создай инструмент на палитре, в свойствах которого укажешь нужный слой.
Profan вне форума  
 
Непрочитано 07.10.2009, 21:07
#3
detrah


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


В макросе (macro) для кнопки с Construction Line пишешь:

Код:
[Выделить все]
^C^C(setvar "clayer" "Вспомогательная");^C^C_xline
Здесь две команды: первая устанавливает текущий слой, вторая стартует х-линию...
Пользуйся на здоровье!

p.s. Аналогично можно работать с цветами, типами линий, стилями текстов и размеров
detrah вне форума  
 
Непрочитано 07.10.2009, 21:15
#4
Yuriy-I

сп. САПР, архитектор
 
Регистрация: 25.05.2008
Санкт-Петербург
Сообщений: 116


может помогут командные реакторы
см. посты 25 и 47

Последний раз редактировалось Yuriy-I, 07.10.2009 в 21:26.
Yuriy-I вне форума  
 
Непрочитано 07.10.2009, 22:17
#5
forMA


 
Регистрация: 25.08.2005
Сообщений: 2,556


Рано или поздно возникнет вопрос о автоматическом создании слоя. В данном случае "Вспомогательная".
forMA вне форума  
 
Непрочитано 08.10.2009, 00:59
#6
vadim_evg1


 
Регистрация: 08.01.2007
Рус
Сообщений: 398


читай п.2, а тут видео есть
vadim_evg1 вне форума  
 
Непрочитано 08.10.2009, 01:16
#7
forMA


 
Регистрация: 25.08.2005
Сообщений: 2,556


Цитата:
Сообщение от vadim_evg1 Посмотреть сообщение
читай п.2, а тут видео есть
Неуклюжее слегка, но решение работоспособное.
forMA вне форума  
 
Автор темы   Непрочитано 08.10.2009, 07:23
#8
Aqualung

машиностроитель
 
Регистрация: 24.08.2009
Тольятти
Сообщений: 259


Цитата:
Сообщение от detrah Посмотреть сообщение
В макросе (macro) для кнопки с Construction Line пишешь:

Код:
[Выделить все]
^C^C(setvar "clayer" "Вспомогательная");^C^C_xline
Здесь две команды: первая устанавливает текущий слой, вторая стартует х-линию...
Пользуйся на здоровье!

p.s. Аналогично можно работать с цветами, типами линий, стилями текстов и размеров
во! спасибо большое!
теперь возникла другая идея) Наполовину уже сделано - при выборе конструкционной линии слой нужный включается, теперь надо чтоб отключался после отмены команды констр. линии и возвращался к тому который был до выбора XLINE. Можно так?
__________________
рисую чертежи... можно акварелью
Aqualung вне форума  
 
Непрочитано 08.10.2009, 08:11
#9
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


См. #2.
Profan вне форума  
 
Автор темы   Непрочитано 08.10.2009, 08:33
#10
Aqualung

машиностроитель
 
Регистрация: 24.08.2009
Тольятти
Сообщений: 259


а без палитры можно?
кстати после написания
Цитата:
^C^C(setvar "clayer" "Вспомогательная");^C^C_xline
цвет линии почему то становится ByBlock а не ByLayer... как сделать чтобы по слою рисовалась?
__________________
рисую чертежи... можно акварелью
Aqualung вне форума  
 
Непрочитано 08.10.2009, 08:48
#11
vadim_evg1


 
Регистрация: 08.01.2007
Рус
Сообщений: 398


Цитата:
Сообщение от Бубырь-UA Посмотреть сообщение
Неуклюжее слегка, но решение работоспособное.
Видео только для примера, а уклюжить самому надо

Цитата:
Сообщение от Aqualung Посмотреть сообщение
а без палитры можно?
кстати после написания
цвет линии почему то становится ByBlock а не ByLayer... как сделать чтобы по слою рисовалась?
А чем палитра плоха? Она решает все твои вопросы.Там можно много чего настроить, так зачем усложнять.
Я себе сделал - хватает почти на все случаи жизни
Миниатюры
Нажмите на изображение для увеличения
Название: 1.jpg
Просмотров: 271
Размер:	56.3 Кб
ID:	26990  
vadim_evg1 вне форума  
 
Автор темы   Непрочитано 08.10.2009, 09:02
#12
Aqualung

машиностроитель
 
Регистрация: 24.08.2009
Тольятти
Сообщений: 259


палитра у меня чуть дальше в плане освоения К тому же надо переустановить Акад, а то она вообще не включается. Времени пока нет. Да и вон без палитры можно же что то сделать
__________________
рисую чертежи... можно акварелью
Aqualung вне форума  
 
Непрочитано 08.10.2009, 09:19
#13
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


У нас под кнопочками отрисовки линий зашиты макросы:
Код:
[Выделить все]
(setvar "cmdecho" 1)(command "_layer" "_m" "osnovn" "" "_line" pause)
(setvar "cmdecho" 1)(command "_layer" "_m" "osi" "" "_line" pause)
(setvar "cmdecho" 1)(command "_layer" "_m" "nevid" "" "_line" pause)
.... и т.д.
работает нормально, нареканий нет.
E-degtyarev вне форума  
 
Непрочитано 08.10.2009, 09:37
#14
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Цитата:
Сообщение от Aqualung Посмотреть сообщение
палитра у меня чуть дальше в плане освоения К тому же надо переустановить Акад, а то она вообще не включается. Времени пока нет. Да и вон без палитры можно же что то сделать
Зря. Кнопки на палитре легче делать. Особо и программирования не нужно никакого для твоего случая. Иначе что-то можно конечно сделать, но далеко не всё. Для этой ерунды прийдется писать свою фукцию аналог прямой. Можно реакторы испольовать, тогда и кнопки не нужны будут.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Автор темы   Непрочитано 08.10.2009, 09:44
#15
Aqualung

машиностроитель
 
Регистрация: 24.08.2009
Тольятти
Сообщений: 259


макросы интереснее а палитра занимает место, которого итак мало на экране.
Вобщем сделал так - при нажатии Кострукц. линии слой становится "Вспомогательная"
при нажатии какого либо размера слой становится "Размеры"
Линию решил не трогать - варианты могут быть.
Стало в итоге гораздо удобнее! и похожее на Компас
p.s. detrah а напиши плиз примеры команд чтобы "Аналогично можно работать с цветами, типами линий, стилями текстов и размеров", а то я синтаксиса не знаю)
__________________
рисую чертежи... можно акварелью
Aqualung вне форума  
 
Непрочитано 08.10.2009, 09:54
#16
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,537
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Aqualung, вот этот реактор создает слой вспомогательный для прямой. В реакторе можно настроить свойства слоя, в том числе и сделать его непечатаемым. Слой появляется только когда вызываешь команду xline. И восстанавливает предыдущее состояние слоев. Реактор меняет свойства слоя, если уже имеется слой с таким именем.
Кроме того, реактор аккуратно раскладывает тексты, размеры, лидеры, таблицы, вьюпорты в соответствующие слои. Ничего лучше пока не встречал. Заодно, спасибо Алексею.
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 08.10.2009, 09:59
#17
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Цитата:
Сообщение от Aqualung Посмотреть сообщение
макросы интереснее а палитра занимает место, которого итак мало на экране.
Странно, а у меня палитра экономит место.
Миниатюры
Нажмите на изображение для увеличения
Название: 1.jpg
Просмотров: 204
Размер:	41.2 Кб
ID:	26992  
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 08.10.2009, 10:03
#18
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от Aqualung Посмотреть сообщение
теперь возникла другая идея) Наполовину уже сделано - при выборе конструкционной линии слой нужный включается, теперь надо чтоб отключался после отмены команды констр. линии и возвращался к тому который был до выбора XLINE. Можно так?
Код:
[Выделить все]
^C^C(setq clay (getvar "clayer"))(setvar "clayer" "Вспомогательная")(vl-cmdf "_.xline" pause pause "")(setvar "clayer" clay)(setq clay nil)(princ);
Слой "Вспомогательная" должен существовать, чтоб макрос работал.
Do$ вне форума  
 
Непрочитано 08.10.2009, 10:18
#19
ытя


 
Регистрация: 23.09.2005
СПб
Сообщений: 428


Можно так
Код:
[Выделить все]
^C^C_.xline;\\_chprop;_L;;_La;"Вспомогательная";;
ытя вне форума  
 
Автор темы   Непрочитано 08.10.2009, 10:47
#20
Aqualung

машиностроитель
 
Регистрация: 24.08.2009
Тольятти
Сообщений: 259


Цитата:
Сообщение от Krieger Посмотреть сообщение
Странно, а у меня палитра экономит место.
а, ну если так то да...
не дошел до палитры еще я) на след неделе переставлю акад и начну изучать палитру.
ммм... коды которые выше написаны применять так же как в посте #3? или вместо ^C^C_xline писать?... подробнее плиз скажите)
wetr как использовать/включить/загрузить этот реактор?... (честно говоря первый раз слышу "реактор" применительно к акаду .. блин эту прогу можно изучать вечно)
__________________
рисую чертежи... можно акварелью
Aqualung вне форума  
 
Непрочитано 08.10.2009, 10:53
#21
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


^C^C -это отказ от выполняемых в настоящий момент комманд.
Очень желательно присутсвие этих символов в начале любого макроса.
E-degtyarev вне форума  
 
Непрочитано 08.10.2009, 11:22
#22
forMA


 
Регистрация: 25.08.2005
Сообщений: 2,556


Известно, что на вкус и цвет товарищей нет. Я когда то применял схему о которой пишет Aqualung. Не прижилась. Деревянная какая то. Гибкости нет. А уж палитра при оперативной работе машиностроителя совсем не помощник. Вот уж много лет я работаю примерно так: Круговым движением курсора "подхватываю" слой, а затем собственно команду, расположенные в верхнем левом углу окна AutoCAD. Попробуй, может и сгодится.

p.s. Слой "10-SUPPORT" у меня примерно аналог вашему слою "Вспомогательная".
макрос на кнопку:
Код:
[Выделить все]
^C^C(if (not C:10-SUPPORT) (load "10-SUPPORT")) 10-SUPPORT
программка на LISP:
Код:
[Выделить все]
(defun C:10-SUPPORT ( / echo ss)
(setq echo (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(if (/= (setq ss (nth 1 (ssgetfirst))) nil)
    (progn
    (princ "\n Есть выбранные объекты.")
    (command "_-LAYER" "_M" "10-SUPPORT" "_C" 6
    "10-SUPPORT" "_LT" "CONTINUOUS"
    "10-SUPPORT" "_LW" 0.05 "10-SUPPORT" "")
    (command "_CHANGE" ss "" "_P" "_LA" "10-SUPPORT" "")
    ) ;progn
    (progn
    (princ "\n Нет выбранных объектов.")
    (command "_-LAYER" "_M" "10-SUPPORT" "_C" 6
    "10-SUPPORT" "_LT" "CONTINUOUS"
    "10-SUPPORT" "_LW" 0.05 "10-SUPPORT" "")
    ) ;progn
) ;if
(setvar "CMDECHO" echo)
(princ)
)
Миниатюры
Нажмите на изображение для увеличения
Название: Immagine.jpg
Просмотров: 125
Размер:	44.1 Кб
ID:	26999  
forMA вне форума  
 
Непрочитано 08.10.2009, 13:05
#23
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


Цитата:
Круговым движением курсора "подхватываю" слой
А тренироваться долго нужно?
E-degtyarev вне форума  
 
Непрочитано 08.10.2009, 13:11
#24
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,537
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Цитата:
Сообщение от Aqualung Посмотреть сообщение
wetr как использовать/включить/загрузить этот реактор?... (честно говоря первый раз слышу "реактор" применительно к акаду .. блин эту прогу можно изучать вечно)
rar переименовать в 7z и распаковать! Получишь видео
Вложения
Тип файла: rar 1.rar (1.51 Мб, 77 просмотров)
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 08.10.2009, 13:13
#25
forMA


 
Регистрация: 25.08.2005
Сообщений: 2,556


Цитата:
Сообщение от E-degtyarev Посмотреть сообщение
А тренироваться долго нужно?
Не знаю. От человека, наверное, зависит...Зрительная память. Моторная память. Ну может час или день работы.
forMA вне форума  
 
Автор темы   Непрочитано 09.10.2009, 09:26
#26
Aqualung

машиностроитель
 
Регистрация: 24.08.2009
Тольятти
Сообщений: 259


Цитата:
Сообщение от Do$ Посмотреть сообщение
Код:
[Выделить все]
^C^C(setq clay (getvar "clayer"))(setvar "clayer" "Вспомогательная")(vl-cmdf "_.xline" pause pause "")(setvar "clayer" clay)(setq clay nil)(princ);
Слой "Вспомогательная" должен существовать, чтоб макрос работал.
ммм а можно чтобы после построения одной линии команда не сбрасывалась?
И еще... я сделал 2 кнопочки дополнительно для горизонтали и вертикали. Макрос такой назначил
Код:
[Выделить все]
^C^C(setvar "clayer" "Вспомогательная");^C^C_xline Hor
- строится горизонталь в вспомогательном слое.
попробовал по аналогии с предложеной для просто линии командой написать
Код:
[Выделить все]
^C^C(setq clay (getvar "clayer"))(setvar "clayer" "Вспомогательная")(vl-cmdf "_.xline Hor" pause pause "")(setvar "clayer" clay)(setq clay nil)(princ);
но не работает так... Как правильно записать макрос чтобы выбралась горизонталь, слой, построил линию - слой вернулся как был до выбора горизонтали?
__________________
рисую чертежи... можно акварелью
Aqualung вне форума  
 
Непрочитано 09.10.2009, 09:29
#27
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Код:
[Выделить все]
^C^C(setq clay (getvar "clayer"))(setvar "clayer" "Вспомогательная")(vl-cmdf "_.xline" "_Hor" pause pause "")(setvar "clayer" clay)(setq clay nil)(princ);
Profan вне форума  
 
Непрочитано 09.10.2009, 10:17
#28
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611


Нда.... для разнообразия добавлю код на VB, а то прям засилие лиспа =)
Приведенный код поместить в автозагрузку и "шаманить" с кнопкой не надо, само работать будет.


Код:
[Выделить все]
Private Sub AcadDocument_EndCommand(ByVal CommandName As String)
On Error Resume Next
         
        Call crLayers
    If (CommandName = "XLINE") Then '
        Dim obj As AcadObject
        Set obj = ThisDrawing.ModelSpace.Item(ThisDrawing.ModelSpace.Count - 1)
        With obj
            If .ObjectName = "AcDbXline" Then '
                .Layer = "Вспомогательный"
                .color = 256 '"acByLayer"
                .Lineweight = acLnWtByLayer
                .Linetype = "ByLayer"
            End If
        End With
    End If
End Sub


Sub crLayers()
    On Error Resume Next
        ' Проверяю, есть ли нужные мне слои
    Dim layerObj As AcadLayer
    Set layerObj = ThisDrawing.Layers.Item("Вспомогательный")
    If layerObj Is Nothing Then Set layerObj = ThisDrawing.Layers.Add("Вспомогательный")
        With layerObj
            .color = "43"
            .Description = "Вспомогательный"
            .Freeze = False ' : Boolean
            .LayerOn = True ' : Boolean
            .Linetype = "Continuous" ': String
            .Lineweight = acLnWt015 '  ACAD_LWEIGHT
            .Lock = False ' : Boolean
            .Plottable = True ': Boolean ' Печатать или нет
        End With
    Set layerObj = Nothing
End Sub
Boxa вне форума  
 
Автор темы   Непрочитано 09.10.2009, 10:47
#29
Aqualung

машиностроитель
 
Регистрация: 24.08.2009
Тольятти
Сообщений: 259


Цитата:
Сообщение от Profan Посмотреть сообщение
Код:
[Выделить все]
^C^C(setq clay (getvar "clayer"))(setvar "clayer" "Вспомогательная")(vl-cmdf "_.xline" "_Hor" pause pause "")(setvar "clayer" clay)(setq clay nil)(princ);
спасибо! Только забавно получается - строится две линии и сбрасывается команда)) Видимо в просто _xline нужно два клика, а тут уже один клик прописан _Hor ... если я правильно понял незнакомый язык)
Так а можно сделать чтобы не сбрасывалась команда до нажатия ESC?
Воха
просто макрос отредактировать вроде проще чем целую прогу писать на VB)
__________________
рисую чертежи... можно акварелью
Aqualung вне форума  
 
Непрочитано 09.10.2009, 10:58
#30
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Действительно, если указываем опцию "_Hor" ("Гор"), то достаточно одной паузы:


Код:
[Выделить все]
 
^C^C(setq clay (getvar "clayer"))(setvar "clayer" "Вспомогательная")(vl-cmdf "_.xline" "_Hor" pause "")(setvar "clayer" clay)(setq clay nil)(princ);
Profan вне форума  
 
Автор темы   Непрочитано 09.10.2009, 11:49
#31
Aqualung

машиностроитель
 
Регистрация: 24.08.2009
Тольятти
Сообщений: 259


клево) я написал 3 раза pause - теперь 3 линии рисует)) можно конечно раз 10 написать, чтоб точно хватило, ну да пожалуй хватит 3 Только ощущение такое что это глупый способ)
__________________
рисую чертежи... можно акварелью
Aqualung вне форума  
 
Непрочитано 09.10.2009, 19:43
#32
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Разумные способы тебе предложили еще в самом начале...
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 10.10.2009, 01:45
#33
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


http://dwg.ru/art/2
Vova вне форума  
 
Непрочитано 11.10.2009, 11:49
#34
kheylan


 
Регистрация: 24.05.2009
Екатеринбург
Сообщений: 86


А как сделать, чтобы ссылки вставлялись на отдельный слой?! Проблема в том, что программа понимает их однинаково как блоки и определяет как INSERT
kheylan вне форума  
 
Непрочитано 12.10.2009, 16:10
#35
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611


Цитата:
Сообщение от kheylan Посмотреть сообщение
А как сделать, чтобы ссылки вставлялись на отдельный слой?! Проблема в том, что программа понимает их однинаково как блоки и определяет как INSERT
Команды может и одинаковые, а вот объекты наверное создаются разные. Попробуйте искать по имени объекта, а не команды...
Boxa вне форума  
 
Непрочитано 12.10.2009, 17:01
#36
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


Aqualung, попробуй так:
^C^C(setq clay (getvar "clayer"))(setvar "clayer" "Вспомогательная")(while (command "_.xline" "_Hor" pause ))(setvar "clayer" clay)(setq clay nil)(princ);
E-degtyarev вне форума  
 
Непрочитано 12.10.2009, 18:05
#37
vadim_evg1


 
Регистрация: 08.01.2007
Рус
Сообщений: 398


Цитата:
Сообщение от kheylan Посмотреть сообщение
А как сделать, чтобы ссылки вставлялись на отдельный слой?! Проблема в том, что программа понимает их однинаково как блоки и определяет как INSERT
палитрой можно
Вложения
Тип файла: rar 0000.rar (721.0 Кб, 44 просмотров)
vadim_evg1 вне форума  
 
Непрочитано 12.10.2009, 19:03
#38
Кулик Алексей aka kpblc
Moderator

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


E-degtyarev, command возвращает nil.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.10.2009, 20:23
#39
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Цитата:
Сообщение от E-degtyarev Посмотреть сообщение
У нас под кнопочками отрисовки линий зашиты макросы:
[code](setvar "cmdecho" 1)(command "_layer" "_m" "osnovn" "" "_line" pause)
Основной линией отрисовано, очевидно, 90% чертежа. Тогда как гораздо продуктивней объекты чертежа разложить по тематическим слоям (типа Стены внутренние, Наружные, колонны и т. д.) Иначе, по какому признаку ты будешь выделять объекты для разных нужд? Или по признаку Основные?
Vova вне форума  
 
Непрочитано 12.10.2009, 20:25
#40
Кулик Алексей aka kpblc
Moderator

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


Vova, иногда подобное разделение не особо-то и требуется...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.10.2009, 09:46
#41
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


Vova Мы работаем в машиностроительной отрасли.
Может быть поэтому "расслоение" у нас небольшое. Для построения изображения используется 4-5 слоев, для остальных объектов-размеры, надписи, таблицы и т.п. тоже существуют свои слои. Поэтому у нас на "самом видном месте" 4-5 кнопочек с макросами типа как в посте 13.
Кто-то скажет "баян", но у нас прижилось.
Кулик Алексей aka kpblc "command возвращает nil" но линии-то рисует.
E-degtyarev вне форума  
 
Непрочитано 13.10.2009, 10:23
#42
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Цитата:
Сообщение от E-degtyarev Посмотреть сообщение
"command возвращает nil" но линии-то рисует.
Да нифига он не рисует. Слой создать сначала надо. Смысл функции while?
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 13.10.2009, 11:21
#43
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


Цитата:
Слой создать сначала надо. Смысл функции while?
Слой конечно нужно создать.Подразумевается что он уже существует.
Смысл функции WHILE - линии рисуются многократно подряд, пока юзер не нажмет ESC либо правую кнопку мыши (зависит от настройки).

PS: извините, но мне кажется что здесь не обязательно выкладывать "обсосанные до кости" вещи.
E-degtyarev вне форума  
 
Непрочитано 13.10.2009, 11:43
#44
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Так если command выдает nil, то функция while сразу прерывается и не повторяет ничего. Повторяет у тебя сама команда xline. Т.е. от такого кода и твоего разницы никакой:
Код:
[Выделить все]
^C^C(setq clay (getvar "clayer"))(setvar "clayer" "Вспомогательная")(command "_.xline" "_Hor" pause )(setvar "clayer" clay)(setq clay nil)(princ);
Кстати в вспомогательном слое чертится всего 2 прямых, остальные в текущем.

Тогда уж так:
Код:
[Выделить все]
(defun kr (/ *error* clayer)
  (defun *error* (msg) (setvar "CLAYER" clayer))
  (setq clayer (getvar "CLAYER"))
  (command "_-layer" "_make" "Вспомогательная" "")
  (command "_xline" "_hor")
  (while (/= (logand (getvar "cmdactive") 31) 0)
    (command pause))
  (setvar "CLAYER" clayer))
Это в автозагрузку.
И на кнопку:
^C^C(kr)
__________________
Делай хорошо, плохо само получится.

Последний раз редактировалось Krieger, 13.10.2009 в 12:41.
Krieger вне форума  
 
Непрочитано 13.10.2009, 12:56
#45
Кулик Алексей aka kpblc
Moderator

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


А код
Код:
[Выделить все]
*^C^C_.xline;_hor;
уже не покатит?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.10.2009, 13:01
#46
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
А код
Код:
[Выделить все]
*^C^C_.xline;_hor;
уже не покатит?
Нафига, если эта команда и так цикличная?
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 13.10.2009, 13:13
#47
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Она нехорошо цикличная, только по второй точке.
Profan вне форума  
 
Непрочитано 13.10.2009, 14:11
#48
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Цитата:
Сообщение от Profan Посмотреть сообщение
Она нехорошо цикличная, только по второй точке.
С опцией "Hor" ей нужна одна точка.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 13.10.2009, 14:16
#49
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Все равно однобоко.
Profan вне форума  
 
Непрочитано 13.10.2009, 14:32
#50
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Тогда так:
Код:
[Выделить все]
*^C^C_xline;\\;
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 13.10.2009, 14:34
#51
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


А про слой забыл уже?
Profan вне форума  
 
Непрочитано 13.10.2009, 14:42
#52
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Если тебе надо, сделаю со слоем (код выше маленько подредактировать). В пустую не хочется...
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 13.10.2009, 14:45
#53
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Не, мне больше Лисп нравится.
Profan вне форума  
 
Непрочитано 13.10.2009, 14:47
#54
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


А в 44-м постинге что?
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 13.10.2009, 14:48
#55
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Не знаю.
Не знаю, что такое "постинг".
Profan вне форума  
 
Непрочитано 13.10.2009, 15:00
#56
kheylan


 
Регистрация: 24.05.2009
Екатеринбург
Сообщений: 86


А чем вас не устраивает код из поста №16 под словом этот
http://forum.dwg.ru/showpost.php?p=295576&postcount=125
он идеально подходит для xline
добавил немного опций, со ссылками только не получилось, смотри файл
и создал панель инструментов XLINE
Горизонтальная прямая
Объект Xline строится горизонтально
^C^C_xline;_h;

Вертикальная прямая
Объект Xline строится вертикально
^C^C_xline;_v;

ПоОбъекту прямая
Объект Xline строится по объекту (не работает по примитивам блока и arx объектов сторонних навесок на автокад).Макрокоманда зациклена, выход по Esc
*^C^C_xline;_offset;_Through;_nea;\_none;@;;

Перпендикулярная прямая
^C^C_xline;_offset;_Through;_nea;\_none;@;^C^C_rotate;_last;;\90;

Биссектриса прямая
Биссектриса по 3 точкам
^C^C_xline;_b;\\\;

Все рисуется на слое 0_ВСП
Вложения
Тип файла: lsp LayerObjekt.LSP (20.1 Кб, 56 просмотров)

Последний раз редактировалось kheylan, 13.10.2009 в 15:18.
kheylan вне форума  
 
Непрочитано 30.05.2014, 11:34
#57
alexdub

инженер-конструктор
 
Регистрация: 20.05.2010
Сообщений: 20
<phrase 1=


Цитата:
Сообщение от ытя Посмотреть сообщение
^C^C_.xline;\\_chprop;_L;;_La;"Вспомогательная";;
нравится идея этого макроса, но он почему-то не работает...
как оказалось сама команда CHPROP не меняет слой. т.е. просто строю линию/полилинию, вызываю команду CHPROP и пытаюсь поменять слой с текущего "0" на ранее созданный "111", но ничего не происходит. почему так?
__________________
ломать - не строить : )
alexdub вне форума  
 
Непрочитано 30.05.2014, 12:28
#58
Alan

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


Цитата:
Сообщение от alexdub Посмотреть сообщение
как оказалось сама команда CHPROP не меняет слой. т.е. просто строю линию/полилинию, вызываю команду CHPROP и пытаюсь поменять слой с текущего "0" на ранее созданный "111", но ничего не происходит.
команда _CHPROP меняет слой ПРИМИТИВА (у твоей линии/полилинии)
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума  
 
Непрочитано 30.05.2014, 13:12
#59
alexdub

инженер-конструктор
 
Регистрация: 20.05.2010
Сообщений: 20
<phrase 1=


Цитата:
Сообщение от Alan Посмотреть сообщение
команда _CHPROP меняет слой ПРИМИТИВА (у твоей линии/полилинии)
вопрос не в этом... xline - примитив.
разобрался в чем дело, после выбора слоя в команде CHPROP я неосознанно прерывал команду. все работает.
Но макрос ^C^C_.xline;\\_chprop;_L;;_La;"111";; все равно не работает...
__________________
ломать - не строить : )
alexdub вне форума  
 
Непрочитано 30.05.2014, 13:43
#60
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Цитата:
Сообщение от alexdub Посмотреть сообщение
вопрос не в этом... xline - примитив.
разобрался в чем дело, после выбора слоя в команде CHPROP я неосознанно прерывал команду. все работает.
Но макрос ^C^C_.xline;\\_chprop;_L;;_La;"111";; все равно не работает...
Точек с запятыми не хватает.
Код:
[Выделить все]
^C^C_.xline;\\;_chprop;_L;;_La;"0";;
Хотя лучше сделать другую последовательность. Сначала запросить точку. Потом построить горизонтальную прямую. Кинуть её в нужный слой. После чего задать команду поворота с указанной ранее базовой точкой.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 30.05.2014, 14:17
#61
alexdub

инженер-конструктор
 
Регистрация: 20.05.2010
Сообщений: 20
<phrase 1=


Цитата:
Сообщение от Krieger Посмотреть сообщение
Хотя лучше сделать другую последовательность. Сначала запросить точку. Потом построить горизонтальную прямую. Кинуть её в нужный слой. После чего задать команду поворота с указанной ранее базовой точкой.
да, спасибо, точка с запятой решила проблему)
но что-то ни тот, ни ваш вариант мне не нравятся тем, что повтор команды XLINE уже не работает, так как в моем случае он вызывает CHPROP, а в вашем ROTATE...
__________________
ломать - не строить : )
alexdub вне форума  
 
Непрочитано 30.05.2014, 16:15
#62
VVA

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


alexdub,
1. Палитры
2. LISP. Быстрое рисование. QUICKDRAW
3. Автоматический перенос размеров на слой размеры. Break макро
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 30.05.2014, 16:31
#63
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Вот так можно:
Код:
[Выделить все]
^C^C_(defun c:kr ()(if (setq p1 (getpoint))(progn (command "_xline" p1 pause "")(if(equal p1(cdr(assoc 10(entget(ssname(ssget "L")0)))))(progn(setq pr(entget(ssname(ssget "L")0))pr(subst(cons 8 "вспомогательные")(assoc 8 Pr)Pr))(entmod pr))))));kr
Есть правда побочный эффект один...
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 28.05.2015, 11:03
#64
DIG73


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


Доброго времени суток всем.
Чтобы не создавать тему - напишу сюда, более менее подходит вроде к моему вопросу.
Я отключил в "настройке стандартов", стандарты оформления, но все равно, при рисовании размера в своем слое он автоматически переносится в другой, который вновь создается.
Тоже самое происходит и, например с отметками СПДС и прочим.
Как можно это отключить?
Заранее спс.
DIG73 вне форума  
 
Непрочитано 28.05.2015, 11:06
#65
Кулик Алексей aka kpblc
Moderator

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


Для начала - вспомнить, что в СПДС GraphiCS есть свои настройки.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 28.05.2015, 11:08
#66
DIG73


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


Вспомнил, а подробнее можно?

----- добавлено через 34 сек. -----
в главных настройках?

----- добавлено через ~2 мин. -----
с отметками разобрался, спасибо )

----- добавлено через ~4 мин. -----
с размерами тоже ))
а ведь я размеры из автокадовских панелей ставлю - это все равно связано?
DIG73 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Автоматический выбор заданного слоя



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выбор в автокаде ASЪ AutoCAD 39 26.06.2014 20:19
VBA. Размораживание слоя, построение объекта в нем, замораживание слоя = ошибка Alexey_02 Программирование 3 06.03.2009 22:33
Состояние защитного слоя панели перекрытия Иван 80 Конструкции зданий и сооружений 6 10.02.2009 00:20
Выбор слоя из командсной строки klopius AutoCAD 5 16.05.2007 19:56
Выбор блоков по значению слоя атрибута Serge_Y Программирование 2 15.11.2006 22:43