All Forums
 Категория Visio
 Форум Вопросы и ответы
 Создание своего элемента из VB
Author Previous Topic Topic Next Topic  

Kuzmich

18 Posts

Posted - 04/25/2005 :  21:13:40
Нужно из VB программно нарисовать новый элемент (типа резистора, непринципиально), потом помесить в стенсил свой же...
С VB почти не знаком, может у кого есть код подобный?

Kuzmich

18 Posts

Posted - 04/26/2005 :  22:15:17
Ну это хоть возможно?
Go to Top of Page

brace

Russia
358 Posts

Posted - 04/27/2005 :  09:04:21
делайте так:
Tools > Macros > Visual Basic Editor
откроется окно редактора
там есть свой HELP, в поле поиска забейте фразу "Drop Method"
там все расписано и примерчик есть. Скопируйте примерчик и вставьте в окно редактора затем в меню редактора нажмите кнопку RUN
сложите окно редактора и увидите что нарисовалось.
Кстати в хелпе много примеров кода которые можно использовать.

Go to Top of Page

brace

Russia
358 Posts

Posted - 04/27/2005 :  09:21:56
этот примерчик рисует шейп и кладет его мастером в "Document Stencil"

Public Sub Drop_Example1()

Dim vsoShape As Visio.Shape
Dim vsoMaster As Visio.Master

Set vsoShape = ActivePage.DrawRectangle(1, 2, 2, 1)

'Create a master in the document. The master appears on the

'document stencil.
Set vsoMaster = ActiveDocument.Drop(vsoShape, 0, 0)

End Sub

код взят из хелпа.
Go to Top of Page

Kuzmich

18 Posts

Posted - 04/28/2005 :  16:53:13
Спасибо... :)
Еще вопрос, как создать для прямой еще одну вкладку Geometry из VB?
Go to Top of Page

Kuzmich

18 Posts

Posted - 04/28/2005 :  18:00:08
myob.AddSection (visSectionLastComponent)
myob.AddRow(visSectionLastComponent, visRowComponent, visTagMoveTo)
myob.AddRow(visSectionLastComponent, visRowComponent, visTagLineTo)

Выдает ошибку, требует что-то присвоить в последних двух функциях...
Хотя в примере тоже без присвоения...
Go to Top of Page

Kuzmich

18 Posts

Posted - 04/29/2005 :  00:49:01
myob.AddRow visSectionLastComponent, visRowComponent, visTagMoveTo
myob.AddRow visSectionLastComponent, visRowComponent, visTagLineTo
Убрал скобки, но все равно не добавляются MoveTo и LineTo...
Ошибка опять...
Go to Top of Page

immortal

Russia
391 Posts

Posted - 04/29/2005 :  09:01:47  Visit immortal's Homepage
quote:
Originally posted by Kuzmich

myob.AddRow visSectionLastComponent, visRowComponent, visTagMoveTo
myob.AddRow visSectionLastComponent, visRowComponent, visTagLineTo
Убрал скобки, но все равно не добавляются MoveTo и LineTo...
Ошибка опять...


надо вставить ещё предварительно это
myob.AddRow visSectionFirstComponent + 1, visRowComponent, visTagComponent

а потом уже так:
myob.AddRow visSectionFirstComponent + 1, visRowVertex, visTagMoveTo
myob.AddRow visSectionFirstComponent + 1, visRowVertex, visTagLineTo

и должно быть:
myob.AddSection visSectionLastComponent
myob.AddRow visSectionFirstComponent + 1, visRowComponent, visTagComponent
myob.AddRow visSectionFirstComponent + 1, visRowVertex, visTagMoveTo
myob.AddRow visSectionFirstComponent + 1, visRowVertex, visTagLineTo


визио 2003 форэвер

...а вобще-то я белый и пушистый.
Go to Top of Page

brace

Russia
358 Posts

Posted - 04/29/2005 :  09:04:50
в хелре VB Editor забейте слово AddSection method
там все расписано и примерчик есть

Public Sub AddSection_Example()

Dim vsoPage As Visio.Page
Dim vsoShape As Visio.Shape

'Get the active page.
Set vsoPage = ActivePage

'Draw a rectangle on the active page.
Set vsoShape = vsoPage.DrawRectangle(1, 5, 5, 1)

'Add a scratch section to the ShapeSheet.
vsoShape.AddSection visSectionScratch

End Sub

у меня на visio 2003 работает.
Go to Top of Page

Kuzmich

18 Posts

Posted - 04/29/2005 :  15:49:00
Да пример этот бесполезен...
Мне нужно для вкладки Geometry...
Сделал так:
myob.AddSection (visSectionFirstComponent + 1)
myob.AddRow visSectionFirstComponent + 1, visRowComponent, visTagComponent
myob.AddRow visSectionFirstComponent + 1, visRowVertex, visTagMoveTo
myob.AddRow visSectionFirstComponent + 1, visRowLast, visTagLineTo
myob.AddRow visSectionFirstComponent + 1, visRowLast, visTagLineTo
Set cellObj = myob.CellsSRC(visSectionFirstComponent + 1, 1, 0)
cellObj.Formula = "0"
Set cellObj = myob.CellsSRC(visSectionFirstComponent + 1, 1, 1)
cellObj.Formula = "0"
Set cellObj = myob.CellsSRC(visSectionFirstComponent + 1, 2, 0)
cellObj.Formula = "0"
Set cellObj = myob.CellsSRC(visSectionFirstComponent + 1, 2, 1)
cellObj.Formula = "0.5"
Set cellObj = myob.CellsSRC(visSectionFirstComponent + 1, 3, 0)
cellObj.Formula = "0.5"
Set cellObj = myob.CellsSRC(visSectionFirstComponent + 1, 3, 1)
cellObj.Formula = "0"

Теперь работает, там все дело в параметрах для этой вкладки...
Go to Top of Page

immortal

Russia
391 Posts

Posted - 04/29/2005 :  16:34:33  Visit immortal's Homepage
вобще если у тебя визио 2003, то можно воспользоваться рекодером как в ворде и екселе и записать макрос

визио 2003 форэвер

...а вобще-то я белый и пушистый.
Go to Top of Page
  Previous Topic Topic Next Topic  
Данный сайт является архивом форума visio.artberg.ru, который был закрыт в связи с переходом на новую платформу visio.getbb.ru
Все материалы доступны только для чтения! Если у вас появились вопросы, или вы хотите что-то обсудить, связанное с Visio, обращайтесь на новый форум!
Архив был создан благодаря совместным усилиям Генадия Туманова @Tumanov (visio.artberg.ru), Александра ака @Surrogate (visio.getbb.ru), и Николая Белых @nbelyh (unmanagedvisio.com)