• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Программирование на Python

Автор bot_on_war3, 09.04.19, 21:38:05

« назад - далее »

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

bot_on_war3

Помогите. Закопался, вторая неделя, а я никак не могу провести касательные
# первый круг
x1 = 100
y1 = 100
r1 = 50
# второй круг
x2 = 0
y2 = 0
r2 = 20
iDocument2D.ksCircle(x1, y1, r1, 1)
iDocument2D.ksCircle(x2, y2, r2, 1)
TAN = KAPI.ksTAN(kompas_object.GetParamStruct(LDefin2D.ko_TAN))
KAPI.ksMathematic2D.ksTanCircleCircle(iKompMath, x1, y1, r1, x2, y2, r2, TAN)
for i in range(4):
    iDocument2D.ksLineSeg(TAN.x1, TAN.y1, TAN.x2, TAN.y2, 1)

DesignЯR

в файле "SDK\Include\libTool.pas" четко написано
// Экспортный номер - 158 kAPI2D5.dll
//-------------------------------------------------------------------------------
//  Функция определяет точки касания прямых к двум окружностям.
//  TAN содержит координаты двух точек касания, и определяет одну касательную
//  прямую. Касательных прямых может быть от 0 до 4.
//  Функция возвращает количество возможных  касательных прямых.
//-------------------------------------------------------------------------------
function TanCircleCircle( xc1, yc1,                    //центр  1-ой окружности
                          radius1,                     //радиус 1-ой  окружности
                          xc2, yc2,                    //центр  2-ой окружности
                          radius2  : Double;           //радиус 2-ой  окружности
                          Var tang : TAN4 ) : Integer; //массив касательных отрезков
                          stdcall;

в файле "SDK\Include\ltDefine.pas"  написано
//-------------------------------------------------------------------------------
//структура параметров для расcчета касаний       
// ---
TAN = record
x1, y1, x2, y2 :  Double ;  //координаты точек касания
end;
//-------------------------------------------------------------------------------
//
// ---
TAN4 = Array[0..4] of TAN;
Я же код уже присылал там четко написано
for (int i = 0; i < 4; i++)   {Doc2D.ksLineSeg(tan4.x1[i], tan4.y1[i], tan4.x2[i], tan4.y2[i], 2); }
-  работаем с массивом
    iDocument2D.ksLineSeg(TAN.x1[i], TAN.y1[i], TAN.x2[i], TAN.y2[i[, 1)

bot_on_war3

Это тебе всё очевидно, а я ничего не пойму. У меня пишет такую ошибку TypeError: 'method' object is not subscriptable

ТрындецЪ

# -*- coding: cp1251 -*-

import pythoncom
from win32com.client import Dispatch, gencache

kompas6_api5_module = gencache.EnsureModule("{0422828C-F174-495E-AC5D-D31014DBBE87}", 0, 1, 0)
kompas_object = kompas6_api5_module.KompasObject(Dispatch("Kompas.Application.5")._oleobj_.QueryInterface(kompas6_api5_module.KompasObject.CLSID, pythoncom.IID_IDispatch))

iDocument2D = kompas_object.ActiveDocument2D()

# первый круг
x1 = 100
y1 = 100
r1 = 50
# второй круг
x2 = 0
y2 = 0
r2 = 20

iDocument2D.ksCircle(x1, y1, r1, 1)
iDocument2D.ksCircle(x2, y2, r2, 1)

ksTAN = kompas_object.GetParamStruct (40)
ksMathematic2D = kompas_object.GetMathematic2D()

koord = ksMathematic2D.ksTanCircleCircle( x1, y1, r1, x2, y2, r2, ksTAN)

for i in range(4):
    iDocument2D.ksLineSeg(ksTAN.x1(i), ksTAN.y1(i), ksTAN.x2(i), ksTAN.y2(i), 1)