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

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

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

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

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

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

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

Модель, чертеж, размеры 3D и 2D ( запись рекордером)

Автор Vitalij Lysanov, 20.09.21, 20:29:05

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

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

Vitalij Lysanov



Модель, чертеж, размеры 3D и 2D ( запись рекордером) 





Задание:

diam=21
L1=33
L2=53





Задание:

diam=21*2
L1=3
L2=65






Полный код:

# -*- coding: utf-8 -*-
#|23R

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()

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

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



def imna():

    import datetime

    now = datetime.datetime.now()
    dd=str(now).replace(":","")
    dd=dd.replace(" ","")
    dd=dd.replace("-","")
    dd=dd.replace(".","")
    dd=dd[-8:]
    dd="D:\\"+dd[:5]

    return(dd)




diam=21
L1=33
L2=53





im=imna()




##________________________________________________________________________________________
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_planeXOZ)
iDefinition.SetPlane(iPlane)
iSketch.Create()
iDocument2D = iDefinition.BeginEdit()
kompas_document_2d = kompas_api7_module.IKompasDocument2D(kompas_document)
iDocument2D = kompas_object.ActiveDocument2D()



obj = iDocument2D.ksCircle(0, 0, diam/2, 1)




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, -21, 0)
iEdge = iCollection.Last()
iEdgeDefinition = iEdge.GetDefinition()
iSketch = iEdgeDefinition.GetOwnerEntity()
iDefinition.SetSketch(iSketch)
iExtrusionParam = iDefinition.ExtrusionParam()
iExtrusionParam.direction = kompas6_constants_3d.dtBoth

iExtrusionParam.depthNormal = L2
iExtrusionParam.depthReverse = L1

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()
##________________________________________________________________________________________



##________________________________________________________________________________________


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

iSymbols3DContainer = iPart7._oleobj_.QueryInterface(kompas_api7_module.ISymbols3DContainer.CLSID, pythoncom.IID_IDispatch)
iSymbols3DContainer = kompas_api7_module.ISymbols3DContainer(iSymbols3DContainer)
iDiametralDimensions3D = iSymbols3DContainer.DiametralDimensions3D
iDiametralDimension3D = iDiametralDimensions3D.Add()
iCollection = iPart.EntityCollection(kompas6_constants_3d.o3d_edge)


iCollection.SelectByPoint(-diam/2, L2, 0)


iEdge = iCollection.Last()
iObject1 = kompas_object.TransferInterface(iEdge, kompas6_constants.ksAPI7Dual, 0)
iDiametralDimension3D.Object1 = iObject1
iDiametralDimension3D.DimensionType = False
iDiametralDimension3D.Angle = 200.506463543731

iDiametralDimension3D.SetCenterPoint(0, L2, 0)

iDiametralDimension3D.SetSurfacePoint(-19.669286203389, 33, 7.35657394778)
iDimensionParams = iDiametralDimension3D._oleobj_.QueryInterface(kompas_api7_module.IDimensionParams.CLSID, pythoncom.IID_IDispatch)
iDimensionParams = kompas_api7_module.IDimensionParams(iDimensionParams)
iDimensionParams.ArrowPos = kompas6_constants.ksDimArrowAuto
iDimensionParams.ArrowType1 = kompas6_constants.ksArrow
iDimensionParams.ArrowType2 = kompas6_constants.ksArrow
iDimensionParams.Gap = True
iDimensionParams.GapValue = 0
iDimensionParams.RemoteLine1 = True
iDimensionParams.RemoteLine2 = True
iDimensionParams.TextBase = kompas6_constants.ksDimBaseP1
iDimensionParams.TextOnLine = kompas6_constants.ksDimTextParallelOnLine
iDimensionParams.TextType = kompas6_constants.ksDimTManual
iDimensionParams.TextPos = 38
iDimensionParams.ShelfDirection = kompas6_constants.ksLSNone
iDimensionParams.ShelfLength = 0
iDimensionParams.ShelfAngle = 0
iDimensionText = iDiametralDimension3D._oleobj_.QueryInterface(kompas_api7_module.IDimensionText.CLSID, pythoncom.IID_IDispatch)
iDimensionText = kompas_api7_module.IDimensionText(iDimensionText)
iDimensionText.Brackets = kompas6_constants.ksDimBracketsOff
iDimensionText.DeviationOn = True
iDimensionText.DeviationType = kompas6_constants.ksDimDeviation
iTextLine = iDimensionText.Prefix
iTextLine.Align = kompas6_constants.ksAlignLeft
iTextLine.IndentedLine = 0
iTextLine.LeftEdge = 0
iTextLine.Level = 0
iTextLine.Numbering = 0
iTextLine.RightEdge = 0
iTextLine.StepAfterParagraph = 0
iTextLine.StepBeforeParagraph = 0
iTextLine.Step = 7
iTextLine.Style = 3
iTextItem = iTextLine.Add()
iTextItem.ItemType = kompas6_constants.ksTItString
iTextItem.NewLine = 1
iTextItem.Str = ""
iTextItem.SymbolFontName = ""
iTextFont = iTextItem._oleobj_.QueryInterface(kompas_api7_module.ITextFont.CLSID, pythoncom.IID_IDispatch)
iTextFont = kompas_api7_module.ITextFont(iTextFont)
iTextFont.Bold = False
iTextFont.Color = 0
iTextFont.FontName = "GOST type A"
iTextFont.Height = 3.5
iTextFont.Italic = True
iTextFont.Underline = False
iTextFont.WidthFactor = 1
iTextItem.Update()

iTextLine = iDimensionText.Suffix
iTextLine.Align = kompas6_constants.ksAlignLeft
iTextLine.IndentedLine = 0
iTextLine.LeftEdge = 0
iTextLine.Level = 0
iTextLine.Numbering = -1
iTextLine.RightEdge = 0
iTextLine.StepAfterParagraph = 0
iTextLine.StepBeforeParagraph = 0
iTextLine.Step = 7
iTextLine.Style = 3
iTextItem = iTextLine.Add()
iTextItem.ItemType = kompas6_constants.ksTItString
iTextItem.NewLine = 0
iTextItem.Str = ""
iTextItem.SymbolFontName = ""
iTextFont = iTextItem._oleobj_.QueryInterface(kompas_api7_module.ITextFont.CLSID, pythoncom.IID_IDispatch)
iTextFont = kompas_api7_module.ITextFont(iTextFont)
iTextFont.Bold = False
iTextFont.Color = 0
iTextFont.FontName = "GOST type A"
iTextFont.Height = 3.5
iTextFont.Italic = True
iTextFont.Underline = False
iTextFont.WidthFactor = 1
iTextItem.Update()

iTextLine = iDimensionText.Unit
iTextLine.Align = kompas6_constants.ksAlignLeft
iTextLine.IndentedLine = 0
iTextLine.LeftEdge = 0
iTextLine.Level = 0
iTextLine.Numbering = 0
iTextLine.RightEdge = 0
iTextLine.StepAfterParagraph = 0
iTextLine.StepBeforeParagraph = 0
iTextLine.Step = 7
iTextLine.Style = 3
iTextItem = iTextLine.Add()
iTextItem.ItemType = kompas6_constants.ksTItString
iTextItem.NewLine = 1
iTextItem.Str = ""
iTextItem.SymbolFontName = ""
iTextFont = iTextItem._oleobj_.QueryInterface(kompas_api7_module.ITextFont.CLSID, pythoncom.IID_IDispatch)
iTextFont = kompas_api7_module.ITextFont(iTextFont)
iTextFont.Bold = False
iTextFont.Color = 0
iTextFont.FontName = "GOST type A"
iTextFont.Height = 3.5
iTextFont.Italic = True
iTextFont.Underline = False
iTextFont.WidthFactor = 1
iTextItem.Update()

iDimensionText.Rectangle = False
iDimensionText.Sign = 1
iDimensionText.Style = 3
iDimensionText.TextAlign = kompas6_constants.ksDimACentreLowFont
iDimensionText.TextFormat = False
iTextLine = iDimensionText.HighDeviation
iTextLine.Align = kompas6_constants.ksAlignLeft
iTextLine.IndentedLine = 0
iTextLine.LeftEdge = 0
iTextLine.Level = 0
iTextLine.Numbering = -1
iTextLine.RightEdge = 0
iTextLine.StepAfterParagraph = 0
iTextLine.StepBeforeParagraph = 0
iTextLine.Step = 7
iTextLine.Style = 3
iTextItem = iTextLine.Add()
iTextItem.ItemType = kompas6_constants.ksTItString
iTextItem.NewLine = 0
iTextItem.Str = ""
iTextItem.SymbolFontName = ""
iTextFont = iTextItem._oleobj_.QueryInterface(kompas_api7_module.ITextFont.CLSID, pythoncom.IID_IDispatch)
iTextFont = kompas_api7_module.ITextFont(iTextFont)
iTextFont.Bold = False
iTextFont.Color = 0
iTextFont.FontName = "GOST type A"
iTextFont.Height = 3.5
iTextFont.Italic = True
iTextFont.Underline = False
iTextFont.WidthFactor = 1
iTextItem.Update()

iTextLine = iDimensionText.LowDeviation
iTextLine.Align = kompas6_constants.ksAlignLeft
iTextLine.IndentedLine = 0
iTextLine.LeftEdge = 0
iTextLine.Level = 0
iTextLine.Numbering = -1
iTextLine.RightEdge = 0
iTextLine.StepAfterParagraph = 0
iTextLine.StepBeforeParagraph = 0
iTextLine.Step = 7
iTextLine.Style = 3
iTextItem = iTextLine.Add()
iTextItem.ItemType = kompas6_constants.ksTItString
iTextItem.NewLine = 0
iTextItem.Str = ""
iTextItem.SymbolFontName = ""
iTextFont = iTextItem._oleobj_.QueryInterface(kompas_api7_module.ITextFont.CLSID, pythoncom.IID_IDispatch)
iTextFont = kompas_api7_module.ITextFont(iTextFont)
iTextFont.Bold = False
iTextFont.Color = 0
iTextFont.FontName = "GOST type A"
iTextFont.Height = 3.5
iTextFont.Italic = True
iTextFont.Underline = False
iTextFont.WidthFactor = 1
iTextItem.Update()

iDiametralDimension3D.Update()

















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

iSymbols3DContainer = iPart7._oleobj_.QueryInterface(kompas_api7_module.ISymbols3DContainer.CLSID, pythoncom.IID_IDispatch)
iSymbols3DContainer = kompas_api7_module.ISymbols3DContainer(iSymbols3DContainer)
iLineDimensions3D = iSymbols3DContainer.LineDimensions3D
iBaseLineDimension3D = iLineDimensions3D.Add(kompas6_constants_3d.o3d_lineDimension3D)
iLineDimension3D = iBaseLineDimension3D._oleobj_.QueryInterface(kompas_api7_module.ILineDimension3D.CLSID, pythoncom.IID_IDispatch)
iLineDimension3D = kompas_api7_module.ILineDimension3D(iLineDimension3D)
iLineDimension3D.Length = -33.140077523646
iCollection = iPart.EntityCollection(kompas6_constants_3d.o3d_edge)

iCollection.SelectByPoint(-diam/2, -L1, 0)

iEdge = iCollection.Last()
iObject1 = kompas_object.TransferInterface(iEdge, kompas6_constants.ksAPI7Dual, 0)
iLineDimension3D.Object1 = iObject1
iCollection = iPart.EntityCollection(kompas6_constants_3d.o3d_edge)

iCollection.SelectByPoint(-diam/2, L2, 0)

iEdge = iCollection.Last()
iObject2 = kompas_object.TransferInterface(iEdge, kompas6_constants.ksAPI7Dual, 0)
iLineDimension3D.Object2 = iObject2
iPlane = iPart.GetDefaultEntity(kompas6_constants_3d.o3d_planeYOZ)
iDimPlane = kompas_object.TransferInterface(iPlane, kompas6_constants.ksAPI7Dual, 0)
iLineDimension3D.Plane = iDimPlane
iDimensionParams = iLineDimension3D._oleobj_.QueryInterface(kompas_api7_module.IDimensionParams.CLSID, pythoncom.IID_IDispatch)
iDimensionParams = kompas_api7_module.IDimensionParams(iDimensionParams)
iDimensionParams.ArrowPos = kompas6_constants.ksDimArrowAuto
iDimensionParams.ArrowType1 = kompas6_constants.ksArrow
iDimensionParams.ArrowType2 = kompas6_constants.ksArrow
iDimensionParams.Gap = True
iDimensionParams.GapValue = 0
iDimensionParams.RemoteLine1 = True
iDimensionParams.RemoteLine2 = True
iDimensionParams.TextBase = kompas6_constants.ksDimBaseCenter
iDimensionParams.TextOnLine = kompas6_constants.ksDimTextParallelOnLine
iDimensionParams.TextType = kompas6_constants.ksDimTManual
iDimensionParams.TextPos = 17
iDimensionParams.ShelfDirection = kompas6_constants.ksLSNone
iDimensionParams.ShelfLength = 0
iDimensionParams.ShelfAngle = 0
iDimensionText = iLineDimension3D._oleobj_.QueryInterface(kompas_api7_module.IDimensionText.CLSID, pythoncom.IID_IDispatch)
iDimensionText = kompas_api7_module.IDimensionText(iDimensionText)
iDimensionText.Brackets = kompas6_constants.ksDimBracketsOff
iDimensionText.DeviationOn = True
iDimensionText.DeviationType = kompas6_constants.ksDimDeviation
iTextLine = iDimensionText.Prefix
iTextLine.Align = kompas6_constants.ksAlignCenter
iTextLine.IndentedLine = 0
iTextLine.LeftEdge = 0
iTextLine.Level = 0
iTextLine.Numbering = 0
iTextLine.RightEdge = 0
iTextLine.StepAfterParagraph = 0
iTextLine.StepBeforeParagraph = 0
iTextLine.Step = 7
iTextLine.Style = 3
iTextItem = iTextLine.Add()
iTextItem.ItemType = kompas6_constants.ksTItString
iTextItem.NewLine = 1
iTextItem.Str = ""
iTextItem.SymbolFontName = ""
iTextFont = iTextItem._oleobj_.QueryInterface(kompas_api7_module.ITextFont.CLSID, pythoncom.IID_IDispatch)
iTextFont = kompas_api7_module.ITextFont(iTextFont)
iTextFont.Bold = False
iTextFont.Color = 0
iTextFont.FontName = "GOST type A"
iTextFont.Height = 3.5
iTextFont.Italic = True
iTextFont.Underline = False
iTextFont.WidthFactor = 1
iTextItem.Update()

iTextLine = iDimensionText.Suffix
iTextLine.Align = kompas6_constants.ksAlignCenter
iTextLine.IndentedLine = 0
iTextLine.LeftEdge = 0
iTextLine.Level = 0
iTextLine.Numbering = 0
iTextLine.RightEdge = 0
iTextLine.StepAfterParagraph = 0
iTextLine.StepBeforeParagraph = 0
iTextLine.Step = 7
iTextLine.Style = 3
iTextItem = iTextLine.Add()
iTextItem.ItemType = kompas6_constants.ksTItString
iTextItem.NewLine = 1
iTextItem.Str = ""
iTextItem.SymbolFontName = ""
iTextFont = iTextItem._oleobj_.QueryInterface(kompas_api7_module.ITextFont.CLSID, pythoncom.IID_IDispatch)
iTextFont = kompas_api7_module.ITextFont(iTextFont)
iTextFont.Bold = False
iTextFont.Color = 0
iTextFont.FontName = "GOST type A"
iTextFont.Height = 3.5
iTextFont.Italic = True
iTextFont.Underline = False
iTextFont.WidthFactor = 1
iTextItem.Update()

iTextLine = iDimensionText.Unit
iTextLine.Align = kompas6_constants.ksAlignCenter
iTextLine.IndentedLine = 0
iTextLine.LeftEdge = 0
iTextLine.Level = 0
iTextLine.Numbering = 0
iTextLine.RightEdge = 0
iTextLine.StepAfterParagraph = 0
iTextLine.StepBeforeParagraph = 0
iTextLine.Step = 7
iTextLine.Style = 3
iTextItem = iTextLine.Add()
iTextItem.ItemType = kompas6_constants.ksTItString
iTextItem.NewLine = 1
iTextItem.Str = ""
iTextItem.SymbolFontName = ""
iTextFont = iTextItem._oleobj_.QueryInterface(kompas_api7_module.ITextFont.CLSID, pythoncom.IID_IDispatch)
iTextFont = kompas_api7_module.ITextFont(iTextFont)
iTextFont.Bold = False
iTextFont.Color = 0
iTextFont.FontName = "GOST type A"
iTextFont.Height = 3.5
iTextFont.Italic = True
iTextFont.Underline = False
iTextFont.WidthFactor = 1
iTextItem.Update()

iDimensionText.Rectangle = False
iDimensionText.Sign = 0
iDimensionText.Style = 3
iDimensionText.TextAlign = kompas6_constants.ksDimACentreLowFont
iDimensionText.TextFormat = False
iTextLine = iDimensionText.HighDeviation
iTextLine.Align = kompas6_constants.ksAlignCenter
iTextLine.IndentedLine = 0
iTextLine.LeftEdge = 0
iTextLine.Level = 0
iTextLine.Numbering = -1
iTextLine.RightEdge = 0
iTextLine.StepAfterParagraph = 0
iTextLine.StepBeforeParagraph = 0
iTextLine.Step = 7
iTextLine.Style = 3
iTextItem = iTextLine.Add()
iTextItem.ItemType = kompas6_constants.ksTItString
iTextItem.NewLine = 0
iTextItem.Str = ""
iTextItem.SymbolFontName = ""
iTextFont = iTextItem._oleobj_.QueryInterface(kompas_api7_module.ITextFont.CLSID, pythoncom.IID_IDispatch)
iTextFont = kompas_api7_module.ITextFont(iTextFont)
iTextFont.Bold = False
iTextFont.Color = 0
iTextFont.FontName = "GOST type A"
iTextFont.Height = 3.5
iTextFont.Italic = True
iTextFont.Underline = False
iTextFont.WidthFactor = 1
iTextItem.Update()

iTextLine = iDimensionText.LowDeviation
iTextLine.Align = kompas6_constants.ksAlignCenter
iTextLine.IndentedLine = 0
iTextLine.LeftEdge = 0
iTextLine.Level = 0
iTextLine.Numbering = -1
iTextLine.RightEdge = 0
iTextLine.StepAfterParagraph = 0
iTextLine.StepBeforeParagraph = 0
iTextLine.Step = 7
iTextLine.Style = 3
iTextItem = iTextLine.Add()
iTextItem.ItemType = kompas6_constants.ksTItString
iTextItem.NewLine = 0
iTextItem.Str = ""
iTextItem.SymbolFontName = ""
iTextFont = iTextItem._oleobj_.QueryInterface(kompas_api7_module.ITextFont.CLSID, pythoncom.IID_IDispatch)
iTextFont = kompas_api7_module.ITextFont(iTextFont)
iTextFont.Bold = False
iTextFont.Color = 0
iTextFont.FontName = "GOST type A"
iTextFont.Height = 3.5
iTextFont.Italic = True
iTextFont.Underline = False
iTextFont.WidthFactor = 1
iTextItem.Update()

iLineDimension3D.Update()



kompas_document.SaveAs(im+".m3d")


import time
time.sleep(1)














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

kompas_document_2d = kompas_api7_module.IKompasDocument2D(kompas_document)
iDocument2D = kompas_object.ActiveDocument2D()

iAssociationViewParam = kompas6_api5_module.ksAssociationViewParam(kompas_object.GetParamStruct(kompas6_constants.ko_AssociationViewParam))
iAssociationViewParam.Init()
iAssociationViewParam.disassembly = False
iAssociationViewParam.fileName = im+".m3d"
iAssociationViewParam.hiddenLinesShow = False
iAssociationViewParam.hiddenLinesStyle = 4
iAssociationViewParam.projBodies = True
iAssociationViewParam.projectionLink = False
iAssociationViewParam.projectionName = "#Спереди"
iAssociationViewParam.projSurfaces = False
iAssociationViewParam.projThreads = True
iAssociationViewParam.sameHatch = False
iAssociationViewParam.section = False
iAssociationViewParam.tangentEdgesShow = False
iAssociationViewParam.tangentEdgesStyle = 2
iAssociationViewParam.visibleLinesStyle = 1
iViewParam = kompas6_api5_module.ksViewParam(iAssociationViewParam.GetViewParam())
iViewParam.Init()
iViewParam.angle = 0
iViewParam.color = 0
iViewParam.name = "Вид 1"
iViewParam.scale_ = 1
iViewParam.state = 3
iViewParam.x = 98.793242203696
iViewParam.y = 213.723922900024
iDocument2D.ksCreateSheetArbitraryView(iAssociationViewParam, 0)










##__________________________________________________________________________
iLDimParam = kompas6_api5_module.ksLDimParam(kompas_object.GetParamStruct(kompas6_constants.ko_LDimParam))
iDimDrawing = kompas6_api5_module.ksDimDrawingParam(iLDimParam.GetDPar())
iDimDrawing.Init()
iDimDrawing.ang = 0
iDimDrawing.lenght = 0
iDimDrawing.pl1 = False
iDimDrawing.pl2 = False
iDimDrawing.pt1 = 1
iDimDrawing.pt2 = 1
iDimDrawing.shelfDir = 0
iDimDrawing.textBase = 0
iDimDrawing.textPos = 0
iLDimSource = kompas6_api5_module.ksLDimSourceParam(iLDimParam.GetSPar())
iLDimSource.Init()
iLDimSource.basePoint = 1
iLDimSource.dx = 0
iLDimSource.dy = -35.843610151291
iLDimSource.ps = 0


iLDimSource.x1 = -L1
iLDimSource.y1 = -diam/2
iLDimSource.x2 = L2
iLDimSource.y2 = -diam/2



iDimText = kompas6_api5_module.ksDimTextParam(iLDimParam.GetTPar())
iDimText.Init(0)
iDimText.bitFlag = 1
iDimText.sign = 0
iDimText.style = 3
iDimText.stringFlag = False
obj = iDocument2D.ksLinDimension(iLDimParam)
##____________________________________________________________

















##__________________________________________________________________
iLDimParam = kompas6_api5_module.ksLDimParam(kompas_object.GetParamStruct(kompas6_constants.ko_LDimParam))
iDimDrawing = kompas6_api5_module.ksDimDrawingParam(iLDimParam.GetDPar())
iDimDrawing.Init()
iDimDrawing.ang = 0
iDimDrawing.lenght = 0
iDimDrawing.pl1 = False
iDimDrawing.pl2 = False
iDimDrawing.pt1 = 1
iDimDrawing.pt2 = 1
iDimDrawing.shelfDir = 0
iDimDrawing.textBase = 0
iDimDrawing.textPos = 0
iLDimSource = kompas6_api5_module.ksLDimSourceParam(iLDimParam.GetSPar())
iLDimSource.Init()
iLDimSource.basePoint = 1
iLDimSource.dx = 22.409222086278
iLDimSource.dy = 0
iLDimSource.ps = 1



iLDimSource.x1 = L2
iLDimSource.y1 = diam/2
iLDimSource.x2 = L2
iLDimSource.y2 = -diam/2



iDimText = kompas6_api5_module.ksDimTextParam(iLDimParam.GetTPar())
iDimText.Init(0)
iDimText.bitFlag = 1
iDimText.sign = 1   #  1 Диаметр    Обычно 0
iDimText.style = 3
iDimText.stringFlag = False
obj = iDocument2D.ksLinDimension(iLDimParam)
##__________________________________________________________________



kompas_document.SaveAs(im+".cdw")



           















СВ

 Виталий, если вы решаете вопрос одной из недавних тем, то он (по моему мнению) был другим: как в чертеже сделать аксонометрию С РАЗМЕРАМИ?

Vitalij Lysanov

Цитата: СВ от 21.09.21, 08:43:21Виталий, если вы решаете вопрос одной из недавних тем, то он (по моему мнению) был другим: как в чертеже сделать аксонометрию С РАЗМЕРАМИ?

Спасибо, немного разобрался.

По аналогии можно размеры из 3D перенести в аксонометрию, только конечно не все.
Координаты пересчитать нужно.

Хорошо конечно когда все с начала программой выполняется, все числа под рукой.
На валы наверное уже и готовая библиотека есть.



Некоторые размеры не видно, это нужно сразу думать про аксонометрию,
Или указать что этот размер поставить в аксонометрии.

На чертежах тоже размеры по плоскостям выбирают.

Denis78

Тоже пытаюсь получить параметры размера 3Д детали. За основу взял пример Bracket (у всех, думаю, после установки компаса он есть, у меня, например, он здесь C:\Program Files\ASCON\KOMPAS-3D v18\Samples\Models\Bracket.m3d)
Я добавил в него пару размеров. Пока разбираюсь с линейным.
Написал такой кусок кода:

IPart7Ptr part7(doc3D->GetTopPart());
ISymbols3DContainerPtr s3d;
HRESULT res = part7.QueryInterface(IID_ISymbols3DContainer, &s3d);

if (s3d)
{
    IBases3DPtr bases = s3d->GetBases3D();
    ILeaders3DPtr leaders = s3d->GetLeaders3D();
 
    Dbg("Bases cnt: ", bases->GetCount());            // Здесь, почему-то, 0
    Dbg("Leaders cnt: ", leaders->GetCount());        // И здесь тоже 0
 
    ILineDimensions3DPtr dims3d = s3d->GetLineDimensions3D();
    for (long i = 0; i < dims3d->GetCount(); i++)    // dims3d->GetCount() возвращает 1
    {
        ILineDimension3DPtr dim = dims3d->GetLineDimension3D(i);
        IDimensionParamsPtr dimPars(dim);
 
        IBase3DPtr base = bases->GetBase3D(i);                // null, по понятным причинам
        IBaseLeader3DPtr leader = leaders->GetLeader3D(i);    // null
 
        if (dimPars)
        {
            ksDimensionArrowPosEnum arrPos = dimPars->GetArrowPos();   // Много чего есть, кроме того, что мне нужно
            ksArrowEnum arrType1 = dimPars->GetArrowType1();
            ksArrowEnum arrType2 = dimPars->GetArrowType2();
            bool isGap = dimPars->GetGap();
            long gapVal = dimPars->GetGapValue();
            bool rl1 = dimPars->GetRemoteLine1();
            bool rl2 = dimPars->GetRemoteLine2();
            double shelfAngle = dimPars->GetShelfAngle();
            ksShelfDirectionEnum shelfDir = dimPars->GetShelfDirection();
            double shelfLen = dimPars->GetShelfLength();
            ksDimensionBaseEnum txtBase = dimPars->GetTextBase();
            ksDimensionTextPosEnum txtPos = dimPars->GetTextOnLine();
            ksDimensionTextTypeEnum txtType = dimPars->GetTextType();
        }
        IDimensionTextPtr dimText(dim);
        if (dimText)
        {
            double nomVal = dimText->GetNominalValue();
            ITextLinePtr dimTextLine = dimText->GetNominalText();
            ksDimensionTextBracketsEnum txtBracket = dimText->GetBrackets();
            ksDimensionDeviationEnum dimDev = dimText->GetDeviationType();
            bool hasTolerance = dimText->GetHasTolerance();
            ITextLinePtr highDev = dimText->GetHighDeviation();
            ITextLinePtr lowDev = dimText->GetLowDeviation();
            ITextLinePtr prefix = dimText->GetPrefix();
            bool rect = dimText->GetRectangle();
            long sign = dimText->GetSign();
            BSTR signFont = dimText->GetSignFont();
            DbgW(L"signFont: ", signFont);
            ITextLinePtr suffix = dimText->GetSuffix();
            ksDimensionTextAlignEnum txtAlign = dimText->GetTextAlign();
            ksDimTextFormatEnum txtFmt = dimText->GetTextFormat();
            ITextPtr textUnder = dimText->GetTextUnder();
        }
        BSTR name = dim->GetName(); // name будет "Линейный от отрезка до точки:1", хотя не понятно мне, почему такое название, я когда строил этот размер, то указывал 2 грани на детали и плоскость
        IModelObjectPtr obj1 = dim->GetObject1();   // Как-то можно этот объект использовать
        double len = dim->GetLength();
        IModelObjectPtr obj2 = dim->GetObject2();   // И этот?
        IModelObjectPtr plane = dim->GetPlane();
 
        IModelObjectPtr dimMo = dims3d->GetItem(i);
        IPart7Ptr dimPart7 = dimMo->GetPart();
        IPlacement3DPtr dimPlmt = dimPart7->GetPlacement();  // из IPlacement3D не нашел ничего стоящего, что можно было бы получить
    }
}

Вкратце, я получаю объекты следующих типов:
IBaseLeader3D
IDimensionParams
IDimensionText
Из них конечно что-то "вытащить" можно, но этого явно не достаточно. Нужны координаты размерных линий (выделены красным цветом).
Я видел в предыдущем примере это делалось как-то созданием нового 2Д-документа. Неужели нет возможности получить их каким-то более простым способом? Опять же, из 2Д-документа можно получить только двумерные координаты (x, y), где взять z?

Можно было бы хоть что-то вытянуть из объекта moPlane:
IModelObjectPtr moPlane = dim->GetPlane();
Но и из него никаких полезных координат вытащить не получается.

Кто-то знает, как получить координаты размерных линий?