Шаблон для автоматического создания заполненного чертежа из 3д модели

Автор Grinka, 07.03.19, 09:51:23

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

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

Grinka

Здравствуйте! Подскажите пожалуйста, есть-ли такая функция, что бы при создании чертежа из 3д модели, чертеж бы открывался в шаблоне с заполненной основной надписью. (много чертежей приходится изготавливать и каждый раз приходится заполнять осн. надпись). Конечно настроил я заполнение в 2 клика, но не-то это. Осн. надпись должна быть полностью заполнена.
Заранее спасибо.


Р.S. Поздравьте с юбилеем! 200-е сообщение!

ТрындецЪ

Создайте своё оформление документа и установите его по умолчанию для первого листа новых документов.
С юбилеем! :*:
+ Благодарностей: 1

Grinka


Grinka

Цитата: ТрындецЪ от 07.03.19, 10:15:01
Создайте своё оформление документа и установите его по умолчанию для первого листа новых документов.
С юбилеем! :*:

Ой ой! Не видит мой шаблон при выборе оформления  :`(

ТрындецЪ

Цитата: Grinka от 07.03.19, 10:50:44
Ой ой! Не видит мой шаблон при выборе оформления  :`(
Я про шаблоны ничего и не писал. Я писал про оформление. Сначала создаёте свою основную надпись (ОН) на базе стандартной, затем своё оформление, с использованием созданной ОН.


Grinka


Эдуард

Цитата: Grinka от 07.03.19, 09:51:23
... (много чертежей приходится изготавливать и каждый раз приходится заполнять осн. надпись). Конечно настроил я заполнение в 2 клика, но не-то это. Осн. надпись должна быть полностью заполнена...


Р.S. Поздравьте с юбилеем! 200-е сообщение!

Тоже поздравляю.
Есть ещё один проверенный вариант. Работает довольно быстро.

Основную надпись в чертеже (фамилии, предприятие и неуказанную шероховатость) заполняет примерно за 4 секунды, а основную надпись в спецификации (фамилии, предприятие) заполняет за 1 секунду.
   Для этого нужно установить КОМПАС-МАКРО, подключить его как приложение через конфигуратор и записать два макроса - один для заполнения основной надписи чертежа, а другой спецификации.
   Потом нужно будет только один раз указать пути к этим макросам и выбирать их на выполнение.

Grinka


ТрындецЪ

Цитата: Эдуард от 07.03.19, 14:03:21
записать два макроса - один для заполнения основной надписи чертежа, а другой спецификации.
Вот код макроса, который штамп чертежа и спецификации заполняет:
# -*- coding: cp1251 -*-
# Заполнение штампа активного чертежа или спецификации

## НАСТРОЙКИ ################
razrab = 'Иванов'
prov = 'Петров'
t_kontr = 'Сидоров'
n_kontr = 'Васильев'
utv = 'Николаев'
organizaciya = 'АО "АСКОН"'
############################

import pythoncom, time
from win32com.client import Dispatch, gencache

#  Подключим описание интерфейсов API5
kompas6_api5_module = gencache.EnsureModule("{0422828C-F174-495E-AC5D-D31014DBBE87}", 0, 1, 0)
iKompasObject = kompas6_api5_module.KompasObject(Dispatch("Kompas.Application.5")._oleobj_.QueryInterface(kompas6_api5_module.KompasObject.CLSID, pythoncom.IID_IDispatch))
#  Подключим описание интерфейсов API7
module =  gencache.EnsureModule("{69AC2981-37C0-4379-84FD-5DD2F3C0A520}", 0, 1, 0)
api = module.IKompasAPIObject(Dispatch("Kompas.Application.7")._oleobj_.QueryInterface(module.IKompasAPIObject.CLSID, pythoncom.IID_IDispatch))
iApplication = api.Application


Shtamp = {130: time.strftime("%d.%m.%y"), 110: razrab, 111: prov,  112: t_kontr, 114: n_kontr, 115: utv, 9: organizaciya}

doc = iKompasObject.ksGetDocumentType(0)


if doc in (1, 2):
    iDoc = iKompasObject.ActiveDocument2D()
elif doc == 4:
    iDoc = iKompasObject.SpcActiveDocument()
else:
    exit()

iStamp = iDoc.GetStamp()
iStamp.ksOpenStamp()

for key in Shtamp:
    iStamp.ksColumnNumber(key)
    iTextLineParam = kompas6_api5_module.ksTextLineParam(iKompasObject.GetParamStruct(29))# ko_TextLineParam
    iTextLineParam.Init()

    iTextItemArray = kompas6_api5_module.ksDynamicArray(iKompasObject.GetDynamicArray(4))

    iTextItemParam = kompas6_api5_module.ksTextItemParam(iKompasObject.GetParamStruct(31))# ko_TextItemParam
    iTextItemParam.Init()
    iTextItemParam.s = Shtamp[key]
    iTextItemArray.ksAddArrayItem(-1, iTextItemParam)
    iTextLineParam.SetTextItemArr(iTextItemArray)
    iStamp.ksTextLine(iTextLineParam)

iStamp.ksCloseStamp()
iApplication.MessageBoxEx( 'Штамп заполнен', None, 64)