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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > .NET > Ошибка: неверный ввод при установке системной переменной с помощью SetSystemVariable(name,value)

Ошибка: неверный ввод при установке системной переменной с помощью SetSystemVariable(name,value)

Ответ
Поиск в этой теме
Непрочитано 01.10.2022, 16:05 #1
Ошибка: неверный ввод при установке системной переменной с помощью SetSystemVariable(name,value)
p_sh
 
новичок
 
Ярославль
Регистрация: 19.06.2005
Сообщений: 3,398

Последовательность простая:
Сначала считываю в массив значения переменных по списку, затем пытаюсь эти считанные значения установить. Возникает ошибка eInvalidInput
Вопрос: в чем же дело?

код простой, как в учебнике.
Код:
[Выделить все]
         

        'системные переменные 
        Public aLayer, aColor, aLinetype, aLineWeight, aScaleLinetype, aScaleDimStyle, aTextStyle, aDimStyle, aDimBlock As Object
        Public aSysVarsValues() As Object = {aLayer, aColor, aLinetype, aLineWeight, aScaleLinetype, aScaleDimStyle, aTextStyle, aDimStyle, aDimBlock}

        'список имен системных переменных
        Public SysVarsNames() As String = {"CLAYER",
            "CECOLOR", "CELTYPE", "CELWEIGHT",
            "CELTSCALE", "DIMSCALE", "TEXTSTYLE", "DIMSTYLE",
            "DIMBLK"}



Public Sub aSysVarsValuesGET()
            For i = 0 To SysVarsNames.Length - 1
                aSysVarsValues(i) = Autodesk.AutoCAD.ApplicationServices.Application.GetSystemVariable(SysVarsNames(i))
                Dim str As String = aSysVarsValues(i).GetType.ToString ' GetType().ToString()
                ThisDrawing.Utility.Prompt(SysVarsNames(i) + " / " + str + " / " + aSysVarsValues(i).ToString & vbNewLine)
            Next
        End Sub

Public Sub aSysVarsValuesSET()
            For i = 0 To SysVarsNames.Length - 1
                ThisDrawing.Utility.Prompt(SysVarsNames(i) + " - " + aSysVarsValues(i).ToString() & vbNewLine)

                Autodesk.AutoCAD.ApplicationServices.Application.SetSystemVariable(SysVarsNames(i), aSysVarsValues(i))
            Next
        End Sub

Миниатюры
Нажмите на изображение для увеличения
Название: Get_set trouble.PNG
Просмотров: 20
Размер:	159.2 Кб
ID:	250204  

Просмотров: 927
 
Непрочитано 01.10.2022, 16:19
#2
Кулик Алексей aka kpblc
Moderator

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


А транзакции не надо делать?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 01.10.2022, 17:28
#3
p_sh

новичок
 
Регистрация: 19.06.2005
Ярославль
Сообщений: 3,398


более менее работает так
Код:
[Выделить все]
                    Dim acadApp2 As Autodesk.AutoCAD.Interop.AcadApplication
                    acadApp2 = GetObject(, "AutoCAD.Application")
                    acadApp2.ActiveDocument.SetVariable(CStr(SysVarsNames(i)), aSysVarsValues(i))
от сюда

----- добавлено через ~2 мин. -----
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
А транзакции не надо делать?
в учебнике - вроде нет

Код:
[Выделить все]
The Application object provides the SetSystemVariable and GetSystemVariable methods for setting and retrieving AutoCAD system variables. For example, to assign an integer to the MAXSORT system variable, use the following code:
VB.NET

'' Get the current value from a system variable
Dim nMaxSort as Integer = Application.GetSystemVariable("MAXSORT")
 
'' Set system variable to new value
Application.SetSystemVariable("MAXSORT", 100)
----- добавлено через ~56 мин. -----
очень все чувствительно к типу данных
так не работает (кроме строк)
Код:
[Выделить все]
            
For i = 0 To cSysVarsValues.Length - 1
                If CStr(cSysVarsValues(i)) <> "" Then
                    'ThisDrawing.Utility.Prompt(SysVarsNames(i) + " - " + cSysVarsValues(i) & vbNewLine)
                    ThisDrawing.SetVariable(CStr(SysVarsNames(i)), cSysVarsValues(i))
                End If
Next
работает только с явным указанием типа данных. (список не велик)
Код:
[Выделить все]
For i = 0 To cSysVarsValues.Length - 1
                If CStr(cSysVarsValues(i)) <> "" Then
                    
                    Select Case CStr(SysVarsNames(i))
                        Case "CLAYER"
                             ThisDrawing.SetVariable(CStr(SysVarsNames(i)), cSysVarsValues(i))
                            
                        Case "CECOLOR"
                             ThisDrawing.SetVariable(CStr(SysVarsNames(i)), cSysVarsValues(i))
                        Case "CELTYPE"
                            
                            ThisDrawing.SetVariable(CStr(SysVarsNames(i)), cSysVarsValues(i))
                        Case "CELWEIGHT"
                            
                            ThisDrawing.SetVariable(CStr(SysVarsNames(i)), CType(cSysVarsValues(i), Int16))
                        Case "CELTSCALE"
                            
                            ThisDrawing.SetVariable(CStr(SysVarsNames(i)), CType(cSysVarsValues(i), Double))
                        Case "DIMSCALE"
                            
                            ThisDrawing.SetVariable(CStr(SysVarsNames(i)), CType(cSysVarsValues(i), Double))
                        Case "TEXTSTYLE"
                            
                            ThisDrawing.SetVariable(CStr(SysVarsNames(i)), cSysVarsValues(i))
                        Case "DIMSTYLE"
                            
                            ThisDrawing.SetVariable(CStr(SysVarsNames(i)), cSysVarsValues(i))
                        Case "DIMBLK"
                            
                            ThisDrawing.SetVariable(CStr(SysVarsNames(i)), cSysVarsValues(i))
                    End Select

                End If
            Next
p_sh вне форума  
 
Непрочитано 01.10.2022, 19:45
#4
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 10,131


1. Это разве .Net?
2. Имхо, при работе с системными переменными, хранящимися в чертеже, последний для надежности заблокировать надо (Locked), как минимум.
Сергей812 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > .NET > Ошибка: неверный ввод при установке системной переменной с помощью SetSystemVariable(name,value)

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сбрасывается значение системной переменной Psltscale с 1 на 0 ie.spb AutoCAD 5 09.08.2018 12:29
Ввод новой точки на расстоянии смещения с помощью мыши Sampai AutoCAD 2 25.11.2014 13:41
Ошибка: Ошибка Automation. Неверный ввод nolte Программирование 14 29.07.2013 14:17
Несоответствие результатов в Лире s.vas Лира / Лира-САПР 19 11.11.2009 07:31
Появление в AutoCAD 2005 новой системной переменной OLEFRAME Георгий AutoCAD 4 03.05.2004 03:34