Отправлено: 06.05.05 14:34. Заголовок: Re: Работает ли для Inventor позднее связывание?
Насколько помню, раннее связывание -это проверка во время компеляции перед выполнением программы, а позднее -это проверка по ходу выполнения. А ТитлБлок определён как Object?
Отправлено: 06.05.05 16:50. Заголовок: Re: Работает ли для Inventor позднее связывание?
Антикульманист:
цитатаА это обязательно объявляьть как Object? При этом даже подсказки не работают.
Ага, и константы должны быть заданы числами.
К сожалению, я сейчас не готов экспериментировать. Уже потратил на это много времени. Потому и спросил. А пример - из хелпа. Один в один. Создание и вставка TitleBlock. При этом выскакивает сообщение, которое я перевожу как «неправильный вызов процедуры или неправильное задание аргументов».
Раздел Samples¦Drawing¦Title Block Definition Create & Insert Создание дефиниции при позднем связывании работает. Затыкается на строчке встаdки TitleBlock
Отправлено: 13.05.05 13:41. Заголовок: Re: Работает ли для Inventor позднее связывание?
Вот он пример: Public Sub InsertTitleBlockOnSheet() ’ Set a reference to the drawing document. ’ This assumes a drawing document is active. Dim oDrawDoc As DrawingDocument Set oDrawDoc = ThisApplication.ActiveDocument
’ Obtain a reference to the desired border defintion. Dim oTitleBlockDef As Object Set oTitleBlockDef = oDrawDoc.TitleBlockDefinitions.Item(1)
Dim oSheet As Sheet Set oSheet = oDrawDoc.ActiveSheet
’ Check to see if the sheet already has a title block and delete it if it does. If Not oSheet.TitleBlock Is Nothing Then oSheet.TitleBlock.Delete End If
’ Add an instance of the title block definition to the sheet. Dim oTitleBlock As TitleBlock Set oTitleBlock = oSheet.AddTitleBlock(oTitleBlockDef) End Sub
Отправлено: 13.05.05 18:53. Заголовок: Re: Работает ли для Inventor позднее связывание?
Антикульманист пишет:
цитатаРаботает как часы
Все правильно. У меня такой код тоже работает. Только в хелпе пример не совсем такой. Требуется при вставке TitleBlock заполнять и значения текстовых полей, которые в параметрах функции AddTitleBlock должны присутствовать в виде массива строк. Вот из-за этого массива что-то у меня и не получается. При раннем связывании все работает.
Отправлено: 14.05.05 11:06. Заголовок: Re: Работает ли для Inventor позднее связывание?
Ну вот и пример, всё нормально пашет, самое главное чтобы были соответствующие Promt поля в титульном блоке
Public Sub InsertTitleBlockOnSheet1() ’ Set a reference to the drawing document. ’ This assumes a drawing document is active. Dim oDrawDoc As DrawingDocument Set oDrawDoc = ThisApplication.ActiveDocument
’ Obtain a reference to the desired border defintion. Dim oTitleBlockDef As Object Set oTitleBlockDef = oDrawDoc.TitleBlockDefinitions.Item(1)
Dim oSheet As Sheet Set oSheet = oDrawDoc.ActiveSheet
’ Check to see if the sheet already has a title block and delete it if it does. If Not oSheet.TitleBlock Is Nothing Then oSheet.TitleBlock.Delete End If
’ This title block definition contains one prompted string input. An array ’ must be input that contains the strings for the prompted strings. Dim sPromptStrings(1 To 2) As String sPromptStrings(1) = «String 1» sPromptStrings(2) = «String 2»
’ Add an instance of the title block definition to the sheet. Dim oTitleBlock As Object Set oTitleBlock = oSheet.AddTitleBlock(oTitleBlockDef, , sPromptStrings) End Sub
Отправлено: 16.05.05 11:00. Заголовок: Re: Работает ли для Inventor позднее связывание?
Отключение компиляции ни как не сказалось. Да действительно если в сторе Dim oSheet As Sheet заменить на Dim oSheet As Object то выдаётся сообщение об ошибке, скорее всего это баг.... слишком не логичное поведение программы. Остаётся только посоветовать осуществлять эту процедуру без позднего связывания.
Отправлено: 16.05.05 15:57. Заголовок: Re: Работает ли для Inventor позднее связывание?
Антикульманист пишет:
цитатаслишком не логичное поведение программы.
Согласен с Вами. Спасибо за поддержку. А то я уж и не знал, что думать. Думал, что это только у меня. К сожалению, одну процедуру без позднего связывания не удастся использовать: тут либо все, либо ничего. Хотел свою программку сделать универсальной. Что б рамки вставляла и в MDT и в Inventor. И вместе и раздельно. Но пока, видимо, не судьба...
цитатаНикогда не видел десктоповской объектной модели. А что они похожи с инвенторовской объектной моделью?
эта модель прямо в хелпе десктопа есть!
Антикульманист пишет:
цитатаDim oSheet As Sheet заменить на Dim oSheet As Object
Инвентор у вас объявлен, а oSheet чей? Винда же не знает, может вы к листу экселя ломитесь? Dim oApp As Object' Inventor.Application Dim oS As oApp.Sheet set oApp = GetObject(.........)
в Бэйсике есть классная штука - Object Browser называется - уж очень много в ней интересного...
Вот пример макроса для работы с Экселем. Осуществлено через раннее связывание.
Sub ExcelForever() ' Пример раннего связывания с Excel ' Объявление нового класса Dim oExcel As New Excel.Application ' oExcel.Visible = True 'Создание новой книги Dim oBook As Workbook Set oBook = oExcel.Workbooks.Add 'Ссылка на первый лист книги Dim oSheet As WorkSheet Set oSheet = oBook.Sheets(1) 'Заполнение ячеек oSheet.Cells(1, 1) = 10 oSheet.Cells(1, 2) = "Hello" 'Сохранение книги oBook.SaveAs ("c:\first.xls") 'Выход oExcel.Quit Set oExcel = Nothing End Sub
Все даты в формате GMT
3 час. Хитов сегодня: 1
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация вкл, правка нет