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

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

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

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

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

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

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

Помогите разобраться с оператором iCollection.SelectByPoint

Автор ИванPh, 06.10.21, 22:10:51

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

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

ИванPh

Здравствуйте.
Записал простейший макрос, который рисует на плоскости эскиз прямоугольника, затем операцией "Элемент выдавливания" делает параллелепипед.
При запуске макроса появляется только эскиз, тело не строится. Если закоментировать в макросе строку iCollection.SelectByPoint(0, 60, 0) то все начинает работать как следует.
Вопрос такой за что отвечают данные операторы, почему после их исключения из макроса всё работает, а с ними - нет?

ИванPh

Вот код:

# -*- coding: utf-8 -*-
#|Rectangle

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 = Documents.AddWithDefaultSettings(kompas6_constants.ksDocumentPart, True)

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

iPart7 = kompas_document_3d.TopPart
iPart = iDocument3D.GetPart(kompas6_constants_3d.pTop_Part)

iSketch = iPart.NewEntity(kompas6_constants_3d.o3d_sketch)
iDefinition = iSketch.GetDefinition()
iPlane = iPart.GetDefaultEntity(kompas6_constants_3d.o3d_planeYOZ)
iDefinition.SetPlane(iPlane)
iSketch.Create()
iDocument2D = iDefinition.BeginEdit()
kompas_document_2d = kompas_api7_module.IKompasDocument2D(kompas_document)
iDocument2D = kompas_object.ActiveDocument2D()

obj = iDocument2D.ksLineSeg(-60, -30, 60, -30, 1)
obj = iDocument2D.ksLineSeg(60, -30, 60, 30, 1)
obj = iDocument2D.ksLineSeg(60, 30, -60, 30, 1)
obj = iDocument2D.ksLineSeg(-60, 30, -60, -30, 1)
obj = iDocument2D.ksLineSeg(60, -30, -60, 30, 7)
obj = iDocument2D.ksLineSeg(-60, -30, 60, 30, 7)
obj = iDocument2D.ksPoint(0, 0, 0)
iDefinition.EndEdit()
iPart7 = kompas_document_3d.TopPart
iPart = iDocument3D.GetPart(kompas6_constants_3d.pTop_Part)

obj = iPart.NewEntity(kompas6_constants_3d.o3d_bossExtrusion)
iDefinition = obj.GetDefinition()
iCollection = iPart.EntityCollection(kompas6_constants_3d.o3d_edge)
#iCollection.SelectByPoint(0, 60, 0)
iEdge = iCollection.Last()
iEdgeDefinition = iEdge.GetDefinition()
iSketch = iEdgeDefinition.GetOwnerEntity()
iDefinition.SetSketch(iSketch)
iExtrusionParam = iDefinition.ExtrusionParam()
iExtrusionParam.direction = kompas6_constants_3d.dtNormal
iExtrusionParam.depthNormal = 20
iExtrusionParam.depthReverse = 0
iExtrusionParam.draftOutwardNormal = False
iExtrusionParam.draftOutwardReverse = False
iExtrusionParam.draftValueNormal = 0
iExtrusionParam.draftValueReverse = 0
iExtrusionParam.typeNormal = kompas6_constants_3d.etBlind
iExtrusionParam.typeReverse = kompas6_constants_3d.etBlind
iThinParam = iDefinition.ThinParam()
iThinParam.thin = False
obj.name = "Элемент выдавливания:1"
iColorParam = obj.ColorParam()
iColorParam.ambient = 0.5
iColorParam.color = 9474192
iColorParam.diffuse = 0.6
iColorParam.emission = 0.5
iColorParam.shininess = 0.8
iColorParam.specularity = 0.8
iColorParam.transparency = 1
obj.Create()

ИванPh

В справке SelectByPoint описан как "Исключить из массива все объекты, не содержащие точку с заданными координатами", но мне это не помогло.

p3452

Не проверял, но, может быть в этом причина:
SelectByPoint.png

ИванPh