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

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

Скругление угла прямоугольника в VBA

Ответ
Поиск в этой теме
Непрочитано 10.02.2010, 14:03 #1
Скругление угла прямоугольника в VBA
Kostia8_8
 
Регистрация: 30.09.2009
Сообщений: 11

Добрый день. Как следует из названия темы,есть прямоугольник и нужно скруглить ему углы Подскажите,пожалуйста,как это сделать с помощью VBA?
Просмотров: 4389
 
Непрочитано 10.02.2010, 14:28
#2
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


Код:
[Выделить все]
Sub main()
ThisDrawing.SendCommand "._fillet" & vbCr
End Sub
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 10.02.2010, 16:16
#3
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Цитата:
Сообщение от Kostia8_8 Посмотреть сообщение
Добрый день. Как следует из названия темы,есть прямоугольник и нужно скруглить ему углы Подскажите,пожалуйста,как это сделать с помощью VBA?
Точнее наверное так
Код:
[Выделить все]
Sub FilletPolyline()
    Dim ent As AcadEntity
    Dim pt As Variant
    Dim pline As AcadLWPolyline
    Dim rad As Double
    rad = 10#
  
    With ThisDrawing
        .Utility.GetEntity ent, pt, vbLf & "Select rectangle: "
        If TypeOf ent Is AcadLWPolyline Then
            Set pline = ent
        Else
            Exit Sub
            End If
            .SetVariable "cmdecho", 0
            .SetVariable "filletrad", rad  '<--fillet radius
            .SendCommand "._fillet _P (handent " & Chr(34) & ent.Handle & Chr(34) & ")" & vbCr
            .SetVariable "cmdecho", 1
        End With
        
    End Sub
~'J'~

Последний раз редактировалось Олег (jr.), 10.02.2010 в 16:46. Причина: аписалсо
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 10.02.2010, 17:53
#4
Kostia8_8


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


Олег (jr.) , как я понял здесь вручную надо выбрать объект,а можно ли сделать так,чтобы все на автомате делалось. Т.е. с помощью вба создается прямоугольник,автоматически выбирается и ему скругляют углы?
П.с. ели что-то неправильно понял,простите)
Kostia8_8 вне форума  
 
Непрочитано 10.02.2010, 19:50
#5
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Цитата:
Сообщение от Kostia8_8 Посмотреть сообщение
Олег (jr.) , как я понял здесь вручную надо выбрать объект,а можно ли сделать так,чтобы все на автомате делалось. Т.е. с помощью вба создается прямоугольник,автоматически выбирается и ему скругляют углы?
П.с. ели что-то неправильно понял,простите)
Тогда тебе проще сразу вычислить координаты всех 8-ми точек

исходя из размеров и радиуса скругления

Это элементарная арифметика, извини

Под рукой примеров нет так же как и свободного времени

~'J'~
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 10.02.2010, 22:51
#6
Kostia8_8


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


Цитата:
Сообщение от Олег (jr.) Посмотреть сообщение
Тогда тебе проще сразу вычислить координаты всех 8-ми точек

исходя из размеров и радиуса скругления

Это элементарная арифметика, извини

Под рукой примеров нет так же как и свободного времени

~'J'~
С арифметикой проблем нет,вычислю)) т.е. надо будет аркой рисовать скругления? без прямоугольника?
Kostia8_8 вне форума  
 
Непрочитано 10.02.2010, 23:04
#7
Кулик Алексей aka kpblc
Moderator

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


Kostia8_8, ты лучше разберись с объектом LightWeightPolyline и заданием его свойств...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 11.02.2010, 00:51
1 | #8
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Цитата:
Сообщение от Kostia8_8 Посмотреть сообщение
С арифметикой проблем нет,вычислю)) т.е. надо будет аркой рисовать скругления? без прямоугольника?
Посмотри в Help'e метод SetBulge там должен быть пример
Нашел в своих загашникахЖ
Код:
[Выделить все]
Option Explicit

Const bulg As Double = 0.414213562373095 '<-- tangent pi/8
Public Sub DrawFilletedRectang()
' 23/03/08

Dim p As Variant
Dim rad As Double
Dim leng As Double
Dim wid As Double
leng = 6000# 'length
wid = 3000# 'height
rad = 200# 'radius

Dim oPline As AcadLWPolyline
Dim pts(0 To 17) As Double
p = ThisDrawing.Utility.GetPoint(, "Pick center point of rectangle:")
pts(0) = p(0) - leng / 2 + rad: pts(1) = p(1) - wid / 2
pts(2) = pts(0) + leng - 2 * rad: pts(3) = pts(1)
pts(4) = pts(2) + rad: pts(5) = pts(3) + rad
pts(6) = pts(4): pts(7) = pts(1) + wid - rad
pts(8) = pts(2): pts(9) = pts(7) + rad
pts(10) = pts(0): pts(11) = pts(9)
pts(12) = pts(10) - rad: pts(13) = pts(7)
pts(14) = pts(12): pts(15) = pts(5)
pts(16) = pts(14): pts(17) = pts(1) + rad
Set oPline = ThisDrawing.ActiveLayout.Block.AddLightWeightPolyline(pts)
With oPline
.Closed = True
.color = acMagenta
.Lineweight = acLnWt050
.SetBulge 1, bulg
.SetBulge 3, bulg
.SetBulge 5, bulg
.SetBulge 8, bulg
.Update
End With

End Sub
~'J'~

Последний раз редактировалось Олег (jr.), 11.02.2010 в 01:06. Причина: code added
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 11.02.2010, 23:05
#9
Kostia8_8


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


Спасибо)) разобрался

Последний раз редактировалось Kostia8_8, 12.02.2010 в 00:34. Причина: ибо понял что да как))
Kostia8_8 вне форума  
 
Непрочитано 12.02.2010, 01:54
#10
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Цитата:
Сообщение от Kostia8_8 Посмотреть сообщение
Спасибо)) разобрался
Так-то оно лучше

~'J'~
Олег (jr.) вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Скругление угла прямоугольника в VBA



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пароль к VBA karp_b Программирование 24 29.08.2013 12:43
VBA Есть ли возможность графики в VBA на форме (PictureBox)? Alexey_02 Программирование 8 13.02.2013 14:08
В чем зло VBA? Vildar Разное 224 18.03.2009 21:26
"Приятное" известие для любителей программировать на VBA Supermax Программирование 45 12.02.2009 19:18
VBA vs LISP Kosenko Sasha LISP 23 06.03.2007 02:56