Перейти к публикации

У Компаса есть API, если да, то что он из себя представляет?


Рекомендованные сообщения



UnPinned posts
9 минут назад, TBC сказал:

Вопрос в заголовке господа.

есть

представляет из себя то же самое, что и API в других САПР - набор функций, интерфейсов и пр.

см. https://forum.ascon.ru/index.php?board=4.0

 

 

Ссылка на сообщение
Поделиться на других сайтах

Спасибо!
Пожалуй проще будет заказать приложение, которой будет записывать в файл

диаметр простого ролика, его длину и радиус слева, радиус справа. Сколько будет стоить такая простая, программа? 

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, TBC сказал:

Спасибо!
Пожалуй проще будет заказать приложение, которой будет записывать в файл

диаметр простого ролика, его длину и радиус слева, радиус справа. Сколько будет стоить такая простая, программа? 

Все на самообслуживании.

 

Включается рекордер, записываются построения.

 

Для универсальности можно включить школьную алгебру, вместо цифр поставить переменные.

Это уже будет параметризация.

 

Тут уже напрашивается цикл для управления параметризацией.


 

FeKeZLMjV88RGB3wfviwJRRKgcTc8UW6d5ohl4A7

 

Скрытый текст

# -*- coding: utf-8 -*-
#|ccc

import pythoncom
from win32com.client import Dispatch, gencache

import LDefin2D
import MiscellaneousHelpers as MH

#  Подключим константы API Компас
kompas6_constants = gencache.EnsureModule("{75C9F5D0-B5B8-4526-8681-9903C567D2ED}", 0, 1, 0).constants
kompas6_constants_3d = gencache.EnsureModule("{2CAF168C-7961-4B90-9DA2-701419BEEFE3}", 0, 1, 0).constants

#  Подключим описание интерфейсов API5
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))
MH.iKompasObject  = kompas_object

#  Подключим описание интерфейсов API7
kompas_api7_module = gencache.EnsureModule("{69AC2981-37C0-4379-84FD-5DD2F3C0A520}", 0, 1, 0)
application = kompas_api7_module.IApplication(Dispatch("Kompas.Application.7")._oleobj_.QueryInterface(kompas_api7_module.IApplication.CLSID, pythoncom.IID_IDispatch))
MH.iApplication  = application


Documents = application.Documents
#  Получим активный документ
kompas_document = application.ActiveDocument
kompas_document_3d = kompas_api7_module.IKompasDocument3D(kompas_document)
iDocument3D = kompas_object.ActiveDocument3D()


n=0
def skrin():

    global n
    n=n+1
    import time
    time.sleep(0.3)

    import win32gui, win32ui, win32con, win32api
    hwin = win32gui.GetDesktopWindow()

  #  width = win32api.GetSystemMetrics(win32con.SM_CXVIRTUALSCREEN)
  #  print(width)
    width =  1300

  #  height = win32api.GetSystemMetrics(win32con.SM_CYVIRTUALSCREEN)
  #  print(height)
    height = 700


  #  left = win32api.GetSystemMetrics(win32con.SM_XVIRTUALSCREEN)
  #  print(left)
    left=370


  #  top = win32api.GetSystemMetrics(win32con.SM_YVIRTUALSCREEN)
  #  print(top)
    top=180


    hwindc = win32gui.GetWindowDC(hwin)
    srcdc = win32ui.CreateDCFromHandle(hwindc)
    memdc = srcdc.CreateCompatibleDC()
    bmp = win32ui.CreateBitmap()
    bmp.CreateCompatibleBitmap(srcdc, width, height)
    memdc.SelectObject(bmp)
    memdc.BitBlt((0, 0), (width, height), srcdc, (left, top), win32con.SRCCOPY)
    bmp.SaveBitmapFile(memdc, str(n)+'  screenshot.bmp')


def cil(dx,dy,dia,dl,r1,r2):
    print(dia,dl,r1,r2)

    iPart7 = kompas_document_3d.TopPart
    iPart = iDocument3D.GetPart(kompas6_constants_3d.pTop_Part)

    iSketch = iPart.NewEntity(kompas6_constants_3d.o3d_sketch)
    iDefinition = iSketch.GetDefinition()
    iPlane = iPart.GetDefaultEntity(kompas6_constants_3d.o3d_planeYOZ)
    iDefinition.SetPlane(iPlane)
    iSketch.Create()
    iDocument2D = iDefinition.BeginEdit()
    kompas_document_2d = kompas_api7_module.IKompasDocument2D(kompas_document)
    iDocument2D = kompas_object.ActiveDocument2D()

    obj = iDocument2D.ksLineSeg(0+dx,   dia+dy,     dl+dx, dia+dy, 1)
    obj = iDocument2D.ksLineSeg(0+dx,   0+dy,       194+dx, 0+dy, 3)
    iDefinition.EndEdit()
    iPart7 = kompas_document_3d.TopPart
    iPart = iDocument3D.GetPart(kompas6_constants_3d.pTop_Part)

    obj = iPart.NewEntity(kompas6_constants_3d.o3d_bossRotated)
    iDefinition = obj.GetDefinition()
    iCollection = iPart.EntityCollection(kompas6_constants_3d.o3d_edge)
    iCollection.SelectByPoint(0, -dia-dy, -dl/2-dx)
    iEdge = iCollection.Last()
    iEdgeDefinition = iEdge.GetDefinition()
    iSketch = iEdgeDefinition.GetOwnerEntity()
    iDefinition.SetSketch(iSketch)
    iRotatedParam = iDefinition.RotatedParam()
    iRotatedParam.direction = kompas6_constants_3d.dtNormal
    iRotatedParam.angleNormal = 360
    iRotatedParam.angleReverse = 0
    iRotatedParam.toroidShape = False
    iRotated = kompas_object.TransferInterface(obj, kompas6_constants.ksAPI7Dual, 0)
    iCollection = iPart.EntityCollection(kompas6_constants_3d.o3d_edge)
    iCollection.SelectByPoint(0,  0-dy,-97-dx)
    iEdge = iCollection.Last()
    iRotatedAxis = kompas_object.TransferInterface(iEdge, kompas6_constants.ksAPI7Dual, 0)
    iRotated.Axis = iRotatedAxis
    iThinParam = iDefinition.ThinParam()
    iThinParam.thin = False
    obj.name = "Элемент вращения:1"
    iColorParam = obj.ColorParam()
    iColorParam.ambient = 0.5
    iColorParam.color = 9474192
    iColorParam.diffuse = 0.6
    iColorParam.emission = 0.5
    iColorParam.shininess = 0.8
    iColorParam.specularity = 0.8
    iColorParam.transparency = 1
    obj.Create()
    skrin()

    iPart7 = kompas_document_3d.TopPart
    iPart = iDocument3D.GetPart(kompas6_constants_3d.pTop_Part)

    obj = iPart.NewEntity(kompas6_constants_3d.o3d_fillet)
    iDefinition = obj.GetDefinition()
    iDefinition.radius = r1
    iDefinition.tangent = True
    iArray = iDefinition.array()
    iCollection = iPart.EntityCollection(kompas6_constants_3d.o3d_edge)
    iCollection.SelectByPoint(0, dia-dy, -dx)
    iEdge = iCollection.Last()
    iArray.Add(iEdge)
    obj.name = "Скругление:1"
    iColorParam = obj.ColorParam()
    iColorParam.ambient = 0.5
    iColorParam.color = 9474192
    iColorParam.diffuse = 0.6
    iColorParam.emission = 0.5
    iColorParam.shininess = 0.8
    iColorParam.specularity = 0.8
    iColorParam.transparency = 1
    obj.Create()
    skrin()


    iPart7 = kompas_document_3d.TopPart
    iPart = iDocument3D.GetPart(kompas6_constants_3d.pTop_Part)

    obj = iPart.NewEntity(kompas6_constants_3d.o3d_fillet)
    iDefinition = obj.GetDefinition()
    iDefinition.radius = r2
    iDefinition.tangent = True
    iArray = iDefinition.array()
    iCollection = iPart.EntityCollection(kompas6_constants_3d.o3d_edge)
    iCollection.SelectByPoint(0, dia-dy, -dl-dx)
    iEdge = iCollection.Last()
    iArray.Add(iEdge)
    obj.name = "Скругление:2"
    iColorParam = obj.ColorParam()
    iColorParam.ambient = 0.5
    iColorParam.color = 9474192
    iColorParam.diffuse = 0.6
    iColorParam.emission = 0.5
    iColorParam.shininess = 0.8
    iColorParam.specularity = 0.8
    iColorParam.transparency = 1
    obj.Create()

    skrin()

dia=178
dl=169
r1=11
r2=22


#cil(0,0,    dia,dl,     r1,r2)

r1=22
r2=33


#cil(211,311, dia,dl,     r1,r2)

for smm in range(0,1411,311):
    cil(smm,smm, dia+smm/5,dl+smm/10,     22+smm/15,33+smm/20)
 


 

 

Изменено пользователем Vitalij
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...