Тема: Помогите с блоками!
В лиспе есть каманда, которая вставляет конкретный блок; спрашивает у пользователя положение по X, Y и название (в атрибуте блока три поля, которые надо заполнить). Как можно сделать на VBA или VB6 то же самое?
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → Помогите с блоками!
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
В лиспе есть каманда, которая вставляет конкретный блок; спрашивает у пользователя положение по X, Y и название (в атрибуте блока три поля, которые надо заполнить). Как можно сделать на VBA или VB6 то же самое?
Из хелпа
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
После вставки блока атрибуты ищутся полным перебором и найденные заполняются.
Что не понятно, спрашивайте.
Второй пример создает блок и затем его вставляет. А мне надо вставить уже существующий блок. Я так и не смог разобраться как прописывать полное имя блока (например: C:\AutoCAD 2005\MyBlocks\Block_01.dwg).
Спасибо, что откликнулись.
Первый пример важнее, так как описывает вставку блока в общем случае.
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"
Если все остальное понятно, то теперь Вы должны суметь вставить блок.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → Помогите с блоками!
Форум работает на PunBB, при поддержке Informer Technologies, Inc