Тема: Как создать блок из круга?

Помогите пожалуйста отредактировать программный код.
Мне надо создать блок из круга с диаметром 2,25.
Чтобы его имя складывалось из элементов моей формы.
ИМЯ БЛОКА = Label, TextBox1, TextBox2,TextBox3.
Никак не получается. Как создавать блоки???
Я нашел только этот пример...

'Вставка блока с атрибутом
'Пример вставки в чертеж высотной отметки
Sub InsertBlockAtr()
Dim attributeObj As AcadAttribute
Dim height As Double
Dim mode As Long
Dim tag As String
Dim value As String
Dim prompt As String
Dim insPoint(0 To 2) As Double
'Создание блока
Dim blockObj As AcadBlock
Dim insertionPnt(0 To 2) As Double
insertionPnt(0) = 55#: insertionPnt(1) = -11.5: insertionPnt(2) = 0#
Set blockObj = ThisDrawing.Blocks.Add(insertionPnt, "Otmetka")
'Создание Атрибута в блоке
height = 7.5
mode = acAttributeModeVerify
prompt = "Отметка"
insPoint(0) = -50#: insPoint(1) = 17#: insPoint(2) = 0
tag = "0.000"
value = "0.000"
Set attributeObj = blockObj.AddAttribute(height, mode, prompt, insPoint, tag, value)
'Создание Полилинии в блоке
Dim plineObj As AcadLWPolyline
Dim points(0 To 13) As Double
points(0) = 4: points(1) = -5.5
points(2) = 0.5: points(3) = -5.5
points(4) = 4: points(5) = -11.5
points(6) = 7.5: points(7) = -5.5
points(8) = 4: points(9) = -5.5
points(10) = 4: points(11) = 3.5
points(12) = 40: points(13) = 3.5
Set plineObj = blockObj.AddLightWeightPolyline(points)
'Создание линии в блоке
Dim lineObj As AcadLine
Dim startPoint(0 To 2) As Double
Dim endPoint(0 To 2) As Double
startPoint(0) = 0.5: startPoint(1) = -11.5: startPoint(2) = 0#
endPoint(0) = 55#: endPoint(1) = -11.5: endPoint(2) = 0#
Set lineObj = blockObj.AddLine(startPoint, endPoint)
'Вставка блока в чертеж
Dim blockRefObj As AcadBlockReference
Dim InsertPnt As Variant
InsertPnt = ThisDrawing.Utility.GetPoint _
(, vbCrLf & "Укажите точку вставки:")
Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock _
(InsertPnt, "Otmetka", 1#, 1#, 1#, 0)
attributeObj.Delete
End Sub

Re: Как создать блок из круга?

Вот скажи, а зачем орать-то? Caps отпусти.

Option Explicit
Public Function kpblc_CreateBlockByFormData(LabelText As String, _
                                       Text1 As String, _
                                       Text2 As String, _
                                       Text3 As String) As _
                                       AcadBlock
Dim BlockName As String
  BlockName = LabelText & Text1 & Text2 & Text3
On Error GoTo lErrorGetRef
  Set kpblc_CreateBlockByFormData = ThisDrawing.Blocks.Item(BlockName)
  Exit Function
lErrorGetRef:
  Dim oBlock As AcadBlock, PtOrigin(2) As Double
  PtOrigin(0) = 0#: PtOrigin(1) = 0#: PtOrigin(2) = 0#
  Set oBlock = ThisDrawing.Blocks.Add(PtOrigin, BlockName)
  oBlock.AddCircle PtOrigin, 2.5
  Set kpblc_CreateBlockByFormData = oBlock
End Function
Sub Test()
  Call kpblc_CreateBlockByFormData("1", "2", "3", "4")
End Sub

Re: Как создать блок из круга?

А почему создается блок с именем 1234, а значение не берется из Label1? TextBox1, TextBox2,TextBox3???

Re: Как создать блок из круга?

А как теперь с помощью кода вставить получившийся блок в нужную точку???

Re: Как создать блок из круга?

> Владимир
Потому что форму я прописывать не буду. А Test сделан как пример вызова.

> Владимир
Читай справку. Метод InsertBlock

Re: Как создать блок из круга?

Спасибо Вам огромное за помощь!!

Re: Как создать блок из круга?

Простите меня за назойливость. Я вот создал форму с Label1, TextBox1, TextBox2,TextBox3,
и с кнопочкой запуска, но моя форма не хочет создавать блок ссылаясь на код.
ПРОСТИТЕ МЕНЯ ЧАЙНИКА ЗА ГЛУПЫЕ ВОПРОСЫ!!!

Re: Как создать блок из круга?

А почему Test сделан вызывает 1234, а не значения из текстовых полей???

Re: Как создать блок из круга?

Алексей ну помоги пожайлуста. Не ссылается TextBox на код.

Re: Как создать блок из круга?

Ну неужели трудно подумать самостоятельно? Все ссылается.
http://rapidshare.com/files/82696787/Bl … 12.39_.rar

Re: Как создать блок из круга?

БОЛЬШОЕ СПАСИБО!!!
ВЫ ПРОСТО ГЕНИЙ!!!

Re: Как создать блок из круга?

АЛЕКСЕЙ, Я НАШЕЛ КАК ВСТАВЛЯТЬ БЛОК, подскажите пожайлуста, если я ВАС не совсем еще достал, что подставить вместо знаков вопроса:
'Вставка блока
    Dim blockRefObj As AcadBlockReference
   insertionPnt = ThisDrawing.Utility.GetPoint(, "Указать точку: ")
    Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(insertionPnt, "?????", 1, 1, 1, 0)

Re: Как создать блок из круга?

В этом месте должно быть собранное из разных частей имя???

Re: Как создать блок из круга?

Гхм... Я зря сделал дополнительную переменную типа BlockName As String, что ли?

Re: Как создать блок из круга?

Значит это будет выглядеть вот так??
Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(insertionPnt, BlockName, PtOrigin) ???

Re: Как создать блок из круга?

Rotation забыт.

Re: Как создать блок из круга?

И масштабы вставки тоже :)
А так-то в принципе да. Я код не качал с рапиды, а исходники у себя я снес за ненадобностью.

Re: Как создать блок из круга?

Правильно я понял??
Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(insertionPnt, BlockName, PtOrigin, Rotation)

Re: Как создать блок из круга?

Появляется такое сообщение:
Argument not optional

Re: Как создать блок из круга?

smile Что это значит??

Re: Как создать блок из круга?

Сообщение говорит о том, что пропущены обязательные аргументы

F1, метод InsertBlock, пример использования:

Sub Example_InsertBlock()
    ' This example creates a block containing a circle.
    ' It then inserts the block.
    ' Create the block
    Dim blockObj As AcadBlock
    Dim insertionPnt(0 To 2) As Double
    insertionPnt(0) = 0#: insertionPnt(1) = 0#: insertionPnt(2) = 0#
    Set blockObj = ThisDrawing.Blocks.Add(insertionPnt, "CircleBlock")
    ' Add a circle to the block
    Dim circleObj As AcadCircle
    Dim center(0 To 2) As Double
    Dim radius As Double
    center(0) = 0: center(1) = 0: center(2) = 0
    radius = 1
    Set circleObj = blockObj.AddCircle(center, radius)
    ' Insert the block
    Dim blockRefObj As AcadBlockReference
    insertionPnt(0) = 2#: insertionPnt(1) = 2#: insertionPnt(2) = 0
    Set blockRefObj = [b]ThisDrawing.ModelSpace.InsertBlock(insertionPnt, "CircleBlock", [u]1#, 1#, 1#, 0[/u])[/b]
    ZoomAll
End Sub

Посмотри на синтаксис!

Re: Как создать блок из круга?

Значит мне надо просто добавить вот эти аргументы 1#, 1#, 1#, 0???
Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(insertionPnt, BlockName, PtOrigin, Rotation,1#, 1#, 1#, 0)

Re: Как создать блок из круга?

Автокад опять ругается на меня...
:)

Re: Как создать блок из круга?

Не получается

Re: Как создать блок из круга?

Эта строка -
insertionPnt(0) = 2#: insertionPnt(1) = 2#: insertionPnt(2) = 0
создает вот эти аргументы 1#, 1#, 1#, 0???