Partlibclient dll исправить ошибку

Доброе время суток.

Возможно ли каким либо методом получить(сформировать) перечень(только обозначение) стд.изд. доступных в справочнике?

Где можно взять документацию по Справочнику стандартных изделий.


В Program FilesASCONPartLibClientsPartLibAPI.chm есть описание API, в нем есть «Пример использования методов Request и ExecuteRequest». Думаю с их помощью можно выбрать нужные вам изделия.


Спасибо, в комплексе 2009 PartLibAPI.chm нету, взял с комплекса 2011.
Буду разбирается и наедятся что подойдет к нашей версии.


Первый пример отрабатывает нормально, остальные не компилируются.
Вываливается ошибка на строке BOpartlib.Connect(errMess);

Вот скрин ошибки.


Судя по всему не удается подключиться к серверу приложений. Посмотрите метод SetConnectionParams, может необходимо его сначала вызывать.


Описание структуры stConnectionString [in] Строка соединения не нашел.
Попробовал хотя бы вот так

  BOPARTLib := CreateOleObject(C_plClassName) as IPARTLIbProvider;
  BOPARTLib.SetConnectionParams('',false);
  errMess := '';
  BOPARTLib.Connect(errMess);

Не помогло(
с параметром boShowDialog = true вываливается ошибка.
С МиСом подобное было когда не находилась клиентская лицензия(в NetHASP не был прописан ip машины на котором установлен hasp)
На PartLib лицензии раздаются через Flex
Там картина во такая

Users of PartLibClient_Loodsman:  (Total of 9 licenses issued;  Total of 1 license in use)

Может нужна еще какая лицензия или в чем еще может быть проблема?

PS на втором скрине сам клиент запущен.


1) setConnectionParams определяет СП к которому ты подключаешься. в общем случае(когда справочник уже настроен на конкретный СП) вызывать не надо.

2) если нету PartlibApi.chm то значит и апи там офицально нету :). В комплексе 2011 следующий пример работает(пример взят из справки):


uses

//..//

PARTLibClient_TLB,

BOSimple_TLB;

const

C_plClassName = 'PARTLibClient.BOSimpleProvider';

SHOW_MEASURE_DISTANCE           = 1;

SHOW_MEASURE_LENGTH               = 2;

SHOW_MEASURE_DIAMETER           = 4;

SHOW_MEASURE_ANGLE                 = 8;

SHOW_MEASURE_REZBA                 = 16;

SHOW_TKR                                       = 32;

HIDE_INSERT                                     = 64;

SHOW_HOT2D3DCHANGE                 = 128;

DISABLE_POSITIONING_MODELS   = 256;

I_HAVE_KI_ON_SERVER_MACHINE  = '99997';

//----------------------------------------------------------------------------//

var  Location, param :WideString;

      command :integer;

      MethodResponse :IBOResponseDisp;

      BOPARTLib :IPARTLIbProvider;

      responseXML :WideString;

      i :integer;

      errMess :WideString;

Begin

BOPARTLib := CreateOleObject(C_plClassName) as IPARTLIbProvider;

i := BOpartlib.Connect(errMess);

if i=0 then

   begin

     BOPARTLib.SetInstrumentOptions('Kompas', I_HAVE_KI_ON_SERVER_MACHINE, '2D', '3', '',

       SHOW_MEASURE_DISTANCE  or

       SHOW_MEASURE_LENGTH     or

       SHOW_MEASURE_DIAMETER  or

       SHOW_MEASURE_ANGLE        or

       SHOW_TKR );

     command := 0;

     location := '';

     responseXML := '';

     MethodResponse := IBOResponseDisp( BOPARTLib.SelectEx(command, param, Location, 0) );

     if MethodResponse <> nil then

       responseXML := MethodResponse.XML; // XML-код полученного метода!!!

   end;

BOPARTLib.Disconnect;

End.

там в этом XML есть вообще все :)


В общем я взял пример №4

Слепил PARTLibServer_TLB.
заменил
const

//C_plClassName = 'PARTLibClient.BOSimpleProvider';
C_plClassName = 'PARTLibServer.PARTLibServerProvider';

и

  //BOPARTLib := CreateOleObject(C_plClassName) as IPARTLIbProvider;
  BOPARTLib := CreateOleObject(C_plClassName) as IPLSYSTEM;

убрал Connect и Disconnect.

Заработало :)


Получается не то, что хотелось.
Задача получит общий список обозначений стд.изд. вида «Болт M12-8gx60.36.019  ГОСТ 7805-70»
Делаю по примеру 4.


  SetTopic('Find'); // топик - поиск
  AddRequestAttribute('ToolID',      'Kompas');
  AddRequestAttribute('PackageCode', 'Root'); // начинать с корневого пакета
  AddRequestAttribute('Document',    '2D'); // среди 2D-моделей
  AddRequestAttribute('ContextID',   '0'); // для спецификация
  AddRequestAttribute('Filter',      '?ОЛТ*'); //поиск в названии по маске
  BOPARTLib.ExecuteRequest; // запрос на обработку

  IBOR := IBOResponseDisp(BOPARTLib.Response);

  //Names := GetResponseAttribute(0,0).Value; // все найденные имена
  //Codes := GetResponseAttribute(0,1).Value; // ObjectID всех найденных объектов

  Memo1.Text := IBOR.XML;


Получаю

Болт ГОСТ 7805-70 (исп 1)
Болт ГОСТ 7805-70 (исп 2)
Болт ГОСТ 15589-70 (исп 1)
Болт ГОСТ 15589-70 (исп 2)
Болт ГОСТ 15589-70 (исп 3)
….
Root±30±20±10±80±10±©{}30±©{BASE}130±30
Root±30±20±10±80±10±©{}30±©{BASE}130±40
Root±30±20±10±80±10±©{}30±80±©{BASE}60
Root±30±20±10±80±10±©{}30±80±©{BASE}80
Root±30±20±10±80±10±©{}30±80±©{BASE}90
….


1)

ЦитироватьC_plClassName = ‘PARTLibServer.PARTLibServerProvider’;

ты подключаешься к СП напрямую. его API не документировано(и скорее всего не будет документировано). тебе лучше подключаться все же к клиенту СИ.

2) в версии 2009 можно получать обозначения экземпляров через их Location


А как получить все возможный Location?

я пробовал


Location := 'Root±30±20±10±80±10±©{}30±©{BASE}130±40'; // этот Location взял из полученных в IBOR := IBOResponseDisp(BOPARTLib.Response);
BOPARTLib.GetObjectInfo(Location, CID, OID);
IBOB := BOPARTLib.GetObject(CID, OID, 0);

BOPARTLib.GetObjectInfo(Location, CID, OID);
возвращает пустые CID и OID


Ошибку понял, я не верный Location указываю, надо в начало добавить PART:


вот это исполнить получилось, но
IBOB := BOPARTLib.GetObject(CID, OID, 0);
но IBOB у меня получается не конечный объект, как мне получить всевозможные обозначения(разного размера и тп.)?


Для объекта, который получил через поиск, «Болт ГОСТ 7805-70 (исп 2)», Location := ‘PART:Root±30±20±10±80±10±©{}30±©{BASE}130±40’

Выполняю вот такое.

  Location := 'PART:Root±30±20±10±80±10±©{}30±©{BASE}130±40';
  BOPARTLib.GetObjectInfo(Location, CID, OID);
  IBOB := BOPARTLib.GetObject(CID, OID, 0);
  for i := 0 to IBOB.Objects.Count-1 do
  begin
    tempIBOB := IBOB.Objects.Item[i];
    Memo1.Text :=Memo1.Text + #13+#10 + tempIBOB.ClassID +'-$-'+  tempIBOB.Attribute['Value'].Value;
  end;

в Мемо получаю во такой результат

B46A_19C9EB1FF3004994-$-0
B46A_5E7039074EF8473D-$-1
B46A_8342071FFC15428A-$-NULL_VALUE
B46A_A074A970D8094099-$-True
B46A_BDD96F5CA50B41B4-$-NULL_VALUE
BASE_27409DF1233040FA-$-0
BASE_50037741FC214DF4-$-NULL_VALUE
BASE_81B93DB2953840A8-$-NULL_VALUE
BASE_A2215E523CBA4FE5-$-NULL_VALUE
Designation-$-NULL_VALUE
DocDesignation-$-ГОСТ 7805-70
Document-$-0
HOOKPARAMS-$-0
KOMPAS_SPEC_PATTERN-$-NULL_VALUE
MATERIAL-$-0
MCC-$-0
R_DYNAMICCLASSIFICATION-$-0
Root±30±20±10±10-$-0
Root±30±20±10±20-$-0
Root±30±20±10±30-$-0
Root±30±20±10±70-$-
Root±30±20±10±80±10±60-$-2
Root±30±20±10±80±10±©{}30±10-$-0
Root±30±20±10±80±10±©{}30±50-$-NULL_VALUE
Root±30±20±10±80±10±©{}30±90±©{BASE}20-$-Класс точности А
Root±30±20±10±80±10±©{}30±90±©{BASE}30-$-0
Root±30±20±10±80±10±©{}30±90±©{BASE}40-$-0
Root±30±20±10±80±10±©{}30±90±©{BASE}50-$-0
Root±30±20±10±80±10±©{}30±90±©{BASE}60-$-0
Root±30±20±10±80±10±©{}30±90±©{BASE}Cla100-$-0
Root±30±20±10±80±10±©{}30±90±©{BASE}Cla90-$-1
Root±30±20±10±80±10±©{}30±©{BASE}140-$-
Root±30±20±10±80±10±©{}30±©{BASE}180-$-NULL_VALUE
Root±30±20±10±80±10±©{}30±©{BASE}Cla-56-$-NULL_VALUE
Root±30±20±10±80±10±©{}30±©{BASE}Cla-66-$-NULL_VALUE
Root±30±20±10±80±10±©{}30±©{BASE}Cla34-$-0
Root±30±20±10±80±10±©{}30±©{BASE}GMC-6±Cla10-$-NULL_VALUE
Root±30±20±10±80±20-$-0
Root±30±20±10±80±40-$-NULL_VALUE
Root±30±20±10±80±©{}30-$-0
Root±30±20±10±90-$-0
Specification-$-0
dimension_type-$-NULL_VALUE
enterpriseCode-$-NULL_VALUE
product_class-$-NULL_VALUE
spcSectionName-$-Стандартные изделия

Не могу понять как получить все возможные размеры.


Все возможные размеры и их обозначения можно получить начиная с версии 2011.
В версии 2009 вы можете через Select выбрать экземпляр и получить по нему всю необходимую информацию.
Так же прочитайте раздел справки по Location-ам, то что вы используете не полностью совпадает с ним.


Всем доброго времени суток.
Пишу плагин для Лоцмана на Delphi 7, в котором необходимо открыть «Корпоративный справочник Стандартные Изделия v3» и передать наименование выбранного изделия на форму плагина. В примерах справки PartLibAPI.chm указано, что необходимо использовать PARTLibClient_TLB.dcu. Где мне найти этот файл, если в «C:Program FilesASCON» его нет?


Если у вас корпоративный справочник, то , по-умолчанию он ставится в Program FilesASCONPartlib. Соответственно указанная вами библиотека типов получается из в Program FilesASCONPartlibClientsPartlibClient.dll.


Цитата: Cehhby от 13.08.13, 06:59:22
Если у вас корпоративный справочник, то , по-умолчанию он ставится в Program FilesASCONPartlib. Соответственно указанная вами библиотека типов получается из в Program FilesASCONPartlibClientsPartlibClient.dll.

А можно поподробнее как она получается?

Взял пример из PartLibAPI.chm при сборке в Delphi ошибка: файл PartLibClient_TLB.dcu не найден…


Чтобы получить требуемый файл вам надо воспользоваться функцией «Import Type Library» в Delphi (ей на вход — partlibClient.dll). Она находится в либо в меню проекта либо в меню установки компонентов (зависит от версии IDE). С помощью нее сгенерится PartlibClient_TLB.pas и BOSimple_TLB.pas которые надо подрубить к проекту. DCU файлы после этого сгенерятся сами.


Цитата: Cehhby от 02.02.15, 08:36:16
Чтобы получить требуемый файл вам надо воспользоваться функцией «Import Type Library» в Delphi (ей на вход — partlibClient.dll). Она находится в либо в меню проекта либо в меню установки компонентов (зависит от версии IDE). С помощью нее сгенерится PartlibClient_TLB.pas и BOSimple_TLB.pas которые надо подрубить к проекту. DCU файлы после этого сгенерятся сами.

Спасибо, сделал тоже самое из командной строки с помощью implib.exe.

Далее пробую вставить СИ из справочника в сборку.
Вот из примера:


BOPARTLib := CreateOleObject(C_plClassName) as IPARTLIbProvider;
Location := '';
BOPARTLib.Select(false, Location, 0);

aMethodResponse := IBOResponseDisp(BOPARTLib.GetMethod(Location,'КОМПАС-3D'));
iPrt := ksPart(PLInsert3D(BOPARTLib, aMethodResponse, nil) );


Открывается справочник, выбираю СИ-Применить, но в сборку ничего не вставляется (хотя Location получает).

Во первых в справке у GetMethod название метода ‘КОМПАС 3D’ и ‘КОМПАС 2D’ через пробел, а не тире. При таком варианте GetMethod выдает ошибку:  «Critical Errror. GetMethod  Неверные параметры топика» , если написать через тире то нормально отрабатывает, aMethodResponse заполняется (вопрос это ошибка в справке?).
В следующей строке iPrt получает nil (функция PLInsert3D возвращает nil).
Как правильно  вставить СИ в сборку, зная его Location?


  • Форум пользователей ПО АСКОН

  • Профессиональные вопросы

  • Программирование приложений

  • API ЛОЦМАН, плагины

  • SDK PartLib

Sometimes, you can’t remove or delete a file because you don’t have ownership rights to do so, and here comes the obvious question, why don’t I have the right to delete a specific file or folder? The short answer is that your files or folders may have been created in the past when you had a different operating system than the current one, so the files are compatible with that previous version of the operating system but not with the current version, so you must first give ownership through the installed operating system Currently on your device, and only then you can delete any private files with ease, just follow the steps as follows:-

Step 1. Choose the file or folder you wish to delete and right click on it.

Step 2. Select Properties from the context menu, and the file properties window will appear immediately.

Step 3. Go to the “Security” tab, and click on the “Advanced” button.

Advanced security settings for locked file not to be deleted

Step 4. When you go to the advanced security settings window, you will
discover the owner of the file under the name “Owner”.

Step 5. In
some cases, the OS name is written as the owner name, or other times it
appears as “TrustedInstaller”, however, now just click on the “Change”
button next to the owner name.

Change the owner of the file to be able to delete it

Note: TrustedInstaller is a built-in
Windows account responsible for removing and modifying updates and various
other essential components. So if you find the file owner name is
“TrustedInstaller”, it is best not to change or delete it; Because that
makes the file system more unstable, so change the name from
«TrustedInstaller» to something else. If you know exactly what you’re doing,
be careful applying the steps.

Step 6. Inside the “Enter the object name to select” box, enter a new username and press “Check Names” to check whether it is ok or not, finally, click “OK” to save the changes.

Deleting a file is undeletable by changing the primary owner

Step 7. Go back to the advanced security settings and you will notice a checkbox named “Replace owner on subcontainers and objects”, simply tick this checkbox, click “Apply” to save the changes, then “OK”.

Step 8. Now exit the file properties window, and restart your computer.

Step 9. Now open the properties of the file you want to delete again by right-clicking on it, and choose from the “Properties” menu, then go to the Security tab, and then click on “Advanced”.

Step 10. Again, under the “Permission” tab, check the “Replace all child object permission entries with inheritable permission entries from this object” option.

Step 11. Next, click on the Edit button below it, and in the Permission window, select the Full Control option and click on OK.

Now try deleting the file or folder again, this time for sure the file will be deleted without any problem.

Delete Locked files by disabling the antivirus

Antivirus is a
necessity in every computer, antivirus software contains many useful
tools and features that help protect files and folders from any virus or
malicious software, sometimes you will not be able to delete your files,
where there is another possible reason, which is that your Antivirus prevents deleting some files, if you are having trouble deleting your files, you need to check your antivirus software once, even this type of software causes problems and prevents you from deleting files and folders.

Студворк — интернет-сервис помощи студентам

Здравствуйте! При исполнении следующего кода на vb.net vs 2017 на последнем строке вылетает ошибка
System.Accesviolationexception. Кто может помочь разобраться в чем проблема?

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Imports Kompas6API5
Imports KompasAPI7
Imports PARTLibClient
Imports BOSimple
Imports Kompas6Constants3D
Imports System.Runtime.InteropServices
 
 
Public Class Form1
    Declare Function FolderByID Lib "C:Program FilesASCONKOMPAS-3D v17LibsPARTLibClientsPartLibClient.dll" (ByVal identifier As String) As IFolder
    Declare Function PLInsert3D Lib "C:Program FilesASCONKOMPAS-3D v17LibsPARTLibClientsplclient_kompas.dll" (ByVal aPLClient As IPARTLibProvider, ByVal aMethodResponse As IBOResponse, ByVal aPlacement As ksPlacement) As ksPart
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
 
        Dim kompas As Object
        Dim ksdoc As Object
 
        kompas = New Kompas6API5.Application
        kompas.Visible = True
 
        ksdoc = kompas.Document3D
        ksdoc.Create(False, False)
 
        ksdoc.Filename = "C:UsersBaha1990DocumentsVisual Studio 2017ProjectsKompas3D3d files1.a3d"
        ksdoc.UpdateDocumentParam
        ksdoc.Save
 
        Dim aPLClient As BOSimpleProvider
 
        aPLClient = New PARTLibClient.BOSimpleProvider
 
        Dim CD As Object
        CD = aPLClient.CreateCommonDataObj
        CD.InitUserData
        CD.SetFindOptions("3DSolid")
 
 
        Dim identifier As String
        identifier = "A259_151417DFF6474BF6"
        Dim ISF As Object
        ISF = CD.FolderByID(identifier)

По моему скромному мнению по сложности освоения Т-Flex одна из самых сложных программ ( работаю конструктором 23 года), SW намного в понимании проще. И интерфейс у него человечный, и никакими горячими клавишами я вообще не пользюсь, фигню пишите.

Зря Вы так про T-Flex, довольно строгая прога, в отличие от аляпистого SW. Научиться в ней азам не сложнее, чем в любой другой, а глубокое изучение — оно по потребностям, которые у всех немного разные.

Я SW не люблю, и, если уж и загружаю эту прогу, тоже работаю только мышкой. По удобности она, ИМХО, проигрывает другим. Все, кто много в SW работают, советовали изучить горячие клавиши.

Inventor — самая простая в освоении и удобная в использовании, но возможности ограничены. Но, в целом, самый короткий путь от осознания задачи до модели. Да и графическое ядро — самое красивое. Оптимальные версии — 10-11-я, потом были усовершенствования более косметические, нежели функциональные.

Компас — тут надо сначала подумать, что ты будешь делать, желательно с карандашиком и бумагой. Довольно много багов и корявостей. Графическое ядро — простое, «реалистичная» прозрачность моделей гораздо хуже, чем в инвенторе, а иногда это так удобно… Зато подготовка документации самая проработанная.

Ловишь постоянно себя на мысли где искать то чего нет в иконках сверху.

Компас в том виде, в каком он устанавливается, вообще для работы непригоден. Его настраивать надо. Ненастроенный Компас убьёт вашу мышь в 2-3 раза быстрее, реально очень утомительно каждый раз кликать это бестолковое меню слева:)

Настройки Компас сохраняет отдельным файлом, но в каждой старшей версии целесообразно настраивать заново (благо занимает минут 10).

Также удобно настроить саму мышь, назначить боковой кнопке (если есть) клавишу Shift.

В Компасе работаю с 8-й версии.


Изменено 14.12.2011 13:23 пользователем Ervin

Как убрать деморежим в Компасе

Активатор Компас-3D v13

Опубликовал grey — апреля 24, 2013

Инструкция по активации Компас 3D v13 (выход из деморежима):

1. Обьязательно отключить антивирус, потому как антивирус будет блокировать взлом лицензии. Вы же хотите взломать программу, а взломы работают на технологиях вирусов и нацелены на конкретные файлы, остальной системе они НЕ страшны.

2. Установить Компас, а затем дополнительные библиотеки (обязательно!)

AEC — строительная конфигурация

ECAD — приборостроительная конфигурация

MCAD — машиностроительная конфигурация;

3. Запустить KOMPAS-3D_V13_antiHASP_v1.0.exe (на Win7/Vista/Win8 от имени администратора).

Нажать на кнопку Применить.

Патч может автоматически найти файлы для пропатчивания, но не всегда

Если этого не случилось — найти

вручную файлы для пропатчивания:

C:/Program Files/ASCON/KOMPAS-3D V13/Libs/Materials/Materials.exe

C:/Program Files/ASCON/KOMPAS-3D V13/Libs/Shaft/Belt_VeeW.dll

C:/Program Files/ASCON/KOMPAS-3D V13/Libs/PartLib/Clients/PARTLibClient.dll

C:/Program Files/ASCON/KOMPAS-3D V13/Libs/Spring/SPR_CCS.dll

C:/Program Files/ASCON/KOMPAS-3D V13/Libs/Spring/spr_ces.dll

C:/Program Files/ASCON/KOMPAS-3D V13/BIN/kSys2.DLL;

4. Затем запустить программу, зайти в Сервис -> Параметры -> Общие -> Управление системой -> поставить галочку «Автоматически получать лицензию на работу в Компас 3D». Перезапустить. Удачи.

У многих стоит 64-битная система, а патч, как известно, не может поменять в себе пути к папке установки программы, поэтому советую сразу после установки Компаса и  машиностроительной/архитектурной конфигурации сделать следующее:

-Переместите папку ASCON из C:/Program Files/ в папку C:/Program Files(x86)/

-Примените патч

-Переместите папку ASCON обратно в C:/Program Files/

Источник:

greysoft.ru

Категория:

Программное обеспечение

Похожие статьи:

Хотите узнать, как чертить в Компасе? Освоить моделирование в Компасе?

Как убрать в r2 online exception и другие ошибки?

Как убрать прыщи с лица

Как убрать ярлыки с рабочего стола? Важные команды

Понравилась статья? Поделить с друзьями:
  • Paragon ошибка ввода вывода на жестком диске
  • Paragon выдает ошибку
  • Partition basic data guid ошибка
  • Particle filter bmw расшифровка ошибки
  • Paragon the overprime нажмите на экран ошибка