Запись макроса. Вопрос начинающего.

Автор IgorT, 25.10.14, 14:08:09

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

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

IgorT

У Библиотеке КОМПАС-Макро есть пункт "Начать запись".
Пытаюсь им воспользоваться. Нажимаю "Начать запись".
В дереве сборки задаю Обозначение и Наименование в свойствах детали.
Нажимаю "Остановить запись"
Ожидаю увидеть в  коде макроса  последовательность моих действий по заданию свойств детали, а там:

# -*- coding: cp1251 -*-
#|tst

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

iDocument3D = iKompasObject.ActiveDocument3D()

iDocument = iApplication.ActiveDocument
iKompasDocument3D = KAPI7.IKompasDocument3D(iDocument)


Это так и должно быть? А где код переименования свойств? Как его получить?
Прошу не бить ногами, даже если это очень глупый вопрос. :)

IgorT

Какое назначение файлов *.pym и *.a3m?
Какие у них отличия?

Slaviation

ЦитироватьОжидаю увидеть в  коде макроса  последовательность моих действий по заданию свойств детали
Процессы редактирования уже существующих объектов библиотекой КОМПАС-Макро не поддерживаются.
В макрос попадут только процессы создания новых объектов.

ЦитироватьКакое назначение файлов *.pym и *.a3m?
Макрос с расширением pym можно запустить, когда в КОМПАС нет открытых документов. Макрос с расширением a3m можно запустить на активной сборке.

IgorT

Спасибо!
Возможно ли изменить наименование в свойствах детали средствами макроса?


IgorT

#5
У меня Pyhton Компаса не корректно показывает русские буквы. Это так должно быть? Или у меня что-то не так?
Win 7/64, Компас 14 SP2 32


Должен ли работать такой макрос:

print("!")
input ("\n *")

в Компасе?


MaxCraft

Добрый день, не умею программировать, почему то ругается на эту  строчку
 Variable.value = 55

Ошибка вылетает:

AttributeError: 'NoneType' object has no attribute 'value'

Код выкладываю ниже:
# -*- coding: utf-8 -*-
#|Деталь


import pythoncom
from win32com.client import Dispatch, gencache

import LDefin2D
import LDefin3D
import ksConstants as CONST2D7
import ksConstants3D as CONST3D7
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()

#  Создаем новый документ
#kompas_document = Documents.AddWithDefaultSettings(kompas6_constants.ksDocumentPart, True)

#kompas_document_3d = kompas_api7_module.IKompasDocument3D(kompas_document)
iDocument3D = kompas_object.ActiveDocument3D()

#Получаем интерфейс компонента
iPart = iDocument3D.GetPart(LDefin3D.pTop_Part)

#Получаем коллекцию внешних переменных
VariableCollection = iPart.VariableCollection()

#обновляем коллекцию внешних переменных
VariableCollection.refresh()

#Получаем интерфейс переменной по её имени
Variable = VariableCollection.GetByName('v19',True,True) # 'А' - имя

#Задаём новое значение переменной
Variable.value = 55

#Перестраиваем модель
iPart.RebuildModel()


SergNLMK

ЦитироватьДобрый день, не умею программировать, почему то ругается на эту  строчку
 Variable.value = 55

Приветствую!
Чтобы заработало, нужно создать внешнюю переменную в чертеже. Ругается потому что не видит внешних переменных.
В разделе "Переменные" нужно присвоить новое имя переменной в столбце "Выражение". Переменная появится в верхней строке. После чего выделить эту строку и задать ей свойство "Внешняя".
wnesh.jpg
wnesh2.jpg
В итоге код должен выглядеть так:
#Получаем интерфейс переменной по её имени
Variable = VariableCollection.GetByName('A',True,True) # 'А' - имя
print(Variable)

#Задаём новое значение переменной
Variable.value = 55