Тема: Редактирование системной переменной Dimlfac

Как программно менять системную переменную Автокада Dimlfac в зависимости от значения некоторой переменной?

Re: Редактирование системной переменной Dimlfac

If a<b Then
 ThisDrawing.SetVariable "Dimlfac", 2
else
 ThisDrawing.SetVariable "Dimlfac", 3
end if

Re: Редактирование системной переменной Dimlfac

Я немного ошиблась. У меня в TextBox задается масштаб отрисовки изображения Mb (Mb = CDbl(ScaleButton.Text). Мне нужно, чтобы переменная dimlfac имела значение Mb.

Re: Редактирование системной переменной Dimlfac

ThisDrawing.SetVariable "Dimlfac", Mb

Re: Редактирование системной переменной Dimlfac

В том-то и дело, что это не проходит. Берет dimlfac =1

Re: Редактирование системной переменной Dimlfac

В размере, который проставляется программно значение dimlfac не изменилось, зато по умолчанию dimlfac изменилось на значение Mb. Помогите разобраться!

Re: Редактирование системной переменной Dimlfac

Вот мой код. Где ошибка?
    Dim dimObj As AcadDimRotated
    Dim point1(0 To 2) As Double
    Dim point2(0 To 2) As Double
    Dim point3(0 To 2) As Double
    Dim point4(0 To 2) As Double
    Dim point5(0 To 2) As Double
    Dim location1(0 To 2) As Double
    Dim location2(0 To 2) As Double
    Dim location3(0 To 2) As Double
    Dim location4(0 To 2) As Double
    Dim rotAngle As Double
    Dim rotAngle1 As Double
    ' Define the dimension
    point1(0) = PTS(0): point1(1) = PTS(1): point1(2) = 0#
    point2(0) = PTS(0) + A / Mb: point2(1) = PTS(1): point2(2) = 0#
    point3(0) = PTS(2): point3(1) = PTS(3): point3(2) = 0#
    point4(0) = PTS(2): point4(1) = PTS(3) + C / Mb: point4(2) = 0#
    point5(0) = PTS(4): point5(1) = PTS(5): point5(2) = 0#
    location1(0) = PTS(0): location1(1) = PTS(1) - 25: location1(2) = 0#
    location2(0) = PTS(0): location2(1) = PTS(1) - 35: location2(2) = 0#
    location3(0) = PTS(2) + 25: location3(1) = PTS(3): location3(2) = 0#
    location4(0) = PTS(2) + 35: location3(1) = PTS(3): location3(2) = 0#
    rotAngle = 0
    rotAngle1 = 90
    rotAngle = rotAngle * 3.141592 / 180#       ' covert to Radians
    rotAngle1 = rotAngle1 * 3.141592 / 180#
    ' Create an aligned dimension object in model space
    ThisDrawing.SetVariable "Dimlfac", Mb
    Set dimObj = ThisDrawing.ModelSpace.AddDimRotated(point1, point2, location1, rotAngle)
    Set dimObj = ThisDrawing.ModelSpace.AddDimRotated(point2, point3, location1, rotAngle)
    Set dimObj = ThisDrawing.ModelSpace.AddDimRotated(point1, point3, location2, rotAngle)
    Set dimObj = ThisDrawing.ModelSpace.AddDimRotated(point3, point4, location3, rotAngle1)
    Set dimObj = ThisDrawing.ModelSpace.AddDimRotated(point4, point5, location3, rotAngle1)
    Set dimObj = ThisDrawing.ModelSpace.AddDimRotated(point3, point5, location4, rotAngle1)

Re: Редактирование системной переменной Dimlfac

 ThisDrawing.SetVariable "Dimlfac", CDbl(Replace(Trim(TextBox1.Text), ".", ","))

Re: Редактирование системной переменной Dimlfac

> SmeL
Все еще зависит от региона установленного в системе

Re: Редактирование системной переменной Dimlfac

А что означает строка
ThisDrawing.SetVariable "Dimlfac", CDbl(Replace(Trim(TextBox1.Text), ".", ","))
В хелпе я ничего конкретного не смогла найти.

Re: Редактирование системной переменной Dimlfac

Забрать все пробелы вначале и конце, изменить делиметр дробной части (см. региональные настройки), преобразовать текст в тип double.

Re: Редактирование системной переменной Dimlfac

Так дело в том, что значение-то Dimlfac считывается. Оно потом, после вставки размера остается по умолчанию. А вот в размере, который я программно вставляю Dimlfac не меняется, всегда=1.

Re: Редактирование системной переменной Dimlfac

> ЛАРИСА
А если так:

Mb=0.25
dimObj.LinearScaleFactor = Mb
dimObj.Update

~'J'~

Re: Редактирование системной переменной Dimlfac

Так тоже пробовала. В этом случае выдает ошибку:
"Object variable or With block variable not set". И указывает на строку:
dimObj.LinearScaleFactor = Mb

Re: Редактирование системной переменной Dimlfac

Получилось!
Надо было после каждого Set dimObj.... указывать dimObj.LinearScaleFactor = Mb.
Хотя для меня это кажется странным...........
Всем спасибо!