Тема: Редактирование системной переменной Dimlfac
Как программно менять системную переменную Автокада Dimlfac в зависимости от значения некоторой переменной?
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → Редактирование системной переменной Dimlfac
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Как программно менять системную переменную Автокада Dimlfac в зависимости от значения некоторой переменной?
If a<b Then ThisDrawing.SetVariable "Dimlfac", 2 else ThisDrawing.SetVariable "Dimlfac", 3 end if
Я немного ошиблась. У меня в TextBox задается масштаб отрисовки изображения Mb (Mb = CDbl(ScaleButton.Text). Мне нужно, чтобы переменная dimlfac имела значение Mb.
ThisDrawing.SetVariable "Dimlfac", Mb
В том-то и дело, что это не проходит. Берет dimlfac =1
В размере, который проставляется программно значение dimlfac не изменилось, зато по умолчанию dimlfac изменилось на значение Mb. Помогите разобраться!
Вот мой код. Где ошибка?
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)
ThisDrawing.SetVariable "Dimlfac", CDbl(Replace(Trim(TextBox1.Text), ".", ","))
> SmeL
Все еще зависит от региона установленного в системе
А что означает строка
ThisDrawing.SetVariable "Dimlfac", CDbl(Replace(Trim(TextBox1.Text), ".", ","))
В хелпе я ничего конкретного не смогла найти.
Забрать все пробелы вначале и конце, изменить делиметр дробной части (см. региональные настройки), преобразовать текст в тип double.
Так дело в том, что значение-то Dimlfac считывается. Оно потом, после вставки размера остается по умолчанию. А вот в размере, который я программно вставляю Dimlfac не меняется, всегда=1.
> ЛАРИСА
А если так:
Mb=0.25 dimObj.LinearScaleFactor = Mb dimObj.Update
~'J'~
Так тоже пробовала. В этом случае выдает ошибку:
"Object variable or With block variable not set". И указывает на строку:
dimObj.LinearScaleFactor = Mb
Получилось!
Надо было после каждого Set dimObj.... указывать dimObj.LinearScaleFactor = Mb.
Хотя для меня это кажется странным...........
Всем спасибо!
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → Редактирование системной переменной Dimlfac
Форум работает на PunBB, при поддержке Informer Technologies, Inc