Тема: Толщина линии для документа

Люди добрые, на вас вся надежда!
В автокаде руками можно указать текущую активную толщину линии, а как это сделать программно? ThisDrawing.ActiveLinetype бывает, а почему нету аналогичного свойства LineWeight? Как можно эту неприятность обойти?
Спасибо.

Re: Толщина линии для документа

Например, так:

ThisDrawing.ActiveLayer.Lineweight = acLnWt005

См. также:
https://www.caduser.ru/oldlink/acad/?var_name=LWDEFAULT

Re: Толщина линии для документа

Ничего не получается... :( Мне вообще-то надо сделать ByLayer, но даже задане какого-то конкретного значеня не срабатывает: ThisDrawing.ActiveLayer.Lineweight = acLnWt000, линии рисуются с той толщиной, которая была предварительно выбрана руками из выпадающего списочка.
Через LWDEFAULT тоже не вышло, делала так:
old_lineweight = ThisDrawing.GetVariable("LWDEFAULT") 'показывает old_lineweight = 25
ThisDrawing.SetVariable "LWDEFAULT", acLnWt000
old_lineweight = ThisDrawing.GetVariable("LWDEFAULT") 'показывает old_lineweight = 0
При этом линии рисуются, опять же, той толщины, которая установлена руками. Что я не так делаю?...

Re: Толщина линии для документа

Рисуются или выводятся на печать?
Если рисуются, поиграйся в окне _options -> User preferences -> lineweight settings (какие системные переменные за это дело отвечают, я не в курсе).

Re: Толщина линии для документа

Рисуются. Печатать не пробовала. Насчёт _options -> User preferences -> lineweight settings спасибо, оно действительно меняет текущую (активную) толщину линии, только вот как бы это программно сделать?... Даже не знаю, что подпихнуть Sendcommad-y - в командной строке ничего н отображается, кроме слова _options :(

Re: Толщина линии для документа

Не думаю, что это можно сделать через SendCommand - только через системные переменные либо работу с объектной моделью.Где оно хранится - в файле или в  реестре - я не знаю. :(

Re: Толщина линии для документа

> masha
"Рисуются."
Попробуйте нажать на кнопочку LWT внизу экрана.

Re: Толщина линии для документа

Кнопочка LWT убирает видимость толщины линий для всех линий, а это нехорошо. Мне надо только чтобы мною нарисованные линии не имели толщины, точнее, имели ByLayer, который есть Default. Мне надо научиться программно выставлять текущую толщину линии для рисования. Я не знаю пока, как этого добиться... :(

Re: Толщина линии для документа

Да что ж тут такого нерешаемого?
Помещаем подобный код в модуль ThisDrawing
и указываем программно "текущую активную толщину линии":

Private Sub AcadDocument_BeginCommand(ByVal CommandName As String)
    If (CommandName = "LINE") Then
        MsgBox ThisDrawing.ActiveLayer.Name
        ThisDrawing.SetVariable "LWDISPLAY", 1
        [b]ThisDrawing.ActiveLayer.Lineweight = acLnWt005[/b]
        MsgBox ThisDrawing.ActiveLayer.Lineweight
    End If
End Sub
Private Sub AcadDocument_EndCommand(ByVal CommandName As String)
    If (CommandName = "LINE") Then
        ThisDrawing.SetVariable "LWDISPLAY", 0
    End If
End Sub

Ну и если надо отключать видимость толщины линии, то следует добавить обработку возможного нажатия клавиши Esc.

Re: Толщина линии для документа

Попробовала я так - не сработало. Ставила breakpoint в эту AcadDocument_BeginCommand, оно туда даже не заходит...
Зато мне ещё подсказали вот что:
ThisDrawing.Preferences.Lineweight = acLnWt025
Оказалось, не так страшен чёрт, как его малюют... :) Всем спасибо за поддержку!!!

Re: Толщина линии для документа

> masha
Наверное, как часто бывает на этом форуме, постепенно выясняется, что не очень понятно - что же нужно вопрошающему на самом деле?
Метод на который вы ссылаетесь:
ThisDrawing.Preferences.Lineweight = acLnWt025
удобно применять, когда вы хотите указать способ назначения (стандартную установку) толщины линии (Lineweight values consist of standard settings including BYLAYER, BYBLOCK, and DEFAULT)
acLineWeight enum; read-write
acLnWtByLayer
acLnWtByBlock
acLnWtByLwDefault
acLnWt000
acLnWt005
..........
The initial value for this property is acLnWtByBlock
Для установки актуальной толщины линии вполне подходит:
ThisDrawing.ActiveLayer.Lineweight = acLnWt005
Впрочем, все это не так существенно. Главное в том, что вы должны начать разбираться в ситуации с а м о с т о я т е л ь н о, активно работать с Help'ом и т.п. Обратите внимание, я написал "подобный код", следовательно вам необходимо доработать его до своего случая, в частности, у меня стоит команда "LINE", а вы укажите свои команды, ну и т.д. Вот это важно, все остальное приложится.
Успехов.