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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как програмно установить толщину линий на VBA?

Как програмно установить толщину линий на VBA?

Ответ
Поиск в этой теме
Непрочитано 21.04.2009, 10:44 #1
Как програмно установить толщину линий на VBA?
Stanislavmg
 
Ставрополь
Регистрация: 03.03.2006
Сообщений: 520

Никак не могу разобраться как програмно установить толщину для всех создаваемых линий по умолчанию?
Помогите плиз.
Просмотров: 7633
 
Непрочитано 21.04.2009, 15:59
#2
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Установить значение системной переменной CELWEIGHT в -3
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 21.04.2009, 16:52
#3
Stanislavmg


 
Регистрация: 03.03.2006
Ставрополь
Сообщений: 520


VVA а как задать ее програмно?

Наверно я несколько неправильно задал вопрос.
Как програмно установить толщину для линий, так как если бы пользователь выбрал ее из списка в панели "Свойства".
Сейчас я задаю ее так:
Set lineObj = AMSpace.AddLine(StartPoint, EndPoint)
lineObj.LineWeight = 30
lineObj.Update
Но таким макаром она задается уже после построения, а надо устанавливать заранее для всех создаваемых.
Stanislavmg вне форума  
 
Непрочитано 21.04.2009, 17:09
#4
serov


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


Можно сначала задать, слой с необходимыми вам характерисиками линий и продолжать чертить в нем програмно.
serov вне форума  
 
Автор темы   Непрочитано 21.04.2009, 17:22
#5
Stanislavmg


 
Регистрация: 03.03.2006
Ставрополь
Сообщений: 520


Мне нужно, чтобы все линии были в одном слое, поэтому данный вариант не подходит.
Stanislavmg вне форума  
 
Непрочитано 21.04.2009, 18:52
#6
Кулик Алексей aka kpblc
Moderator

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


Вроде так...
Код:
[Выделить все]
ThisDrawing.SetVariable "celweight", -3
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 21.04.2009, 18:53
#7
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Stanislavmg,
Код:
[Выделить все]
Sub test()
 Dim lineObj As AcadLine
    Dim startPoint(0 To 2) As Double
    Dim endPoint(0 To 2) As Double
    
    ' Define the start and end points for the line
    startPoint(0) = 1#: startPoint(1) = 1#: startPoint(2) = 0#
    endPoint(0) = 5#: endPoint(1) = 5#: endPoint(2) = 0#
ThisDrawing.SetVariable "CELWEIGHT", acLnWtByLwDefault
Set lineObj = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint)
'lineObj.Lineweight = acLnWtByLwDefault
lineObj.Update
End Sub
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 22.04.2009, 09:45
#8
Stanislavmg


 
Регистрация: 03.03.2006
Ставрополь
Сообщений: 520


Всем спасибо. То что нужно.
Но с этим кодом какая-то непонятка.
В таком виде код работает:
Код:
[Выделить все]
Set ACad = GetObject(, "AutoCAD.Application")
Set ADoc = ACad.ActiveDocument
ADoc.SetVariable "celweight", 40
А этот нет:
Код:
[Выделить все]
LineWeght2="acLnWt015"
Set ACad = GetObject(, "AutoCAD.Application")
Set ADoc = ACad.ActiveDocument
ADoc.SetVariable "celweight", LineWeght2
Как заставить его воспринимать переменные?

Последний раз редактировалось Stanislavmg, 22.04.2009 в 10:30.
Stanislavmg вне форума  
 
Непрочитано 22.04.2009, 10:51
#9
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


acLnWt015 - это константа или перечисление, значение которой 015. А ты его передаешь как строку.
Нужно вместо LineWeght2="acLnWt015"
как-то так
LineWeght2=acLnWt015
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 22.04.2009, 11:06
#10
Stanislavmg


 
Регистрация: 03.03.2006
Ставрополь
Сообщений: 520


Так она воспринимается как имя переменной. Вот засада.
Stanislavmg вне форума  
 
Непрочитано 22.04.2009, 20:25
#11
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Что воспринимается как имя переменной?
Код:
[Выделить все]
Sub test()
 Dim lineObj As AcadLine
    Dim startPoint(0 To 2) As Double
    Dim endPoint(0 To 2) As Double
    Dim LineWeght2 As Integer
    LineWeght2 = acLnWt015
    ' Define the start and end points for the line
    startPoint(0) = 1#: startPoint(1) = 1#: startPoint(2) = 0#
    endPoint(0) = 5#: endPoint(1) = 5#: endPoint(2) = 0#
ThisDrawing.SetVariable "CELWEIGHT", acLnWtByLwDefault
Set lineObj = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint)
lineObj.Lineweight = LineWeght2
lineObj.Update
End Sub
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 23.04.2009, 11:29
#12
Stanislavmg


 
Регистрация: 03.03.2006
Ставрополь
Сообщений: 520


VVA. Попробуйте запустить этот код.
Вы объявляете переменную LineWeght2 как целое, а присваиваете ей строку. Вылезет ошибка.

Эта строчка почему-то не работает.
Код:
[Выделить все]
ThisDrawing.SetVariable "CELWEIGHT", acLnWtByLwDefault
И даже так не фурычит:
Код:
[Выделить все]
ThisDrawing.SetVariable "CELWEIGHT", acLnWt015
Может есть возможность изменения толщины линии не через системную переменную, а путем установки ее в свойствах?
Как програмно добраться до панели меню "свойства"?
З.Ы. Как имя воспринимается константа acLnWt015.
Все строковые значения заключаются в бэйсике в кавычки, ибо без них он воспринимает их как имя переменной.
LineWeght2="acLnWt015"
Stanislavmg вне форума  
 
Непрочитано 23.04.2009, 11:47
1 | #13
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Вы объявляете переменную LineWeght2 как целое, а присваиваете ей строку. Вылезет ошибка
На чем основана твоя уверенность, что в acLnWt015 строка?
Из справки (выделено мной)
Цитата:
Signature

object.Lineweight

object

All Drawing objects; DatabasePreferences, Layer
The object or objects this property applies to.

Lineweight

acLineWeight enum; read-write

acLnWtByLayer
acLnWtByBlock
acLnWtByLwDefault
acLnWt000
acLnWt005
acLnWt009
acLnWt013
acLnWt015
acLnWt018
acLnWt020
acLnWt025
acLnWt030
acLnWt035
acLnWt040
acLnWt050
acLnWt053
acLnWt060
acLnWt070
acLnWt080
acLnWt090
acLnWt100
acLnWt106
acLnWt120
acLnWt140
acLnWt158
acLnWt200
acLnWt211
Цитата:
_$ acLnWt015
15
_$ acLnWt030
30
_$ acLnWtByLwDefault
-3
_$
Код в #11 рабочий. Изучай
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 23.04.2009, 12:10
#14
Stanislavmg


 
Регистрация: 03.03.2006
Ставрополь
Сообщений: 520


Простите, протупил. Я на VB програмлю, а не на VBA.

На VBA код действительно работает, а вот VB понятия не имеет, что такое acLnWt015 и воспринимает ее как имя переменной.
Stanislavmg вне форума  
 
Непрочитано 23.04.2009, 12:18
#15
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Подставляй числа
acLnWt015 = 15
acLnWt030 = 30
acLnWt140 = 140
acLnWtByLwDefault = -3
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 23.04.2009, 13:40
#16
Stanislavmg


 
Регистрация: 03.03.2006
Ставрополь
Сообщений: 520


Не хотит он работать с переменными, только так
Код:
[Выделить все]
ThisDrawing.SetVariable "CELWEIGHT", 30
Ставлю вместо числа переменную, выдает ошибку.
Stanislavmg вне форума  
 
Непрочитано 23.04.2009, 23:56
#17
Кулик Алексей aka kpblc
Moderator

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


А соответствующие библиотеки AutoCAD'a в проект импортированы?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 24.04.2009, 10:13
#18
Stanislavmg


 
Регистрация: 03.03.2006
Ставрополь
Сообщений: 520


А вто об этом я кок-то не подумал
Спасибо. Заработало.
Stanislavmg вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как програмно установить толщину линий на VBA?

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рифмоплетство. Kryaker Разное 554 14.11.2023 11:59
Как програмно установить Enterprise cui ?? Startrek Программирование 20 17.04.2009 14:27
как с помощью vba скопировать текст vasyavip Программирование 13 30.10.2008 13:11
Юмор 2007 Огурец Разное 1172 29.12.2007 11:16