Цвет текущего элемента 3d.

Автор biomotor, 26.06.20, 14:42:20

« предыдущая - следующая »

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

biomotor

Здравствуйте!

Мне нужно сделать макрос на изменение цвета (на конкретный) выделенного/ых элемента/ов 3D (опер. выдавливания, вырезания, кинематич., фаска, радиус и т.д.)
подсобите пожалуйста.  ::)

Slaviation

Добрый день.
Запустите запись макроса в Компас-макро и измените цвет вручную. Получите желаемое.

biomotor

27.06.20, 11:01:24 #2 Последнее редактирование: 27.06.20, 13:40:58 от biomotor
в общем нужно так...
Screenshot_4.jpg

Запись макроса не срабатвает!

biomotor

получилось изменить цвет для всей детали:

# -*- coding: utf-8 -*-
#|123321
import pythoncom
from win32com.client import Dispatch, gencache
import LDefin2D
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()
iPart = iDocument3D.GetPart(kompas6_constants_3d.pTop_Part)
iPart.SetAdvancedColor(14535612, 0.5, 0.6, 0.8, 0.8, 1, 0.5);
iPart.Update();

А мне нужно для выделенных элементов.

biomotor

Так же, мое внимание привлекли:

GetSelectionMng - Получить указатель на интерфейс менеджера выделенных объектов
и
Менеджер выделенных объектов (Интерфейсы ksSelectionMng, ISelectionMng)

но как их применить не пойму. ((

Sabahs

Получить от них массив выделенных объектов ISelectionManager.SelectedObjects и менять их цвет.

biomotor

Цитата: Sabahs от 27.06.20, 14:06:36Получить от них массив выделенных объектов ISelectionManager.SelectedObjects и менять их цвет.

подскажите в какое место запихнуть "ISelectionManager.SelectedObjects" ?
цикл нужно создавать, или менять целиком у всех выделенных?

Вират Лакх

запихнуть "ISelectionManager.SelectedObjects" после получения интерфейса 3D-документа и получения от него ISelectionManager
Циклом перебрать объекты полученного массива. У каждого задать то, что нужно.

Makar

import pythoncom
from win32com.client import Dispatch, gencache


#  Подключим описание интерфейсов API5
KAPI = gencache.EnsureModule("{0422828C-F174-495E-AC5D-D31014DBBE87}", 0, 1, 0)
iKompasObject = KAPI.KompasObject(Dispatch("Kompas.Application.5")._oleobj_.QueryInterface(KAPI.KompasObject.CLSID, pythoncom.IID_IDispatch))
iDocument3D = iKompasObject.ActiveDocument3D()

#*********************************************#
# Преобразуем RGB в OLE
# RGB
red = 222
green = 83
blue = 6

# RGB to OLE
OLE = red + (green * 256) + (blue * 256 * 256)
#*********************************************#

SlcMan = iDocument3D.GetSelectionMng()
Count = SlcMan.GetCount()
n=0

Part0 = SlcMan.GetObjectByIndex (0)
ColorPart0 = Part0.ColorParam()
color0 = ColorPart0.color
for n in range(0,Count,1):
  Part = SlcMan.GetObjectByIndex (n)
  ColorPart = Part.ColorParam()
  color = ColorPart.color
  ColorPart.color = OLE
  Part.Update()
SlcMan.UnselectAll ()

Умка

Можно сделать скрипт для Python 2 с возможностью выбора цвета