Jump to content

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


Recommended Posts



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

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

есть

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

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

 

 

Link to post
Share on other sites
TBC

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

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

Link to post
Share on other sites
Vitalij
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)
 


 

 

Edited by Vitalij
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.



  • Сообщения

    • syncomp
      Всем доброго дня! Вопрос такой. Требуется профрезеровать канавку под внутреннюю резьбу.  Применяется стратегия "Проекция линии" с одним проходом. Затем траектория копируется с другим припуском несколько раз, таким образом достигается нужная глубина. Все работает. Но мне не нравятся подводы и отводы. Начальные точки установлены в центре заготовки. Требуется обеспечить подвод и отвод сделать в центре заготовки. При одинаковых значениях подводов и отводов  эти точки разные. Для совмещения этих точек в центре заготовки приходится изменять угол. А когда еще добавляются следующие "проходы", то для совмещения приходится корректировать и этот угол. Что делается не так? Почему PowerMill 2021 не делает подвод " 1-вариант Прямо, Длина 10, Угол 90 не делает подвод к траектории ровно на 90 градусов?
    • gudstartup
      А с техподдержкой сименс не связывались думаю они не откажут в помощи? Если с их стороны не будет предложения о сотрудничестве то есть еще один варант(очень непростой) считать сами eprom микросхемы обычным программатором получить из них файл %PCP файл (это текстовый файл образа памяти контроллера STEP5) а затем записать этот файл в 810GA3 и считать из него эту программу при помощи обычного компьютера с RS232С портом. Микросхемы (обычно их 2) в модуле обычно не на колодках поэтому необходимо выпаивать  или сделать переходной разъем для программатора (мы делали разъем чтобы как говорится шкурку не испортить) хотя сейчас можно и паяльной станцией поковыряться!
    • Fedor
      Жаль что этого никто не заметил. Даже вы десятилетия помалкивали. Но ни одной системы базисных функций по ней и не получили.   Но молодец, доказали что все у меня правильно, а то что что-то похожее было раньше, так это мелкий вопрос. Остается  вам найти где опубликовыны и все другие мои результаты   :) 
    • ДОБРЯК
      @Fedor вы второй неугомонный Турта. Который то же что-то изобрел и себе это доказывает.  Эта технология была опубликована в 1964 году.  Никто догадками до вас не получал базисные функции. А в целом клоунада про "новую" технологию построения базисных функций была смешная. Многие даже верили что вы что-то новое изобрели... 
    • Fedor
      Плюс от ваших изысканий в том, что теперь не сомневаетесь в правильности написанного мной. :)  "А до вас якобы функции формы угадывали" так Зенкевич объяснял почему элементы назвали сирендиповыми. Претензии к нему . И Галлагеру. Что не описали в своих книжках как их строить. Статьи иностранные у нас было практически не прочитать в те далекие времена :)
    • ДОБРЯК
      А вот сегодня у вас смешная клоунада. Вот ваша "новая" технология. 
    • Fedor
      Ну и постройте хоть одну систему базисных функций по их формулам :) 
    • MiLloeDelo
      в MDI режиме попробуйте включить C1 S300 M3(4) .......
    • Sokol3
      Здравствуйте, пока не очень... нашел в Красноярске пять программаторов, из них 4ре мертвых,а на том одном мне не смогли помочь считать,или не захотели. Но и дать его мне не могут. Попросил знакомого в Новосибирске и в Москве узнать.. Пока больше нет мыслей, если только в ручную перебирать:(
    • Valerii16
      Спасибо, Всем за помощь! причина была в разьеме USB. В ночную смену разобрали  пульт ,под ним блок управления -попробовали вставить флешку -все работает,В понедельник позвоним в АСУП-пусть меняют разьем.
×
×
  • Create New...