Создание библиотек на PYTHON

Автор shell, 28.03.05, 10:06:33

« предыдущая - следующая »

0 Пользователей и 1 гость просматривают эту тему.

shell

Хотелось бы узнать, кто-нибудь пробовал рабоать с pic10 - модулями для работы с КОМПАСом на Питоне?  Имеющаяся документация весьма скупа. Заранее благодарен!

SlАviАТiоn

ЦитироватьХотелось бы узнать, кто-нибудь пробовал рабоать с pic10 - модулями для работы с КОМПАСом на Питоне?  Имеющаяся документация весьма скупа. Заранее благодарен!

C pic10 не пробовал, а с win32com.client пробовал:
kompas = win32com.client.Dispatch("Kompas.Application.5") и т.д.
Но тут не работают методы интерфейсов, в которых параметры передаются как указатели (к примеру ksStamp::ksGetStampColumnText(long* numb и др). А остальные работают на ура.

chelkar

Вот же передаю объект по указателю в эквидистанту.
PIK10

# coding: cp1251

import Kompas6API5, LDefin2D
import func2d

kompas, doc2d = start2d()

POINT0 = (50, 25)

ellipse_params = kompas.GetParamStruct(LDefin2D.ko_EllipseParam)
ellipse_params.xc, ellipse_params.yc = POINT0
ellipse_params.A = 23
ellipse_params.B = 13
ellipse_params.angle = 0.0
ellipse_params.style = 1
var0 = doc2d.ksEllipse(ellipse_params)

params = kompas.GetParamStruct(LDefin2D.ko_EquidParam)
params.geoObj = var0
params.cutMode = True
params.degState = False
params.radLeft = 10.0
params.radRight = 10.0
params.side = 1
params.style = 1
doc2d.ksEquidistant(params)


333

Получение текста из ячейки штампа в PYTHON-е выглядит так:
numb = None
iArr,numb = iStamp.ksGetStampColumnText(numb)

а вот так Placement
  j,x,y,ang = doc2d.ksPlacement(None, x, y, ang, iRub)

LeоS

ЦитироватьПолучение текста из ячейки штампа в PYTHON-е выглядит так:
numb = None
iArr,numb = iStamp.ksGetStampColumnText(numb)

а вот так Placement
  j,x,y,ang = doc2d.ksPlacement(None, x, y, ang, iRub)

A кто-нибудь пробовал подобное на VBScript?
У меня никак не получается эту функцию вызвать.

Beco

>>> #ksContrl
>>> import Kompas6API5, LDefin2D
>>> from piksupport import _start2d as start2d
>>> Kompas, doc2d = start2d()
>>> doc2d.ksLineSeg(0,50,100,50,1)
210566480
>>>

Spas

Приведите пожалуйста рабочий пример с использованием iStamp.ksGetStampColumnText() на python

Slaviation

В прицепе

Вират Лакх

Тему https://forum.ascon.ru/index.php/topic,31335.0.html видел. На компас 16.1 не хочет подключаться.
Как сделать, чтобы макрос на python выполнялся вместе с запуском Компас?
Сделать прикладную библиотеку AddIn и зарегать её в реестре?
Эта библиотека должна быть dll или rtw или даже exe?
Можно из pyw сделать exe и переименовать в dll? Но компас выдаст Ошибка подключения библиотеки такой-то. Почему?
Потому что ExternalRunCommand надо в ней прописать?
В СКД есть Пример простейшей программы в среде VB, оформленной в виде ActiveX библиотеки КОМПАС (куда потом этот код, чтобы оно стало ActiveX библиотекой? Можно же аналогичное написать на python, а дальше что с этим делать?):

Dim iKompasObject As Object 'KompasObject
Dim iDocument2D As Object 'ksDocument2D
Public Function GetLibraryName() As String
GetLibraryName = "Самая простая библиотека"
End Function
Public Sub ExternalRunCommand(ByVal command As Integer, ByVal mode As Integer, ByVal Kompas As Object)
Set iKompasObject = Kompas
If iKompasObject Is Nothing Then
Exit Sub
End If
Set iDocument2D = iKompasObject.ActiveDocument2D
If iDocument2D Is Nothing Then
Exit Sub
End If
iKompasObject.ksMessage "Строим отрезок!"
iDocument2D.ksLineSeg 10, 10, 100, 100, 1 ' x1, y1, x2, y2, тип линии - основная
End Sub

Функция ExternalRunCommand - аналог функции LibraryEntry. Ее наличие обязательно, так как именно ему передает управление КОМПАС при обращении к библиотеке. В дан­ном случае она обеспечивает выдачу сообщения и построение одного единственного объекта чертежа - отрезка.