Тема: Помогите с блоками!

В лиспе есть каманда, которая вставляет конкретный блок; спрашивает у пользователя положение по X, Y и название (в атрибуте блока три поля, которые надо заполнить). Как можно сделать на VBA или VB6 то же самое?

Re: Помогите с блоками!

Из хелпа

Inserts a drawing file or a named block that has been defined in the current drawing.
See Also | Example
Signature
RetVal = object.InsertBlock(InsertionPoint, Name, Xscale, Yscale, ZScale, Rotation [, Password])
Object
ModelSpace, PaperSpace, Block
The object or objects this method applies to.
InsertionPoint
Variant (three-element array of doubles); input-only
The 3D WCS coordinates specifying the location in the drawing to insert the block.
Name
String; input-only
The name of the AutoCAD drawing file or the name of the block to insert. If it is a file name, include the .dwg extension and any path information necessary for AutoCAD to find the file.
Xscale
Double; input-only; optional
The default equals 1.0. Must be a positive number.
Yscale
Double; input-only; optional
The default equals 1.0. Must be a positive number.
Zscale
Double; input-only; optional
The default equals 1.0. Must be a positive number.
Rotation
Double; input-only; optional
The default equals 0.0 radians.
Password
Variant; input-only; optional
RetVal
BlockRef object
The placed block as a Block Reference object.
Remarks
Inserting a block into another block will create nested blocks.
Attempting to call the InsertBlock method with an uninitialized Name parameter results in unexpected behavior.

И еще из хелпа

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 = ThisDrawing.ModelSpace.InsertBlock(insertionPnt, "CircleBlock", 1#, 1#, 1#, 0)
    ZoomAll

После вставки блока атрибуты ищутся полным перебором и найденные заполняются.
Что не понятно, спрашивайте.

Re: Помогите с блоками!

Второй пример создает блок и затем его вставляет. А мне надо вставить уже существующий блок. Я так и не смог разобраться как прописывать полное имя блока (например: C:\AutoCAD 2005\MyBlocks\Block_01.dwg).
Спасибо, что откликнулись.

Re: Помогите с блоками!

Первый пример важнее, так как описывает вставку блока в общем случае.

Signature
RetVal = object.InsertBlock(InsertionPoint, Name, Xscale, Yscale, ZScale, Rotation [, Password])
...
Name
String; input-only
The name of the AutoCAD drawing file or the name of the block to insert. If it is a file name, include the .dwg extension and any path information necessary for AutoCAD to find the file.

В данном Вашем случае

Name="C:\AutoCAD 2005\MyBlocks\Block_01.dwg"

Если все остальное понятно, то теперь Вы должны суметь вставить блок.