Макрос параллельной вспомогательной с определенным размером

Автор biomotor, 08.09.22, 09:42:39

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

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

biomotor

Нужен макрос, чтобы считывал масштаб текущего вида чертежа, включал параллельную вспомогательную, и устанавливал в нее значение по заранее созданному правилу.
Например Масштаб 1:1 - параллельность 10, 1:2 - 20, 2:1 - 5.
Есть ли возможность такое реализовать? Как?

msvteh

# -*- coding: cp1251 -*-
import pythoncom
from win32com.client import Dispatch, gencache
def Main():
    KAPI = gencache.EnsureModule("{0422828C-F174-495E-AC5D-D31014DBBE87}", 0, 1, 0)
    iKompasObject_5 = KAPI.KompasObject(Dispatch("Kompas.Application.5")._oleobj_.QueryInterface(KAPI.KompasObject.CLSID, pythoncom.IID_IDispatch))
    iKompasObject_7 = Dispatch('KOMPAS.Application.7')
    iDocument2D = iKompasObject_7.ActiveDocument # получить текущий документ
    iLayoutSheets = iDocument2D.LayoutSheets
    iLayoutSheet = iLayoutSheets.Item(0) # Оформление первого листа
    iStamp = iLayoutSheet.Stamp
    iTetx = iStamp.Text( 6 ) # Ячейка масштаба
    iTextLine = iTetx.TextLines[0] # Первая строка текста
    str = iTextLine.Str # масштаб
    print str
    '''
    тут должен быть код:
    определить объект курсором относительно которого строиться линия,
    получить координаты объекта, угол объекта......
    '''   
    # какие то условия построения   
    if str == '1:2':
        print u'тут условие параллельность 20'
        x=50
        y=50
        z=45
    elif str == '1:1':
        print u'тут условие параллельность 10'
        x=10
        y=10
        z=60
    elif str == '2:1':
        print u'тут условие параллельность 5'
        x=100
        y=100
        z=30
    #получим указатель на интерфейс графического документа ksDocument2D
    ksDocument2D = iKompasObject_5.ActiveDocument2D()
    # построение линии
    ksDocument2D.ksLine(x, y, z)
if __name__ == "__main__":
    Main()

biomotor

Цитата: msvteh от 09.09.22, 00:33:08# -*- coding: cp1251 -*-
import pythoncom
from win32com.client import Dispatch, gencache
def Main():
    KAPI = gencache.EnsureModule("{0422828C-F174-495E-AC5D-D31014DBBE87}", 0, 1, 0)
    iKompasObject_5 = KAPI.KompasObject(Dispatch("Kompas.Application.5")._oleobj_.QueryInterface(KAPI.KompasObject.CLSID, pythoncom.IID_IDispatch))
    iKompasObject_7 = Dispatch('KOMPAS.Application.7')
    iDocument2D = iKompasObject_7.ActiveDocument # получить текущий документ
    iLayoutSheets = iDocument2D.LayoutSheets
    iLayoutSheet = iLayoutSheets.Item(0) # Оформление первого листа
    iStamp = iLayoutSheet.Stamp
    iTetx = iStamp.Text( 6 ) # Ячейка масштаба
    iTextLine = iTetx.TextLines[0] # Первая строка текста
    str = iTextLine.Str # масштаб
    print str
    '''
    тут должен быть код:
    определить объект курсором относительно которого строиться линия,
    получить координаты объекта, угол объекта......
    '''   
    # какие то условия построения   
    if str == '1:2':
        print u'тут условие параллельность 20'
        x=50
        y=50
        z=45
    elif str == '1:1':
        print u'тут условие параллельность 10'
        x=10
        y=10
        z=60
    elif str == '2:1':
        print u'тут условие параллельность 5'
        x=100
        y=100
        z=30
    #получим указатель на интерфейс графического документа ksDocument2D
    ksDocument2D = iKompasObject_5.ActiveDocument2D()
    # построение линии
    ksDocument2D.ksLine(x, y, z)
if __name__ == "__main__":
    Main()
Спасибо и на этом!