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

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

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

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

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

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

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

[Компас-Макро] Простые диалоги

Автор ilay, 19.03.15, 14:14:37

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

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

Здравствуйте
Не подскажите простые диалоги в СДК или Компасе, для обычного ввода числовых или строковых данных.
Вот наподобие такого примера, который реализован через wxPython

вот подопытное
Цитировать# -*- coding: cp1251 -*-
#|Координат

import Kompas10API5 as KAPI
import Kompas10API7 as KAPI7
import pythoncom
from win32com.client import Dispatch
import LDefin2D
import LDefin3D
import ksConstants as CONST2D7
import ksConstants3D as CONST3D7
import MiscellaneousHelpers as MH

iKompasObject = Dispatch('KOMPAS.Application.5')
iKompasObject = KAPI.KompasObject(iKompasObject)
MH.iKompasObject = iKompasObject

iApplication = Dispatch('KOMPAS.Application.7')
iApplication = KAPI7.IApplication(iApplication)
MH.iApplication = iApplication

iDocument2D = iKompasObject.ActiveDocument2D()
iDocument = iApplication.ActiveDocument
iKompasDocument2D = KAPI7.IKompasDocument2D(iDocument)

import wx

def ask(parent=None, message='', default_value=''):
    dlg = wx.TextEntryDialog(parent, message, defaultValue=default_value)
    dlg.ShowModal()
    result = dlg.GetValue()
    dlg.Destroy()
    return result

# Initialize wx App
app = wx.App()
app.MainLoop()

# Call Dialog
grids = ask(message = 'Размер сетки')
max = int(grids)
if max > 0:   
    obj = iDocument2D.ksLayer(1)
    iLayerParam = KAPI.ksLayerParam(iKompasObject.GetParamStruct(LDefin2D.ko_LayerParam))
    iLayerParam.Init()
    iLayerParam.color = 0
    iLayerParam.name = "KGrid"
    iLayerParam.state = 1
    iDocument2D.ksSetObjParam(obj, iLayerParam, -1)
    iDocument2D.ksLine(0.0, 0.0, 0.0)
    iDocument2D.ksLine(0.0, 0.0, 90.0)
    for i in xrange(0,max,1):
        iDocument2D.ksPoint(i, 0.0, 0)
        iDocument2D.ksPoint(0.0, i, 0)   
        if i > 0:
            iDocument2D.ksLineSeg(-0.1, i, 0.1, i, 1)
            iDocument2D.ksLineSeg(i, -0.1, i, 0.1, 1)   
    for i in xrange(-max,0,1):
        iDocument2D.ksPoint(i, 0.0, 0)
        iDocument2D.ksPoint(0.0, i, 0)
        if i < 0:
            iDocument2D.ksLineSeg(-0.1, i, 0.1, i, 1)
            iDocument2D.ksLineSeg(i, -0.1, i, 0.1, 1)
           
    iDocument2D.ksLayer(0)

Slaviation

KompasObject::ksReadDouble
KompasObject::ksReadInt
KompasObject::ksReadString
+ Благодарностей: 1

ReadDouble
ReadDoubleW
ReadInt
ReadIntW
ReadLong
ReadLongW
ReadString
ReadStringW
PS. Уже опередили.
+ Благодарностей: 1

Обоим вам спасибо
вот результат

# -*- coding: cp1251 -*-
#|Координат

import Kompas10API5 as KAPI
import Kompas10API7 as KAPI7
import pythoncom
from win32com.client import Dispatch
import LDefin2D
import LDefin3D
import ksConstants as CONST2D7
import ksConstants3D as CONST3D7
import MiscellaneousHelpers as MH

iKompasObject = Dispatch('KOMPAS.Application.5')
iKompasObject = KAPI.KompasObject(iKompasObject)
MH.iKompasObject = iKompasObject

iApplication = Dispatch('KOMPAS.Application.7')
iApplication = KAPI7.IApplication(iApplication)
MH.iApplication = iApplication

iDocument2D = iKompasObject.ActiveDocument2D()
iDocument = iApplication.ActiveDocument
iKompasDocument2D = KAPI7.IKompasDocument2D(iDocument)

vm = int()
value = iKompasObject.ksReadInt('Вести размер сетки от 1 до 100', 10, 1, 100, vm)

#iKompasObject.ksMessage(value[1])

if value and value[1] > 0:   
    obj = iDocument2D.ksLayer(1)
    iLayerParam = KAPI.ksLayerParam(iKompasObject.GetParamStruct(LDefin2D.ko_LayerParam))
    iLayerParam.Init()
    iLayerParam.color = 0
    iLayerParam.name = "KGrid"
    iLayerParam.state = 1
    iDocument2D.ksSetObjParam(obj, iLayerParam, -1)
    iDocument2D.ksLine(0.0, 0.0, 0.0)
    iDocument2D.ksLine(0.0, 0.0, 90.0)
    for i in xrange(0,value[1],1):
        iDocument2D.ksPoint(i, 0.0, 0)
        iDocument2D.ksPoint(0.0, i, 0)   
        if i > 0:
            iDocument2D.ksLineSeg(-0.1, i, 0.1, i, 1)
            iDocument2D.ksLineSeg(i, -0.1, i, 0.1, 1)   
    for i in xrange(-value[1],0,1):
        iDocument2D.ksPoint(i, 0.0, 0)
        iDocument2D.ksPoint(0.0, i, 0)
        if i < 0:
            iDocument2D.ksLineSeg(-0.1, i, 0.1, i, 1)
            iDocument2D.ksLineSeg(i, -0.1, i, 0.1, 1)
           
    iDocument2D.ksLayer(0)