|
Как сделать тип Long для VB | ☑ | ||
---|---|---|---|---|
0
simol
09.09.06
✎
21:09
|
Имею код:
swApp = Новый COMОбъект("SldWorks.Application"); Перем3 = 0; Перем4 = 0; swModel = swApp.OpenDoc6("D:\SW+1C\SW+1C\АТ.ХХХХХХ.111.SLDPRT", 1,1, "", Перем3, Перем4); Вот описание функции: retval = SldWorks.OpenDoc6 ( filename, type, options, configuration, &Errors, &Warnings ) где Output: (long) Errors Load errors as defined in swFileLoadError_e Output: (long) Warnings Warnings or extra information generated during the open operation as defined in swFileLoadWarning_e При выполнении кода пишет несоответствие типов, параметры обязательные и в VB работает. Подскажите как 1С должна передать переменную ,чтобы VB принял ее как тип Long. |
|||
1
АперБот
09.09.06
✎
22:10
|
Поднимать тяжести тяжело, а ветки легко. Достаточно добавить в них сообщение
|
|||
2
simol
10.09.06
✎
20:04
|
up
|
|||
3
dimoff
10.09.06
✎
20:59
|
Из описания функции совершенно не следует, что параметры имеют тип Long, Более того, описание функции вообще какое-то, мало похожее на стандарты описания функций в VB
|
|||
4
dimoff
10.09.06
✎
21:01
|
Тип Long имеет возвращаемое функцией значение
|
|||
5
simol
11.09.06
✎
12:47
|
(3) вот описание функции
Syntax (OLE Automation) retval = SldWorks.OpenDoc6 ( filename, type, options, configuration, &Errors, &Warnings ) Input: (BSTR) Filename Document name or full path if not in current directory, including extension Input: (long) Type Document type as defined in swDocumentTypes_e Input: (long) Options Mode in which to open the document as defined in swOpenDocOptions_e Input: (BSTR) Configuration Model configuration in which to open this document Applies to parts and assemblies, not drawings If this argument is empty or the specified configuration is not present in the model, the model is opened in the last-used configuration. Output: (long) Errors Load errors as defined in swFileLoadError_e Output: (long) Warnings Warnings or extra information generated during the open operation as defined in swFileLoadWarning_e Return: (LPDISPATCH) retval Pointer to a Dispatch object, the newly loaded ModelDoc2, or NULL if failed to open |
|||
6
simol
11.09.06
✎
12:47
|
(4) Вот текст ошибки:
{Форма.Форма(43)}: Ошибка при вызове метода контекста (OpenDoc6): Типы не совпадают (5) swModel = swApp.OpenDoc6("D:\SW+1C\SW+1C\АТ.ХХХХХХ.111.SLDPRT", 1,1, "", Перем3, Перем4); по причине: Типы не совпадают (5) |
|||
7
simol
11.09.06
✎
13:35
|
up
|
|||
8
774816
11.09.06
✎
13:46
|
в 1с не такого понятия обьявление переменных как лонг или интегер (к сожалению)
ты можешь только определить переменную присвоивь ему значение попробуй убери вот это Перем3 = 0; Перем4 = 0; пусть определиться во время выполнения может поможет |
|||
9
774816
11.09.06
✎
13:49
|
а что за прога и для чего SldWorks?
|
|||
10
simol
11.09.06
✎
14:11
|
(8) Такое пробовал, если тип Перем3 и перем4 Неопределено, то ошибка такаяже.
(9) Я с помощью 1С открываю сборка SolidWorks и заполняю(изменяю) справочник спецификаций в УПП |
|||
11
774816
11.09.06
✎
14:34
|
покажи код в VB
|
|||
12
simol
11.09.06
✎
14:49
|
(11) Я не понял что показать.
Я получил перечень деталей входящих в сборку. И мне надо открыть последовательно эти детали и считать с них свойства. Вот как получить перечень деталей: Процедура TraverseComponent(swComp, nLevel) sPadStr = ""; Для i = 0 По nLevel - 1 Цикл sPadStr = sPadStr + " "; КонецЦикла; vChildComp = swComp.GetChildren; Для i = 0 По vChildComp.GetLength(0) - 1 Цикл swChildComp = vChildComp.GetValue(i); TraverseComponent(swChildComp, nLevel + 1); Сообщить(sPadStr + swChildComp.Name2 + " <" + swChildComp.ReferencedConfiguration + "> " + swChildComp.GetPathName); КонецЦикла; КонецПроцедуры Процедура КнопкаВыполнитьНажатие(Кнопка) swApp = Новый COMОбъект("SldWorks.Application"); swModel = swApp.ActiveDoc; Если swModel = Неопределено Тогда Возврат; КонецЕсли; swConf = swModel.GetActiveConfiguration; swRootComp = swConf.GetRootComponent; Сообщить("File = " + swModel.GetPathName); TraverseComponent(swRootComp, 1); КонецПроцедуры |
|||
13
simol
11.09.06
✎
14:55
|
(11) Я не конял что именно показать. Но суть вовпроса в том, что я получаю имена файлов деталей из которых состоит сборка и мне надо их последловательно открыть, чтобы прочитать свойства. Перечень получаю так:
Процедура TraverseComponent(swComp, nLevel) sPadStr = ""; Для i = 0 По nLevel - 1 Цикл sPadStr = sPadStr + " "; КонецЦикла; vChildComp = swComp.GetChildren; Для i = 0 По vChildComp.GetLength(0) - 1 Цикл swChildComp = vChildComp.GetValue(i); TraverseComponent(swChildComp, nLevel + 1); Сообщить(sPadStr + swChildComp.Name2 + " <" + swChildComp.ReferencedConfiguration + "> " + swChildComp.GetPathName); КонецЦикла; КонецПроцедуры Процедура КнопкаВыполнитьНажатие(Кнопка) swApp = Новый COMОбъект("SldWorks.Application"); swModel = swApp.ActiveDoc; Если swModel = Неопределено Тогда Возврат; КонецЕсли; swConf = swModel.GetActiveConfiguration; swRootComp = swConf.GetRootComponent; Сообщить("File = " + swModel.GetPathName); TraverseComponent(swRootComp, 1); КонецПроцедуры |
|||
14
simol
11.09.06
✎
14:56
|
(11) Я не конял что именно показать. Но суть вовпроса в том, что я получаю имена файлов деталей из которых состоит сборка и мне надо их последловательно открыть, чтобы прочитать свойства.
|
|||
15
774816
11.09.06
✎
15:18
|
я к тому что ты писал на счет
<При выполнении кода пишет несоответствие типов, параметры обязательные и в VB работает.> |
|||
16
774816
11.09.06
✎
15:23
|
есть описание значений этих объектов
swFileLoadError_e или этой swFileLoadWarning_e |
|||
17
simol
11.09.06
✎
16:53
|
(15)Вот открытие на VB:
Sub main() Dim nErrors As Long Dim nWarnings As Long Set swApp = Application.SldWorks Set swDrawModel = swApp.OpenDoc6("D:\SW+1C\SW+1C\??.??????.222.SLDPRT", swDocPART, swOpenDocOptions_Silent, "", nErrors, nWarnings) End Sub (16)Поидее это константы, вот что есть по swFileLoadError_e swFileLoadError_e Specifies possible values for file load errors. swGenericError - Another error was encountered. swFileNotFoundError - Unable to locate the file. The file is not loaded or the referenced file (that is, component) is suppressed. swFileWithSameTitleAlreadyOpen - A document with same name is already open. These enumerators were obsoleted as of SldWorks::OpenDoc6 and moved to swFileLoadWarning_e: swIdMatchError swReadOnlyWarn swSharingViolationWarn swDrawingANSIUpdateWarn swSheetScaleUpdateWarn swNeedsRegenWarn swBasePartNotLoadedWarn swFileAlreadyOpenWarn swInvalidFileTypeError swDrawingsOnlyRapidDraftWarn swViewOnlyRestrictions swFutureVersion swViewMissingReferencedConfig swDrawingSFSymbolConvertWarn |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |