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

Автор 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)